]> Shamusworld >> Repos - virtualjaguar/commitdiff
Initial changeset to experimental branch
authorShamus Hammons <jlhamm@acm.org>
Mon, 18 Jan 2010 21:04:08 +0000 (21:04 +0000)
committerShamus Hammons <jlhamm@acm.org>
Mon, 18 Jan 2010 21:04:08 +0000 (21:04 +0000)
73 files changed:
Makefile
src/blitter.cpp
src/blitter.h
src/cdintf.cpp
src/cdrom.cpp
src/cdrom.h
src/crc32.cpp
src/dac.cpp
src/dac.h
src/dsp.cpp
src/dsp.h
src/eeprom.cpp
src/event.cpp
src/file.cpp
src/gpu.cpp
src/gpu.h
src/gui/app.cpp [new file with mode: 0644]
src/gui/app.h [new file with mode: 0644]
src/gui/button.cpp [deleted file]
src/gui/button.h [deleted file]
src/gui/element.cpp [deleted file]
src/gui/element.h [deleted file]
src/gui/filelist.cpp [deleted file]
src/gui/filelist.h [deleted file]
src/gui/font1.h [deleted file]
src/gui/font14pt.h [deleted file]
src/gui/glwidget.cpp [new file with mode: 0644]
src/gui/glwidget.h [new file with mode: 0644]
src/gui/guielements.h [deleted file]
src/gui/guimisc.cpp [deleted file]
src/gui/guimisc.h [deleted file]
src/gui/image.cpp [deleted file]
src/gui/image.h [deleted file]
src/gui/listbox.cpp [deleted file]
src/gui/listbox.h [deleted file]
src/gui/mainwin.cpp [new file with mode: 0644]
src/gui/mainwin.h [new file with mode: 0644]
src/gui/menu.cpp [deleted file]
src/gui/menu.h [deleted file]
src/gui/pushbutton.cpp [deleted file]
src/gui/pushbutton.h [deleted file]
src/gui/slideswitch.cpp [deleted file]
src/gui/slideswitch.h [deleted file]
src/gui/text.cpp [deleted file]
src/gui/text.h [deleted file]
src/gui/textedit.cpp [deleted file]
src/gui/textedit.h [deleted file]
src/gui/vj.pro [new file with mode: 0644]
src/gui/vj.qrc [new file with mode: 0644]
src/gui/window.cpp [deleted file]
src/gui/window.h [deleted file]
src/jaguar.cpp
src/jaguar.h
src/jerry.cpp
src/jerry.h
src/joystick.cpp
src/log.cpp
src/memory.cpp
src/memory.h
src/mmu.cpp
src/mmu.h
src/objectp.cpp
src/settings.cpp
src/settings.h
src/state.cpp
src/tom.cpp
src/tom.h
src/types.h
src/unzip.c
src/video.cpp
src/vj.cpp
src/wavetable.cpp [new file with mode: 0644]
src/wavetable.h

index e1467c9da2cc6bb1485f591f28d552b95c8afe14..9b05b78616262802366eb955808816862fae0176 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 #
 # by James L. Hammons
 #
-# This software is licensed under the GPL v2 or any later version. Set the
+# This software is licensed under the GPL v2 or any later version. See the
 # file GPL.TXT for details. ;-)
 #
 
@@ -36,7 +36,7 @@ else                                                                                  # *nix
 
 SYSTYPE    = __GCCUNIX__
 EXESUFFIX  =
-GLLIB      = -lGL
+GLLIB      = -lGL -lGLU
 ICON       =
 SDLLIBTYPE = --libs
 MSG        = generic Unix/Linux
@@ -50,14 +50,14 @@ TARGET     = vj
 
 # Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2
 CFLAGS   = -MMD -Wall -Wno-switch -O2 -D$(SYSTYPE) -ffast-math -fomit-frame-pointer `sdl-config --cflags`
-CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) \
+CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) -Wno-trigraphs \
                -DHAVE_LIB_CDIO -ffast-math -fomit-frame-pointer `sdl-config --cflags` -g
 #              -fomit-frame-pointer `sdl-config --cflags` -g
 #              -fomit-frame-pointer `sdl-config --cflags` -DLOG_UNMAPPED_MEMORY_ACCESSES
 
 LDFLAGS =
 
-LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lcdio
+LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lcdio `pkg-config --libs QtGui QtOpenGL`
 # Comment out the above and uncomment below if you don't have libcdio.
 # Also, remove the "-DHAVE_LIB_CDIO" from CPPFLAGS above.
 #LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB)
@@ -72,19 +72,12 @@ OBJS = \
        obj/m68kopnz.o      \
        obj/m68kdasm.o      \
 \
-       obj/button.o        \
-       obj/element.o       \
-       obj/filelist.o      \
-       obj/gui.o           \
-       obj/guimisc.o       \
-       obj/image.o         \
-       obj/listbox.o       \
-       obj/menu.o          \
-       obj/pushbutton.o    \
-       obj/slideswitch.o   \
-       obj/text.o          \
-       obj/textedit.o      \
-       obj/window.o        \
+       obj/app.o           \
+       obj/mainwin.o       \
+       obj/moc_mainwin.o   \
+       obj/glwidget.o      \
+       obj/moc_glwidget.o  \
+       obj/qrc_vj.o        \
 \
        obj/blitter.o       \
        obj/cdrom.o         \
@@ -112,6 +105,7 @@ OBJS = \
        obj/unzip.o         \
        obj/video.o         \
        obj/vj.o            \
+       obj/wavetable.o     \
        $(ICON)
 
 all: checkenv message obj $(TARGET)$(EXESUFFIX)
@@ -135,7 +129,7 @@ ifeq "" "$(shell which sdl-config)"
 else
        @echo -e "\033[01;37mOK\033[00m"
 endif
-# !!! NOTE !!! Need to put a check here for libcdio, GL, zlib
+# !!! NOTE !!! Need to put a check here for libcdio, GL, zlib, Qt
 
 message:
        @echo
@@ -143,6 +137,7 @@ message:
        @echo
 
 clean:
+       @echo
        @echo -en "\033[01;33m***\033[00;32m Cleaning out the garbage...\033[00m"
        @rm -rf obj
        @rm -f ./$(TARGET)$(EXESUFFIX)
@@ -159,6 +154,8 @@ $(ICON): res/$(TARGET).rc res/$(TARGET).ico
        @windres -i res/$(TARGET).rc -o $(ICON) --include-dir=./res
 endif
 
+# Main source compilation...
+
 obj/%.o: src/%.c
        @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
        @$(CC) $(CFLAGS) $(INCS) -c $< -o $@
@@ -167,61 +164,81 @@ obj/%.o: src/%.cpp
        @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
        @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@
 
-obj/%.o: src/gui/%.cpp
-       @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
-       @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@
-
+#$(TARGET)$(EXESUFFIX): $(OBJS)
 $(TARGET)$(EXESUFFIX): $(OBJS)
        @echo -e "\033[01;33m***\033[00;32m Linking it all together...\033[00m"
        @$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
 #      strip --strip-all vj$(EXESUFFIX)
 #      upx -9 vj$(EXESUFFIX)
 
-# Pull in dependencies autogenerated by gcc's -MMD switch
-# The "-" in front is there just in case they haven't been created yet
+# Qt GUI stuff...
+
+src/gui/Makefile: src/gui/vj-gui.pro src/gui/vj-gui.qrc
+       @echo -e "\033[01;33m***\033[00;32m Creating Qt Makefile...\033[00m"
+       @qmake -o src/gui/Makefile src/gui/vj-gui.pro
+
+#obj/%.o: src/gui/%.cpp src/gui/Makefile
+#      @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
+#      @make -C src/gui
+#OR:
+#      @cd src/gui && make
+
+#QT_SOURCES       = app.cpp \
+#              mainwin.cpp ../../obj/moc_mainwin.cpp \
+#              ../../obj/qrc_vj-gui.cpp
+#QT_OBJECTS       = ../../obj/app.o \
+#              ../../obj/mainwin.o \
+#              ../../obj/moc_mainwin.o \
+#              ../../obj/qrc_vj-gui.o
+QT_CFLAGS = `pkg-config --cflags QtGui`
+# !!! THESE DEFINES ARE PLATFORM DEPENDENT !!!
+#QT_DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
+QT_DEFINES = -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
+#QT_INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I./src/gui -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I./obj
+QT_INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I./src -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I./obj
+QT_CXXFLAGS = -pipe -O2 -march=pentium-m -pipe -D_REENTRANT -Wall -W $(QT_DEFINES) -D$(SYSTYPE)
+
+obj/moc_%.cpp: src/gui/%.h
+       @echo -e "\033[01;33m***\033[00;32m Creating $@...\033[00m"
+       @/usr/bin/moc $(QT_DEFINES) $(QT_INCPATH) $< -o $@
+
+obj/moc_%.o: obj/moc_%.cpp
+       @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
+       @$(CC) -c $(QT_CXXFLAGS) $(QT_INCPATH) -o $@ $<
 
--include obj/*.d
+obj/qrc_vj.cpp: src/gui/vj.qrc src/gui/res/vj.xpm
+       @echo -e "\033[01;33m***\033[00;32m Creating qrc_vj.cpp...\033[00m"
+       @/usr/bin/rcc -name vj src/gui/vj.qrc -o obj/qrc_vj.cpp
+
+obj/qrc_%.o: obj/qrc_%.cpp
+       @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
+       @$(CC) -c $(QT_CXXFLAGS) $(QT_INCPATH) -o $@ $<
+
+obj/%.o: src/gui/%.cpp src/gui/%.h
+       @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
+       @$(CC) -c $(QT_CXXFLAGS) $(QT_INCPATH) -o $@ $<
 
 #
 # Musashi specific stuffola
 #
 
-#obj/m68k%.o: obj/m68k%.c obj/m68kops.h
-#      $(CC) $(CFLAGS) -Iobj -c src/m68k%.c -o obj/m68k%.o
-
-#obj/m68k%.o: obj/m68k%.c obj/m68kmake$(EXESUFFIX)
-#      $(CC) $(CFLAGS) -Iobj -c src/m68k%.c -o obj/m68k%.o
+obj/m68kmake$(EXESUFFIX): src/m68kmake.c src/m68k_in.c
+       @echo -e "\033[01;33m***\033[00;32m Preparing to make the Musashi core...\033[00m"
+       @$(CC) $(WARNINGS) src/m68kmake.c -o obj/m68kmake$(EXESUFFIX)
 
-#see if you can collapse all this crap into one or two lines...
-#NOTE: The above doesn't work for some reason...
+obj/m68kops.h obj/m68kops.c obj/m68kopac.c obj/m68kopdm.c obj/m68kopnz.c: obj/m68kmake$(EXESUFFIX)
+       @echo -e "\033[01;33m***\033[00;32m Creating m68kops.h...\033[00m"
+       @obj/m68kmake obj src/m68k_in.c
 
 obj/m68kcpu.o: obj/m68kops.h src/m68k.h src/m68kconf.h
        @echo -e "\033[01;33m***\033[00;32m Compiling m68kcpu.c...\033[00m"
        @$(CC) $(CFLAGS) -Iobj -c src/m68kcpu.c -o obj/m68kcpu.o
 
-obj/m68kops.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kops.c src/m68k.h src/m68kconf.h
-       @echo -e "\033[01;33m***\033[00;32m Compiling m68kops.c...\033[00m"
-       @$(CC) $(CFLAGS) -Isrc -c obj/m68kops.c -o obj/m68kops.o
-
-obj/m68kopac.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopac.c src/m68k.h src/m68kconf.h
-       @echo -e "\033[01;33m***\033[00;32m Compiling m68kopac.c...\033[00m"
-       @$(CC) $(CFLAGS) -Isrc -c obj/m68kopac.c -o obj/m68kopac.o
-
-obj/m68kopdm.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopdm.c src/m68k.h src/m68kconf.h
-       @echo -e "\033[01;33m***\033[00;32m Compiling m68kopdm.c...\033[00m"
-       @$(CC) $(CFLAGS) -Isrc -c obj/m68kopdm.c -o obj/m68kopdm.o
-
-obj/m68kopnz.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopnz.c src/m68k.h src/m68kconf.h
-       @echo -e "\033[01;33m***\033[00;32m Compiling m68kopnz.c...\033[00m"
-       @$(CC) $(CFLAGS) -Isrc -c obj/m68kopnz.c -o obj/m68kopnz.o
-
-obj/m68kdasm.o: src/m68kdasm.c src/m68k.h src/m68kconf.h
-       @echo -e "\033[01;33m***\033[00;32m Compiling m68kdasm.c...\033[00m"
-       @$(CC) $(CFLAGS) -Isrc -c src/m68kdasm.c -o obj/m68kdasm.o
+obj/m68kop%.o: obj/m68kop%.c
+       @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
+       @$(CC) $(CFLAGS) -Isrc -c $< -o $@
 
-obj/m68kops.h: obj/m68kmake$(EXESUFFIX)
-       @obj/m68kmake obj src/m68k_in.c
+# Pull in dependencies autogenerated by gcc's -MMD switch
+# The "-" in front is there just in case they haven't been created yet
 
-obj/m68kmake$(EXESUFFIX): src/m68kmake.c src/m68k_in.c
-       @echo -e "\033[01;33m***\033[00;32m Preparing to make the Musashi core...\033[00m"
-       @$(CC) $(WARNINGS) src/m68kmake.c -o obj/m68kmake$(EXESUFFIX)
+-include obj/*.d
index 75d65a432bbd20879aa6db464dec13e4ab2279a6..3d4207d42f8d2c31e093e9eced5fffefebb2c9ac 100644 (file)
@@ -2,6 +2,15 @@
 // Blitter core
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+//
+
 //
 // I owe a debt of gratitude to Curt Vendel and to John Mathieson--to Curt
 // for supplying the Oberon ASIC nets and to John for making them available
@@ -18,6 +27,7 @@
 #include <string.h>
 #include "jaguar.h"
 #include "log.h"
+//#include "memory.h"
 
 // Various conditional compilation goodies...
 
index 535f7cb77fd5e2d4c9b9ad0ae418ec8b201d0522..5c3febba7229ba758d6d9ae4384d1ad155e821df 100644 (file)
@@ -5,7 +5,8 @@
 #ifndef __BLITTER_H__
 #define __BLITTER_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 void BlitterInit(void);
 void BlitterReset(void);
index 066f2cc2588e9cb7772d464e50b86e5721fc1f22..8973c4543068b5fec64bd148afb890848a734c3d 100644 (file)
@@ -2,6 +2,15 @@
 // OS agnostic CDROM interface functions
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+//
+
 //
 // This now uses the supposedly cross-platform libcdio to do the necessary
 // low-level CD twiddling we need that libsdl can't do currently. Jury is
index a7569ac1eaec9a95ad0293c87188ad2a92fba6c6..c45a8f0306c06c5970a8a52bbd98e4b1daa4e45e 100644 (file)
@@ -4,13 +4,21 @@
 // Originally by David Raingeard
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Extensive rewrites/cleanups/fixes by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "cdrom.h"
 
 #include <string.h>                                                                    // For memset, etc.
-#include "jaguar.h"                                                                    // For GET32/SET32 macros
+//#include "jaguar.h"                                                                  // For GET32/SET32 macros
 #include "m68k.h"
+//#include "memory.h"
 #include "cdintf.h"                                                                    // System agnostic CD interface functions
 #include "log.h"
 #include "dac.h"
index dbedb773e14159653ad98b93637e5856628445ac..963a02aeb54a620ebd5770f4a9574e1ffe80b4e9 100644 (file)
@@ -5,7 +5,8 @@
 #ifndef __CDROM_H__
 #define __CDROM_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 void CDROMInit(void);
 void CDROMReset(void);
index 6711aae2fbe132d395a3a6816f3f6d85940d3287..8cb637bc70bb5ea71c6cdc344d67416eb3f19c80 100644 (file)
@@ -4,6 +4,13 @@
 // by David Raingeard
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "crc32.h"
index 9dc1a2ef28c34bb9b7d32d2fe04b67e53e1f4948..4cf8da2d94710468c75083282007ec7ebc977c25 100644 (file)
@@ -4,6 +4,13 @@
 // Originally by David Raingeard
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Rewritten by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 // Need to set up defaults that the BIOS sets for the SSI here in DACInit()... !!! FIX !!!
 #include "dac.h"
 
 #include "SDL.h"
-#include "gui.h"
+//#include "gui.h"
 #include "jaguar.h"
 #include "log.h"
 #include "m68k.h"
+//#include "memory.h"
 #include "settings.h"
 
 //#define DEBUG_DAC
@@ -222,7 +230,8 @@ WriteLog("Tail=%X, Head=%X", ltail, lhead);
        WriteLog("From while: Tail=%X, Head=%X", (LeftFIFOTailPtr + 2) & (BUFFER_SIZE - 1), LeftFIFOHeadPtr);
 //     LogDone();
 //     exit(0);
-       GUICrashGracefully("Stuck in left DAC spinlock!");
+#warning "Reimplement GUICrashGracefully!"
+//     GUICrashGracefully("Stuck in left DAC spinlock!");
        return;
 }
                }//*/
@@ -313,7 +322,8 @@ WriteLog("Tail=%X, Head=%X", rtail, rhead);
        WriteLog("From while: Tail=%X, Head=%X", (RightFIFOTailPtr + 2) & (BUFFER_SIZE - 1), RightFIFOHeadPtr);
 //     LogDone();
 //     exit(0);
-       GUICrashGracefully("Stuck in right DAC spinlock!");
+#warning "Reimplement GUICrashGracefully!"
+//     GUICrashGracefully("Stuck in right DAC spinlock!");
        return;
 }
                }//*/
@@ -351,7 +361,8 @@ WriteLog("Tail=%X, Head=%X", rtail, rhead);
                                                WriteLog("DAC: Failed to initialize SDL sound: %s.\nDesired freq: %u\nShutting down!\n", SDL_GetError(), desired.freq);
 //                                             LogDone();
 //                                             exit(1);
-                                               GUICrashGracefully("Failed to initialize SDL sound!");
+#warning "Reimplement GUICrashGracefully!"
+//                                             GUICrashGracefully("Failed to initialize SDL sound!");
                                                return;
                                        }
                                }
index 914ff6a5d6e1c11ea176d0b46a63a1ac3ee932b9..74478daae95a810ec9403d5fe79637f56705b052 100644 (file)
--- a/src/dac.h
+++ b/src/dac.h
@@ -5,7 +5,8 @@
 #ifndef __DAC_H__
 #define __DAC_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 void DACInit(void);
 void DACReset(void);
index 4a9ba85252f605efecddc31df5aae3a6a12928d4..604584ccae623021680f9506d817a1dc5c4cbcff 100644 (file)
@@ -4,6 +4,13 @@
 // Originally by David Raingeard
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Extensive cleanups/rewrites by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "dsp.h"
@@ -16,7 +23,7 @@
 #include "jerry.h"
 #include "log.h"
 #include "m68k.h"
-#include "memory.h"
+//#include "memory.h"
 
 //#define DSP_DEBUG
 //#define DSP_DEBUG_IRQ
@@ -441,7 +448,7 @@ void dsp_build_branch_condition_table(void)
 {
        // Allocate the mirror table
        if (!mirror_table)
-               mirror_table = (uint16 *)memory_malloc(65536 * sizeof(uint16), "DSP mirror table");
+               mirror_table = (uint16 *)malloc(65536 * sizeof(uint16));
 
        // Fill in the mirror table
        if (mirror_table)
@@ -457,7 +464,7 @@ void dsp_build_branch_condition_table(void)
 
        if (!dsp_branch_condition_table)
        {
-               dsp_branch_condition_table = (uint8 *)memory_malloc(32 * 8 * sizeof(uint8), "DSP branch condition table");
+               dsp_branch_condition_table = (uint8 *)malloc(32 * 8 * sizeof(uint8));
 
                // Fill in the condition table
                if (dsp_branch_condition_table)
@@ -1358,6 +1365,11 @@ void DSPDone(void)
 //     memory_free(dsp_ram_8);
 //     memory_free(dsp_reg_bank_0);
 //     memory_free(dsp_reg_bank_1);
+       if (dsp_branch_condition_table)
+               free(dsp_branch_condition_table);
+
+       if (mirror_table)
+               free(mirror_table);
 }
 
 
index 7e09e5903a22e570f5e7d98112d87919bab93be7..44e8b70712f9d1288fe39bf6a401eca130bba570 100644 (file)
--- a/src/dsp.h
+++ b/src/dsp.h
@@ -5,7 +5,8 @@
 #ifndef __DSP_H__
 #define __DSP_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 #define DSP_CONTROL_RAM_BASE    0x00F1A100
 #define DSP_WORK_RAM_BASE              0x00F1B000
index fe3b1d082de914c161ff81e8d6b2559504c408e2..266a11ae19f170f726c47fdd02b4b3b92b80b84d 100644 (file)
@@ -4,6 +4,13 @@
 // by Cal2
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups/enhancements by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "eeprom.h"
index 734ad87bdad92709038988cd0d3cb461a64e6c19..2fbfa33c11078f206e41ab90110747986623a620 100644 (file)
@@ -2,6 +2,15 @@
 // System time handlers
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+//
+
 //
 // STILL TO DO:
 //
index 4fc852c8c430f309db0c2d64e716a63e830d1973..bf8ad546028843c1bb9f8ca37ed709edebcb3413 100644 (file)
@@ -3,6 +3,13 @@
 //
 // File support
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "file.h"
@@ -13,6 +20,7 @@
 #include "eeprom.h"
 #include "jaguar.h"
 #include "log.h"
+#include "memory.h"
 #include "unzip.h"
 #include "zlib.h"
 
index aec51a18e3be9bc0ffe0fb2b4579cd1981285898..4892b7aa536d4bee7d790435bacfd929b621fa28 100644 (file)
@@ -6,6 +6,15 @@
 // Originally by David Raingeard (Cal2)
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups, endian wrongness, and bad ASM amelioration by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+
+//
 // Note: Endian wrongness probably stems from the MAME origins of this emu and
 //       the braindead way in which MAME handles memory. :-)
 //
@@ -23,7 +32,7 @@
 #include "jaguar.h"
 #include "log.h"
 #include "m68k.h"
-#include "memory.h"
+//#include "memory.h"
 #include "tom.h"
 
 //#define GPU_DEBUG
index 65485447107ea1cf9fd191bbe6c350861263ebc7..97ba4b33a3a7fdf804d27d3751bee3e864f75a5a 100644 (file)
--- a/src/gpu.h
+++ b/src/gpu.h
@@ -5,7 +5,8 @@
 #ifndef __GPU_H__
 #define __GPU_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 #define GPU_CONTROL_RAM_BASE    0x00F02100
 #define GPU_WORK_RAM_BASE              0x00F03000
diff --git a/src/gui/app.cpp b/src/gui/app.cpp
new file mode 100644 (file)
index 0000000..3bd8c6c
--- /dev/null
@@ -0,0 +1,47 @@
+//
+// app.cpp - Qt-based GUI for Virtual Jaguar
+//
+// by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  12/23/2009  Created this file
+//
+
+#include "app.h"
+
+#include <QApplication>
+#include "mainwin.h"
+
+// Here's the main application loop--short and simple...
+int main(int argc, char * argv[])
+{
+       if (argc > 1)
+       {
+               if (strcmp(argv[1], "--help") == 0)
+               {
+                       printf("Virtual Jaguar 2.0.0 help\n");
+                       printf("\n");
+                       printf("This is an experimental branch of Virtual Jaguar, how did you get it?\n");
+                       return 0;
+               }
+       }
+
+       Q_INIT_RESOURCE(vj);    // This must the same name as the exe filename
+//or is it the .qrc filename???
+
+       App app(argc, argv);                                            // Declare an instance of the application
+
+       return app.exec();                                                      // And run it!
+}
+
+// Main app constructor--we stick globally accessible stuff here...
+
+App::App(int argc, char * argv[]): QApplication(argc, argv)
+{
+       mainWindow = new MainWin();
+       mainWindow->show();
+}
diff --git a/src/gui/app.h b/src/gui/app.h
new file mode 100644 (file)
index 0000000..2b57845
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// app.h: Header file
+//
+// by James L. Hammons
+// (C) 2009 Underground Software
+//
+
+#ifndef __APP_H__
+#define __APP_H__
+
+//Hrm. uh??? I thought this wasn't the way to do this stuff...???
+#include <QtGui>
+
+// Forward declarations
+class MainWin;
+
+class App: public QApplication
+{
+       public:
+               App(int argc, char * argv[]);
+
+       private:
+               MainWin * mainWindow;
+
+       // Globally accessible stuff goes here...
+       // Although... Globally accessible stuff should go into settings.cpp...
+//     public:
+};
+
+#endif // __APP_H__
diff --git a/src/gui/button.cpp b/src/gui/button.cpp
deleted file mode 100644 (file)
index 052d19c..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// Button class
-//
-// by James L. Hammons
-//
-
-#include "button.h"
-
-//#include "font14pt.h"
-#include "guimisc.h"
-
-// Various constructors
-
-Button::Button(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/):
-       Element(x, y, w, h), activated(false), clicked(false), inside(false),
-       fgColor(0xFFFFFFFF), bgColor(0xFF00FF00), pic(NULL), elementToTell(NULL)
-{
-}
-
-Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, uint32 * p):
-       Element(x, y, w, h), activated(false), clicked(false), inside(false),
-       fgColor(0xFFFFFFFF), bgColor(0xFF00FF00), pic(p), elementToTell(NULL)
-{
-}
-
-// Button::Button(uint32 x, uint32 y, uint32 * p): Element(x, y, 0, 0),
-
-Button::Button(uint32 x, uint32 y, uint32 * p, uint32 * pH/*= NULL*/, uint32 * pD/*= NULL*/):
-       Element(x, y, 0, 0), activated(false), clicked(false), inside(false),
-       fgColor(0xFFFFFFFF), bgColor(0xFF00FF00), pic(p), picHover(pH), picDown(pD),
-       elementToTell(NULL)
-{
-       if (pic)
-               extents.w = pic[0], extents.h = pic[1];
-}
-
-Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, std::string s):
-       Element(x, y, w, h), activated(false), clicked(false), inside(false),
-       fgColor(0xFFFFFFFF), bgColor(0xFF00FF00), pic(NULL), text(s), elementToTell(NULL)
-{
-}
-
-Button::Button(uint32 x, uint32 y, std::string s):
-       Element(x, y, 0, FONT_HEIGHT), activated(false), clicked(false), inside(false),
-       fgColor(0xFFFFFFFF), bgColor(0xFF00FF00), pic(NULL), text(s), elementToTell(NULL)
-{
-       extents.w = s.length() * FONT_WIDTH;
-}
-
-// Implementation
-
-void Button::HandleMouseMove(uint32 x, uint32 y)
-{
-       inside = Inside(x, y);
-}
-
-void Button::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       if (inside)
-       {
-               if (mouseDown)
-                       clicked = true;
-
-               if (clicked && !mouseDown)
-               {
-                       clicked = false, activated = true;
-
-                       // Send a message that we're activated (if there's someone to tell, that is)
-                       if (elementToTell)
-                               elementToTell->Notify(this);
-               }
-       }
-       else
-               clicked = activated = false;
-}
-
-void Button::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       uint32 addr = (extents.x + offsetX) + ((extents.y + offsetY) * pitch);
-
-       if (text.length() > 0)                                                  // Simple text button
-//     if (pic == NULL)
-       {
-               for(uint32 y=0; y<extents.h; y++)
-               {
-                       for(uint32 x=0; x<extents.w; x++)
-                       {
-                               // Doesn't clip in y axis! !!! FIX !!!
-                               if (extents.x + x < pitch)
-                                       screenBuffer[addr + x + (y * pitch)]
-//                                     = (clicked && inside ? fgColor : (inside ? 0x43F0 : bgColor));
-//43F0 -> 010000 11111 10000 -> 0100 0001 1111 1111 1000 0100 -> 41 FF 84
-                                               = (clicked && inside ? fgColor : (inside ? 0xFF84FF41 : bgColor));
-                       }
-               }
-
-               DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
-       }
-       else                                                                                    // Graphical button
-       {
-               uint32 * picToShow = pic;
-
-               if (picHover != NULL && inside && !clicked)
-                       picToShow = picHover;
-
-               if (picDown != NULL && inside && clicked)
-                       picToShow = picDown;
-
-               DrawTransparentBitmapDeprecated(screenBuffer, extents.x + offsetX, extents.y + offsetY, picToShow);
-       }
-}
-
-bool Button::ButtonClicked(void)
-{
-       return activated;
-}
-
-void Button::SetNotificationElement(Element * e)
-{
-       elementToTell = e;
-}
diff --git a/src/gui/button.h b/src/gui/button.h
deleted file mode 100644 (file)
index c024e39..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// Button class
-//
-// by James L. Hammons
-//
-
-#ifndef __BUTTON_H__
-#define __BUTTON_H__
-
-#include <string>
-#include "element.h"
-
-class Button: public Element
-{
-       public:
-               Button(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);
-               Button(uint32 x, uint32 y, uint32 w, uint32 h, uint32 * p);
-               Button(uint32 x, uint32 y, uint32 * p, uint32 * pH = NULL, uint32 * pD = NULL);
-               Button(uint32 x, uint32 y, uint32 w, uint32 h, std::string s);
-               Button(uint32 x, uint32 y, std::string s);
-               virtual void HandleKey(SDLKey key) {}
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-               bool ButtonClicked(void);
-               void SetNotificationElement(Element * e);
-
-       protected:
-               bool activated, clicked, inside;
-               uint32 fgColor, bgColor;
-               uint32 * pic, * picHover, * picDown;
-               std::string text;
-               Element * elementToTell;
-};
-
-#endif // __BUTTON_H__
diff --git a/src/gui/element.cpp b/src/gui/element.cpp
deleted file mode 100644 (file)
index 1aa63f7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// GUI element base class
-//
-// by James L. Hammons
-//
-
-#include "element.h"
-
-// Initialize class variables (Element)
-
-uint32 * Element::screenBuffer = NULL;
-uint32 Element::pitch = 0;
-
-bool Element::Inside(uint32 x, uint32 y)
-{
-       return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
-               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false);
-}
diff --git a/src/gui/element.h b/src/gui/element.h
deleted file mode 100644 (file)
index b54fc7c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// GUI element base class
-//
-// by James L. Hammons
-//
-
-#ifndef __ELEMENT_H__
-#define __ELEMENT_H__
-
-#include "SDL.h"
-#include "types.h"
-
-class Element
-{
-       public:
-               Element(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0)
-                       { extents.x = x, extents.y = y, extents.w = w, extents.h = h; }
-               // These are "pure" virtual functions...
-               virtual void HandleKey(SDLKey key) = 0;
-               virtual void HandleMouseMove(uint32 x, uint32 y) = 0;
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) = 0;
-               virtual void Draw(uint32, uint32) = 0;
-               virtual void Notify(Element *) = 0;
-//Needed?              virtual ~Element() = 0;
-//We're not allocating anything in the base class, so the answer would be NO.
-               bool Inside(uint32 x, uint32 y);
-
-               // Class method
-               static void SetScreenAndPitch(uint32 * s, uint32 p) { screenBuffer = s, pitch = p; }
-
-       protected:
-               SDL_Rect extents;
-               uint32 state;
-
-               // Class variables...
-               static uint32 * screenBuffer;
-               static uint32 pitch;
-};
-
-#endif // __ELEMENT_H__
diff --git a/src/gui/filelist.cpp b/src/gui/filelist.cpp
deleted file mode 100644 (file)
index e2bcb75..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-// FileList class
-//
-// by James L. Hammons
-//
-
-#include "filelist.h"
-
-#include <sys/types.h>                                                         // For MacOS <dirent.h> dependency
-#include <dirent.h>
-#include "settings.h"
-#include "file.h"
-#include "guimisc.h"
-
-//Need 4 buttons, one scrollbar...
-FileList::FileList(uint32 x, uint32 y, uint32 w, uint32 h): Window(x, y, w, h)
-{
-       files = new ListBox(8, 8, w - 16, h - 32);
-       AddElement(files);
-       load = new Button(8, h - 16, " Load ");
-       AddElement(load);
-       load->SetNotificationElement(this);
-
-#warning !!! FIX !!! Directory might not exist--this shouldn't cause VJ to crash!
-       DIR * dp = opendir(vjs.ROMPath);
-       dirent * de;
-
-       if (dp != NULL)
-       {
-               while ((de = readdir(dp)) != NULL)
-               {
-                       char * ext = strrchr(de->d_name, '.');
-
-                       if (ext != NULL)
-                               if (strcasecmp(ext, ".zip") == 0 || strcasecmp(ext, ".j64") == 0
-                                       || strcasecmp(ext, ".abs") == 0 || strcasecmp(ext, ".jag") == 0
-                                       || strcasecmp(ext, ".rom") == 0)
-                                       files->AddItem(std::string(de->d_name));
-               }
-
-               closedir(dp);
-       }
-       else
-       {
-//Give a diagnostic message here so that the (l)user can figure out what went wrong. !!! FIX !!!
-       }
-}
-
-void FileList::HandleKey(SDLKey key)
-{
-       if (key == SDLK_RETURN)
-               Notify(load);
-       else
-               Window::HandleKey(key);
-}
-
-void FileList::HandleMouseMove(uint32 x, uint32 y)
-{
-       Window::HandleMouseMove(x, y);
-}
-
-void FileList::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       Window::HandleMouseButton(x, y, mouseDown);
-}
-
-void FileList::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       Window::Draw(offsetX, offsetY);
-}
-
-extern Window * ResetJaguar(void);
-#warning ICKY KLUDGE--FIX THIS MESS!!!
-void FileList::Notify(Element * e)
-{
-       if (e == load)
-       {
-               char filename[MAX_PATH];
-               strcpy(filename, vjs.ROMPath);
-
-               if (strlen(filename) > 0)
-                       if (filename[strlen(filename) - 1] != '/')
-                               strcat(filename, "/");
-
-               strcat(filename, files->GetSelectedItem().c_str());
-
-//             uint32 romSize = JaguarLoadROM(jaguar_mainRom, filename);
-//             JaguarLoadCart(jaguar_mainRom, filename);
-               if (JaguarLoadFile(filename))
-               {
-                       SDL_Event event;
-                       event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
-                       SDL_PushEvent(&event);
-
-                       event.type = SDL_USEREVENT, event.user.code = MENU_ITEM_CHOSEN;
-                       event.user.data1 = (void *)ResetJaguar;
-               SDL_PushEvent(&event);
-               }
-               else
-               {
-                       SDL_Event event;
-                       event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
-                       SDL_PushEvent(&event);
-
-                       // Handle the error, but don't run...
-                       // Tell the user that we couldn't run their file for some reason... !!! FIX !!!
-//how to kludge: Make a function like ResetJaguar which creates the dialog window
-               }
-       }
-       else
-               Window::Notify(e);
-}
diff --git a/src/gui/filelist.h b/src/gui/filelist.h
deleted file mode 100644 (file)
index 943cbd7..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// FileList class
-//
-// by James L. Hammons
-//
-
-#ifndef __FILELIST_H__
-#define __FILELIST_H__
-
-#include "window.h"
-#include "listbox.h"
-
-class FileList: public Window
-{
-       public:
-               FileList(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);
-               virtual ~FileList() {}
-               virtual void HandleKey(SDLKey key);
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element * e);
-
-       protected:
-               ListBox * files;
-               Button * load;
-};
-
-#endif // __FILELIST_H__
diff --git a/src/gui/font1.h b/src/gui/font1.h
deleted file mode 100644 (file)
index 3f4f75d..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-//
-// This file was automagically generated by bin2c (by James L. Hammons)
-//
-
-char font1[0x4000] = {
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 
-       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 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, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 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, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
-       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
-};
diff --git a/src/gui/font14pt.h b/src/gui/font14pt.h
deleted file mode 100644 (file)
index 3fcb6a0..0000000
+++ /dev/null
@@ -1,1640 +0,0 @@
-//#define FONT_WIDTH           8
-//#define FONT_HEIGHT          16
-
-//
-// This file was automagically generated by rawfont2c (by James L. Hammons)
-//
-
-char font2[] = {
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x45, 0xFF, 0x55, 0x00, 0xE5, 0xB5, 0x00,
-       0x00, 0x2F, 0xFF, 0x3F, 0x00, 0xCF, 0x9F, 0x00,
-       0x00, 0x19, 0xFF, 0x29, 0x00, 0xB9, 0x89, 0x00,
-       0x00, 0x04, 0xFE, 0x13, 0x00, 0xA3, 0x73, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 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, 0x1E, 0x00, 0x1F, 0x0E,
-       0x00, 0x00, 0x00, 0x7D, 0x8F, 0x00, 0xDC, 0x2F,
-       0x00, 0x00, 0x00, 0xB9, 0x52, 0x17, 0xEF, 0x02,
-       0x00, 0x00, 0x03, 0xF2, 0x16, 0x52, 0xB6, 0x00,
-       0x00, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x00, 0x10, 0x71, 0xA9, 0x10, 0xCB, 0x4C, 0x0F,
-       0x00, 0x00, 0x90, 0x7A, 0x00, 0xF0, 0x18, 0x00,
-       0x00, 0x00, 0xB9, 0x4F, 0x1C, 0xEE, 0x00, 0x00,
-       0x80, 0xF0, 0xFC, 0xF3, 0xF3, 0xFD, 0xF0, 0x6F,
-       0x14, 0x4B, 0xDB, 0x20, 0x9F, 0x88, 0x20, 0x0B,
-       0x00, 0x72, 0x97, 0x00, 0xD0, 0x39, 0x00, 0x00,
-       0x00, 0xB6, 0x55, 0x14, 0xF2, 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, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x45, 0xE9, 0xFF, 0xF2, 0xB8, 0x12,
-       0x00, 0x13, 0xF3, 0xAE, 0xFF, 0x3C, 0x6F, 0x31,
-       0x00, 0x48, 0xFF, 0x75, 0xFF, 0x20, 0x00, 0x4B,
-       0x10, 0x27, 0xFF, 0x9A, 0xFF, 0x20, 0x00, 0x2A,
-       0x00, 0x00, 0x9F, 0xF5, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x04, 0xAA, 0xFF, 0xA5, 0x07, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0xEF, 0x99, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x92, 0xFB, 0x0B,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x75, 0xFF, 0x14,
-       0x00, 0x3B, 0x6E, 0x66, 0xFF, 0xB1, 0xC0, 0x00,
-       0x00, 0x26, 0xBA, 0xF8, 0xFF, 0xC9, 0x18, 0x13,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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,
-       0x60, 0xDF, 0xD5, 0x3F, 0x00, 0x00, 0xA5, 0xCB,
-       0xFC, 0x75, 0xA0, 0xE6, 0x02, 0x48, 0xFB, 0x30,
-       0xFF, 0x25, 0x56, 0xFF, 0x26, 0xDF, 0x88, 0x00,
-       0xFF, 0x50, 0x82, 0xF3, 0x94, 0xDC, 0x09, 0x00,
-       0x8C, 0xFB, 0xF8, 0x96, 0xFB, 0x43, 0x00, 0x00,
-       0x00, 0x11, 0x10, 0xCE, 0x9F, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x75, 0xE9, 0x36, 0xCA, 0xDE, 0x6E,
-       0x00, 0x21, 0xF5, 0x59, 0xB0, 0xC6, 0x90, 0xFF,
-       0x00, 0xB9, 0xB6, 0x00, 0xDB, 0x94, 0x54, 0xFF,
-       0x5C, 0xF4, 0x1F, 0x00, 0xB7, 0xBF, 0x85, 0xF1,
-       0xEB, 0x71, 0x00, 0x00, 0x2D, 0xDC, 0xEF, 0x5B,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       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, 0x6D, 0xE0, 0xDD, 0x5C, 0x00, 0x00,
-       0x00, 0x2A, 0xFF, 0x6D, 0x91, 0xFA, 0x0D, 0x00,
-       0x00, 0x47, 0xFF, 0x2D, 0x62, 0xFB, 0x0E, 0x00,
-       0x00, 0x11, 0xF8, 0x90, 0xDC, 0x7E, 0x00, 0x00,
-       0x00, 0x3D, 0xE0, 0xFD, 0x5B, 0x00, 0x00, 0x00,
-       0x85, 0xF2, 0x75, 0xFB, 0x55, 0x00, 0x51, 0xFF,
-       0xFE, 0x59, 0x00, 0x9A, 0xE4, 0x0F, 0x5D, 0xF5,
-       0xFF, 0x26, 0x00, 0x17, 0xEF, 0xA7, 0x87, 0xB1,
-       0xFF, 0x61, 0x00, 0x00, 0x61, 0xFF, 0xEE, 0x32,
-       0xC7, 0xEC, 0x48, 0x17, 0x5D, 0xF9, 0xE8, 0x1A,
-       0x12, 0xA2, 0xF1, 0xF7, 0xC4, 0x5D, 0xE9, 0xC8,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xBB, 0xFF, 0x2B, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x9A, 0xFF, 0x0B, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x79, 0xE9, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x58, 0xC8, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
-       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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x34,
-       0x00, 0x00, 0x00, 0x00, 0x05, 0x8A, 0xF0, 0x7E,
-       0x00, 0x00, 0x00, 0x00, 0xA6, 0xCF, 0x1E, 0x00,
-       0x00, 0x00, 0x00, 0x58, 0xF4, 0x1C, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xCF, 0x95, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x19, 0xFF, 0x4E, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x41, 0xFF, 0x2B, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x3B, 0xFF, 0x30, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x0E, 0xFD, 0x5B, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xB7, 0xAC, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x37, 0xFB, 0x3A, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x71, 0xED, 0x53, 0x01,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xD1, 0xA5,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x1B, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x34, 0xDA, 0xD8, 0x42, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x5E, 0xF3, 0x53, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x5E, 0xF2, 0x1E, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xD3, 0x92, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x85, 0xE2, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0x0E, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1A, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x64, 0xFE, 0x09, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x94, 0xD5, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x09, 0xE7, 0x79, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x8E, 0xDE, 0x0C, 0x00, 0x00,
-       0x00, 0x1A, 0x9E, 0xEA, 0x2C, 0x00, 0x00, 0x00,
-       0x47, 0xF1, 0x9D, 0x19, 0x00, 0x00, 0x00, 0x00,
-       0x07, 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, 0x1F, 0x1F, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xB6, 0xB5, 0x00, 0x00, 0x00,
-       0x01, 0x87, 0x23, 0x94, 0x93, 0x25, 0x87, 0x00,
-       0x17, 0xBE, 0xF1, 0x1F, 0x20, 0xF1, 0xBE, 0x16,
-       0x00, 0x00, 0x2F, 0x5D, 0x5D, 0x2E, 0x00, 0x00,
-       0x00, 0x19, 0xE1, 0x76, 0x77, 0xE1, 0x19, 0x00,
-       0x00, 0x1C, 0xA3, 0x05, 0x06, 0xA3, 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, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xF0, 0xF0,
-       0x00, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x20, 0x20,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xC0, 0x09, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x27, 0xAF, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00,
-       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 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, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xB2,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x36,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xBA, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x3E, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x61, 0xC2, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x02, 0xD9, 0x46, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x58, 0xC9, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0xD2, 0x4E, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xD1, 0x01, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0xCB, 0x56, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x47, 0xD7, 0x02, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xC2, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x3E, 0xDE, 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, 0x75, 0xDF, 0xD4, 0x53, 0x00, 0x00,
-       0x00, 0x60, 0xEB, 0x3F, 0x58, 0xF8, 0x34, 0x00,
-       0x00, 0xDA, 0x7D, 0x00, 0x00, 0xAE, 0xAA, 0x00,
-       0x1F, 0xFF, 0x42, 0x00, 0x00, 0x73, 0xEE, 0x00,
-       0x42, 0xFF, 0x28, 0x00, 0x00, 0x5A, 0xFF, 0x11,
-       0x4D, 0xFF, 0x21, 0x00, 0x00, 0x52, 0xFF, 0x1C,
-       0x43, 0xFF, 0x28, 0x00, 0x00, 0x59, 0xFF, 0x13,
-       0x22, 0xFF, 0x40, 0x00, 0x00, 0x71, 0xF1, 0x00,
-       0x00, 0xDF, 0x78, 0x00, 0x00, 0xA9, 0xAF, 0x00,
-       0x00, 0x6A, 0xE5, 0x2E, 0x47, 0xF8, 0x3B, 0x00,
-       0x00, 0x01, 0x86, 0xF0, 0xE6, 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, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x16, 0x65, 0xB8, 0x1C, 0x00, 0x00,
-       0x00, 0xC1, 0xE8, 0xCF, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x29, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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,
-       0x00, 0x2F, 0xB2, 0xE4, 0xE4, 0x9F, 0x12, 0x00,
-       0x00, 0x51, 0x75, 0x2E, 0x3E, 0xE0, 0xBA, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0x11,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0x10,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xC3, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x57, 0xF3, 0x2D, 0x00,
-       0x00, 0x00, 0x00, 0x40, 0xEF, 0x44, 0x00, 0x00,
-       0x00, 0x00, 0x2A, 0xED, 0x4F, 0x00, 0x00, 0x00,
-       0x00, 0x0F, 0xDE, 0x91, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xAC, 0xFE, 0x28, 0x10, 0x10, 0x10, 0x02,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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,
-       0x00, 0x24, 0xB9, 0xE2, 0xE9, 0xBD, 0x3B, 0x00,
-       0x00, 0x23, 0x61, 0x30, 0x31, 0xBE, 0xF1, 0x09,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFE, 0x10,
-       0x00, 0x00, 0x00, 0x00, 0x19, 0xC4, 0x92, 0x00,
-       0x00, 0x00, 0x4B, 0xF3, 0xFF, 0xA7, 0x01, 0x00,
-       0x00, 0x00, 0x0A, 0x24, 0x5C, 0xF1, 0x7B, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF2, 0x03,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x19,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFA, 0x08,
-       0x00, 0x23, 0x57, 0x1A, 0x3B, 0xE8, 0x9E, 0x00,
-       0x00, 0x2D, 0xDB, 0xF9, 0xEB, 0x94, 0x09, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x3B, 0xFE, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x04, 0xD2, 0xB2, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x73, 0xC4, 0x51, 0xFF, 0x20, 0x00,
-       0x00, 0x1B, 0xEF, 0x2E, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0xAB, 0x8F, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x46, 0xE5, 0x0D, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x88, 0xFA, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xA5,
-       0x11, 0x20, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x16,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00,
-       0x00, 0x4B, 0xF0, 0xF0, 0xF0, 0xF0, 0xB0, 0x00,
-       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x17, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xEB, 0xC3, 0x5A, 0x00, 0x00,
-       0x00, 0x0A, 0x21, 0x35, 0x84, 0xFC, 0x75, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF0, 0x04,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xFF, 0x19,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xF7, 0x07,
-       0x00, 0x27, 0x46, 0x16, 0x49, 0xF0, 0x8D, 0x00,
-       0x00, 0x38, 0xDB, 0xF9, 0xE4, 0x80, 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, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x32, 0xBA, 0xE8, 0xD3, 0x6D, 0x00,
-       0x00, 0x2A, 0xF2, 0x7E, 0x27, 0x47, 0x5E, 0x00,
-       0x00, 0xB4, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x0F, 0xFC, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x3A, 0xFF, 0x53, 0xC0, 0xE7, 0x9D, 0x0A, 0x00,
-       0x4C, 0xFF, 0xBB, 0x33, 0x4A, 0xF0, 0xA0, 0x00,
-       0x48, 0xFF, 0x45, 0x00, 0x00, 0x7F, 0xFB, 0x09,
-       0x2D, 0xFF, 0x25, 0x00, 0x00, 0x55, 0xFF, 0x1A,
-       0x04, 0xF0, 0x4D, 0x00, 0x00, 0x74, 0xF3, 0x04,
-       0x00, 0x87, 0xD4, 0x2D, 0x2D, 0xE1, 0x8D, 0x00,
-       0x00, 0x05, 0x93, 0xEF, 0xF0, 0x93, 0x05, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00,
-       0x00, 0x20, 0x20, 0x20, 0x20, 0x8C, 0xBA, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x0A, 0xE9, 0x36, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x75, 0xB6, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0B, 0xEA, 0x3D, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x75, 0xCB, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x09, 0xE9, 0x62, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x6A, 0xF5, 0x0C, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0xD9, 0xAC, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x2E, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x64, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x28, 0xAC, 0xE4, 0xE8, 0xB8, 0x33, 0x00,
-       0x10, 0xEB, 0xA9, 0x2E, 0x3B, 0xCC, 0xEB, 0x06,
-       0x48, 0xFF, 0x2D, 0x00, 0x00, 0x5C, 0xFF, 0x17,
-       0x21, 0xFD, 0x9F, 0x03, 0x01, 0xAB, 0xC2, 0x00,
-       0x00, 0x6A, 0xFC, 0xCE, 0xB7, 0xB7, 0x14, 0x00,
-       0x00, 0x3E, 0xEE, 0xD8, 0xFF, 0xAF, 0x0F, 0x00,
-       0x06, 0xE6, 0x83, 0x04, 0x7E, 0xFE, 0xB4, 0x00,
-       0x3D, 0xFF, 0x2E, 0x00, 0x00, 0x90, 0xFF, 0x0F,
-       0x45, 0xFF, 0x35, 0x00, 0x00, 0x5C, 0xFE, 0x11,
-       0x0B, 0xE8, 0xBD, 0x23, 0x2F, 0xD0, 0xB5, 0x00,
-       0x00, 0x2D, 0xC0, 0xF8, 0xED, 0x9A, 0x0D, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0x9A, 0xE6, 0xD5, 0x61, 0x00, 0x00,
-       0x00, 0xAD, 0xCE, 0x31, 0x54, 0xF4, 0x4A, 0x00,
-       0x20, 0xFF, 0x4B, 0x00, 0x00, 0x89, 0xBD, 0x00,
-       0x49, 0xFF, 0x27, 0x00, 0x00, 0x56, 0xF7, 0x02,
-       0x3C, 0xFF, 0x45, 0x00, 0x00, 0x6B, 0xFF, 0x16,
-       0x05, 0xE1, 0xBE, 0x0C, 0x16, 0xCF, 0xFF, 0x1C,
-       0x00, 0x35, 0xE2, 0xFA, 0xD5, 0x7F, 0xFF, 0x0D,
-       0x00, 0x00, 0x03, 0x18, 0x02, 0x7D, 0xE4, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x97, 0x00,
-       0x00, 0x26, 0x39, 0x1B, 0x8E, 0xF2, 0x20, 0x00,
-       0x00, 0x3B, 0xDC, 0xF8, 0xD2, 0x3D, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0B, 0x24, 0x04, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x0B, 0x24, 0x24, 0x04, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0A, 0x20, 0x20, 0x04, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x1B, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x60, 0xF1, 0x03, 0x00,
-       0x00, 0x00, 0x00, 0x24, 0xD5, 0x71, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x13, 0x1F, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD5, 0xCE,
-       0x00, 0x00, 0x00, 0x43, 0xCA, 0xD9, 0x57, 0x01,
-       0x00, 0x36, 0xBC, 0xE3, 0x65, 0x04, 0x00, 0x00,
-       0x08, 0x94, 0xFA, 0x95, 0x14, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x21, 0xA3, 0xF0, 0x81, 0x0E, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x2B, 0xB0, 0xEC, 0x76,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xBD,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
-       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
-       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 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,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xCE, 0xD5, 0x51, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0x58, 0xDA, 0xC9, 0x43, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x04, 0x67, 0xE5, 0xBC, 0x35,
-       0x00, 0x00, 0x00, 0x00, 0x15, 0x98, 0xFA, 0x94,
-       0x00, 0x00, 0x0F, 0x83, 0xF0, 0xA2, 0x21, 0x00,
-       0x00, 0x77, 0xED, 0xAF, 0x2B, 0x00, 0x00, 0x00,
-       0x00, 0xBD, 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, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x2B, 0xB1, 0xDB, 0xEB, 0xDD, 0xA0, 0x1F, 0x00,
-       0x50, 0xFF, 0x5F, 0x25, 0x43, 0xD6, 0xDA, 0x02,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5D, 0xFF, 0x18,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE4, 0x02,
-       0x00, 0x00, 0x00, 0x00, 0x4F, 0xF1, 0x49, 0x00,
-       0x00, 0x00, 0x00, 0x63, 0xEC, 0x3F, 0x00, 0x00,
-       0x00, 0x00, 0x14, 0xF7, 0x59, 0x00, 0x00, 0x00,
-       0x08, 0x00, 0x45, 0xF8, 0x21, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x0A, 0x83, 0xD6, 0xE9, 0xB6, 0x23,
-       0x00, 0x09, 0xC8, 0xCD, 0x3F, 0x32, 0xC5, 0xC9,
-       0x00, 0x86, 0xED, 0x1B, 0x8F, 0xE5, 0xDE, 0xFF,
-       0x04, 0xEE, 0x84, 0x8E, 0xDE, 0x38, 0x7D, 0xFF,
-       0x30, 0xFF, 0x50, 0xF8, 0x5F, 0x00, 0x53, 0xFF,
-       0x49, 0xFF, 0x65, 0xFF, 0x2A, 0x00, 0x95, 0xFF,
-       0x46, 0xFF, 0x71, 0xFF, 0x23, 0x0D, 0xE4, 0xFF,
-       0x21, 0xFF, 0x74, 0xFF, 0x4D, 0x8E, 0x9D, 0xFF,
-       0x00, 0xD1, 0xB2, 0xA6, 0xFD, 0xA5, 0x50, 0xFF,
-       0x00, 0x42, 0xFC, 0x85, 0x31, 0x25, 0x41, 0x20,
-       0x00, 0x00, 0x4A, 0xD0, 0xFA, 0xD8, 0x5F, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       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, 0x00, 0x00, 0xA5, 0xFB, 0x18, 0x00, 0x00,
-       0x1F, 0x00, 0x10, 0xF3, 0xEC, 0x77, 0x00, 0x00,
-       0x20, 0x00, 0x6B, 0xBA, 0x92, 0xD8, 0x00, 0x00,
-       0x20, 0x00, 0xCD, 0x60, 0x38, 0xFF, 0x3B, 0x00,
-       0x20, 0x30, 0xF8, 0x0F, 0x00, 0xDC, 0x9D, 0x00,
-       0x20, 0x93, 0xAE, 0x00, 0x00, 0x83, 0xF3, 0x0C,
-       0xF1, 0xED, 0xF7, 0xF0, 0xF0, 0xF5, 0xFF, 0x62,
-       0x77, 0xE4, 0x21, 0x20, 0x20, 0x20, 0xC0, 0xC4,
-       0xBB, 0x78, 0x00, 0x00, 0x00, 0x00, 0x4D, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF4, 0xC6, 0x43,
-       0x00, 0x50, 0xFF, 0x2E, 0x15, 0x30, 0xB6, 0xF3,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFE,
-       0x00, 0x50, 0xFF, 0x20, 0x01, 0x30, 0xCB, 0x81,
-       0x00, 0x50, 0xFF, 0xF2, 0xFA, 0xFF, 0x82, 0x00,
-       0x00, 0x50, 0xFF, 0x3C, 0x30, 0x70, 0xEE, 0x96,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x64, 0xFF,
-       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x24, 0xA5, 0xFA,
-       0x27, 0x50, 0xFF, 0xFF, 0xFF, 0xF8, 0xD5, 0x64,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x33, 0xB2, 0xEE, 0xF8, 0xDB, 0x74,
-       0x08, 0x43, 0xF8, 0x9C, 0x2A, 0x16, 0x41, 0x5D,
-       0x14, 0xDE, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x32, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x4A, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x36, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x17, 0xE6, 0xBA, 0x02, 0x00, 0x00, 0x00, 0x00,
-       0x0A, 0x4F, 0xFC, 0xB6, 0x3A, 0x16, 0x30, 0x4B,
-       0x00, 0x00, 0x3B, 0xB7, 0xF1, 0xF8, 0xD8, 0x6E,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0xFF, 0xFD, 0xEB, 0xB3, 0x3E, 0x00,
-       0x50, 0xFF, 0x2E, 0x14, 0x32, 0x9B, 0xFD, 0x4C,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xB6, 0xD2,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFF,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x54, 0xFF,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFA,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xBA, 0xB5,
-       0x50, 0xFF, 0x2E, 0x18, 0x3E, 0xA7, 0xEF, 0x2A,
-       0x50, 0xFF, 0xFF, 0xFD, 0xE8, 0xAA, 0x29, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4,
-       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0B,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x0E, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x1A, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x00,
-       0x06, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x4B,
-       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x0A,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x04, 0x50, 0xFF, 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, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x08, 0x00, 0x25, 0xA2, 0xE5, 0xFA, 0xE9, 0xB9,
-       0x00, 0x38, 0xF3, 0xA8, 0x30, 0x14, 0x2C, 0x66,
-       0x01, 0xD9, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x30, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x4A, 0xFF, 0x25, 0x00, 0x00, 0xE8, 0xF0, 0xF0,
-       0x34, 0xFF, 0x47, 0x00, 0x00, 0x1F, 0x66, 0xFF,
-       0x03, 0xDF, 0xC0, 0x04, 0x00, 0x00, 0x50, 0xFF,
-       0x00, 0x40, 0xF6, 0xC0, 0x43, 0x15, 0x63, 0xFF,
-       0x00, 0x00, 0x2C, 0xA8, 0xEA, 0xFB, 0xE8, 0xB9,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x62, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x61, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x6E, 0xFF, 0xF2, 0xF0, 0xF0, 0xF5, 0xFF, 0x20,
-       0x70, 0xFF, 0x3C, 0x20, 0x20, 0x66, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x63, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
-       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20,
-       0x00, 0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1C,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFD, 0x09,
-       0x00, 0x26, 0x53, 0x1E, 0x22, 0xC5, 0xB3, 0x00,
-       0x00, 0x37, 0xD5, 0xF9, 0xF2, 0xA8, 0x13, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x9E, 0xB9, 0x03,
-       0x50, 0xFF, 0x20, 0x00, 0x74, 0xD7, 0x0F, 0x00,
-       0x50, 0xFF, 0x20, 0x4B, 0xEA, 0x24, 0x00, 0x00,
-       0x50, 0xFF, 0x4C, 0xED, 0x41, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0xC6, 0xD7, 0x0A, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x31, 0xD5, 0xB3, 0x03, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x1E, 0xE5, 0x9A, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x2E, 0xF0, 0x7E, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x41, 0xF8, 0x62,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0D,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0xE5, 0x02, 0x00, 0x0C, 0xF6, 0xFF,
-       0x50, 0xFF, 0xD7, 0x40, 0x00, 0x5A, 0xD6, 0xFF,
-       0x50, 0xFF, 0x8C, 0x98, 0x00, 0xB0, 0x8A, 0xFF,
-       0x50, 0xFF, 0x41, 0xEB, 0x12, 0xE5, 0x52, 0xFF,
-       0x50, 0xFF, 0x20, 0xD7, 0xA5, 0xA4, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x8C, 0xFF, 0x58, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x41, 0xFC, 0x11, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x70, 0xFF, 0x90, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x70, 0xFF, 0xFA, 0x25, 0x00, 0x50, 0xFF, 0x20,
-       0x70, 0xFF, 0xBD, 0xB1, 0x00, 0x50, 0xFF, 0x20,
-       0x70, 0xFF, 0x44, 0xFC, 0x42, 0x50, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0xA3, 0xCF, 0x52, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x28, 0xFD, 0xB3, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x00, 0xA9, 0xFF, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x00, 0x2D, 0xFE, 0xFF, 0x20,
-       0x70, 0xFF, 0x20, 0x00, 0x00, 0xAF, 0xFF, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00,
-       0x00, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48,
-       0x09, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA,
-       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE,
-       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF,
-       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE,
-       0x0A, 0xF3, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCB,
-       0x00, 0x7D, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x4B,
-       0x00, 0x01, 0x75, 0xE0, 0xFA, 0xD3, 0x53, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF7, 0xD0, 0x44,
-       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x29, 0xB3, 0xF0,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x27, 0xC8, 0xCF,
-       0x00, 0x50, 0xFF, 0xF2, 0xF6, 0xF8, 0xAB, 0x1B,
-       0x00, 0x50, 0xFF, 0x3C, 0x1B, 0x04, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 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, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00,
-       0x06, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48,
-       0x20, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA,
-       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE,
-       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF,
-       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE,
-       0x09, 0xF2, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCA,
-       0x00, 0x79, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x47,
-       0x00, 0x00, 0x77, 0xE3, 0xFE, 0xFF, 0x64, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x05, 0xA4, 0xEF, 0x82,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xE4,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
-       0x00, 0x50, 0xFF, 0xFF, 0xF9, 0xD5, 0x4C, 0x00,
-       0x00, 0x50, 0xFF, 0x2E, 0x1D, 0xA5, 0xF5, 0x09,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xFF, 0x11,
-       0x0A, 0x50, 0xFF, 0x20, 0x17, 0xC0, 0xB1, 0x00,
-       0x1C, 0x50, 0xFF, 0xF3, 0xFF, 0xA5, 0x0A, 0x00,
-       0x0B, 0x50, 0xFF, 0x3C, 0xA2, 0xBB, 0x01, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x12, 0xE9, 0x74, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xF9, 0x30,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0xB5, 0xD6,
-       0x1F, 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, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x4F, 0xCF, 0xF9, 0xF1, 0xCE, 0x5F, 0x00,
-       0x20, 0xFB, 0x83, 0x19, 0x1F, 0x4E, 0x4F, 0x00,
-       0x4A, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x12, 0xE6, 0xE3, 0x6F, 0x14, 0x00, 0x00, 0x00,
-       0x00, 0x15, 0x88, 0xE7, 0xFB, 0xAD, 0x22, 0x00,
-       0x00, 0x00, 0x00, 0x03, 0x50, 0xDC, 0xDE, 0x02,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0x17,
-       0x3D, 0x86, 0x3B, 0x15, 0x32, 0xC3, 0xD1, 0x00,
-       0x33, 0xB2, 0xE5, 0xFC, 0xEB, 0xA3, 0x19, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 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, 0x00,
-       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x10, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x52, 0xFF, 0x1C,
-       0x33, 0xFF, 0x3E, 0x00, 0x00, 0x71, 0xFC, 0x07,
-       0x03, 0xDE, 0xB7, 0x1F, 0x2F, 0xDC, 0xAE, 0x00,
-       0x00, 0x2C, 0xBF, 0xF7, 0xF0, 0xA3, 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, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xB8, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xF3,
-       0x57, 0xFD, 0x1D, 0x00, 0x00, 0x00, 0x6A, 0xBF,
-       0x07, 0xEE, 0x7F, 0x00, 0x00, 0x00, 0xCF, 0x5D,
-       0x00, 0x95, 0xE0, 0x02, 0x00, 0x36, 0xF0, 0x09,
-       0x00, 0x34, 0xFF, 0x48, 0x00, 0x9D, 0x97, 0x00,
-       0x00, 0x00, 0xD3, 0xAD, 0x0E, 0xF4, 0x35, 0x00,
-       0x00, 0x00, 0x72, 0xFA, 0x80, 0xD2, 0x00, 0x00,
-       0x00, 0x00, 0x16, 0xFB, 0xFD, 0x6F, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xB0, 0xF9, 0x13, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xF4, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9,
-       0xAC, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1,
-       0x87, 0xA4, 0x00, 0x84, 0xFB, 0x0C, 0x1B, 0xE9,
-       0x61, 0xCB, 0x00, 0xC5, 0xFF, 0x48, 0x44, 0xC0,
-       0x3C, 0xF2, 0x0C, 0xF9, 0xBF, 0x88, 0x6D, 0x97,
-       0x17, 0xFF, 0x61, 0xD2, 0x6F, 0xC8, 0x96, 0x6E,
-       0x00, 0xF1, 0xC8, 0x93, 0x30, 0xFB, 0xCC, 0x45,
-       0x00, 0xCC, 0xFF, 0x55, 0x02, 0xEF, 0xFF, 0x1C,
-       0x00, 0xA7, 0xFF, 0x17, 0x00, 0xB3, 0xF3, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x81, 0xFE, 0x52, 0x00, 0x00, 0x00, 0x89, 0xC2,
-       0x12, 0x90, 0xEC, 0x1A, 0x00, 0x4B, 0xE9, 0x1B,
-       0x00, 0x07, 0xD2, 0xBB, 0x20, 0xEB, 0x46, 0x00,
-       0x00, 0x00, 0x2C, 0xF7, 0xEB, 0x82, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xAC, 0xFF, 0x33, 0x00, 0x00,
-       0x00, 0x00, 0x4C, 0xE9, 0xC4, 0xD5, 0x08, 0x00,
-       0x00, 0x1E, 0xEB, 0x46, 0x1C, 0xEE, 0x92, 0x00,
-       0x04, 0xC6, 0x84, 0x00, 0x00, 0x55, 0xFE, 0x46,
-       0x8C, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x9F, 0xE6,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x58, 0xFE, 0x39, 0x00, 0x00, 0x00, 0x15, 0xE9,
-       0x00, 0xB4, 0xD3, 0x05, 0x00, 0x00, 0xAD, 0xA2,
-       0x00, 0x1F, 0xF4, 0x79, 0x00, 0x5C, 0xE7, 0x12,
-       0x00, 0x00, 0x73, 0xF6, 0x3D, 0xEE, 0x51, 0x00,
-       0x00, 0x00, 0x03, 0xCF, 0xFB, 0xA8, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x57, 0xFF, 0x28, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x13, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x00, 0x10, 0x10, 0x10, 0x10, 0x21, 0xE4, 0xA1,
-       0x00, 0x00, 0x00, 0x00, 0x02, 0xB7, 0xC4, 0x07,
-       0x00, 0x00, 0x00, 0x00, 0x83, 0xE0, 0x16, 0x00,
-       0x00, 0x00, 0x00, 0x4D, 0xF1, 0x2D, 0x00, 0x00,
-       0x00, 0x00, 0x24, 0xED, 0x4B, 0x00, 0x00, 0x00,
-       0x00, 0x0B, 0xD3, 0x73, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xA7, 0xA9, 0x10, 0x10, 0x10, 0x10, 0x10,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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,
-       0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x28,
-       0x00, 0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x02,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0x25,
-       0x00, 0x00, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x05,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x42, 0xDD, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xC6, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x4A, 0xD6, 0x02, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0xCD, 0x54, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x52, 0xCF, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0xD4, 0x4C, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x5A, 0xC7, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x03, 0xDA, 0x43, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x62, 0xBF, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x05, 0xE0, 0x3A, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB6, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x32,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xAE,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00,
-       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x52, 0xF0, 0xF0, 0xF5, 0xFF, 0x20, 0x00,
-       0x00, 0x0B, 0x20, 0x20, 0x20, 0x20, 0x04, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x38, 0xA7, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0xA5, 0xFA, 0x19, 0x00,
-       0x00, 0x00, 0x00, 0x18, 0xF2, 0xB4, 0x81, 0x00,
-       0x00, 0x00, 0x00, 0x7F, 0xA1, 0x34, 0xE7, 0x05,
-       0x00, 0x00, 0x05, 0xE6, 0x34, 0x00, 0xC7, 0x5A,
-       0x00, 0x00, 0x58, 0xC7, 0x00, 0x00, 0x5B, 0xC7,
-       0x00, 0x00, 0xC5, 0x5A, 0x00, 0x00, 0x06, 0xE8,
-       0x00, 0x31, 0xE8, 0x06, 0x00, 0x00, 0x00, 0x82,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
-       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 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, 0x18, 0xCD, 0xBE, 0x03, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0C, 0xB6, 0x86, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x1E, 0xB1, 0xE9, 0xFC, 0xE3, 0x60, 0x00,
-       0x00, 0x25, 0x55, 0x1A, 0x1D, 0xAE, 0xF6, 0x07,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1E,
-       0x00, 0x12, 0x89, 0xD2, 0xEB, 0xF5, 0xFF, 0x20,
-       0x08, 0xD7, 0xCA, 0x51, 0x29, 0x66, 0xFF, 0x20,
-       0x44, 0xFF, 0x2E, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x2C, 0xFF, 0x87, 0x18, 0x47, 0xCF, 0xFF, 0x4B,
-       0x00, 0x6B, 0xE7, 0xF6, 0xB7, 0x30, 0xAD, 0xF4,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16, 0x00,
-       0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9, 0x00,
-       0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9, 0x05,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF, 0x1B,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF, 0x11,
-       0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1, 0x00,
-       0x56, 0xFF, 0xBA, 0x28, 0x3C, 0xEF, 0x76, 0x00,
-       0x8F, 0xEB, 0x58, 0xE4, 0xF2, 0x8E, 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, 0x00,
-       0x00, 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, 0x89, 0xE4, 0xFA, 0xE4, 0x7C, 0x00,
-       0x00, 0xA2, 0xEF, 0x52, 0x16, 0x33, 0x4D, 0x00,
-       0x1A, 0xFE, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x1B, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xA5, 0xF0, 0x5A, 0x17, 0x2A, 0x47, 0x00,
-       0x00, 0x08, 0x8C, 0xE5, 0xFA, 0xE1, 0x74, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x84, 0xFF, 0x20,
-       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD6, 0xFF, 0x20,
-       0x16, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20,
-       0x43, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20,
-       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20,
-       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 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,
-       0x00, 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, 0x87, 0xE9, 0xF7, 0xBB, 0x1E, 0x00,
-       0x00, 0x92, 0xC7, 0x28, 0x28, 0xC9, 0xB9, 0x00,
-       0x13, 0xFB, 0x3B, 0x00, 0x00, 0x5D, 0xFC, 0x08,
-       0x44, 0xFF, 0xF1, 0xF0, 0xF0, 0xF5, 0xFF, 0x1C,
-       0x48, 0xFF, 0x42, 0x20, 0x20, 0x20, 0x20, 0x04,
-       0x1E, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xA9, 0xE8, 0x4F, 0x16, 0x22, 0x65, 0x13,
-       0x00, 0x08, 0x89, 0xE1, 0xFB, 0xE8, 0xB0, 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, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x59, 0xD4, 0xFA, 0xF4, 0xCD,
-       0x00, 0x00, 0x21, 0xFC, 0x85, 0x1B, 0x16, 0x34,
-       0x00, 0x00, 0x4E, 0xFF, 0x22, 0x00, 0x00, 0x00,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00, 0x00,
-       0x00, 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, 0xA9, 0xF6, 0xCF, 0x7F, 0xFF, 0x20,
-       0x00, 0xA4, 0xD8, 0x29, 0x38, 0xD9, 0xFF, 0x20,
-       0x15, 0xFC, 0x5B, 0x00, 0x00, 0x53, 0xFF, 0x20,
-       0x43, 0xFF, 0x2A, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x2E, 0xFF, 0x46, 0x00, 0x00, 0x72, 0xFF, 0x20,
-       0x01, 0xD8, 0xBF, 0x1D, 0x56, 0xE3, 0xFF, 0x1E,
-       0x00, 0x2E, 0xD1, 0xF7, 0xB7, 0x66, 0xFF, 0x14,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xEF, 0x01,
-       0x00, 0x4A, 0x3A, 0x14, 0x36, 0xDB, 0x8D, 0x00,
-       0x00, 0x75, 0xDF, 0xFA, 0xE9, 0x92, 0x07, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A,
-       0x00, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1,
-       0x00, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 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,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00,
-       0x04, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00,
-       0x1C, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x20, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00,
-       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x5D, 0xFE, 0x0A, 0x00,
-       0x2A, 0x54, 0x1F, 0x1A, 0xB6, 0xBF, 0x00, 0x00,
-       0x35, 0xD1, 0xF5, 0xF5, 0xB8, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x32, 0xF4, 0x4D,
-       0x00, 0x50, 0xFF, 0x20, 0x17, 0xE2, 0x7B, 0x00,
-       0x00, 0x50, 0xFF, 0x26, 0xC5, 0xA9, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0xB7, 0xEE, 0x0B, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x6F, 0xFD, 0x82, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x77, 0xFF, 0x5A, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0xA0, 0xF7, 0x38,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x06, 0xC4, 0xE8,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00,
-       0x02, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x1F, 0x00, 0x00, 0x50, 0xFF, 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, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x45, 0xE8, 0x7A, 0x2E, 0xEB, 0xAA,
-       0x50, 0xFF, 0x9E, 0x7C, 0xEF, 0x83, 0x79, 0xFF,
-       0x50, 0xFF, 0x5F, 0x53, 0xFF, 0x5D, 0x51, 0xFF,
-       0x50, 0xFF, 0x22, 0x50, 0xFF, 0x22, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF,
-       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A,
-       0x10, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1,
-       0x1F, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF,
-       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF,
-       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x05, 0x85, 0xE3, 0xFA, 0xD9, 0x6A, 0x00,
-       0x04, 0x9C, 0xE8, 0x45, 0x16, 0x61, 0xFA, 0x6F,
-       0x35, 0xFD, 0x62, 0x00, 0x00, 0x00, 0x94, 0xE6,
-       0x66, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF,
-       0x67, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF,
-       0x3A, 0xFE, 0x61, 0x00, 0x00, 0x00, 0x93, 0xE6,
-       0x20, 0xA2, 0xE6, 0x44, 0x16, 0x5E, 0xF9, 0x71,
-       0x20, 0x07, 0x8A, 0xE5, 0xFA, 0xDA, 0x6D, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16,
-       0x00, 0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9,
-       0x00, 0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF,
-       0x00, 0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1,
-       0x00, 0x50, 0xFF, 0xBA, 0x27, 0x3C, 0xEF, 0x76,
-       0x00, 0x50, 0xFF, 0x74, 0xE5, 0xF1, 0x8E, 0x02,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 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, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x5A, 0xFF, 0x20,
-       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD5, 0xFF, 0x20,
-       0x1B, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20,
-       0x5E, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x5C, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20,
-       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20,
-       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 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,
-       0x00, 0x50, 0xFF, 0x44, 0xBE, 0xF8, 0xFF, 0x20,
-       0x00, 0x50, 0xFF, 0xD3, 0x42, 0x5F, 0xFF, 0x20,
-       0x00, 0x50, 0xFF, 0x4B, 0x00, 0x11, 0x38, 0x07,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x50, 0xFF, 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, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 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, 0xDA, 0xFB, 0xF0, 0xC9, 0x1D,
-       0x00, 0x2D, 0xFF, 0x82, 0x1C, 0x1C, 0x45, 0x13,
-       0x00, 0x3F, 0xFF, 0x70, 0x03, 0x00, 0x00, 0x00,
-       0x00, 0x01, 0xA1, 0xFE, 0xEB, 0x9D, 0x47, 0x01,
-       0x00, 0x00, 0x00, 0x22, 0x71, 0xC1, 0xFF, 0xAD,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xFF,
-       0x00, 0x36, 0x70, 0x2C, 0x14, 0x33, 0xBD, 0xE0,
-       0x00, 0x2B, 0xB8, 0xE8, 0xFD, 0xEF, 0xAE, 0x25,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00,
-       0x15, 0x00, 0x48, 0xFF, 0x24, 0x00, 0x00, 0x00,
-       0x03, 0x00, 0x1D, 0xFE, 0x95, 0x26, 0x18, 0x31,
-       0x00, 0x00, 0x00, 0x6F, 0xDE, 0xFB, 0xF8, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20,
-       0x4C, 0xFF, 0x27, 0x00, 0x00, 0x8E, 0xFF, 0x20,
-       0x26, 0xFF, 0x93, 0x37, 0x99, 0xE6, 0xFF, 0x20,
-       0x00, 0x82, 0xF2, 0xEF, 0x97, 0x5A, 0xFF, 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,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x63, 0xF4, 0x0C, 0x00, 0x00, 0x00, 0x63, 0xD1,
-       0x0C, 0xF3, 0x63, 0x00, 0x00, 0x00, 0xC9, 0x6C,
-       0x00, 0x9E, 0xC5, 0x00, 0x00, 0x2E, 0xF6, 0x10,
-       0x00, 0x3B, 0xFF, 0x27, 0x00, 0x95, 0xA2, 0x00,
-       0x00, 0x00, 0xD8, 0x89, 0x0A, 0xF0, 0x3D, 0x00,
-       0x00, 0x00, 0x76, 0xE6, 0x63, 0xD7, 0x00, 0x00,
-       0x00, 0x00, 0x18, 0xFB, 0xEF, 0x73, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xB1, 0xF9, 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, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xD6, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4,
-       0xAB, 0x93, 0x00, 0x7E, 0xFE, 0x0F, 0x00, 0xEB,
-       0x7F, 0xBD, 0x00, 0xC1, 0xC1, 0x43, 0x14, 0xE1,
-       0x54, 0xE7, 0x0A, 0xD5, 0x71, 0x79, 0x3C, 0xB1,
-       0x28, 0xFF, 0x58, 0x9E, 0x3A, 0xAE, 0x64, 0x82,
-       0x04, 0xF8, 0xC5, 0x61, 0x08, 0xDD, 0x8C, 0x52,
-       0x00, 0xD1, 0xFF, 0x23, 0x00, 0xCB, 0xCC, 0x23,
-       0x00, 0xA6, 0xE6, 0x00, 0x00, 0x94, 0xF2, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x56, 0xE9, 0xB0, 0x00, 0x00, 0x1B, 0xF1, 0x7A,
-       0x11, 0x4E, 0xFF, 0x61, 0x00, 0xB0, 0xA6, 0x00,
-       0x00, 0x00, 0x9D, 0xF2, 0x73, 0xEC, 0x15, 0x00,
-       0x00, 0x00, 0x0D, 0xDF, 0xFF, 0x5E, 0x00, 0x00,
-       0x00, 0x00, 0x13, 0xE8, 0xFF, 0x75, 0x00, 0x00,
-       0x00, 0x00, 0xA9, 0xB2, 0x88, 0xF8, 0x2E, 0x00,
-       0x00, 0x58, 0xEC, 0x17, 0x06, 0xD0, 0xD1, 0x06,
-       0x18, 0xED, 0x56, 0x00, 0x00, 0x2C, 0xF8, 0x8B,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 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, 0x33, 0x00, 0x00, 0x00, 0x53, 0xE0,
-       0x00, 0xC9, 0x99, 0x00, 0x00, 0x00, 0xBA, 0x79,
-       0x00, 0x62, 0xF3, 0x0D, 0x00, 0x23, 0xF8, 0x16,
-       0x00, 0x0A, 0xF0, 0x67, 0x00, 0x88, 0xA7, 0x00,
-       0x00, 0x00, 0x93, 0xCE, 0x05, 0xE9, 0x3E, 0x00,
-       0x00, 0x00, 0x2B, 0xFF, 0x8C, 0xD5, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xC4, 0xFF, 0x6C, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x63, 0xF4, 0x0E, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x9B, 0x99, 0x00, 0x00, 0x00,
-       0x00, 0x12, 0x4D, 0xF7, 0x2B, 0x00, 0x00, 0x00,
-       0x00, 0xFF, 0xE4, 0x62, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
-       0x00, 0x10, 0x10, 0x10, 0x17, 0xD3, 0xA9, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x97, 0xD7, 0x0C, 0x00,
-       0x00, 0x00, 0x00, 0x5C, 0xF4, 0x2A, 0x00, 0x00,
-       0x00, 0x00, 0x2B, 0xF4, 0x59, 0x00, 0x00, 0x00,
-       0x00, 0x0D, 0xD8, 0x93, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xA9, 0xD1, 0x16, 0x10, 0x10, 0x10, 0x00,
-       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x7A, 0xDF, 0xFC, 0x84,
-       0x00, 0x00, 0x00, 0x37, 0xFF, 0x6B, 0x15, 0x08,
-       0x00, 0x00, 0x00, 0x4F, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x02, 0x53, 0xFF, 0x1D, 0x00, 0x00,
-       0x00, 0x00, 0x01, 0x90, 0xE8, 0x04, 0x00, 0x00,
-       0x00, 0x70, 0xF7, 0xF4, 0x3B, 0x00, 0x00, 0x00,
-       0x00, 0x0F, 0x29, 0xAF, 0xCF, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x53, 0xFF, 0x1A, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x3F, 0xFF, 0x4D, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x01, 0x96, 0xF8, 0xF4, 0x7B,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1D, 0x10,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0xB4, 0xF9, 0xD1, 0x50, 0x00, 0x00, 0x00,
-       0x00, 0x0B, 0x19, 0x96, 0xF8, 0x0C, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x4D, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x21, 0xFB, 0x62, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x61, 0xFE, 0xF4, 0x47,
-       0x00, 0x00, 0x00, 0x14, 0xEE, 0x8A, 0x25, 0x09,
-       0x00, 0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x7E, 0xFE, 0x11, 0x00, 0x00,
-       0x00, 0xA8, 0xF7, 0xF2, 0x76, 0x00, 0x00, 0x00,
-       0x00, 0x16, 0x1A, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x5D, 0xE2, 0x8F, 0x00, 0x00, 0x00, 0x00,
-       0x10, 0xF6, 0x72, 0xA8, 0xE2, 0x4C, 0x5C, 0xDF,
-       0x44, 0xFF, 0x26, 0x09, 0xA8, 0xFC, 0xFC, 0x8D,
-       0x09, 0x20, 0x04, 0x00, 0x00, 0x0E, 0x12, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
diff --git a/src/gui/glwidget.cpp b/src/gui/glwidget.cpp
new file mode 100644 (file)
index 0000000..109c1c9
--- /dev/null
@@ -0,0 +1,131 @@
+// OpenGL implementation in Qt
+// Parts of this are blantantly ripped off from BSNES (thanks Byuu!)
+//
+// by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/14/2010  Created this file
+//
+
+#include "glwidget.h"
+
+#include "settings.h"
+
+GLWidget::GLWidget(QWidget * parent/*= 0*/): QGLWidget(parent), texture(0),
+       textureWidth(0), textureHeight(0), buffer(0), rasterWidth(64), rasterHeight(64)
+//     textureWidth(0), textureHeight(0), buffer(0), rasterWidth(256), rasterHeight(256)
+{
+}
+
+GLWidget::~GLWidget()
+{
+}
+
+void GLWidget::initializeGL()
+{
+       format().setDoubleBuffer(true);
+       resizeGL(rasterWidth, rasterHeight);
+
+       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);
+}
+
+void GLWidget::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, (smoothGLOutput ? GL_LINEAR : GL_NEAREST));
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (smoothGLOutput ? GL_LINEAR : GL_NEAREST));
+//     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST /*GL_LINEAR*/);
+//     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST /*GL_LINEAR*/);
+//     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer);
+       glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 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 GLWidget::resizeGL(int width, int height)
+{
+       if (width > textureWidth || height > textureHeight)
+       {
+//             textureWidth  = max(width,  textureWidth);
+//             textureHeight = max(height, textureHeight);
+// Seems that power of 2 sizes are still mandatory...
+               textureWidth  = 1024;//(width > textureWidth ? width : textureWidth);
+               textureHeight = 512;//(height > textureHeight ? height : textureHeight);
+//             textureWidth  = (width > textureWidth ? width : textureWidth);
+//             textureHeight = (height > textureHeight ? height : textureHeight);
+#if 0
+printf("Resizing: new texture width/height = %i x %i\n", textureWidth, textureHeight);
+printf("Resizing: new raster width/height = %i x %i\n", rasterWidth, rasterHeight);
+#endif
+
+               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, NULL);
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, textureWidth, textureHeight, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, NULL);
+       }
+}
+
+#if 0
+class RubyGLWidget: public QGLWidget
+{
+  public:
+    GLuint texture;
+    unsigned textureWidth, textureHeight;
+
+    uint32_t * buffer;
+    unsigned rasterWidth, rasterHeight;
+
+    bool synchronize;
+    unsigned filter;
+
+    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
+    }
+} * widget;
+#endif
diff --git a/src/gui/glwidget.h b/src/gui/glwidget.h
new file mode 100644 (file)
index 0000000..7c8f995
--- /dev/null
@@ -0,0 +1,43 @@
+// Implementation of OpenGL widget using Qt
+//
+// by James L. Hammons
+// (C) 2010 Underground Software
+
+#ifndef __GLWIDGET_H__
+#define __GLWIDGET_H__
+
+#include <QtGui>
+#include <QGLWidget>
+
+class GLWidget: public QGLWidget
+{
+       Q_OBJECT
+
+       public:
+               GLWidget(QWidget * parent = 0);
+               ~GLWidget();
+
+//             QSize minimumSizeHint() const;
+//             QSize sizeHint() const;
+
+//     signals:
+//             void clicked();
+
+       protected:
+               void initializeGL();
+               void paintGL();
+               void resizeGL(int width, int height);
+
+//     private:
+       public:
+               GLuint texture;
+               int textureWidth, textureHeight;
+
+               uint32_t * buffer;
+               unsigned rasterWidth, rasterHeight;
+
+               bool synchronize;
+               unsigned filter;
+};
+
+#endif // __GLWIDGET_H__
diff --git a/src/gui/guielements.h b/src/gui/guielements.h
deleted file mode 100644 (file)
index 3dece2f..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-//
-// GUIELEMENTS.H
-//
-// Graphical User Interface bitmaps and such
-//
-
-#ifndef __GUIELEMENTS_H__
-#define __GUIELEMENTS_H__
-
-#include "types.h"
-
-#if 0
-// Okay, this is ugly but works and I can't think of any better way to handle this. So what
-// we do when we pass the GIMP bitmaps into a function is pass them as a (void *) and then
-// cast them as type (Bitmap *) in order to use them. Yes, it's ugly. Come up with something
-// better!
-
-struct Bitmap {
-       unsigned int width;
-       unsigned int height;
-       unsigned int bytesPerPixel;                                     // 3:RGB, 4:RGBA
-       unsigned char pixelData[];
-};
-#endif
-
-//NOTE: 32-bit pixels are in the format of ABGR...
-//      This may not be endian safe... Mac users?
-//Using the GIMP C style bitmap is portable in that it's specified in bytes
-//but we can cast it in uint32s and thus it will display correctly regardless of
-//the underlying endianess. At least, in theory. ;-)
-
-uint32 mousePic[] = {
-       6, 8,
-
-       0xFF00FF00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,              // +
-       0xFF00C600,0xFF00FF00,0x00000000,0x00000000,0x00000000,0x00000000,              // @+
-       0xFF00C600,0xFF00FF00,0xFF00FF00,0x00000000,0x00000000,0x00000000,              // @++
-       0xFF00C600,0xFF00C600,0xFF00FF00,0xFF00FF00,0x00000000,0x00000000,              // @@++
-       0xFF00C600,0xFF00C600,0xFF00FF00,0xFF00FF00,0xFF00FF00,0x00000000,              // @@+++
-       0xFF00C600,0xFF00C600,0xFF00C600,0xFF00FF00,0xFF00FF00,0xFF00FF00,              // @@@+++
-       0xFF00C600,0xFF00C600,0xFF00C600,0x00000000,0x00000000,0x00000000,              // @@@
-       0xFF00C600,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000               // @
-/*
-       0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000,              // +
-       0x0300,0x03E0,0x0000,0x0000,0x0000,0x0000,              // @+
-       0x0300,0x03E0,0x03E0,0x0000,0x0000,0x0000,              // @++
-       0x0300,0x0300,0x03E0,0x03E0,0x0000,0x0000,              // @@++
-       0x0300,0x0300,0x03E0,0x03E0,0x03E0,0x0000,              // @@+++
-       0x0300,0x0300,0x0300,0x03E0,0x03E0,0x03E0,              // @@@+++
-       0x0300,0x0300,0x0300,0x0000,0x0000,0x0000,              // @@@
-       0x0300,0x0000,0x0000,0x0000,0x0000,0x0000               // @
-
-       0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,              // +
-       0xE318,0xFFFF,0x0000,0x0000,0x0000,0x0000,              // @+
-       0xE318,0xFFFF,0xFFFF,0x0000,0x0000,0x0000,              // @++
-       0xE318,0xE318,0xFFFF,0xFFFF,0x0000,0x0000,              // @@++
-       0xE318,0xE318,0xFFFF,0xFFFF,0xFFFF,0x0000,              // @@+++
-       0xE318,0xE318,0xE318,0xFFFF,0xFFFF,0xFFFF,              // @@@+++
-       0xE318,0xE318,0xE318,0x0000,0x0000,0x0000,              // @@@
-       0xE318,0x0000,0x0000,0x0000,0x0000,0x0000               // @
-*/
-};
-
-uint32 upArrowBox[] = {
-       8, 8,
-
-       0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,                // ++++++++
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0xFFBD8400,                // + @@@@ .
-       0xFFF7D649,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFBD8400,                // +@@@@@@.
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400                 // ........
-};
-
-uint32 downArrowBox[] = {
-       8, 8,
-
-       0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,                // ++++++++
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFF7D649,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFBD8400,                // +@@@@@@.
-       0xFFF7D649,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0xFFBD8400,                // + @@@@ .
-       0xFFF7D649,0x00000000,0x00000000,0xFFFFFFFF,0xFFFFFFFF,0x00000000,0x00000000,0xFFBD8400,                // +  @@  .
-       0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400                 // ........
-};
-
-/* GIMP RGBA C-Source image dump (unlit button (16x16).png.c) */
-#if 0
-const struct {
-  unsigned int          width;
-  unsigned int          height;
-  unsigned int          bytes_per_pixel; /* 3:RGB, 4:RGBA */
-  unsigned char         pixel_data[16 * 16 * 4 + 1];
-}
-#endif
-#warning Nonportable--!!! FIX !!!
-uint8 pbUp[] = {
-//  16, 16, 4,
-//nonportable--!!! FIX !!!
-       "\020\0\0\0"
-       "\020\0\0\0"
-       "\4\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\26\26\40`__\203\205rr\305\216mm\344\205"
-  "cc\345kWW\306@??\202\16\16\16\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\2\2\2\4nll\205\277\217\217\372\251LL\377\23588\377\23155\377\227"
-  "22\377\22600\377\22477\377\204UU\371>;;\203\1\1\1\3\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\2\2\2\4\225\215\215\260\271hh\377\234==\377\22499\377\22366\377\22233"
-  "\377\22111\377\221//\377\220--\377\221,,\377\213==\377SJJ\254\1\1\1\4\0\0"
-  "\0\0\0\0\0\0omm\205\271hh\377\231==\377\224::\377\22377\377\22344\377\223"
-  "22\377\22100\377\220..\377\220--\377\220,,\377\220++\377\213<<\377=;;\204"
-  "\0\0\0\0\27\27\27\"\301\220\220\372\234==\377\224::\377\22388\377\22555\377"
-  "\22533\377\22411\377\223//\377\222--\377\220,,\377\220++\377\221**\377\222"
-  "**\377\204RR\372\16\16\16\37baa\205\252MM\377\224::\377\22377\377\22655\377"
-  "\22433\377\22111\377\216//\377\214..\377\214,,\377\217++\377\221++\377\221"
-  "**\377\224**\377\22422\377=<<\203\207tt\307\23599\377\22366\377\22355\377"
-  "\22533\377\22111\377\215//\377\213..\377\213--\377\212,,\377\212++\377\221"
-  "**\377\222**\377\226**\377\227**\377dNN\306\222oo\344\23155\377\22244\377"
-  "\22322\377\22411\377\216//\377\213..\377\213--\377\212,,\377\212++\377\212"
-  "**\377\220**\377\223**\377\230))\377\231**\377xTT\345\210ff\345\23033\377"
-  "\22111\377\22100\377\223//\377\215..\377\213--\377\212,,\377\212++\377\212"
-  "**\377\212**\377\221**\377\224))\377\232))\377\233))\377yTT\344lYY\304\230"
-  "11\377\221//\377\220..\377\222--\377\215,,\377\212,,\377\212++\377\212**"
-  "\377\212**\377\211**\377\224))\377\226))\377\235))\377\235**\377dNN\305?"
-  ">>\177\230;;\377\220..\377\220--\377\220,,\377\217++\377\212++\377\212**"
-  "\377\212**\377\212**\377\222))\377\225))\377\234))\377\237))\377\23455\377"
-  ";;;\200\15\15\15\34\207YY\367\222--\377\220,,\377\220++\377\221++\377\222"
-  "**\377\220**\377\221**\377\224))\377\224))\377\232))\377\237))\377\237**"
-  "\377\211UU\367\14\14\14\34\0\0\0\0:88{\221CC\377\220++\377\221++\377\221"
-  "**\377\222**\377\223**\377\224))\377\226))\377\234))\377\237))\377\237))"
-  "\377\232AA\377988{\0\0\0\0\0\0\0\0\1\1\1\2NGG\243\221CC\377\223++\377\224"
-  "**\377\226**\377\227))\377\232))\377\235))\377\236))\377\237**\377\232BB"
-  "\377OGG\244\1\1\1\2\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\2""766w\204WW\365\2279"
-  "9\377\231,,\377\231**\377\233**\377\236++\377\23388\377\207VV\365766w\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\12\12\12\30""777w]M"
-  "M\272rSS\330sSS\330]MM\270777w\12\12\12\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0"
-};
-
-uint32 pushButtonUp[] = {
-       8, 8,
-
-       0x00000000, 0xFF1B1B1B, 0xFF545477, 0xFF525292, 0xFF474787, 0xFF363659, 0xFF0F0F0F, 0x00000000,
-       0xFF1B1B1C, 0xFF6666A7, 0xFF393995, 0xFF343492, 0xFF2F2F90, 0xFF2C2C90, 0xFF3B3B7E, 0xFF0F0F0F,
-       0xFF555578, 0xFF3A3A95, 0xFF353594, 0xFF303091, 0xFF2D2D8F, 0xFF2B2B90, 0xFF2A2A92, 0xFF333358,
-       0xFF545493, 0xFF343492, 0xFF303092, 0xFF2D2D8B, 0xFF2B2B8A, 0xFF2A2A8D, 0xFF292994, 0xFF3D3D83,
-       0xFF484889, 0xFF2F2F90, 0xFF2D2D8F, 0xFF2B2B8A, 0xFF2A2A89, 0xFF29298E, 0xFF292998, 0xFF3D3D84,
-       0xFF37375A, 0xFF2C2C90, 0xFF2B2B90, 0xFF2A2A8D, 0xFF29298E, 0xFF292995, 0xFF29299D, 0xFF34345B,
-       0xFF0E0E0E, 0xFF3E3E7F, 0xFF2A2A92, 0xFF292994, 0xFF292998, 0xFF29299D, 0xFF3C3C88, 0xFF0E0E0E,
-       0x00000000, 0xFF0D0D0D, 0xFF343456, 0xFF3D3D80, 0xFF3D3D82, 0xFF333358, 0xFF0D0D0D, 0x00000000
-};
-
-uint8 pbuAlpha[] = {
-       0xFF, 0xE4, 0xA0, 0x99, 0xA4, 0xBE, 0xF0, 0xFF,
-       0xE3, 0x85, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xF0,
-       0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
-       0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD,
-       0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC,
-       0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF,
-       0xF1, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xF1,
-       0xFF, 0xF2, 0xC0, 0xAD, 0xAD, 0xC0, 0xF2, 0xFF
-};
-
-/* GIMP RGBA C-Source image dump (Lit Button (16x16).png.c) */
-#if 0
-const struct {
-  unsigned int          width;
-  unsigned int          height;
-  unsigned int          bytes_per_pixel; /* 3:RGB, 4:RGBA */
-  unsigned char         pixel_data[16 * 16 * 4 + 1];
-}
-#endif
-uint8 pbDown[] = {
-//  16, 16, 4,
-//nonportable--!!! FIX !!!
-       "\020\0\0\0"
-       "\020\0\0\0"
-       "\4\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\261\261\261\36\276\276\276\200\272\272\272"
-  "\302\255\255\255\343\236\236\236\343\214\214\214\302~~~\177uuu\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\223\223\223\3\332\332\332\200\353"
-  "\353\353\371\347\323\323\377\321\224\224\377\303rr\377\274jj\377\263uu\377"
-  "\237\212\212\377\205\205\205\370xxx\177ccc\3\0\0\0\0\0\0\0\0\0\0\0\0\236"
-  "\236\236\3\345\345\345\252\371\362\362\377\326\203\203\377\325BB\377\353"
-  "DD\377\365DD\377\365CC\377\351>>\377\31777\377\251TT\377\210\200\200\377"
-  "yyy\250```\3\0\0\0\0\0\0\0\0\333\333\333\200\371\362\362\377\320cc\377\356"
-  "GG\377\371HH\377\366FF\377\363CC\377\363BB\377\365AA\377\367@@\377\351<<"
-  "\377\257@@\377\203{{\377www\177\0\0\0\0\261\261\261\36\354\354\354\370\326"
-  "\204\204\377\356GG\377\370HH\377\362EE\377\351BB\377\340>>\377\337==\377"
-  "\347>>\377\357??\377\366??\377\352;;\377\242LL\377{{{\370sss\35\300\300\300"
-  "\200\350\324\324\377\326BB\377\371HH\377\362EE\377\341@@\377\324<<\377\326"
-  "<<\377\325;;\377\32199\377\335;;\377\360>>\377\370??\377\32033\377\205pp"
-  "\377xxx\177\274\274\274\302\322\225\225\377\353DD\377\366FF\377\351BB\377"
-  "\324<<\377\331==\377\335>>\377\335==\377\330;;\377\32088\377\347<<\377\365"
-  ">>\377\353::\377\225UU\377xxx\303\260\260\260\343\305tt\377\366EE\377\363"
-  "DD\377\340>>\377\326<<\377\335>>\377\342??\377\342>>\377\334<<\377\32388"
-  "\377\33599\377\363>>\377\371==\377\237II\377yyy\343\237\237\237\343\275l"
-  "l\377\365CC\377\363BB\377\337==\377\325;;\377\335==\377\342>>\377\342>>\377"
-  "\334<<\377\32388\377\33699\377\364>>\377\372==\377\240II\377yyy\343\216\216"
-  "\216\303\264vv\377\352??\377\365AA\377\347>>\377\32199\377\330;;\377\334"
-  "<<\377\334<<\377\327::\377\31777\377\350;;\377\371>>\377\357;;\377\227UU"
-  "\377xxx\302~~~\200\240\214\214\377\32188\377\367@@\377\357??\377\335;;\377"
-  "\32088\377\32388\377\32388\377\31777\377\33799\377\362==\377\376>>\377\326"
-  "55\377\204nn\377www\177vvv\34\205\205\205\370\253UU\377\353==\377\366??\377"
-  "\360>>\377\347<<\377\33599\377\33699\377\350;;\377\362==\377\375>>\377\362"
-  ";;\377\246HH\377zzz\370rrr\36\0\0\0\0xxx\177\210\200\200\377\261AA\377\353"
-  "==\377\370??\377\365>>\377\363>>\377\364>>\377\370>>\377\376>>\377\362<<"
-  "\377\266<<\377~uu\377www\177\0\0\0\0\0\0\0\0ddd\3yyy\250\203{{\377\243MM"
-  "\377\32155\377\354<<\377\371>>\377\372>>\377\357;;\377\32755\377\246HH\377"
-  "~uu\377xxx\250___\3\0\0\0\0\0\0\0\0\0\0\0\0hhh\3www\177{{{\370\205pp\377"
-  "\225UU\377\237JJ\377\240JJ\377\227UU\377\204nn\377zzz\370www\177```\3\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ttt\35www\200xxx\303yyy\343y"
-  "yy\343xxx\303xxx\177sss\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
-};
-
-uint32 pushButtonDown[] = {
-       8, 8,
-
-       0x00000000, 0xFF1B1B1B, 0xFF8B8B90, 0xFF8C8CAF, 0xFF767699, 0xFF56565B, 0xFF0F0F0F, 0x00000000,
-       0xFF1B1B1B, 0xFFB8B8D6, 0xFF5555E4, 0xFF4444F2, 0xFF4040F1, 0xFF4141D5, 0xFF626282, 0xFF0F0F0F,
-       0xFF8C8C91, 0xFF5555E4, 0xFF4444EF, 0xFF3E3EDC, 0xFF3B3BDB, 0xFF3D3DEC, 0xFF3E3ED4, 0xFF4B4B51,
-       0xFF8D8DB1, 0xFF4444F2, 0xFF3E3EDC, 0xFF3E3EDD, 0xFF3C3CDC, 0xFF3939D9, 0xFF3C3CF3, 0xFF59597E,
-       0xFF77779B, 0xFF4141F1, 0xFF3B3BDB, 0xFF3C3CDC, 0xFF3B3BDC, 0xFF3838D9, 0xFF3C3CF5, 0xFF595980,
-       0xFF57575D, 0xFF4242D8, 0xFF3D3DEC, 0xFF3939D9, 0xFF3838D9, 0xFF3C3CEF, 0xFF3D3DDC, 0xFF4C4C52,
-       0xFF101010, 0xFF636385, 0xFF3E3ED8, 0xFF3D3DF4, 0xFF3D3DF6, 0xFF3D3DDD, 0xFF5D5D83, 0xFF101010,
-       0x00000000, 0xFF101010, 0xFF4E4E55, 0xFF5B5B83, 0xFF5B5B84, 0xFF4D4D54, 0xFF101010, 0x00000000
-};
-
-uint8 pbdAlpha[] = {
-       0xFF, 0xE4, 0x72, 0x68, 0x7E, 0xA7, 0xF0, 0xFF,
-       0xE4, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x93, 0xF0,
-       0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2,
-       0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A,
-       0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A,
-       0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1,
-       0xEF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x96, 0xEF,
-       0xFF, 0xEF, 0xAE, 0x98, 0x97, 0xAF, 0xEF, 0xFF
-};
-
-uint32 slideSwitchUp[] = {
-       8, 16,
-
-//0C7F -> 000011 00011 11111 -> 0000 1100 0001 1000 1111 1111 -> 0C 18 FF
-       0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,                // ++++++++
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400                 // ........
-};
-
-uint32 slideSwitchDown[] = {
-       8, 16,
-
-       0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,0xFFF7D649,                // ++++++++
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xFFBD8400,                // +.......
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFF7D649,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFFF180C,0xFFBD8400,                // +      .
-       0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400,0xFFBD8400                 // ........
-};
-
-#define CLOSEBOX_WIDTH         15
-#define CLOSEBOX_HEIGHT                15
-
-uint32 closeBox[] = {
-       15, 15,
-
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000,
-       0xFF3838ED, 0xFF5858E7, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF5858E7, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF3838ED, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF3838ED, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF3838ED, 0xFF3838ED, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF3838ED, 0xFF3838ED, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF5858E7, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF5858E7, 0xFF3838ED,
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000
-};
-
-uint32 closeBoxHover[] = {
-       15, 15,
-
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000,
-       0xFF3838ED, 0xFF5858E7, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF5858E7, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF3838ED, 0xFF3838ED, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF3838ED, 0xFF3838ED, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF52B7FF, 0xFF52B7FF, 0xFF52B7FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF40AFFF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF63BEFF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF40AFFF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF40AFFF, 0xFF52B7FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF52B7FF, 0xFF40AFFF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF40AFFF, 0xFF52B7FF, 0xFF63BEFF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF63BEFF, 0xFF52B7FF, 0xFF40AFFF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF40AFFF, 0xFF52B7FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF52B7FF, 0xFF40AFFF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF40AFFF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF63BEFF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF40AFFF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF52B7FF, 0xFF52B7FF, 0xFF52B7FF, 0xFF3838ED, 0xFF6B6BFB, 0xFF3838ED, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF3838ED, 0xFF3838ED, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF40AFFF, 0xFF3838ED, 0xFF3838ED, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF6B6BFB, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF20A2FF, 0xFF6B6BFB, 0xFF3838ED,
-       0xFF3838ED, 0xFF5858E7, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF6B6BFB, 0xFF5858E7, 0xFF3838ED,
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000
-};
-
-uint32 closeBoxDown[] = {
-       15, 15,
-
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000,
-       0xFF3838ED, 0xFF1D1DE2, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF1D1DE2, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF3838ED, 0xFF3838ED, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF3838ED, 0xFF3838ED, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0077CC, 0xFF0077CC, 0xFF0077CC, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF0786E2, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF006EBD, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0786E2, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF0786E2, 0xFF0077CC, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0077CC, 0xFF0786E2, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF0786E2, 0xFF0077CC, 0xFF006EBD, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF006EBD, 0xFF0077CC, 0xFF0786E2, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF0786E2, 0xFF0077CC, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0077CC, 0xFF0786E2, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF0786E2, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF006EBD, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0786E2, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF0077CC, 0xFF0077CC, 0xFF0077CC, 0xFF3838ED, 0xFF2B2BC0, 0xFF3838ED, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF3838ED, 0xFF3838ED, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF0786E2, 0xFF3838ED, 0xFF3838ED, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF2B2BC0, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF1F9DF7, 0xFF2B2BC0, 0xFF3838ED,
-       0xFF3838ED, 0xFF1D1DE2, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF2B2BC0, 0xFF1D1DE2, 0xFF3838ED,
-       0x00000000, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0xFF3838ED, 0x00000000
-};
-
-#endif // __GUIELEMENTS_H__
diff --git a/src/gui/guimisc.cpp b/src/gui/guimisc.cpp
deleted file mode 100644 (file)
index dcd0e9c..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-//
-// Miscellaneous GUI utility functions
-//
-// by James L. Hammons
-//
-
-#include "guimisc.h"
-
-#include <stdarg.h>
-#include "font1.h"
-#include "font14pt.h"
-#include "guielements.h"       // Make this go away...
-#include "sdlemu_opengl.h"
-#include "vj_title_small.c"
-//#include "video.h"
-
-//
-// Case insensitive string compare function
-// Taken straight out of Thinking In C++ by Bruce Eckel. Thanks Bruce!
-//
-
-int stringCmpi(const std::string &s1, const std::string &s2)
-{
-       // Select the first element of each string:
-       std::string::const_iterator p1 = s1.begin(), p2 = s2.begin();
-
-       while (p1 != s1.end() && p2 != s2.end())                // Don�t run past the end
-       {
-               if (toupper(*p1) != toupper(*p2))                       // Compare upper-cased chars
-                       return (toupper(*p1) < toupper(*p2) ? -1 : 1);// Report which was lexically greater
-
-               p1++;
-               p2++;
-       }
-
-       // If they match up to the detected eos, say which was longer. Return 0 if the same.
-       return s2.size() - s1.size();
-}
-
-//
-// Draw text at the given x/y coordinates. Can invert text as well.
-//
-void DrawString(uint32 * screen, uint32 x, uint32 y, bool invert, const char * text, ...)
-{
-       char string[4096];
-       va_list arg;
-
-       va_start(arg, text);
-       vsprintf(string, text, arg);
-       va_end(arg);
-
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
-       uint32 length = strlen(string), address = x + (y * pitch);
-
-       uint32 color1 = 0x0080FF;
-       uint8 nBlue = (color1 >> 16) & 0xFF, nGreen = (color1 >> 8) & 0xFF, nRed = color1 & 0xFF;
-       uint8 xorMask = (invert ? 0xFF : 0x00);
-
-       for(uint32 i=0; i<length; i++)
-       {
-               uint8 c = string[i];
-               uint32 fontAddr = (uint32)(c < 32 ? 0 : c - 32) * FONT_WIDTH * FONT_HEIGHT;
-
-               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
-               {
-                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
-                       {
-                               uint32 existingColor = *(screen + address + xx + (yy * pitch));
-
-                               uint8 eBlue = (existingColor >> 16) & 0xFF,
-                                       eGreen = (existingColor >> 8) & 0xFF,
-                                       eRed = existingColor & 0xFF;
-
-                               uint8 trans = font2[fontAddr] ^ xorMask;
-                               uint8 invTrans = trans ^ 0xFF;
-
-                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255,
-                                       bGreen = (eGreen * invTrans + nGreen * trans) / 255,
-                                       bBlue = (eBlue * invTrans + nBlue * trans) / 255;
-
-                               *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
-                               fontAddr++;
-                       }
-               }
-
-               address += FONT_WIDTH;
-       }
-}
-
-//
-// Draw text at the given x/y coordinates, using FG/BG colors.
-//
-void DrawStringOpaque(uint32 * screen, uint32 x, uint32 y, uint32 color1, uint32 color2, const char * text, ...)
-{
-       char string[4096];
-       va_list arg;
-
-       va_start(arg, text);
-       vsprintf(string, text, arg);
-       va_end(arg);
-
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();
-       uint32 length = strlen(string), address = x + (y * pitch);
-
-       uint8 eBlue = (color2 >> 16) & 0xFF, eGreen = (color2 >> 8) & 0xFF, eRed = color2 & 0xFF,
-               nBlue = (color1 >> 16) & 0xFF, nGreen = (color1 >> 8) & 0xFF, nRed = color1 & 0xFF;
-
-       for(uint32 i=0; i<length; i++)
-       {
-               uint8 c = string[i];
-               c = (c < 32 ? 0 : c - 32);
-               uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;
-
-               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
-               {
-                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
-                       {
-                               uint8 trans = font2[fontAddr++];
-                               uint8 invTrans = trans ^ 0xFF;
-
-                               uint32 bRed   = (eRed   * invTrans + nRed   * trans) / 255;
-                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
-                               uint32 bBlue  = (eBlue  * invTrans + nBlue  * trans) / 255;
-
-                               *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
-                       }
-               }
-
-               address += FONT_WIDTH;
-       }
-}
-
-//
-// Draw text at the given x/y coordinates with transparency (0 is fully opaque, 32 is fully transparent).
-//
-void DrawStringTrans(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 trans, const char * text, ...)
-{
-       char string[4096];
-       va_list arg;
-
-       va_start(arg, text);
-       vsprintf(string, text, arg);
-       va_end(arg);
-
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
-       uint32 length = strlen(string), address = x + (y * pitch);
-
-       for(uint32 i=0; i<length; i++)
-       {
-               uint32 fontAddr = (uint32)string[i] * 64;
-
-               for(uint32 yy=0; yy<8; yy++)
-               {
-                       for(uint32 xx=0; xx<8; xx++)
-                       {
-                               if (font1[fontAddr])
-                               {
-                                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
-
-                                       uint8 eBlue = (existingColor >> 16) & 0xFF,
-                                               eGreen = (existingColor >> 8) & 0xFF,
-                                               eRed = existingColor & 0xFF,
-//This could be done ahead of time, instead of on each pixel...
-                                               nBlue = (color >> 16) & 0xFF,
-                                               nGreen = (color >> 8) & 0xFF,
-                                               nRed = color & 0xFF;
-
-//This could be sped up by using a table of 5 + 5 + 5 bits (32 levels transparency -> 32768 entries)
-//Here we've modified it to have 33 levels of transparency (could have any # we want!)
-//because dividing by 32 is faster than dividing by 31...!
-                                       uint8 invTrans = 32 - trans;
-
-                                       uint32 bRed = (eRed * trans + nRed * invTrans) / 32;
-                                       uint32 bGreen = (eGreen * trans + nGreen * invTrans) / 32;
-                                       uint32 bBlue = (eBlue * trans + nBlue * invTrans) / 32;
-
-                                       *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
-                               }
-
-                               fontAddr++;
-                       }
-               }
-
-               address += 8;
-       }
-}
-
-//
-// Draw text at the given x/y coordinates, using FG color and overlay alpha blending.
-//
-void DrawString2(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 transparency, const char * text, ...)
-{
-       char string[4096];
-       va_list arg;
-
-       va_start(arg, text);
-       vsprintf(string, text, arg);
-       va_end(arg);
-
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();
-       uint32 length = strlen(string), address = x + (y * pitch);
-
-       color &= 0x00FFFFFF;                                            // Just in case alpha was passed in...
-
-       for(uint32 i=0; i<length; i++)
-       {
-               uint8 c = string[i];
-               c = (c < 32 ? 0 : c - 32);
-               uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;
-
-               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
-               {
-                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
-                       {
-                               uint8 fontTrans = font2[fontAddr++];
-                               uint32 newTrans = (fontTrans * transparency / 255) << 24;
-                               uint32 pixel = newTrans | color;
-
-                               *(screen + address + xx + (yy * pitch)) = pixel;
-                       }
-               }
-
-               address += FONT_WIDTH;
-       }
-}
-
-//
-// Draw "picture"
-// Uses zero as transparent color
-// Can also use an optional alpha channel
-// Alpha channel is now mandatory! ;-)
-//
-//void DrawTransparentBitmap(int16 * screen, uint32 x, uint32 y, uint16 * bitmap, uint8 * alpha/*=NULL*/)
-/*void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap, uint8 * alpha)
-{
-       uint32 width = bitmap[0], height = bitmap[1];
-       bitmap += 2;
-
-//     uint32 pitch = GetSDLScreenPitch() / 2;                 // Returns pitch in bytes but we need words...
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
-       uint32 address = x + (y * pitch);
-
-       for(uint32 yy=0; yy<height; yy++)
-       {
-               for(uint32 xx=0; xx<width; xx++)
-               {
-                       if (alpha == NULL)
-                       {
-                               if (*bitmap && x + xx < pitch)                  // NOTE: Still doesn't clip the Y val...
-                                       *(screen + address + xx + (yy * pitch)) = *bitmap;
-                       }
-                       else
-                       {
-                               uint8 trans = *alpha;
-                               uint32 color = *bitmap;
-                               uint32 existingColor = *(screen + address + xx + (yy * pitch));
-
-                               uint8 eRed = existingColor & 0xFF,
-                                       eGreen = (existingColor >> 8) & 0xFF,
-                                       eBlue = (existingColor >> 16) & 0xFF,
-
-                                       nRed = color & 0xFF,
-                                       nGreen = (color >> 8) & 0xFF,
-                                       nBlue = (color >> 16) & 0xFF;
-
-                               uint8 invTrans = 255 - trans;
-                               uint32 bRed = (eRed * trans + nRed * invTrans) / 255;
-                               uint32 bGreen = (eGreen * trans + nGreen * invTrans) / 255;
-                               uint32 bBlue = (eBlue * trans + nBlue * invTrans) / 255;
-
-                               uint32 blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
-
-                               *(screen + address + xx + (yy * pitch)) = blendedColor;
-
-                               alpha++;
-                       }
-
-                       bitmap++;
-               }
-       }
-}*/
-void DrawTransparentBitmapDeprecated(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap)
-{
-       uint32 width = bitmap[0], height = bitmap[1];
-       bitmap += 2;
-
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
-       uint32 address = x + (y * pitch);
-
-       for(uint32 yy=0; yy<height; yy++)
-       {
-               for(uint32 xx=0; xx<width; xx++)
-               {
-                       uint32 color = *bitmap;
-                       uint32 blendedColor = color;
-                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
-
-                       if (existingColor >> 24 != 0x00)                // Pixel needs blending
-                       {
-                               uint8 trans = color >> 24;
-                               uint8 invTrans = trans ^ 0xFF;//255 - trans;
-
-                               uint8 eRed = existingColor & 0xFF,
-                                       eGreen = (existingColor >> 8) & 0xFF,
-                                       eBlue = (existingColor >> 16) & 0xFF,
-
-                                       nRed = color & 0xFF,
-                                       nGreen = (color >> 8) & 0xFF,
-                                       nBlue = (color >> 16) & 0xFF;
-
-                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255;
-                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
-                               uint32 bBlue = (eBlue * invTrans + nBlue * trans) / 255;
-
-                               blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
-                       }
-
-                       *(screen + address + xx + (yy * pitch)) = blendedColor;
-                       bitmap++;
-               }
-       }
-}
-
-void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap)
-{
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();
-       uint32 address = x + (y * pitch);
-       uint32 count = 0;
-
-       for(uint32 yy=0; yy<((Bitmap *)bitmap)->height; yy++)
-       {
-               for(uint32 xx=0; xx<((Bitmap *)bitmap)->width; xx++)
-               {
-                       uint32 color = ((uint32 *)((Bitmap *)bitmap)->pixelData)[count];
-                       uint32 blendedColor = color;
-                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
-
-                       if (existingColor >> 24 != 0x00)        // Pixel needs blending
-                       {
-                               uint8 trans = color >> 24;
-                               uint8 invTrans = trans ^ 0xFF;
-
-                               uint8 eRed = existingColor & 0xFF,
-                                       eGreen = (existingColor >> 8) & 0xFF,
-                                       eBlue = (existingColor >> 16) & 0xFF,
-
-                                       nRed = color & 0xFF,
-                                       nGreen = (color >> 8) & 0xFF,
-                                       nBlue = (color >> 16) & 0xFF;
-
-                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255;
-                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
-                               uint32 bBlue = (eBlue * invTrans + nBlue * trans) / 255;
-
-// Instead of $FF, should use the alpha from the destination pixel as the final alpha value...
-                               blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
-                       }
-
-                       *(screen + address + xx + (yy * pitch)) = blendedColor;
-                       count++;
-               }
-       }
-}
-
-//
-// Draw a bitmap without using blending
-//
-void DrawBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap)
-{
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();
-       uint32 address = x + (y * pitch);
-       uint32 count = 0;
-
-       for(uint32 yy=0; yy<((Bitmap *)bitmap)->height; yy++)
-       {
-               for(uint32 xx=0; xx<((Bitmap *)bitmap)->width; xx++)
-               {
-                       *(screen + address + xx + (yy * pitch)) = ((uint32 *)((Bitmap *)bitmap)->pixelData)[count];
-                       count++;
-               }
-       }
-}
-
-//
-// Fill a portion of the screen with the passed in color
-//
-void FillScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h, uint32 color)
-//void ClearScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h)
-{
-       uint32 pitch = sdlemuGetOverlayWidthInPixels();
-       uint32 address = x + (y * pitch);
-
-       for(uint32 yy=0; yy<h; yy++)
-               for(uint32 xx=0; xx<w; xx++)
-                       *(screen + address + xx + (yy * pitch)) = color;
-}
-
diff --git a/src/gui/guimisc.h b/src/gui/guimisc.h
deleted file mode 100644 (file)
index 498e561..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// Miscellaneous GUI utility functions
-//
-// by James L. Hammons
-//
-
-#ifndef __GUIMISC_H__
-#define __GUIMISC_H__
-
-#include <string>
-#include "types.h"
-
-int stringCmpi(const std::string &, const std::string &);
-//void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap, uint8 * alpha = NULL);
-void DrawTransparentBitmapDeprecated(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap);
-void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap);
-void DrawBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap);
-//Should call this FillScreenRectangle with a number representing the RGBA value to fill. !!! FIX !!!
-//void ClearScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h);
-void FillScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h, uint32 color);
-void DrawStringTrans(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 opacity, const char * text, ...);
-void DrawStringOpaque(uint32 * screen, uint32 x, uint32 y, uint32 color1, uint32 color2, const char * text, ...);
-void DrawString(uint32 * screen, uint32 x, uint32 y, bool invert, const char * text, ...);
-void DrawString2(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 transparency, const char * text, ...);
-
-// Useful enumerations
-
-enum { WINDOW_CLOSE, MENU_ITEM_CHOSEN };
-
-// This is for font2 (crappy--fix!!!)
-
-#define FONT_WIDTH             8
-#define FONT_HEIGHT            16
-
-// And this is for the various closeBox stuff--crappy--fix!!!
-
-#define CLOSEBOX_WIDTH         15
-#define CLOSEBOX_HEIGHT                15
-
-// Okay, this is ugly but works and I can't think of any better way to handle this. So what
-// we do when we pass the GIMP bitmaps into a function is pass them as a (void *) and then
-// cast them as type (Bitmap *) in order to use them. Yes, it's ugly. Come up with something
-// better!
-
-struct Bitmap {
-       unsigned int width;
-       unsigned int height;
-       unsigned int bytesPerPixel;                                     // 3:RGB, 4:RGBA
-       unsigned char pixelData[];
-};
-
-// GUI bitmaps/fonts (exported)
-
-extern char font1[];
-extern char font2[];
-
-extern uint32 mousePic[];
-extern uint32 upArrowBox[];
-extern uint32 downArrowBox[];
-extern uint32 pushButtonUp[];
-extern uint8 pbuAlpha[];
-extern uint32 pushButtonDown[];
-extern uint8 pbdAlpha[];
-extern uint32 slideSwitchUp[];
-extern uint32 slideSwitchDown[];
-extern uint32 closeBox[];
-extern uint32 closeBoxHover[];
-extern uint32 closeBoxDown[];
-
-extern uint8 pbUp[];
-extern uint8 pbDown[];
-extern uint8 vj_title_small[];
-
-#endif // __GUIMISC_H__
diff --git a/src/gui/image.cpp b/src/gui/image.cpp
deleted file mode 100644 (file)
index c48a6ff..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// Static image class
-//
-// by James L. Hammons
-//
-
-#include "image.h"
-
-#include "guimisc.h"
-
-Image::Image(uint32 x, uint32 y, const void * img):
-       Element(x, y, 0, 0), image(img)
-{
-}
-
-void Image::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       if (image != NULL)
-               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, image);
-}
diff --git a/src/gui/image.h b/src/gui/image.h
deleted file mode 100644 (file)
index 05de59c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//
-// Static image class
-//
-// by James L. Hammons
-//
-
-#ifndef __IMAGE_H__
-#define __IMAGE_H__
-
-#include "element.h"
-
-class Image: public Element
-{
-       public:
-               Image(uint32 x, uint32 y, const void * img);
-               virtual void HandleKey(SDLKey key) {}
-               virtual void HandleMouseMove(uint32 x, uint32 y) {}
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-
-       protected:
-               uint32 fgColor, bgColor;
-               const void * image;
-};
-
-#endif // __IMAGE_H__
diff --git a/src/gui/listbox.cpp b/src/gui/listbox.cpp
deleted file mode 100644 (file)
index 9b47ff9..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// ListBox class
-//
-// by James L. Hammons
-//
-
-#include "listbox.h"
-
-#include "guimisc.h"
-
-ListBox::ListBox(uint32 x, uint32 y, uint32 w, uint32 h): Element(x, y, w, h),
-       thumbClicked(false), windowPtr(0), cursor(0), limit(0), charWidth((w / FONT_WIDTH) - 1),
-       charHeight(h / FONT_HEIGHT), elementToTell(NULL), upArrow(w - 8, 0, upArrowBox),
-       downArrow(w - 8, h - 8, downArrowBox), upArrow2(w - 8, h - 16, upArrowBox)
-{
-       upArrow.SetNotificationElement(this);
-       downArrow.SetNotificationElement(this);
-       upArrow2.SetNotificationElement(this);
-       extents.w -= 8;                                                                 // Make room for scrollbar...
-}
-
-void ListBox::HandleKey(SDLKey key)
-{
-       if (key == SDLK_DOWN)
-       {
-               if (cursor != limit - 1)        // Cursor is within its window
-                       cursor++;
-               else                                            // Otherwise, scroll the window...
-               {
-                       if (cursor + windowPtr != item.size() - 1)
-                               windowPtr++;
-               }
-       }
-       else if (key == SDLK_UP)
-       {
-               if (cursor != 0)
-                       cursor--;
-               else
-               {
-                       if (windowPtr != 0)
-                               windowPtr--;
-               }
-       }
-       else if (key == SDLK_PAGEDOWN)
-       {
-               if (cursor != limit - 1)
-                       cursor = limit - 1;
-               else
-               {
-                       windowPtr += limit;
-                       if (windowPtr > item.size() - limit)
-                               windowPtr = item.size() - limit;
-               }
-       }
-       else if (key == SDLK_PAGEUP)
-       {
-               if (cursor != 0)
-                       cursor = 0;
-               else
-               {
-                       if (windowPtr < limit)
-                               windowPtr = 0;
-                       else
-                               windowPtr -= limit;
-               }
-       }
-       else if (key >= SDLK_a && key <= SDLK_z)
-       {
-               // Advance cursor to filename with first letter pressed...
-               uint8 which = (key - SDLK_a) + 65;      // Convert key to A-Z char
-
-               for(uint32 i=0; i<item.size(); i++)
-               {
-                       if ((item[i][0] & 0xDF) == which)
-                       {
-                               cursor = i - windowPtr;
-                               if (i > windowPtr + limit - 1)
-                                       windowPtr = i - limit + 1, cursor = limit - 1;
-                               if (i < windowPtr)
-                                       windowPtr = i, cursor = 0;
-                               break;
-                       }
-               }
-       }
-}
-
-void ListBox::HandleMouseMove(uint32 x, uint32 y)
-{
-       upArrow.HandleMouseMove(x - extents.x, y - extents.y);
-       downArrow.HandleMouseMove(x - extents.x, y - extents.y);
-       upArrow2.HandleMouseMove(x - extents.x, y - extents.y);
-
-       if (thumbClicked)
-       {
-               uint32 sbHeight = extents.h - 24,
-                       thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight);
-
-//yRelativePoint is the spot on the thumb where we clicked...
-               int32 newThumbStart = y - yRelativePoint;
-
-               if (newThumbStart < 0)
-                       newThumbStart = 0;
-
-               if ((uint32)newThumbStart > sbHeight - thumb)
-                       newThumbStart = sbHeight - thumb;
-
-               windowPtr = (uint32)(((float)newThumbStart / (float)sbHeight) * (float)item.size());
-//Check for cursor bounds as well... Or do we need to???
-//Actually, we don't...!
-       }
-}
-
-void ListBox::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       if (Inside(x, y) && mouseDown)
-       {
-               // Why do we have to do this??? (- extents.y?)
-               // I guess it's because only the Window class has offsetting implemented... !!! FIX !!!
-//             cursor = (y - extents.y) / 8;
-               cursor = (y - extents.y) / FONT_HEIGHT;
-       }
-
-       // Check for a hit on the scrollbar...
-       if (x > (uint32)(extents.x + extents.w) && x <= (uint32)(extents.x + extents.w + 8)
-               && y > (uint32)(extents.y + 8) && y <= (uint32)(extents.y + extents.h - 16))
-       {
-               if (mouseDown)
-               {
-// This shiaut should be calculated in AddItem(), not here... (or in Draw() for that matter)
-                       uint32 sbHeight = extents.h - 24,
-                               thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight),
-                               thumbStart = (uint32)(((float)windowPtr / (float)item.size()) * (float)sbHeight);
-
-                       // Did we hit the thumb?
-                       if (y >= (extents.y + 8 + thumbStart) && y < (extents.y + 8 + thumbStart + thumb))
-                               thumbClicked = true, yRelativePoint = y - thumbStart;
-               }
-//Seems that this is useless--never reached except in rare cases and that the code outside is
-//more effective...
-//             else
-//                     thumbClicked = false;
-       }
-
-       if (!mouseDown)
-               thumbClicked = false;
-
-       upArrow.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
-       downArrow.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
-       upArrow2.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
-}
-
-void ListBox::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       for(uint32 i=0; i<limit; i++)
-       {
-               // Strip off the extension
-               // (extension stripping should be an option, not default!)
-               std::string s(item[windowPtr + i], 0, item[windowPtr + i].length() - 4);
-//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY + i*8,
-               DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY + i*FONT_HEIGHT,
-                       (cursor == i ? true : false), "%-*.*s", charWidth, charWidth, s.c_str());
-       }
-
-       upArrow.Draw(extents.x + offsetX, extents.y + offsetY);
-       downArrow.Draw(extents.x + offsetX, extents.y + offsetY);
-       upArrow2.Draw(extents.x + offsetX, extents.y + offsetY);
-
-       uint32 sbHeight = extents.h - 24,
-               thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight),
-               thumbStart = (uint32)(((float)windowPtr / (float)item.size()) * (float)sbHeight);
-
-       for(uint32 y=extents.y+offsetY+8; y<extents.y+offsetY+extents.h-16; y++)
-       {
-//             for(uint32 x=extents.x+offsetX+extents.w-8; x<extents.x+offsetX+extents.w; x++)
-               for(uint32 x=extents.x+offsetX+extents.w; x<extents.x+offsetX+extents.w+8; x++)
-               {
-                       if (y >= thumbStart + (extents.y+offsetY+8) && y < thumbStart + thumb + (extents.y+offsetY+8))
-//                             screenBuffer[x + (y * pitch)] = (thumbClicked ? 0x458E : 0xFFFF);
-//458E -> 01 0001  0 1100  0 1110 -> 0100 0101  0110 0011  0111 0011 -> 45 63 73
-                               screenBuffer[x + (y * pitch)] = (thumbClicked ? 0xFF736345 : 0xFFFFFFFF);
-                       else
-//                             screenBuffer[x + (y * pitch)] = 0x0200;
-//0200 -> 000000 10000 00000 -> 00 1000 0100 00
-                               screenBuffer[x + (y * pitch)] = 0xFF008400;
-               }
-       }
-}
-
-void ListBox::Notify(Element * e)
-{
-       if (e == &upArrow || e == &upArrow2)
-       {
-               if (windowPtr != 0)
-               {
-                       windowPtr--;
-
-                       if (cursor < limit - 1)
-                               cursor++;
-               }
-       }
-       else if (e == &downArrow)
-       {
-               if (windowPtr < item.size() - limit)
-               {
-                       windowPtr++;
-
-                       if (cursor != 0)
-                               cursor--;
-               }
-       }
-}
-
-void ListBox::SetNotificationElement(Element * e)
-{
-       elementToTell = e;
-}
-
-void ListBox::AddItem(std::string s)
-{
-       // Do a simple insertion sort
-       bool inserted = false;
-
-       for(std::vector<std::string>::iterator i=item.begin(); i<item.end(); i++)
-       {
-               if (stringCmpi(s, *i) == -1)
-               {
-                       item.insert(i, s);
-                       inserted = true;
-                       break;
-               }
-       }
-
-       if (!inserted)
-               item.push_back(s);
-
-       limit = (item.size() > charHeight ? charHeight : item.size());
-}
-
-std::string ListBox::GetSelectedItem(void)
-{
-       return item[windowPtr + cursor];
-}
diff --git a/src/gui/listbox.h b/src/gui/listbox.h
deleted file mode 100644 (file)
index 854a27f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ListBox class
-//
-// by James L. Hammons
-//
-
-#ifndef __LISTBOX_H__
-#define __LISTBOX_H__
-
-#include <string>
-#include <vector>
-#include "button.h"
-//#include "element.h"
-
-class ListBox: public Element
-//class ListBox: public Window
-{
-       public:
-//             ListBox(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
-               ListBox(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);//: Window(x, y, w, h),
-//             windowPtr(0), cursor(0), limit(0), charWidth((w / 8) - 1), charHeight(h / 8),
-//             elementToTell(NULL), upArrow(w - 8, 0, upArrowBox),
-//             downArrow(w - 8, h - 8, downArrowBox), upArrow2(w - 8, h - 16, upArrowBox) {}
-               virtual void HandleKey(SDLKey key);
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element * e);
-               void SetNotificationElement(Element * e);
-               void AddItem(std::string s);
-               std::string GetSelectedItem(void);
-
-       protected:
-               bool thumbClicked;
-               uint32 windowPtr, cursor, limit;
-               uint32 charWidth, charHeight;                           // Box width/height in characters
-               Element * elementToTell;
-               Button upArrow, downArrow, upArrow2;
-               std::vector<std::string> item;
-
-       private:
-               uint32 yRelativePoint;
-};
-
-#endif // __LISTBOX_H__
diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp
new file mode 100644 (file)
index 0000000..dba74e7
--- /dev/null
@@ -0,0 +1,163 @@
+//
+// mainwin.cpp - Qt-based GUI for Virtual Jaguar: Main Application Window
+// by James L. Hammons
+// (C) 2009 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  12/23/2009  Created this file
+//
+
+// FIXED:
+//
+//
+// STILL TO BE DONE:
+//
+//
+
+// Uncomment this for debugging...
+//#define DEBUG
+//#define DEBUGFOO                     // Various tool debugging...
+//#define DEBUGTP                              // Toolpalette debugging...
+
+//#include <QtGui>
+#include "mainwin.h"
+
+//#include <QtOpenGL>
+#include "glwidget.h"
+//#include "editwindow.h"
+//#include "charwindow.h"
+//#include "ttedit.h"
+
+MainWin::MainWin()
+{
+       // The way BSNES controls things is by setting a timer with a zero
+       // timeout, sleeping if not emulating anything. Seems there has to be a
+       // better way.
+
+       // It has a novel approach to plugging-in/using different video/audio/input
+       // methods, can we do something similar or should we just use the built-in
+       // QOpenGL?
+
+//     ((TTEdit *)qApp)->charWnd = new CharWindow(this);
+       videoWidget = new GLWidget(this);
+       setCentralWidget(videoWidget);
+       setWindowIcon(QIcon(":/res/vj.xpm"));
+       setWindowTitle("Virtual Jaguar v2.0.0");
+
+#if 0
+//     createActions();
+       newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
+       newAct->setShortcuts(QKeySequence::New);
+       newAct->setStatusTip(tr("Create a new file"));
+       connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
+
+       openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
+       openAct->setShortcuts(QKeySequence::Open);
+       openAct->setStatusTip(tr("Open an existing file"));
+       connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
+
+       aboutQtAct = new QAction(tr("About &Qt"), this);
+       aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
+       connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
+
+//     createMenus();
+       fileMenu = menuBar()->addMenu(tr("&File"));
+       fileMenu->addAction(newAct);
+       fileMenu->addAction(openAct);
+       fileMenu->addAction(saveAct);
+       fileMenu->addAction(saveAsAct);
+       fileMenu->addSeparator();
+       fileMenu->addAction(exitAct);
+
+       editMenu = menuBar()->addMenu(tr("&Edit"));
+       editMenu->addAction(cutAct);
+       editMenu->addAction(copyAct);
+       editMenu->addAction(pasteAct);
+
+       menuBar()->addSeparator();
+
+       helpMenu = menuBar()->addMenu(tr("&Help"));
+       helpMenu->addAction(aboutAct);
+       helpMenu->addAction(aboutQtAct);
+
+//     createToolBars();
+       fileToolBar = addToolBar(tr("File"));
+       fileToolBar->addAction(newAct);
+       fileToolBar->addAction(openAct);
+       fileToolBar->addAction(saveAct);
+
+       editToolBar = addToolBar(tr("Edit"));
+       editToolBar->addAction(cutAct);
+       editToolBar->addAction(copyAct);
+       editToolBar->addAction(pasteAct);
+#endif
+
+       //      Create status bar
+       statusBar()->showMessage(tr("Ready"));
+
+       ReadSettings();
+
+//     connect(textEdit->document(), SIGNAL(contentsChanged()),
+//                     this, SLOT(documentWasModified()));
+
+//     setCurrentFile("");
+       setUnifiedTitleAndToolBarOnMac(true);
+
+       // Set up timer based loop for animation...
+       timer = new QTimer(this);
+       connect(timer, SIGNAL(timeout()), this, SLOT(Timer()));
+       timer->start(20);
+}
+
+void MainWin::closeEvent(QCloseEvent * event)
+{
+       WriteSettings();
+       event->accept(); // ignore() if can't close for some reason
+}
+
+void MainWin::Open(void)
+{
+}
+
+void MainWin::Timer(void)
+{
+       // Random hash & trash
+       // We try to simulate an untuned tank circuit here... :-)
+       for(int x=0; x<videoWidget->rasterWidth; x++)
+       {
+               for(int y=0; y<videoWidget->rasterHeight; y++)
+               {
+                       videoWidget->buffer[(y * videoWidget->textureWidth) + x] = (rand() & 0xFF) << 8 | (rand() & 0xFF) << 16 | (rand() & 0xFF) << 24;// | (rand() & 0xFF);//0x000000FF;
+//                     buffer[(y * textureWidth) + x] = x*y;
+               }
+       }
+
+       videoWidget->updateGL();
+}
+
+void MainWin::ReadSettings(void)
+{
+       QSettings settings("Underground Software", "Virtual Jaguar");
+       QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
+       QSize size = settings.value("size", QSize(400, 400)).toSize();
+       resize(size);
+       move(pos);
+//videoWidget->updateGL();
+//     pos = settings.value("charWndPos", QPoint(0, 0)).toPoint();
+//     size = settings.value("charWndSize", QSize(200, 200)).toSize();
+//     ((TTEdit *)qApp)->charWnd->resize(size);
+//     ((TTEdit *)qApp)->charWnd->move(pos);
+}
+
+void MainWin::WriteSettings(void)
+{
+       QSettings settings("Underground Software", "Virtual Jaguar");
+       settings.setValue("pos", pos());
+       settings.setValue("size", size());
+//     settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
+//     settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
+}
+
diff --git a/src/gui/mainwin.h b/src/gui/mainwin.h
new file mode 100644 (file)
index 0000000..831b56b
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// mainwin.h: Header file
+//
+// by James L. Hammons
+// (C) 2010 Underground Software
+//
+
+#ifndef __MAINWIN_H__
+#define __MAINWIN_H__
+
+//Hrm. uh??? I thought this wasn't the way to do this stuff...???
+#include <QtGui>
+
+// Forward declarations
+
+class GLWidget;
+//class EditWindow;
+//class CharWindow;
+
+class MainWin: public QMainWindow
+{
+       // All Qt apps require this macro for signal/slot functionality to work
+       Q_OBJECT
+
+       public:
+               MainWin();
+
+       protected:
+               void closeEvent(QCloseEvent * event);
+
+       private slots:
+               void Open(void);
+               void Timer(void);
+
+       private:
+               void ReadSettings(void);
+               void WriteSettings(void);
+
+//     public:
+               GLWidget * videoWidget;
+               QTimer * timer;
+//             EditWindow * editWnd;
+//             CharWindow * charWnd;
+};
+
+#endif // __MAINWIN_H__
diff --git a/src/gui/menu.cpp b/src/gui/menu.cpp
deleted file mode 100644 (file)
index f033977..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// Menu class & supporting structs/classes
-//
-// by James L. Hammons
-//
-
-#include "menu.h"
-
-// Local variables
-static const char separator[] = "--------------------------------------------------------";
-
-// Implementation
-
-Menu::Menu(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= FONT_HEIGHT*/,
-       uint32 fgc/*= 0xFF7F0000*/, uint32 bgc/*= 0xFFFF3F3F*/, uint32 fgch/*= 0xFFFF3F3F*/,
-       uint32 bgch/*= 0xFFFF8787*/):
-       Element(x, y, w, h), activated(false), clicked(false), inside(0), insidePopup(0),
-       fgColor(fgc), bgColor(bgc), fgColorHL(fgch), bgColorHL(bgch), menuChosen(-1),
-       menuItemChosen(-1)
-{
-}
-
-void Menu::HandleKey(SDLKey key)
-{
-       for(uint32 i=0; i<itemList.size(); i++)
-       {
-               for(uint32 j=0; j<itemList[i].item.size(); j++)
-               {
-                       if (itemList[i].item[j].hotKey == key)
-                       {
-                               SDL_Event event;
-                               event.type = SDL_USEREVENT;
-                               event.user.code = MENU_ITEM_CHOSEN;
-                               event.user.data1 = (void *)itemList[i].item[j].action;
-                       SDL_PushEvent(&event);
-
-                               clicked = false, menuChosen = menuItemChosen = -1;
-                               break;
-                       }
-               }
-       }
-}
-
-void Menu::HandleMouseMove(uint32 x, uint32 y)
-{
-       inside = insidePopup = 0;
-
-       if (Inside(x, y))
-       {
-               // Find out *where* we are inside the menu bar
-               uint32 xpos = extents.x;
-
-               for(uint32 i=0; i<itemList.size(); i++)
-               {
-                       uint32 width = (itemList[i].title.length() + 2) * FONT_WIDTH;
-
-                       if (x >= xpos && x < xpos + width)
-                       {
-                               inside = i + 1;
-                               menuChosen = i;
-                               break;
-                       }
-
-                       xpos += width;
-               }
-       }
-
-       if (!Inside(x, y) && !clicked)
-       {
-               menuChosen = -1;
-       }
-
-       if (itemList[menuChosen].Inside(x, y) && clicked)
-       {
-               insidePopup = ((y - itemList[menuChosen].extents.y) / FONT_HEIGHT) + 1;
-               menuItemChosen = insidePopup - 1;
-       }
-}
-
-void Menu::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       if (!clicked)
-       {
-               if (mouseDown)
-               {
-                       if (inside)
-                               clicked = true;
-                       else
-                               menuChosen = -1;                                        // clicked is already false...!
-               }
-       }
-       else                                                                                    // clicked == true
-       {
-               if (insidePopup && !mouseDown)                          // I.e., mouse-button-up
-               {
-                       activated = true;
-                       if (itemList[menuChosen].item[menuItemChosen].action != NULL)
-                       {
-//                             itemList[menuChosen].item[menuItemChosen].action();
-                               SDL_Event event;
-                               event.type = SDL_USEREVENT;
-                               event.user.code = MENU_ITEM_CHOSEN;
-                               event.user.data1 = (void *)itemList[menuChosen].item[menuItemChosen].action;
-                           SDL_PushEvent(&event);
-
-                               clicked = false, menuChosen = menuItemChosen = -1;
-
-/*                             SDL_Event event;
-                               while (SDL_PollEvent(&event));          // Flush the event queue...
-                               event.type = SDL_MOUSEMOTION;
-                               int mx, my;
-                               SDL_GetMouseState(&mx, &my);
-                               event.motion.x = mx, event.motion.y = my;
-                           SDL_PushEvent(&event);                              // & update mouse position...!
-*/                     }
-               }
-
-               if (!inside && !insidePopup && mouseDown)
-                       clicked = false, menuChosen = menuItemChosen = -1;
-       }
-}
-
-void Menu::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       uint32 xpos = extents.x + offsetX;
-
-       for(uint32 i=0; i<itemList.size(); i++)
-       {
-//             uint16 color1 = fgColor, color2 = bgColor;
-               uint32 color1 = fgColor, color2 = bgColor;
-               if (inside == (i + 1) || (menuChosen != -1 && (uint32)menuChosen == i))
-                       color1 = fgColorHL, color2 = bgColorHL;
-
-               DrawStringOpaque(screenBuffer, xpos, extents.y + offsetY, color1, color2,
-                       " %s ", itemList[i].title.c_str());
-               xpos += (itemList[i].title.length() + 2) * FONT_WIDTH;
-       }
-
-       // Draw sub menu (but only if active)
-       if (clicked)
-       {
-               uint32 ypos = extents.y + FONT_HEIGHT + 1;
-
-               for(uint32 i=0; i<itemList[menuChosen].item.size(); i++)
-               {
-//                     uint16 color1 = fgColor, color2 = bgColor;
-                       uint32 color1 = fgColor, color2 = bgColor;
-
-                       if (insidePopup == i + 1)
-                               color1 = fgColorHL, color2 = bgColorHL, menuItemChosen = i;
-
-                       if (itemList[menuChosen].item[i].name.length() > 0)
-                               DrawStringOpaque(screenBuffer, itemList[menuChosen].extents.x, ypos,
-                                       color1, color2, " %-*.*s ", itemList[menuChosen].charLength,
-                                       itemList[menuChosen].charLength, itemList[menuChosen].item[i].name.c_str());
-                       else
-                               DrawStringOpaque(screenBuffer, itemList[menuChosen].extents.x, ypos,
-                                       fgColor, bgColor, "%.*s", itemList[menuChosen].charLength + 2, separator);
-
-                       ypos += FONT_HEIGHT;
-               }
-       }
-}
-
-void Menu::Add(MenuItems mi)
-{
-       for(uint32 i=0; i<mi.item.size(); i++)
-               if (mi.item[i].name.length() > mi.charLength)
-                       mi.charLength = mi.item[i].name.length();
-
-       // Set extents here as well...
-       mi.extents.x = extents.x + extents.w, mi.extents.y = extents.y + FONT_HEIGHT + 1;
-       mi.extents.w = (mi.charLength + 2) * FONT_WIDTH, mi.extents.h = mi.item.size() * FONT_HEIGHT;
-
-       itemList.push_back(mi);
-       extents.w += (mi.title.length() + 2) * FONT_WIDTH;
-}
diff --git a/src/gui/menu.h b/src/gui/menu.h
deleted file mode 100644 (file)
index 9847418..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Menu class & supporting structs/classes
-//
-// by James L. Hammons
-//
-
-#ifndef __MENU_H__
-#define __MENU_H__
-
-#include <string>
-#include <vector>
-#include "element.h"
-#include "guimisc.h"                                                   // Ick.
-
-class Window;
-
-struct NameAction
-{
-       std::string name;
-       Window * (* action)(void);
-       SDLKey hotKey;
-
-       NameAction(std::string n, Window * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN):
-               name(n), action(a), hotKey(k) {}
-};
-
-class MenuItems
-{
-       public:
-               MenuItems(): charLength(0) {}
-               // Normally, we avoid implementation in a header file but in this case
-               // we can make an exception. ;-)
-               bool Inside(uint32 x, uint32 y)
-               { return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
-               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false); }
-
-               std::string title;
-               std::vector<NameAction> item;
-               uint32 charLength;
-               SDL_Rect extents;
-};
-
-class Menu: public Element
-{
-       public:
-// 1CFF -> 0 001 11 00  111 1 1111
-// 421F -> 0 100 00 10  000 1 1111
-               Menu(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = FONT_HEIGHT,
-                       uint32 fgc = 0xFF7F0000, uint32 bgc = 0xFFFF3F3F, uint32 fgch = 0xFFFF3F3F,
-                       uint32 bgch = 0xFFFF8787);
-               virtual void HandleKey(SDLKey key);
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-               void Add(MenuItems mi);
-
-       protected:
-               bool activated, clicked;
-               uint32 inside, insidePopup;
-               uint32 fgColor, bgColor, fgColorHL, bgColorHL;
-               int menuChosen, menuItemChosen;
-
-       private:
-               std::vector<MenuItems> itemList;
-};
-
-#endif // __MENU_H__
diff --git a/src/gui/pushbutton.cpp b/src/gui/pushbutton.cpp
deleted file mode 100644 (file)
index 738b3ac..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// PushButton class
-//
-// by James L. Hammons
-//
-
-#include "pushbutton.h"
-
-#include "guimisc.h"
-
-PushButton::PushButton(uint32 x, uint32 y, bool * st, std::string s):
-       Element(x, y, 16, 16), state(st), inside(false), text(s)
-{
-       if (st == NULL)
-               state = &internalState;
-}
-
-void PushButton::HandleMouseMove(uint32 x, uint32 y)
-{
-       inside = Inside(x, y);
-}
-
-void PushButton::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       if (inside && mouseDown)
-               *state = !(*state);
-}
-
-void PushButton::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       if (*state)
-               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, &pbDown);
-       else
-               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, &pbUp);
-
-       if (text.length() > 0)
-               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY, false, "%s", text.c_str());
-}
diff --git a/src/gui/pushbutton.h b/src/gui/pushbutton.h
deleted file mode 100644 (file)
index 2593b57..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// PushButton class
-//
-// by James L. Hammons
-//
-
-#ifndef __PUSHBUTTON_H__
-#define __PUSHBUTTON_H__
-
-#include <string>
-#include "element.h"
-
-// How to handle?
-// Save state externally?
-//We pass in a state variable if we want to track it externally, otherwise we use our own
-//internal state var. Still need to do some kind of callback for pushbuttons that do things
-//like change from fullscreen to windowed... !!! FIX !!!
-
-class PushButton: public Element
-{
-       public:
-               PushButton(uint32 x, uint32 y, bool * st, std::string s);
-               virtual void HandleKey(SDLKey key) {}
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-
-       protected:
-               bool * state;
-               bool inside;
-               std::string text;
-               bool internalState;
-};
-
-#endif // __PUSHBUTTON_H__
diff --git a/src/gui/slideswitch.cpp b/src/gui/slideswitch.cpp
deleted file mode 100644 (file)
index fcf0520..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// SlideSwitch class
-//
-// by James L. Hammons
-//
-
-#include "slideswitch.h"
-
-#include "guimisc.h"
-
-SlideSwitch::SlideSwitch(uint32 x, uint32 y, bool * st, std::string s1, std::string s2):
-       Element(x, y, 16, 32), state(st), inside(false), text1(s1), text2(s2)
-{
-}
-
-void SlideSwitch::HandleMouseMove(uint32 x, uint32 y)
-{
-       inside = Inside(x, y);
-}
-
-void SlideSwitch::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       if (inside && mouseDown)
-       {
-               *state = !(*state);
-       }
-}
-
-void SlideSwitch::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       DrawTransparentBitmapDeprecated(screenBuffer, extents.x + offsetX, extents.y + offsetY, (*state ? slideSwitchDown : slideSwitchUp));
-
-       if (text1.length() > 0)
-               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY, false, "%s", text1.c_str());
-
-       if (text2.length() > 0)
-               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY + 16, false, "%s", text2.c_str());
-}
diff --git a/src/gui/slideswitch.h b/src/gui/slideswitch.h
deleted file mode 100644 (file)
index b23fe3d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// SlideSwitch class
-//
-// by James L. Hammons
-//
-
-#ifndef __SLIDESWITCH_H__
-#define __SLIDESWITCH_H__
-
-#include <string>
-#include "element.h"
-
-// How to handle?
-// Save state externally?
-#warning Seems to be handled the same as PushButton, but without sanity checks. !!! FIX !!!
-
-class SlideSwitch: public Element
-{
-       public:
-               SlideSwitch(uint32 x, uint32 y, bool * st, std::string s1, std::string s2);
-               virtual void HandleKey(SDLKey key) {}
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-
-       protected:
-               bool * state;
-               bool inside;
-               std::string text1, text2;
-};
-
-#endif // __SLIDESWITCH_H__
diff --git a/src/gui/text.cpp b/src/gui/text.cpp
deleted file mode 100644 (file)
index 2d35242..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Static text class
-//
-// by James L. Hammons
-//
-
-#include "text.h"
-
-#include "guimisc.h"
-
-Text::Text(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/):
-       Element(x, y, w, h), fgColor(0xFF8484FF), bgColor(0xFF84FF4D)
-{
-}
-
-Text::Text(uint32 x, uint32 y, std::string s, uint32 fg/*= 0xFF8484FF*/, uint32 bg/*= 0xFF84FF4D*/):
-       Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(s)
-{
-}
-
-void Text::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       if (text.length() > 0)
-//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
-               DrawStringOpaque(screenBuffer, extents.x + offsetX, extents.y + offsetY, fgColor, bgColor, "%s", text.c_str());
-}
diff --git a/src/gui/text.h b/src/gui/text.h
deleted file mode 100644 (file)
index 9651efd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Static text class
-//
-// by James L. Hammons
-//
-
-#ifndef __TEXT_H__
-#define __TEXT_H__
-
-#include <string>
-#include "element.h"
-
-class Text: public Element
-{
-       public:
-               Text(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);
-               Text(uint32 x, uint32 y, std::string s, uint32 fg = 0xFF8484FF, uint32 bg = 0xFF84FF4D);
-               virtual void HandleKey(SDLKey key) {}
-               virtual void HandleMouseMove(uint32 x, uint32 y) {}
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-
-       protected:
-               uint32 fgColor, bgColor;
-               std::string text;
-};
-
-#endif // __TEXT_H__
diff --git a/src/gui/textedit.cpp b/src/gui/textedit.cpp
deleted file mode 100644 (file)
index 301dd3e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// TextEdit class
-//
-// by James L. Hammons
-//
-
-#include "textedit.h"
-
-#include "guimisc.h"
-
-TextEdit::TextEdit(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/):
-       Element(x, y, w, h), fgColor(0xFF8484FF), bgColor(0xFF84FF4D), text(""),
-       caretPos(0), maxScreenSize(10)
-{
-}
-
-TextEdit::TextEdit(uint32 x, uint32 y, std::string s, uint32 mss/*= 10*/, uint32 fg/*= 0xFF8484FF*/, uint32 bg/*= 0xFF84FF4D*/):
-       Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(s), caretPos(0), maxScreenSize(mss)
-{
-}
-
-//Set different filters depending on type passed in on construction, e.g., filename, amount, etc...?
-void TextEdit::HandleKey(SDLKey key)
-{
-       if ((key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_0 && key <= SDLK_9) || key == SDLK_PERIOD
-               || key == SDLK_SLASH)
-       {
-               //Need to handle shift key as well...
-               text[caretPos++] = key;
-               Draw();
-       }
-       else if (key == SDLK_BACKSPACE)
-       {
-
-       }
-       else if (key == SDLK_DELETE)
-       {
-       }
-//left, right arrow
-}
-
-void TextEdit::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       if (text.length() > 0)
-       {
-               FillScreenRectangle(screenBuffer, extents.x + offsetX, extents.y + offsetY, FONT_WIDTH * maxScreenSize, FONT_HEIGHT, bgColor);
-//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
-               DrawStringOpaque(screenBuffer, extents.x + offsetX, extents.y + offsetY, fgColor, bgColor, "%s", text.c_str());
-       }
-
-       // Draw the caret (underscore? or vertical line?)
-}
diff --git a/src/gui/textedit.h b/src/gui/textedit.h
deleted file mode 100644 (file)
index 17f9101..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// TextEdit class
-//
-// by James L. Hammons
-//
-
-#ifndef __TEXTEDIT_H__
-#define __TEXTEDIT_H__
-
-#include <string>
-#include "element.h"
-
-class TextEdit: public Element
-{
-       public:
-               TextEdit(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);
-               TextEdit(uint32 x, uint32 y, std::string s, uint32 mss = 10, uint32 fg = 0xFF8484FF,
-                       uint32 bg = 0xFF84FF4D);
-               virtual void HandleKey(SDLKey key);
-               virtual void HandleMouseMove(uint32 x, uint32 y) {}
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element *) {}
-
-       protected:
-               uint32 fgColor, bgColor;
-               std::string text;
-               uint32 caretPos;
-               uint32 maxScreenSize;
-};
-
-#endif // __TEXTEDIT_H__
diff --git a/src/gui/vj.pro b/src/gui/vj.pro
new file mode 100644 (file)
index 0000000..a14781c
--- /dev/null
@@ -0,0 +1,22 @@
+# Use 'qmake -o Makefile ttedit.pro'
+
+CONFIG += qt
+#debug doesn't do shit
+#CONFIG += qt debug
+
+QT += opengl
+
+HEADERS += app.h
+HEADERS += mainwin.h
+HEADERS += glwidget.h
+
+SOURCES += app.cpp
+SOURCES += mainwin.cpp
+SOURCES += glwidget.cpp
+
+RESOURCES += vj.qrc
+
+OBJECTS_DIR = ../../obj
+MOC_DIR = ../../obj
+RCC_DIR = ../../obj
+UI_DIR = ../../obj
diff --git a/src/gui/vj.qrc b/src/gui/vj.qrc
new file mode 100644 (file)
index 0000000..ddd0f3d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+       <file>res/vj.xpm</file>
+</qresource>
+</RCC>
diff --git a/src/gui/window.cpp b/src/gui/window.cpp
deleted file mode 100644 (file)
index 9b2358b..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// Window class
-//
-// by James L. Hammons
-//
-
-#include "window.h"
-
-#include "guimisc.h"
-
-Window::Window(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
-       void (* f)(Element *)/*= NULL*/): Element(x, y, w, h),
-//                     /*clicked(false), inside(false),*/ fgColor(0x4FF0), bgColor(0x1E10),
-//4FF0 -> 010011 11111 10000 -> 0100 1101 1111 1111 1000 0100 -> 4D FF 84
-//1E10 -> 000111 10000 10000 -> 0001 1111 1000 0100 1000 0100 -> 1F 84 84
-       /*clicked(false), inside(false),*/ fgColor(0xFF84FF4D), bgColor(0xFF84841F),
-       handler(f)
-{
-       close = new Button(w - (CLOSEBOX_WIDTH + 1), 1, closeBox, closeBoxHover, closeBoxDown);
-       list.push_back(close);
-       close->SetNotificationElement(this);
-}
-
-Window::~Window()
-{
-       for(uint32 i=0; i<list.size(); i++)
-               if (list[i])
-                       delete list[i];
-}
-
-void Window::HandleKey(SDLKey key)
-{
-       if (key == SDLK_ESCAPE)
-       {
-               SDL_Event event;
-               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
-               SDL_PushEvent(&event);
-       }
-
-       // Handle the items this window contains...
-       for(uint32 i=0; i<list.size(); i++)
-               // Make coords relative to upper right corner of this window...
-               list[i]->HandleKey(key);
-}
-
-void Window::HandleMouseMove(uint32 x, uint32 y)
-{
-       // Handle the items this window contains...
-       for(uint32 i=0; i<list.size(); i++)
-               // Make coords relative to upper right corner of this window...
-               list[i]->HandleMouseMove(x - extents.x, y - extents.y);
-}
-
-void Window::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
-{
-       // Handle the items this window contains...
-       for(uint32 i=0; i<list.size(); i++)
-               // Make coords relative to upper right corner of this window...
-               list[i]->HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
-}
-
-void Window::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
-{
-       uint32 addr = (extents.x + offsetX) + ((extents.y + offsetY) * pitch);
-
-       for(uint32 y=0; y<extents.h; y++)
-       {
-               for(uint32 x=0; x<extents.w; x++)
-               {
-                       // Doesn't clip in y axis! !!! FIX !!!
-                       if (extents.x + x < pitch)
-                               screenBuffer[addr + x + (y * pitch)] = bgColor;
-               }
-       }
-
-       // Handle the items this window contains...
-       for(uint32 i=0; i<list.size(); i++)
-               list[i]->Draw(extents.x, extents.y);
-}
-
-void Window::AddElement(Element * e)
-{
-       list.push_back(e);
-}
-
-void Window::Notify(Element * e)
-{
-       if (e == close)
-       {
-               SDL_Event event;
-               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
-               SDL_PushEvent(&event);
-       }
-}
diff --git a/src/gui/window.h b/src/gui/window.h
deleted file mode 100644 (file)
index 2686ff7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Window class
-//
-// by James L. Hammons
-
-#ifndef __WINDOW_H__
-#define __WINDOW_H__
-
-#include <vector>
-#include "button.h"
-#include "element.h"
-
-class Window: public Element
-{
-       public:
-               Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
-                       void (* f)(Element *) = NULL);
-               virtual ~Window();
-               virtual void HandleKey(SDLKey key);
-               virtual void HandleMouseMove(uint32 x, uint32 y);
-               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
-               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
-               virtual void Notify(Element * e);
-               void AddElement(Element * e);
-
-       protected:
-               uint32 fgColor, bgColor;
-               void (* handler)(Element *);
-               Button * close;
-               // We have to use a list of Element *pointers* because we can't make a
-               // list that will hold all the different object types in the same list...
-               std::vector<Element *> list;
-};
-
-#endif // __WINDOW_H__
index facaa12577ceedd4fef7af5f7b6e40552e688cbd..e75ac0ad32aaf0ff02685b8561fad963d6a82fca 100644 (file)
 #include "eeprom.h"
 #include "event.h"
 #include "gpu.h"
-#include "gui.h"
+//#include "gui.h"
 #include "jerry.h"
 #include "joystick.h"
 #include "log.h"
 #include "m68k.h"
-#include "memory.h"
+//#include "memory.h"
 #include "mmu.h"
 #include "settings.h"
 #include "tom.h"
@@ -60,27 +60,13 @@ extern int effect_start;
 extern int effect_start2, effect_start3, effect_start4, effect_start5, effect_start6;
 #endif
 
-// Memory debugging identifiers
-
-const char * whoName[9] =
-       { "Unknown", "Jaguar", "DSP", "GPU", "TOM", "JERRY", "M68K", "Blitter", "OP" };
-
 uint32 jaguar_active_memory_dumps = 0;
 
 uint32 jaguarMainROMCRC32, jaguarROMSize, jaguarRunAddress;
 
-uint8 jaguarMainRAM[0x400000];                                         // 68K CPU RAM
-uint8 jaguarMainROM[0x600000];                                         // 68K CPU ROM
-uint8 jaguarBootROM[0x040000];                                         // 68K CPU BIOS ROM--uses only half of this!
-uint8 jaguarCDBootROM[0x040000];                                       // 68K CPU CD BIOS ROM
 bool BIOSLoaded = false;
 bool CDBIOSLoaded = false;
 
-//uint8 cdRAM[0x100];
-uint8 * cdRAM = &jaguarMainROM[0x5FFF00];
-uint8 tomRAM[0x4000];
-uint8 jerryRAM[0x10000];
-
 #ifdef CPU_DEBUG_MEMORY
 uint8 writeMemMax[0x400000], writeMemMin[0x400000];
 uint8 readMem[0x400000];
index 96d7b4c78a70c173bbcb2e4323d53b16b64c2f02..d83cd6aec958139e58a19e4cb9d80e1780538bbf 100644 (file)
@@ -2,6 +2,7 @@
 #define __JAGUAR_H__
 
 #include "types.h"
+#include "memory.h"                                                    // For "UNKNOWN" enum
 
 void JaguarInit(void);
 void JaguarReset(void);
@@ -23,33 +24,11 @@ void JaguarExecuteNew(void);
 
 // Exports from JAGUAR.CPP
 
-extern uint8 jaguarMainRAM[];
-extern uint8 jaguarMainROM[];
-extern uint8 jaguarBootROM[];
-extern uint8 jaguarCDBootROM[];
 extern bool BIOSLoaded;
 extern bool CDBIOSLoaded;
 extern int32 jaguarCPUInExec;
 extern uint32 jaguarMainROMCRC32, jaguarROMSize, jaguarRunAddress;
 extern char * jaguarEepromsPath;
-extern const char * whoName[9];
-
-// Some handy macros to help converting native endian to big endian (jaguar native)
-// & vice versa
-
-#define SET64(r, a, v)         r[(a)] = ((v) & 0xFF00000000000000) >> 56, r[(a)+1] = ((v) & 0x00FF000000000000) >> 48, \
-                                               r[(a)+2] = ((v) & 0x0000FF0000000000) >> 40, r[(a)+3] = ((v) & 0x000000FF00000000) >> 32, \
-                                               r[(a)+4] = ((v) & 0xFF000000) >> 24, r[(a)+5] = ((v) & 0x00FF0000) >> 16, \
-                                               r[(a)+6] = ((v) & 0x0000FF00) >> 8, r[(a)+7] = (v) & 0x000000FF
-#define GET64(r, a)            (((uint64)r[(a)] << 56) | ((uint64)r[(a)+1] << 48) | \
-                                               ((uint64)r[(a)+2] << 40) | ((uint64)r[(a)+3] << 32) | \
-                                               ((uint64)r[(a)+4] << 24) | ((uint64)r[(a)+5] << 16) | \
-                                               ((uint64)r[(a)+6] << 8) | (uint64)r[(a)+7])
-#define SET32(r, a, v) r[(a)] = ((v) & 0xFF000000) >> 24, r[(a)+1] = ((v) & 0x00FF0000) >> 16, \
-                                               r[(a)+2] = ((v) & 0x0000FF00) >> 8, r[(a)+3] = (v) & 0x000000FF
-#define GET32(r, a)            ((r[(a)] << 24) | (r[(a)+1] << 16) | (r[(a)+2] << 8) | r[(a)+3])
-#define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
-#define GET16(r, a)            ((r[(a)] << 8) | r[(a)+1])
 
 // Various clock rates
 
index 8603b90101756e660e48392c8e88b53e729df66c..671b08afdf2741458bf359dec086d345fc45ac3b 100644 (file)
 #include "jaguar.h"
 #include "joystick.h"
 #include "log.h"
+//#include "memory.h"
 #include "wavetable.h"
 
 //Note that 44100 Hz requires samples every 22.675737 usec.
@@ -428,7 +429,7 @@ void JERRYInit(void)
 //This should be handled with the cart initialization...
 //     eeprom_init();
 //     memory_malloc_secure((void **)&jerry_ram_8, 0x10000, "JERRY RAM/ROM");
-       memcpy(&jerry_ram_8[0xD000], wave_table, 0x1000);
+       memcpy(&jerry_ram_8[0xD000], waveTableROM, 0x1000);
 
        JERRYPIT1Prescaler = 0xFFFF;
        JERRYPIT2Prescaler = 0xFFFF;
index 684b55f23f3ec812057b0a602185e827a2e9523b..fd008d9355581c4f9a9cf12b522f98f2021ffd15 100644 (file)
@@ -5,7 +5,8 @@
 #ifndef __JERRY_H__
 #define __JERRY_H__
 
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 void JERRYInit(void);
 void JERRYReset(void);
index 9fe2197a276dbf14e5caebc7ac03e44239bed4d8..057d059bf7ef756aa09dd20f68373a4837d99442 100644 (file)
@@ -4,6 +4,13 @@
 // by cal2
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups/fixes by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "joystick.h"
@@ -11,7 +18,7 @@
 #include <SDL.h>
 #include <time.h>
 #include "gpu.h"
-#include "gui.h"
+//#include "gui.h"
 #include "jaguar.h"
 #include "log.h"
 #include "settings.h"
@@ -134,11 +141,14 @@ void JoystickExec(void)
        if (keystate[vjs.p1KeyBindings[20]])
                joypad_0_buttons[BUTTON_d] = 0x01;
 
-       extern bool debounceRunKey;
+#warning "!!! FIX !!! (debounceRunKey)"
+//     extern bool debounceRunKey;
+       bool debounceRunKey;
     if (keystate[SDLK_ESCAPE])
     {
                if (!debounceRunKey)
-               finished = true;
+#warning "!!! FIX !!! (finished = true)"
+;//            finished = true;
     }
     else
                debounceRunKey = false;
@@ -146,7 +156,8 @@ void JoystickExec(void)
        if (keystate[SDLK_TAB])
        {
                if (!GUIKeyHeld)
-                       showGUI = !showGUI, GUIKeyHeld = true;
+#warning "!!! FIX !!! (showGUI = !showGUI, ...)"
+;//                    showGUI = !showGUI, GUIKeyHeld = true;
        }
        else
                GUIKeyHeld = false;
@@ -233,9 +244,9 @@ void JoystickExec(void)
 
     if (vjs.useJoystick)
     {
-               extern SDL_Joystick * joystick;
-               int16 x = SDL_JoystickGetAxis(joystick, 0),
-                       y = SDL_JoystickGetAxis(joystick, 1);
+               extern SDL_Joystick * joystick1;
+               int16 x = SDL_JoystickGetAxis(joystick1, 0),
+                       y = SDL_JoystickGetAxis(joystick1, 1);
 
                if (x > 16384)
                        joypad_0_buttons[BUTTON_R] = 0x01;
@@ -246,11 +257,11 @@ void JoystickExec(void)
                if (y < -16384)
                        joypad_0_buttons[BUTTON_U] = 0x01;
 
-               if (SDL_JoystickGetButton(joystick, 0) == SDL_PRESSED)
+               if (SDL_JoystickGetButton(joystick1, 0) == SDL_PRESSED)
                        joypad_0_buttons[BUTTON_A] = 0x01;
-               if (SDL_JoystickGetButton(joystick, 1) == SDL_PRESSED)
+               if (SDL_JoystickGetButton(joystick1, 1) == SDL_PRESSED)
                        joypad_0_buttons[BUTTON_B] = 0x01;
-               if (SDL_JoystickGetButton(joystick, 2) == SDL_PRESSED)
+               if (SDL_JoystickGetButton(joystick1, 2) == SDL_PRESSED)
                        joypad_0_buttons[BUTTON_C] = 0x01;
        }
 
index 5b2f76317f49b08b1d5433fe37a6a739dc143912..76c0aa98cd83ca5d900d0113a0e8a83e2d1c3165 100644 (file)
@@ -4,6 +4,13 @@
 // Originally by David Raingeard (Cal2)
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups/new stuff by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "log.h"
index 9cff768f35c6436c403fb92a9343ee39062c5b12..7104acd97da965be0590ed5a93d5facfd3a6f491 100644 (file)
 //
-// Memory handler
+// Jaguar memory and I/O physical (hosted!) memory
 //
-// by David Raingeard (Cal2)
-// GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
-// Cleanups by James L. Hammons
+// by James L. Hammons
+//
+// JLH = James L. Hammons
+//
+// WHO  WHEN        WHAT
+// ---  ----------  -----------------------------------------------------------
+// JLH  12/10/2009  Repurposed this file. :-)
 //
 
-#include "memory.h"
-
-#include <malloc.h>
-#include <stdlib.h>
-#include "log.h"
-
-#warning This module needs some serious cleanup. !!! FIX !!!
-
-// Useful structs (for doubly linked list in this case)
-
-typedef struct sMemBlockInfo
-{
-       void * ptr;
-       const char * info;
-       uint32 size;
-       sMemBlockInfo * next;
-       sMemBlockInfo * prev;
-} sMemBlockInfo;
-
-// Private global variables
-
-static sMemBlockInfo memoryInfo;
-//static uint32 memoryMaxAllocated;
-static uint32 currentAllocatedMemory;
-static uint32 maximumAllocatedMemory;
-
-
-void memory_addMemInfo(void * ptr, uint32 size, const char * info)
-{
-       sMemBlockInfo * alias = &memoryInfo;
+/*
+$FFFFFF => 16,777,215
+$A00000 => 10,485,760
+
+Really, just six megabytes short of using the entire address space...
+Why not? We could just allocate the entire space and then use the MMU code to do
+things like call functions and whatnot...
+In other words, read/write would just tuck the value into the host RAM space and
+the I/O function would take care of any weird stuff...
+
+Actually: writes would tuck in the value, but reads would have to be handled
+correctly since some registers do not fall on the same address as far as reading
+goes... Still completely doable though. :-)
+*/
 
-       while (alias->next)
-               alias = alias->next;
+#include "memory.h"
 
-       alias->next = (sMemBlockInfo *)malloc(sizeof(sMemBlockInfo));
+uint8 jagMemSpace[0xF20000];                                   // The entire memory space of the Jaguar...!
 
-       if (alias->next == NULL)
-       {
-               exit(0);
-               return;
-       }
-
-       alias->next->prev = alias;
-       alias = alias->next;
-       alias->next = NULL;
-       alias->size = size;
-       alias->ptr = ptr;
-       alias->info = info;
-}
+uint8 * jaguarMainRAM = &jagMemSpace[0x000000];
+uint8 * jaguarMainROM = &jagMemSpace[0x800000];
+uint8 * cdRAM         = &jagMemSpace[0xDFFF00];
+uint8 * gpuRAM        = &jagMemSpace[0xF03000];
+uint8 * dspRAM        = &jagMemSpace[0xF1B000];
 
-void MemoryInit(void)
-{
-       memoryInfo.next = memoryInfo.prev = NULL;
-       currentAllocatedMemory = maximumAllocatedMemory = 0;
-}
+uint8 jaguarBootROM[0x040000];                                 // 68K CPU BIOS ROM--uses only half of this!
+uint8 jaguarCDBootROM[0x040000];                               // 68K CPU CD BIOS ROM (256K)
 
-void MemoryDone(void)
-{
-}
 
-void * memory_malloc(uint32 size, const char * info)
+#if 0
+union Word
 {
-       void * ptr = (void *)malloc(size);
-
-       if (ptr == NULL)
-               return NULL;
-
-       memory_addMemInfo(ptr, size, info);
-       currentAllocatedMemory += size;
-
-       if (currentAllocatedMemory > maximumAllocatedMemory)
-               maximumAllocatedMemory = currentAllocatedMemory;
-
-       return ptr;
-}
-
-// OK, this sux, causes the compiler to complain about type punned pointers.
-// The only difference between this and the previous is that this one ABORTS
-// if it can't allocate the memory. BAD BAD BAD
-
-void memory_malloc_secure(void ** new_ptr, uint32 size, const char * info)
+       uint16 word;
+       struct {
+               // This changes depending on endianness...
+#ifdef __BIG_ENDIAN__
+               uint8 hi, lo;                                                   // Big endian
+#else
+               uint8 lo, hi;                                                   // Little endian
+#endif
+       };
+};
+#endif
+
+#if 0
+union DWord
 {
-       WriteLog("Memory: Allocating %i bytes of memory for <%s>...", size, (info == NULL ? "unknown" : info));
-
-       void * ptr = malloc(size);
-
-       if (ptr == NULL)
+       uint32 dword;
+       struct
        {
-               WriteLog("Failed!\n");
-               LogDone();
-
-#warning BAD, BAD, BAD! Need to do better than this!!!
-#warning And since we ARE keeping track of all memory allocations, we should unwind the stack here as well...!
-#warning !!! FIX !!!
-
-               exit(0);
-       }
-
-       memory_addMemInfo(ptr, size, info);
-       currentAllocatedMemory += size;
-
-       if (currentAllocatedMemory > maximumAllocatedMemory)
-               maximumAllocatedMemory = currentAllocatedMemory;
-
-       *new_ptr = ptr;
-       WriteLog("OK\n");
-}
-
-/*
-void * memory_malloc_secure2(uint32 size, const char * info)
+#ifdef __BIG_ENDIAN__
+               uint16 hiw, low;
+#else
+               uint16 low, hiw;
+#endif
+       };
+};
+#endif
+
+#if 0
+static void test(void)
 {
-       WriteLog("Memory: Allocating %i bytes of memory for <%s>...", size, (info == NULL ? "unknown" : info));
-
-       void * ptr = malloc(size);
-
-       if (ptr == NULL)
-       {
-               WriteLog("Failed!\n");
-               log_done();
-
-//BAD, BAD, BAD! Need to do better than this!!!
-//And since we ARE keeping track of all memory allocations, we should unwind the stack here as well...!
-// !!! FIX !!!
-
-               exit(0);
-       }
-
-       memory_addMemInfo(ptr, size, info);
-       currentAllocatedMemory += size;
-
-       if (currentAllocatedMemory > maximumAllocatedMemory)
-               maximumAllocatedMemory = currentAllocatedMemory;
-
-       new_ptr = ptr;
-       WriteLog("OK\n");
+       Word reg;
+       reg.word = 0x1234;
+       reg.lo = 0xFF;
+       reg.hi = 0xEE;
+
+       DWord reg2;
+       reg2.hiw = 0xFFFE;
+       reg2.low = 0x3322;
+       reg2.low.lo = 0x11;
 }
-*/
-
-void memory_free(void * ptr)
+#endif
+
+// OR, we could do like so:
+#if 0
+#ifdef __BIG_ENDIAN__
+#define DWORD_BYTE_HWORD_H 1
+#define DWORD_BYTE_HWORD_L 2
+#define DWORD_BYTE_LWORD_H 3
+#define DWORD_BYTE_LWORD_L 4
+#else
+#define DWORD_BYTE_HWORD_H 4
+#define DWORD_BYTE_HWORD_L 3
+#define DWORD_BYTE_LWORD_H 2
+#define DWORD_BYTE_LWORD_L 1
+#endif
+// But this starts to get cumbersome after a while... Is union really better?
+
+//More union stuff...
+unsigned long ByteSwap1 (unsigned long nLongNumber)
 {
-//     sMemBlockInfo * alias= &memoryInfo;
-//     alias = alias->next;
-       sMemBlockInfo * alias= memoryInfo.next;
-
-       while (alias->ptr != ptr)
-               alias = alias->next;
-
-       WriteLog("Memory: Freeing %i bytes from <%s>...\n", (int)alias->size, alias->info);
-
-       free(ptr);
-       currentAllocatedMemory -= alias->size;
-       alias->prev->next = alias->next;
-
-       if (alias->next != NULL)
-               alias->next->prev = alias->prev;
-
-       free(alias);
+   union u {unsigned long vi; unsigned char c[sizeof(unsigned long)];};
+   union v {unsigned long ni; unsigned char d[sizeof(unsigned long)];};
+   union u un;
+   union v vn;
+   un.vi = nLongNumber;
+   vn.d[0]=un.c[3];
+   vn.d[1]=un.c[2];
+   vn.d[2]=un.c[1];
+   vn.d[3]=un.c[0];
+   return (vn.ni);
 }
+#endif
+
+//Not sure if this is a good approach yet...
+//should be if we use proper aliasing, and htonl and friends...
+#if 1
+uint32 & butch     = *((uint32 *)&jagMemSpace[0xDFFF00]);      // base of Butch == interrupt control register, R/W
+uint32 & dscntrl   = *((uint32 *)&jagMemSpace[0xDFFF04]);      // DSA control register, R/W
+uint16 & ds_data   = *((uint16 *)&jagMemSpace[0xDFFF0A]);      // DSA TX/RX data, R/W
+uint32 & i2cntrl   = *((uint32 *)&jagMemSpace[0xDFFF10]);      // i2s bus control register, R/W
+uint32 & sbcntrl   = *((uint32 *)&jagMemSpace[0xDFFF14]);      // CD subcode control register, R/W
+uint32 & subdata   = *((uint32 *)&jagMemSpace[0xDFFF18]);      // Subcode data register A
+uint32 & subdatb   = *((uint32 *)&jagMemSpace[0xDFFF1C]);      // Subcode data register B
+uint32 & sb_time   = *((uint32 *)&jagMemSpace[0xDFFF20]);      // Subcode time and compare enable (D24)
+uint32 & fifo_data = *((uint32 *)&jagMemSpace[0xDFFF24]);      // i2s FIFO data
+uint32 & i2sdat2   = *((uint32 *)&jagMemSpace[0xDFFF28]);      // i2s FIFO data (old)
+uint32 & unknown   = *((uint32 *)&jagMemSpace[0xDFFF2C]);      // Seems to be some sort of I2S interface
+#else
+uint32 butch, dscntrl, ds_data, i2cntrl, sbcntrl, subdata, subdatb, sb_time, fifo_data, i2sdat2, unknown;
+#endif
+
+#warning "Need to separate out this stuff (or do we???)"
+//if we use a contiguous memory space, we don't need this shit...
+//err, maybe we do, let's not be so hasty now... :-)
+
+//#define ENDIANSAFE(x) htonl(x)
+
+// The nice thing about doing it this way is that on big endian machines, htons/l
+// compile to nothing and on Intel machines, it compiles down to a single bswap instruction.
+// So endianness issues go away nicely without a lot of drama. :-D
+
+#define BSWAP16(x) (htons(x))
+#define BSWAP32(x) (htonl(x))
+//this isn't endian safe...
+#define BSWAP64(x) ((htonl(x & 0xFFFFFFFF) << 32) | htonl(x >> 32))
+// Actually, we use ESAFExx() macros instead of this, and we use GCC to check the endianness...
+
+#if 0
+uint16 * memcon1_t = (uint16 *)&jagMemSpace[0xF00000];
+uint16 & memcon1 = *memcon1_t;
+#else
+uint16 & memcon1 = *((uint16 *)&jagMemSpace[0xF00000]);
+uint16 & memcon2 = *((uint16 *)&jagMemSpace[0xF00002]);
+uint16 & hc      = *((uint16 *)&jagMemSpace[0xF00004]);
+uint16 & vc      = *((uint16 *)&jagMemSpace[0xF00006]);
+uint16 & lph     = *((uint16 *)&jagMemSpace[0xF00008]);
+uint16 & lpv     = *((uint16 *)&jagMemSpace[0xF0000A]);
+#endif
+
+uint32 obData, olp, obf, vmode, bord1, bord2, hp, hbb, hbe, hs, hvs,
+       hdb1, hdb2, hde, vp, vbb, vbe, vs, vdb, vde, veb, vee, vi, pit0, pit1, heq, bg, int1, int2, clut, lbuf,
+       g_flags, g_mtxc, g_mtxa, g_end, g_pc, g_ctrl, g_hidata, g_remain, g_divctrl,
+       a1_base, a1_pixel, a1_flags, a1_clip, a1_step, a1_fstep, a1_fpixel, a1_inc, a1_finc,
+       a2_base, a2_flags, a2_pixel, a2_mask, a2_step, b_cmd, b_count, b_srcd, b_dstd, b_dstz, b_srcz1, b_srcz2,
+       b_patd, b_iinc, b_zinc, b_stop, b_i3, b_i2, b_i1, b_i0, b_z3, b_z2, b_z1, b_z0,
+       jpit1, jpit2, jpit3, jpit4, clk1, clk2, clk3, j_int, asidata, asistat, asictrl, asiclk, joystick,
+       joybuts, d_flags, d_mtxc, d_mtxa, d_end, d_pc, d_ctrl, d_mod, d_remain, d_divctrl, d_machi,
+       ltxd, rtxd, sstat, sclk, smode;
+
+// Memory debugging identifiers
+
+const char * whoName[9] =
+       { "Unknown", "Jaguar", "DSP", "GPU", "TOM", "JERRY", "M68K", "Blitter", "OP" };
 
-void memory_memoryUsage(FILE * fp)
-{
-       uint32 total = 0;
-
-       fprintf(fp, "Memory usage:\n");
-
-//     sMemBlockInfo * alias = &memoryInfo;
-//     alias = alias->next;
-       sMemBlockInfo * alias= memoryInfo.next;
-
-       while (alias)
-       {
-//             fprintf(fp, "\t%16i bytes: <%s> (@ %08X)\n", (int)alias->size, alias->info, (unsigned int)alias->ptr);
-               fprintf(fp, "\t%16i bytes: <%s> (@ %08X)\n", (int)alias->size, alias->info, alias->ptr);
-               total += alias->size;
-               alias = alias->next;
-       }
-
-       fprintf(fp, "\n\t%16i bytes total(%i Mb)\n", (int)total, (int)(total >> 20));
-       fprintf(fp, "\n\t%16i bytes memory peak(%i Mb)\n", (int)maximumAllocatedMemory, (int)(maximumAllocatedMemory >> 20));
-}
index 5ea70d938630a74ff2e5f2b967995535897ae7d6..c2e49df78d23e9cc4596473afbcf587fd46c26fa 100644 (file)
@@ -1,19 +1,80 @@
 //
 // MEMORY.H: Header file
 //
+// All Jaguar related memory and I/O locations are contained in this file
+//
 
 #ifndef __MEMORY_H__
 #define __MEMORY_H__
 
-#include <stdio.h>                                                             // For FILE struct
 #include "types.h"
 
-void MemoryInit(void);
-void MemoryDone(void);
-void memory_malloc_secure(void ** new_ptr, uint32 size, const char * info);
-//void * memory_malloc_secure2(uint32 size, const char * info);
-void * memory_malloc(uint32 size, const char * info);
-void memory_free(void * ptr);
-void memory_memoryUsage(FILE * fp);
+extern uint8 jagMemSpace[];
+
+extern uint8 * jaguarMainRAM;
+extern uint8 * jaguarMainROM;
+extern uint8 jaguarBootROM[];
+extern uint8 jaguarCDBootROM[];
+extern uint8 * gpuRAM;
+extern uint8 * dspRAM;
 
+extern uint16 & memcon1, & memcon2, & hc, & vc, & lph, & lpv;
+
+#if 1
+extern uint32 & butch, & dscntrl;
+extern uint16 & ds_data;
+extern uint32 & i2cntrl, & sbcntrl, & subdata, & subdatb, & sb_time, & fifo_data, & i2sdat2, & unknown;
+#else
+extern uint32 butch, dscntrl, ds_data, i2cntrl, sbcntrl, subdata, subdatb, sb_time, fifo_data, i2sdat2, unknown;
 #endif
+
+extern uint32 obData, olp, obf, vmode, bord1, bord2, hp, hbb, hbe, hs, hvs,
+       hdb1, hdb2, hde, vp, vbb, vbe, vs, vdb, vde, veb, vee, vi, pit0, pit1, heq, bg, int1, int2, clut, lbuf,
+       g_flags, g_mtxc, g_mtxa, g_end, g_pc, g_ctrl, g_hidata, g_remain, g_divctrl,
+       a1_base, a1_pixel, a1_flags, a1_clip, a1_step, a1_fstep, a1_fpixel, a1_inc, a1_finc,
+       a2_base, a2_flags, a2_pixel, a2_mask, a2_step, b_cmd, b_count, b_srcd, b_dstd, b_dstz, b_srcz1, b_srcz2,
+       b_patd, b_iinc, b_zinc, b_stop, b_i3, b_i2, b_i1, b_i0, b_z3, b_z2, b_z1, b_z0,
+       jpit1, jpit2, jpit3, jpit4, clk1, clk2, clk3, j_int, asidata, asistat, asictrl, asiclk, joystick,
+       joybuts, d_flags, d_mtxc, d_mtxa, d_end, d_pc, d_ctrl, d_mod, d_remain, d_divctrl, d_machi,
+       ltxd, rtxd, sstat, sclk, smode;
+
+// Read/write tracing enumeration
+
+enum { UNKNOWN, JAGUAR, DSP, GPU, TOM, JERRY, M68K, BLITTER, OP };
+extern const char * whoName[9];
+
+// Some handy macros to help converting native endian to big endian (jaguar native)
+// & vice versa
+
+#define SET64(r, a, v)         r[(a)] = ((v) & 0xFF00000000000000) >> 56, r[(a)+1] = ((v) & 0x00FF000000000000) >> 48, \
+                                               r[(a)+2] = ((v) & 0x0000FF0000000000) >> 40, r[(a)+3] = ((v) & 0x000000FF00000000) >> 32, \
+                                               r[(a)+4] = ((v) & 0xFF000000) >> 24, r[(a)+5] = ((v) & 0x00FF0000) >> 16, \
+                                               r[(a)+6] = ((v) & 0x0000FF00) >> 8, r[(a)+7] = (v) & 0x000000FF
+#define GET64(r, a)            (((uint64)r[(a)] << 56) | ((uint64)r[(a)+1] << 48) | \
+                                               ((uint64)r[(a)+2] << 40) | ((uint64)r[(a)+3] << 32) | \
+                                               ((uint64)r[(a)+4] << 24) | ((uint64)r[(a)+5] << 16) | \
+                                               ((uint64)r[(a)+6] << 8) | (uint64)r[(a)+7])
+#define SET32(r, a, v) r[(a)] = ((v) & 0xFF000000) >> 24, r[(a)+1] = ((v) & 0x00FF0000) >> 16, \
+                                               r[(a)+2] = ((v) & 0x0000FF00) >> 8, r[(a)+3] = (v) & 0x000000FF
+#define GET32(r, a)            ((r[(a)] << 24) | (r[(a)+1] << 16) | (r[(a)+2] << 8) | r[(a)+3])
+#define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
+#define GET16(r, a)            ((r[(a)] << 8) | r[(a)+1])
+
+// This is GCC specific, but we can fix that if we need to...
+// Big plus of this approach is that these compile down to single instructions on little
+// endian machines while one big endian machines we don't have any overhead. :-)
+
+#include <byteswap.h>
+#include <endian.h>
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+       #define ESAFE16(x)      bswap_16(x)
+       #define ESAFE32(x)      bswap_32(x)
+       #define ESAFE64(x)      bswap_64(x)
+#else
+       #define ESAFE16(x)      (x)
+       #define ESAFE32(x)      (x)
+       #define ESAFE64(x)      (x)
+#endif
+
+#endif // __MEMORY_H__
index 669a79ee50610a8183d26ef437d3b0c568f1fbbb..9f9380e47c206c944175ac9b0b7440d6075d5c07 100644 (file)
 
 #include "mmu.h"
 
+#include <stdlib.h>                                                            // For NULL definition
+#include "dac.h"
+//#include "jaguar.h"
+//#include "memory.h"
+#include "wavetable.h"
+
 /*
 Addresses to be handled:
 
@@ -160,9 +166,212 @@ Would be nice to have a way of either calling a handler function or reading/writ
 directly to/from a variable or array...
 */
 
-enum MemType { MM_NOP = 0, MM_RAM, MM_ROM, MM_IO };
+enum MemType { MM_NOP = 0, MM_RAM = 1, MM_ROM = 2, MM_IO_R = 4, MM_IO_W = 8, MM_IO = 12 };
+
+/*
+Would be nice to have different structs tailored to different memory access types,
+but if we don't do that, we can encode things as follows:
+
+MM_NOP: readFunc = writeFunc = NULL
+MM_RAM: readFunc = byte array pointer, writeFunc = NULL
+MM_ROM: readFunc = byte array pointer, writeFunc = NULL
+MM_IO_R: readFunc = function pointer to read function, writeFunc = NULL
+MM_IO_W: readFunc = NULL, writeFunc = function pointer to write function
+MM_IO: readFunc = function pointer to read function, writeFunc = function pointer to write function
+
+There may be a need to have readFunc do both read & write functions (makes sense? perhaps)
+
+Should we have a read mask as well, for the purposes of reading?
+*/
+
+struct MemDesc {
+       uint32 startAddr;
+       uint32 endAddr;
+       MemType type;
+//     (void (* ioFunc)(uint32, uint32)); // <-- could also be a pointer to RAM...
+       void * readFunc;                                        // This is read & write with MM_IO
+       void * writeFunc;
+       uint32 mask;
+};
+
+
+MemDesc memoryMap[] = {
+       { 0x000000, 0x3FFFFF, MM_RAM,  jaguarMainRAM },
+       { 0x800000, 0xDFFEFF, MM_ROM,  jaguarMainROM },
+
+       { 0xDFFF00, 0xDFFF03, MM_IO,   &butch }, // base of Butch == interrupt control register, R/W
+       { 0xDFFF04, 0xDFFF07, MM_IO,   &dscntrl }, // DSA control register, R/W
+       { 0xDFFF0A, 0xDFFF0B, MM_IO,   &ds_data }, // DSA TX/RX data, R/W
+       { 0xDFFF10, 0xDFFF13, MM_IO,   &i2cntrl }, // i2s bus control register, R/W
+       { 0xDFFF14, 0xDFFF17, MM_IO,   &sbcntrl }, // CD subcode control register, R/W
+       { 0xDFFF18, 0xDFFF1B, MM_IO,   &subdata }, // Subcode data register A
+       { 0xDFFF1C, 0xDFFF1F, MM_IO,   &subdatb }, // Subcode data register B
+       { 0xDFFF20, 0xDFFF23, MM_IO,   &sb_time }, // Subcode time and compare enable (D24)
+       { 0xDFFF24, 0xDFFF27, MM_IO,   &fifo_data }, // i2s FIFO data
+       { 0xDFFF28, 0xDFFF2B, MM_IO,   &i2sdat2 }, // i2s FIFO data (old)
+       { 0xDFFF2C, 0xDFFF2F, MM_IO,   &unknown }, // Seems to be some sort of I2S interface
+
+       { 0xE00000, 0xE3FFFF, MM_ROM,  jaguarBootROM },
+
+       // TOM REGISTERS
+
+       { 0xF00000, 0xF00001, MM_IO,   &memcon1 }, // *MEMCON1  Memory Control Register 1                       F00000          RW
+       { 0xF00002, 0xF00003, MM_IO,   &memcon2 }, // *MEMCON2  Memory Control Register 2                       F00002          RW
+       { 0xF00004, 0xF00005, MM_IO,   &hc }, // HC                     Horizontal Count                                        F00004          RW
+       { 0xF00006, 0xF00007, MM_IO,   &vc }, // VC                     Vertical Count                                          F00006          RW
+       { 0xF00008, 0xF00009, MM_IO_R, &lph }, // LPH                   Light Pen Horizontal                            F00008          RO
+       { 0xF0000A, 0xF0000B, MM_IO_R, &lpv }, // LPV                   Light Pen Vertical                                      F0000A          RO
+       { 0xF00010, 0xF00017, MM_IO_R, &obData }, // OB[0-3]            Object Data Field                                       F00010-16       RO
+       { 0xF00020, 0xF00023, MM_IO_W, &olp }, // OLP                   Object List Pointer                                     F00020-23       WO
+       { 0xF00026, 0xF00027, MM_IO_W, &obf }, // OBF                   Object Flag                                                     F00026          WO
+       { 0xF00028, 0xF00029, MM_IO_W, &vmode }, // VMODE               Video Mode                                                      F00028          WO
+       { 0xF0002A, 0xF0002B, MM_IO_W, &bord1 }, // BORD1               Border Colour (Red & Green)                     F0002A          WO
+       { 0xF0002C, 0xF0002D, MM_IO_W, &bord2 }, // BORD2               Border Colour (Blue)                            F0002C          WO
+       { 0xF0002E, 0xF0002F, MM_IO_W, &hp }, // *HP                    Horizontal Period                                       F0002E          WO
+       { 0xF00030, 0xF00031, MM_IO_W, &hbb }, // *HBB          Horizontal Blank Begin                          F00030          WO
+       { 0xF00032, 0xF00033, MM_IO_W, &hbe }, // *HBE          Horizontal Blank End                            F00032          WO
+       { 0xF00034, 0xF00035, MM_IO_W, &hs }, // *HS                    Horizontal Sync                                         F00034          WO
+       { 0xF00036, 0xF00037, MM_IO_W, &hvs }, // *HVS          Horizontal Vertical Sync                        F00036          WO
+       { 0xF00038, 0xF00039, MM_IO_W, &hdb1 }, // HDB1         Horizontal Display Begin 1                      F00038          WO
+       { 0xF0003A, 0xF0003B, MM_IO_W, &hdb2 }, // HDB2         Horizontal Display Begin 2                      F0003A          WO
+       { 0xF0003C, 0xF0003D, MM_IO_W, &hde }, // HDE                   Horizontal Display End                          F0003C          WO
+       { 0xF0003E, 0xF0003F, MM_IO_W, &vp }, // *VP                    Vertical Period                                         F0003E          WO
+       { 0xF00040, 0xF00041, MM_IO_W, &vbb }, // *VBB          Vertical Blank Begin                            F00040          WO
+       { 0xF00042, 0xF00043, MM_IO_W, &vbe }, // *VBE          Vertical Blank End                                      F00042          WO
+       { 0xF00044, 0xF00045, MM_IO_W, &vs }, // *VS                    Vertical Sync                                           F00044          WO
+       { 0xF00046, 0xF00047, MM_IO_W, &vdb }, // VDB                   Vertical Display Begin                          F00046          WO
+       { 0xF00048, 0xF00049, MM_IO_W, &vde }, // VDE                   Vertical Display End                            F00048          WO
+       { 0xF0004A, 0xF0004B, MM_IO_W, &veb }, // *VEB          Vertical Equalization Begin                     F0004A          WO
+       { 0xF0004C, 0xF0004D, MM_IO_W, &vee }, // *VEE          Vertical Equalization End                       F0004C          WO
+       { 0xF0004E, 0xF0004F, MM_IO_W, &vi }, // VI                     Vertical Interrupt                                      F0004E          WO
+       { 0xF00050, 0xF00051, MM_IO_W, &pit0 }, // PIT[0-1]     Programmable Interrupt Timer            F00050-52       WO
+       { 0xF00052, 0xF00053, MM_IO_W, &pit1 },
+       { 0xF00054, 0xF00055, MM_IO_W, &heq }, // *HEQ          Horizontal Equalization End                     F00054          WO
+       { 0xF00058, 0xF0005B, MM_IO_W, &bg }, // BG                     Background Colour                                       F00058          WO
+       { 0xF000E0, 0xF000E1, MM_IO,   &int1 }, // INT1         CPU Interrupt Control Register          F000E0          RW
+       { 0xF000E2, 0xF000E3, MM_IO_W, &int2 }, // INT2         CPU Interrupt Resume Register           F000E2          WO
+       { 0xF00400, 0xF005FF, MM_RAM,  &clut }, // CLUT         Colour Look-Up Table                            F00400-7FE      RW
+       { 0xF00600, 0xF007FF, MM_RAM,  &clut },
+       { 0xF00800, 0xF01D9F, MM_RAM,  &lbuf }, // LBUF         Line Buffer                                                     F00800-1D9E     RW
+//Need high speed RAM interface for GPU & DSP (we have it now...)
+
+       // GPU REGISTERS
+
+       { 0xF02100, 0xF02103, MM_IO,   &g_flags }, // G_FLAGS           GPU Flags Register                                      F02100          RW
+       { 0xF02104, 0xF02107, MM_IO_W, &g_mtxc }, // G_MTXC             Matrix Control Register                         F02104          WO
+       { 0xF02108, 0xF0210B, MM_IO_W, &g_mtxa }, // G_MTXA             Matrix Address Register                         F02108          WO
+       { 0xF0210C, 0xF0210F, MM_IO_W, &g_end }, // G_END               Data Organization Register                      F0210C          WO
+       { 0xF02110, 0xF02113, MM_IO,   &g_pc }, // G_PC         GPU Program Counter                                     F02110          RW
+       { 0xF02114, 0xF02117, MM_IO,   &g_ctrl }, // G_CTRL             GPU Control/Status Register                     F02114          RW
+       { 0xF02118, 0xF0211B, MM_IO,   &g_hidata }, // G_HIDATA High Data Register                                      F02118          RW
+       { 0xF0211C, 0xF0211F, MM_IO,   &g_remain, &g_divctrl }, // G_REMAIN     Divide Unit Remainder                           F0211C          RO
+                                                                                       // G_DIVCTRL    Divide Unit Control                                     F0211C          WO
+       { 0xF03000, 0xF03FFF, MM_RAM,  gpuRAM },
+
+       // BLITTER REGISTERS
+
+       { 0xF02200, 0xF02203, MM_IO_W, &a1_base }, // A1_BASE           A1 Base Register                                        F02200          WO
+       { 0xF02204, 0xF02207, MM_IO,   &a1_pixel, &a1_flags }, // A1_FLAGS      Flags Register                                          F02204          WO
+       { 0xF02208, 0xF0220B, MM_IO_W, &a1_clip }, // A1_CLIP           A1 Clipping Size                                        F02208          WO
+       { 0xF0220C, 0xF0220F, MM_IO_W, &a1_pixel }, // A1_PIXEL A1 Pixel Pointer                                        F0220C          WO
+//                                                                                             F02204          RO
+       { 0xF02210, 0xF02213, MM_IO_W, &a1_step }, // A1_STEP           A1 Step Value                                           F02210          WO
+       { 0xF02214, 0xF02217, MM_IO_W, &a1_fstep }, // A1_FSTEP A1 Step Fraction Value                          F02214          WO
+       { 0xF02218, 0xF0221B, MM_IO,   &a1_fpixel }, // A1_FPIXEL       A1 Pixel Pointer Fraction                       F02218          RW
+       { 0xF0221C, 0xF0221F, MM_IO_W, &a1_inc }, // A1_INC             A1 Increment                                            F0221C          WO
+       { 0xF02220, 0xF02223, MM_IO_W, &a1_finc }, // A1_FINC           A1 Increment Fraction                           F02220          WO
+       { 0xF02224, 0xF02227, MM_IO_W, &a2_base }, // A2_BASE           A2 Base Register                                        F02224          WO
+       { 0xF02228, 0xF0222B, MM_IO_W, &a2_flags }, // A2_FLAGS A2 Flags Register                                       F02228          WO
+       { 0xF0222C, 0xF0222F, MM_IO,   &a2_pixel, &a2_mask }, // A2_MASK                A2 Window Mask                                          F0222C          WO
+       { 0xF02230, 0xF02233, MM_IO_W, &a2_pixel }, // A2_PIXEL A2 Pixel Pointer                                        F02230          WO
+//                                                                                             F0222C          RO
+       { 0xF02234, 0xF02237, MM_IO_W, &a2_step }, // A2_STEP           A2 Step Value                                           F02234          WO
+       { 0xF02238, 0xF0223B, MM_IO,   &b_cmd }, // B_CMD               Command/Status Register                         F02238          RW
+       { 0xF0223C, 0xF0223F, MM_IO_W, &b_count }, // B_COUNT           Counters Register                                       F0223C          WO
+       { 0xF02240, 0xF02247, MM_IO_W, &b_srcd }, // B_SRCD             Source Data Register                            F02240          WO
+       { 0xF02248, 0xF0224F, MM_IO_W, &b_dstd }, // B_DSTD             Destination Data Register                       F02248          WO
+       { 0xF02250, 0xF02258, MM_IO_W, &b_dstz }, // B_DSTZ             Destination Z Register                          F02250          WO
+       { 0xF02258, 0xF0225F, MM_IO_W, &b_srcz1 }, // B_SRCZ1           Source Z Register 1                                     F02258          WO
+       { 0xF02260, 0xF02267, MM_IO_W, &b_srcz2 }, // B_SRCZ2           Source Z Register 2                                     F02260          WO
+       { 0xF02268, 0xF0226F, MM_IO_W, &b_patd }, // B_PATD             Pattern Data Register                           F02268          WO
+       { 0xF02270, 0xF02273, MM_IO_W, &b_iinc }, // B_IINC             Intensity Increment                                     F02270          WO
+       { 0xF02274, 0xF02277, MM_IO_W, &b_zinc }, // B_ZINC             Z Increment                                                     F02274          WO
+       { 0xF02278, 0xF0227B, MM_IO_W, &b_stop }, // B_STOP             Collision Control                                       F02278          WO
+       { 0xF0227C, 0xF0227F, MM_IO_W, &b_i3 }, // B_I3         Intensity 3                                                     F0227C          WO
+       { 0xF02280, 0xF02283, MM_IO_W, &b_i2 }, // B_I2         Intensity 2                                                     F02280          WO
+       { 0xF02284, 0xF02287, MM_IO_W, &b_i1 }, // B_I1         Intensity 1                                                     F02284          WO
+       { 0xF02288, 0xF0228B, MM_IO_W, &b_i0 }, // B_I0         Intensity 0                                                     F02288          WO
+       { 0xF0228C, 0xF0228F, MM_IO_W, &b_z3 }, // B_Z3         Z 3                                                                     F0228C          WO
+       { 0xF02290, 0xF02293, MM_IO_W, &b_z2 }, // B_Z2         Z 2                                                                     F02290          WO
+       { 0xF02294, 0xF02297, MM_IO_W, &b_z1 }, // B_Z1         Z 1                                                                     F02294          WO
+       { 0xF02298, 0xF0229B, MM_IO_W, &b_z0 }, // B_Z0         Z 0                                                                     F02298          WO
+
+// JTRM sez ALL GPU address space is accessible from $8000 offset as "fast" 32-bit WO access
+// Dunno if anything actually USED it tho... :-P
+       { 0xF0A100, 0xF0A103, MM_IO_W, &g_flags }, // G_FLAGS           GPU Flags Register                                      F02100          RW
+       { 0xF0A104, 0xF0A107, MM_IO_W, &g_mtxc }, // G_MTXC             Matrix Control Register                         F02104          WO
+       { 0xF0A108, 0xF0A10B, MM_IO_W, &g_mtxa }, // G_MTXA             Matrix Address Register                         F02108          WO
+       { 0xF0A10C, 0xF0A10F, MM_IO_W, &g_end }, // G_END               Data Organization Register                      F0210C          WO
+       { 0xF0A110, 0xF0A113, MM_IO_W, &g_pc }, // G_PC         GPU Program Counter                                     F02110          RW
+       { 0xF0A114, 0xF0A117, MM_IO_W, &g_ctrl }, // G_CTRL             GPU Control/Status Register                     F02114          RW
+       { 0xF0A118, 0xF0A11B, MM_IO_W, &g_hidata }, // G_HIDATA High Data Register                                      F02118          RW
+       { 0xF0A11C, 0xF0A11F, MM_IO_W, &g_divctrl }, // G_REMAIN        Divide Unit Remainder                           F0211C          RO
+       { 0xF0B000, 0xF0BFFF, MM_IO_W, gpuRAM }, // "Fast" interface to GPU RAM
+
+       // JERRY REGISTERS
+
+       { 0xF10000, 0xF10002, MM_IO_W, &jpit1 }, // JPIT1               Timer 1 Pre-scaler                                      F10000          WO
+       { 0xF10002, 0xF10003, MM_IO_W, &jpit2 }, // JPIT2               Timer 1 Divider                                         F10002          WO
+       { 0xF10004, 0xF10005, MM_IO_W, &jpit3 }, // JPIT3               Timer 2 Pre-scaler                                      F10004          WO
+       { 0xF10006, 0xF10007, MM_IO_W, &jpit4 }, // JPIT4               Timer 2 Divider                                         F10006          WO
+       { 0xF10010, 0xF10011, MM_IO_W, &clk1 }, // *CLK1                Processor Clock Divider                         F10010          WO
+       { 0xF10012, 0xF10013, MM_IO_W, &clk2 }, // *CLK2                Video Clock Divider                                     F10012          WO
+       { 0xF10014, 0xF10015, MM_IO_W, &clk3 }, // *CLK3                Chroma Clock Divider                            F10014          WO
+       { 0xF10020, 0xF10021, MM_IO,   &j_int }, // J_INT               Interrup Control Register                       F10020          RW
+       { 0xF10030, 0xF10031, MM_IO,   &asidata }, // ASIDATA           Asynchronous Serial Data                        F10030          RW
+       { 0xF10032, 0xF10033, MM_IO,   &asistat, &asictrl }, // ASICTRL         Asynchronous Serial Control                     F10032          WO
+                                                                                       // ASISTAT              Asynchronous Serial Status                      F10032          RO
+       { 0xF10034, 0xF10035, MM_IO,   &asiclk }, // ASICLK             Asynchronous Serial Interface Clock     F10034          RW
+       { 0xF10036, 0xF10037, MM_IO_R, &jpit1 }, // JPIT1               Timer 1 Pre-scaler                                      F10036          RO
+       { 0xF10038, 0xF10039, MM_IO_R, &jpit2 }, // JPIT2               Timer 1 Divider                                         F10038          RO
+       { 0xF1003A, 0xF1003B, MM_IO_R, &jpit3 }, // JPIT3               Timer 2 Pre-scaler                                      F1003A          RO
+       { 0xF1003C, 0xF1003D, MM_IO_R, &jpit4 }, // JPIT4               Timer 2 Divider                                         F1003C          RO
+
+       { 0xF14000, 0xF14001, MM_IO,   &joystick }, // JOYSTICK Joystick Register                                       F14000          RW
+       { 0xF14002, 0xF14003, MM_IO,   &joybuts }, // JOYBUTS           Button Register                                         F14002          RW
+
+       // DSP REGISTERS
+
+       { 0xF1A100, 0xF1A103, MM_IO,   &d_flags }, // D_FLAGS           DSP Flags Register                                      F1A100          RW
+       { 0xF1A104, 0xF1A107, MM_IO_W, &d_mtxc }, // D_MTXC             DSP Matrix Control Register                     F1A104          WO
+       { 0xF1A108, 0xF1A10B, MM_IO_W, &d_mtxa }, // D_MTXA             DSP Matrix Address Register                     F1A108          WO
+       { 0xF1A10C, 0xF1A10F, MM_IO_W, &d_end }, // D_END               DSP Data Organization Register          F1A10C          WO
+       { 0xF1A110, 0xF1A113, MM_IO,   &d_pc }, // D_PC         DSP Program Counter                                     F1A110          RW
+       { 0xF1A114, 0xF1A117, MM_IO,   &d_ctrl }, // D_CTRL             DSP Control/Status Register                     F1A114          RW
+       { 0xF1A118, 0xF1A11B, MM_IO_W, &d_mod }, // D_MOD               Modulo Instruction Mask                         F1A118          WO
+       { 0xF1A11C, 0xF1A11F, MM_IO_W, &d_remain, &d_divctrl }, // D_REMAIN     Divide Unit Remainder                           F1A11C          RO
+                                                                                       // D_DIVCTRL    Divide Unit Control                                     F1A11C          WO
+       { 0xF1A120, 0xF1A123, MM_IO_R, &d_machi }, // D_MACHI           MAC High Result Bits                            F1A120          RO
+
+
+       { 0xF1A148, 0xF1A149, MM_IO,   &lrxd, &ltxd }, // LTXD          Left Transmit Data                                      F1A148          WO
+       // LRXD         Left Receive Data                                       F1A148          RO
+       // L_I2S                Left I2S Serial Interface                       F1A148          RW
+       { 0xF1A14C, 0xF1A14D, MM_IO,   &rrxd, &rtxd }, // RTXD          Right Transmit Data                                     F1A14C          WO
+       // RRXD         Right Receive Data                                      F1A14C          RO
+       // R_I2S                Right I2S Serial Interface                      F1A14C          RW
+       { 0xF1A150, 0xF1A150, MM_IO,   &sstat, &sclk }, // SCLK         Serial Clock Frequency                          F1A150          WO
+       // SSTAT                Serial Status                                           F1A150          RO
+       { 0xF1A154, 0xF1A157, MM_IO_W, &smode }, // SMODE               Serial Mode                                                     F1A154          WO
+
+       { 0xF1B000, 0xF1CFFF, MM_RAM,  dspRAM }, // F1B000-F1CFFF   R/W   xxxxxxxx xxxxxxxx   Local DSP RAM
+       { 0xF1D000, 0xF1DFFF, MM_ROM,  waveTableROM },
+// hi-speed interface for DSP??? Ain't no such thang...
+       { 0xFFFFFF, 0xFFFFFF, MM_NOP } // End of memory address sentinel
+};
 
 #if 0
+
 // Jaguar Memory map/handlers
 uint32 memoryMap[] = {
        { 0x000000, 0x3FFFFF, MM_RAM, jaguarMainRAM },
@@ -273,7 +482,107 @@ void MMUWrite64(uint32 address, uint64 data, uint32 who/*= UNKNOWN*/)
 
 uint8 MMURead8(uint32 address, uint32 who/*= UNKNOWN*/)
 {
-       return 0;
+       // Search for address in the memory map
+       // NOTE: This assumes that all entries are linear and sorted in ascending order!
+
+       MemDesc memory;
+       uint8 byte = 0xFE;
+
+       uint32 i = 0;
+       while (true)
+       {
+               if (address <= memoryMap[i].endAddr)
+               {
+                       if (address >= memoryMap[i].startAddr)
+                       {
+                               memory = memoryMap[i];
+                               break;
+                       }
+                       else
+                               return 0xFF;    // Wasn't found...
+               }
+
+               i++;
+
+               if (memoryMap[i].startAddr == 0xFFFFFF)
+                       return 0xFF;            // Exhausted the list, so bail!
+       }
+
+       uint32 offset = address - memory.startAddr;
+       uint32 size = memory.endAddr - memory.startAddr + 1;
+       uint8 byteShift[8] = { 0, 8, 16, 24, 32, 40, 48, 56 };
+
+       if (memory.type == MM_RAM || memory.type == MM_ROM)
+       {
+               byte = ((uint8 *)memory.readFunc)[offset];
+       }
+       else if (memory.type == MM_IO_R || memory.type == MM_IO)
+       {
+               // Problem here: We don't know yet how wide the function is, so we don't know
+               // how to properly cast it. We COULD ignore the problem by passing in/receiving
+               // 64-bits of data and letting the function make heads or tails of it, but we
+               // still have the problem of, say, taking a byte from a 32-bit value.
+/*
+We can do like so:
+       uint8 byteShift[8] = { 0, 8, 16, 24, 32, 40, 48, 56 };
+       size = memory.endAddr - memory.startAddr + 1;
+       byte = (returnValFromFunc >> byteShift[offset]) & 0xFF;
+
+Let's see, will this work depending on the endianess?
+uint32 dword
+accessing it like so:
+((uint8 *)dword &)[0] --> should give us high byte
+but if we assign it directly...
+dword = 0x12345678 --> becomes 78 56 34 12 in memory, ptr[0] will be 78 in LE!
+dword = 0x12345678 --> becomes 12 34 56 78 in memory, ptr[0] will be 12 in BE!
+
+So we're in danger if we use the variables directly! We'd need something like
+#define ENDIAN_SAFE_16(x)  swap lo & hi bytes on LE systems
+#define ENDIAN_SAFE_16(x)  do nothing on BE systems
+
+Then, if we want to use a jaguar variable, we need to cast it like so:
+uint16 my_vbb = ENDIAN_SAFE_16(vbb);
+
+We have something like this already in jaguar.h, since we treat I/O spaces like
+contiguous memory anyway... For reference:
+
+// Some handy macros to help converting native endian to big endian (jaguar native)
+// & vice versa
+
+#define SET64(r, a, v)         r[(a)] = ((v) & 0xFF00000000000000) >> 56, r[(a)+1] = ((v) & 0x00FF000000000000) >> 48, \
+                                               r[(a)+2] = ((v) & 0x0000FF0000000000) >> 40, r[(a)+3] = ((v) & 0x000000FF00000000) >> 32, \
+                                               r[(a)+4] = ((v) & 0xFF000000) >> 24, r[(a)+5] = ((v) & 0x00FF0000) >> 16, \
+                                               r[(a)+6] = ((v) & 0x0000FF00) >> 8, r[(a)+7] = (v) & 0x000000FF
+#define GET64(r, a)            (((uint64)r[(a)] << 56) | ((uint64)r[(a)+1] << 48) | \
+                                               ((uint64)r[(a)+2] << 40) | ((uint64)r[(a)+3] << 32) | \
+                                               ((uint64)r[(a)+4] << 24) | ((uint64)r[(a)+5] << 16) | \
+                                               ((uint64)r[(a)+6] << 8) | (uint64)r[(a)+7])
+#define SET32(r, a, v) r[(a)] = ((v) & 0xFF000000) >> 24, r[(a)+1] = ((v) & 0x00FF0000) >> 16, \
+                                               r[(a)+2] = ((v) & 0x0000FF00) >> 8, r[(a)+3] = (v) & 0x000000FF
+#define GET32(r, a)            ((r[(a)] << 24) | (r[(a)+1] << 16) | (r[(a)+2] << 8) | r[(a)+3])
+#define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
+#define GET16(r, a)            ((r[(a)] << 8) | r[(a)+1])
+*/
+               // Confused? Let me enlighten... What we're doing here is casting
+               // data1 as a pointer to a function which returns a Window pointer and
+               // which takes no parameters (the "(Window *(*)(void))" part), then
+               // derefencing it (the "*" in front of that) in order to call the
+               // function that it points to. Clear as mud? Yeah, I hate function
+               // pointers too, but what else are you gonna do?
+//             mainWindow = (*(Window *(*)(void))event.user.data1)();
+//             uint32 retVal = (*(uint32(*)(uint32))memory.readFunc)(offset);
+//#define FUNC_CAST(x) (*(uint32(*)(uint32))x)
+//             uint32 retVal = FUNC_CAST(memory.readFunc)(offset);
+#define FUNC_CAST(retVal, function, params) (*(retVal(*)(params))function)
+               uint64 retVal = FUNC_CAST(uint64, memory.readFunc, uint32)(offset);
+               byte = (retVal >> byteShift[offset]) & 0xFF;
+       }
+       else if (memory.type == MM_IO_W)
+       {
+               byte = 0xFF;            // Write only, what do we return? A fixed value?
+       }
+
+       return byte;
 }
 
 uint16 MMURead16(uint32 address, uint32 who/*= UNKNOWN*/)
index 6a4cce9aa8beff6a9df620e71e8eccd99d145156..9a04e9fb4c3659bf5e032a39d6af17e5abdc9ec0 100644 (file)
--- a/src/mmu.h
+++ b/src/mmu.h
@@ -6,7 +6,11 @@
 // by James L. Hammons
 //
 
-#include "types.h"
+#ifndef __MMU_H__
+#define __MMU_H__
+
+//#include "types.h"
+#include "memory.h"
 
 void MMUWrite8(uint32 address, uint8 data, uint32 who = UNKNOWN);
 void MMUWrite16(uint32 address, uint16 data, uint32 who = UNKNOWN);
@@ -17,3 +21,4 @@ uint16 MMURead16(uint32 address, uint32 who = UNKNOWN);
 uint32 MMURead32(uint32 address, uint32 who = UNKNOWN);
 uint64 MMURead64(uint32 address, uint32 who = UNKNOWN);
 
+#endif // __MMU_H__
index 856b233ca3e6e6563246ce65c6fd160b2189b166..38631648d250d048c38384bc175e46b39c184d8a 100644 (file)
@@ -4,6 +4,13 @@
 // Original source by David Raingeard (Cal2)
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Extensive cleanups/fixes/rewrites by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "objectp.h"
@@ -14,6 +21,7 @@
 #include "jaguar.h"
 #include "log.h"
 #include "m68k.h"
+#include "memory.h"
 #include "tom.h"
 
 //#define OP_DEBUG
@@ -312,7 +320,7 @@ void DumpFixedObject(uint64 p0, uint64 p1)
 //
 //Need to fix this so that when an GPU object IRQ happens, we can pick up OP processing
 //where we left off. !!! FIX !!!
-#warning Need to fix this so that when an GPU object IRQ happens, we can pick up OP processing where we left off. !!! FIX !!!
+#warning "Need to fix this so that when an GPU object IRQ happens, we can pick up OP processing where we left off. !!! FIX !!!"
 void OPProcessList(int scanline, bool render)
 {
 extern int op_start_log;
@@ -617,6 +625,7 @@ OP: Scaled bitmap 4x? 4bpp at 34,? hscale=80 fpix=0 data=000756E8 pitch 1 hflipp
                case OBJECT_TYPE_GPU:
                {
 //WriteLog("OP: Asserting GPU IRQ #3...\n");
+#warning "Need to fix OP GPU IRQ handling! !!! FIX !!!"
                        OPSetCurrentObject(p0);
                        GPUSetIRQLine(3, ASSERT_LINE);
 //Also, OP processing is suspended from this point until OBF (F00026) is written to...
@@ -656,8 +665,8 @@ OP: Scaled bitmap 4x? 4bpp at 34,? hscale=80 fpix=0 data=000756E8 pitch 1 hflipp
                                break;
                        case CONDITION_SECOND_HALF_LINE:
                                // This basically means branch if bit 10 of HC is set
+#warning "Unhandled condition code causes emulator to crash... !!! FIX !!!"
                                WriteLog("OP: Unexpected CONDITION_SECOND_HALF_LINE in BRANCH object\nOP: shuting down\n");
-//                             fclose(log_get());
                                LogDone();
                                exit(0);
                                break;
@@ -693,6 +702,7 @@ OP: Scaled bitmap 4x? 4bpp at 34,? hscale=80 fpix=0 data=000756E8 pitch 1 hflipp
                // Here is a little sanity check to keep the OP from locking up the machine
                // when fed bad data. Better would be to count how many actual cycles it used
                // and bail out/reenter to properly simulate an overloaded OP... !!! FIX !!!
+#warning "Better would be to count how many actual cycles it used and bail out/reenter to properly simulate an overloaded OP... !!! FIX !!!"
                opCyclesToRun--;
                if (!opCyclesToRun)
                        return;
index 40d417e3a7d276d4a66efb7127eb4ac4fec0e4a3..b273cf6b58d9d99b732cbf3b7f30e48b2af0ff74 100644 (file)
@@ -2,6 +2,13 @@
 // SETTINGS.CPP: Virtual Jaguar configuration loading/saving support
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log
 //
 
 #include "settings.h"
@@ -12,6 +19,9 @@
 #include "sdlemu_config.h"
 #include "log.h"
 
+// Temporary vars...
+bool smoothGLOutput = false;
+
 using namespace std;
 
 // Global variables
index e527040803df63731e5c1cde94128c9bf916c56a..f998b8b6040118bea76dd082be691dfa746b1472 100644 (file)
@@ -30,7 +30,7 @@ struct VJSettings
        bool hardwareTypeAlpine;
        uint32 frameSkip;
        uint32 renderType;
-       
+
        // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
 
        uint16 p1KeyBindings[21];
@@ -57,4 +57,7 @@ void SaveVJSettings(void);
 
 extern VJSettings vjs;
 
+// Temporary vars...
+extern bool smoothGLOutput;
+
 #endif // __SETTINGS_H__
index 7b6f3d477c0133c776316d4a43e1d56ae632c0ce..09fe44346145e1f4528858029bfbcc4529df9d47 100644 (file)
@@ -2,6 +2,13 @@
 // state.cpp: VJ machine state save/load support
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "state.h"
index f1a7ed8be3af6446efdddbc6e159ac511228a6df..b3882a09f3fbe645e4b1b17ba6d6c2aaf21f9483 100644 (file)
@@ -4,6 +4,14 @@
 // Originally by David Raingeard (cal2)
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups and endian wrongness amelioration by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+//
 // Note: Endian wrongness probably stems from the MAME origins of this emu and
 //       the braindead way in which MAME handles memory. :-)
 //
 #include "jaguar.h"
 #include "log.h"
 #include "m68k.h"
+//#include "memory.h"
 #include "objectp.h"
 #include "settings.h"
 #include "video.h"
@@ -548,6 +557,7 @@ uint32 RGB16ToRGB32[0x10000];
 uint32 CRY16ToRGB32[0x10000];
 uint32 MIX16ToRGB32[0x10000];
 
+#warning "This is not endian-safe. !!! FIX !!!"
 void TOMFillLookupTables(void)
 {
        for(uint32 i=0; i<0x10000; i++)
@@ -568,12 +578,12 @@ void TOMFillLookupTables(void)
                        b = (((uint32)bluecv[chrm][chrl]) * y) >> 8;
 
                CRY16ToRGB32[i] = 0xFF000000 | (b << 16) | (g << 8) | r;
-               MIX16ToRGB32[i] = CRY16ToRGB32[i];
+               MIX16ToRGB32[i] = (i & 0x01 ? RGB16ToRGB32[i] : CRY16ToRGB32[i]);
        }
 
-       for(uint32 i=0; i<0x10000; i++)
-               if (i & 0x01)
-                       MIX16ToRGB32[i] = RGB16ToRGB32[i];
+//     for(uint32 i=0; i<0x10000; i++)
+//             if (i & 0x01)
+//                     MIX16ToRGB32[i] = RGB16ToRGB32[i];
 }
 
 void TOMSetPendingJERRYInt(void)
@@ -613,10 +623,9 @@ uint8 TOMGetVideoMode(void)
 }
 
 //Used in only one place (and for debug purposes): OBJECTP.CPP
+#warning "Used in only one place (and for debug purposes): OBJECTP.CPP !!! FIX !!!"
 uint16 TOMGetVDB(void)
 {
-// This in NOT VDB!!!
-//     return GET16(tomRam8, VBE);
        return GET16(tomRam8, VDB);
 }
 
index ea7ce35124de3ddd5d0112f19ae01de22a678bfc..03bd830d8a3ab698a7e34de82e624775cd9b492a 100644 (file)
--- a/src/tom.h
+++ b/src/tom.h
@@ -6,7 +6,8 @@
 #define __TOM_H__
 
 //#include "jaguar.h"
-#include "types.h"
+//#include "types.h"
+#include "memory.h"
 
 #define VIDEO_MODE_16BPP_CRY   0
 #define VIDEO_MODE_24BPP_RGB   1
index e001c992e9bcf7e635ae560f5a974c502b0f15dc..7b2a694d7c48cfe78f44ad6964becf0d5e74d536 100644 (file)
@@ -19,8 +19,4 @@ typedef int32_t               int32;
 typedef uint64_t       uint64;
 typedef int64_t                int64;
 
-// Read/write tracing enumeration
-
-enum { UNKNOWN, JAGUAR, DSP, GPU, TOM, JERRY, M68K, BLITTER, OP };
-
 #endif // __TYPES_H__
index 67a494c9d1d32a40eb747fd8f3c699354cb6285c..9e6c4a319da084861358dded1b59c20423bb5324 100644 (file)
@@ -1,7 +1,14 @@
 //
-// ZIP file support (mostly ripped from MAME)
+// ZIP file support (mostly ripped from MAME--thx MAME team!)
 //
 // Added by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include <stdlib.h>
index 4f33d666b8dd329780c8aac74b8afebf57626725..1d86f18b83e61dfa725cfd4b5806a0400c7fc4d1 100644 (file)
@@ -2,11 +2,18 @@
 // VIDEO.CPP: SDL/local hardware specific video routines
 //
 // by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "video.h"
 
-#include "gui.h"                                                               // For "finished"
+//#include "gui.h"                                                             // For "finished"
 #include "log.h"
 #include "tom.h"
 #include "sdlemu_opengl.h"
@@ -17,7 +24,7 @@
 //shouldn't these exist here??? Prolly.
 //And now, they do! :-)
 SDL_Surface * surface, * mainSurface;
-SDL_Joystick * joystick;
+SDL_Joystick * joystick1;
 Uint32 mainSurfaceFlags;
 //int16 * backbuffer;
 uint32 * backbuffer;
@@ -151,7 +158,7 @@ bool VideoInit(void)
                }
                else
                {
-                       if ((joystick = SDL_JoystickOpen(vjs.joyport)) == 0)
+                       if ((joystick1 = SDL_JoystickOpen(vjs.joyport)) == 0)
                        {
                                vjs.useJoystick = false;
                                printf("VJ: Unable to open a Joystick on port: %d\n", (int)vjs.joyport);
@@ -179,7 +186,7 @@ void VideoDone(void)
        if (vjs.useOpenGL)
                sdlemu_close_opengl();
 
-       SDL_JoystickClose(joystick);
+       SDL_JoystickClose(joystick1);
        SDL_FreeSurface(surface);
        free(backbuffer);
 }
@@ -243,7 +250,8 @@ void ResizeScreen(uint32 width, uint32 height)
 //as well as screwing up SDL... !!! FIX !!!
 //             exit(1);
                // OK, this is cleaner. We can't continue if there is no surface created!
-               finished = true;
+#warning "!!! FIX !!! (finished = true)"
+//             finished = true;
        }
 
        if (vjs.useOpenGL)
index 123a0f56d0cce77b6cc5de48ebb2d7c9f3ef23c1..0619b0523d070f2de61b07053a0ca800aaffa9cf 100644 (file)
@@ -9,7 +9,7 @@
 #include <SDL.h>
 #include <time.h>
 #include "file.h"
-#include "gui.h"
+//#include "gui.h"
 #include "jaguar.h"
 #include "log.h"
 #include "memory.h"
@@ -39,7 +39,7 @@
 //Maybe we should move the video stuff to TOM? Makes more sense to put it there...
 //Actually, it would probably be better served in VIDEO.CPP... !!! FIX !!! [DONE]
 //uint32 totalFrames;//temp, so we can grab this from elsewhere...
-int main(int argc, char * argv[])
+int main_old(int argc, char * argv[])
 {
 //NOTE: This isn't actually used anywhere... !!! FIX !!!
        int32 nFrameskip = 0;                                                   // Default: Show every frame
@@ -157,8 +157,8 @@ int main(int argc, char * argv[])
 
        WriteLog("VJ: SDL successfully initialized.\n");
 
-       WriteLog("Initializing memory subsystem...\n");
-       MemoryInit();
+//     WriteLog("Initializing memory subsystem...\n");
+//     MemoryInit();
 #ifdef VJ_RELEASE_VERSION
        WriteLog("Virtual Jaguar %s (Last full build was on %s %s)\n", VJ_RELEASE_VERSION, __DATE__, __TIME__);
 #else
@@ -188,11 +188,13 @@ WriteLog("About to attempt to load BIOSes...\n");
 WriteLog("Initializing video subsystem...\n");
        VideoInit();
 WriteLog("Initializing GUI subsystem...\n");
-       GUIInit();
+#warning "!!! FIX !!! (GUIInit())"
+//     GUIInit();
 
        // Now with crunchy GUI goodness!
 WriteLog("About to start GUI...\n");
-       GUIMain(haveCart ? argv[1] : NULL);
+#warning "!!! FIX !!! (GUIMain(...))"
+//     GUIMain(haveCart ? argv[1] : NULL);
 
 //This is no longer accurate...!
 //     int elapsedTime = clock() - startTime;
@@ -201,12 +203,12 @@ WriteLog("About to start GUI...\n");
 
        JaguarDone();
        VideoDone();
-       MemoryDone();
+//     MemoryDone();
        LogDone();
 
        // Free SDL components last...!
        SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER);
        SDL_Quit();
 
-    return 0;
+       return 0;
 }
diff --git a/src/wavetable.cpp b/src/wavetable.cpp
new file mode 100644 (file)
index 0000000..c9998cd
--- /dev/null
@@ -0,0 +1,278 @@
+//
+// Jaguar Wavetable ROM
+//
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
+//
+
+//
+// In a real Jaguar, these are 16-bit values that are sign-extended to 32 bits.
+// Each entry has 128 values (e.g., SINE goes from F1D200-F1D3FF)
+//
+// NOTE: This can probably be converted to 32-bit table, since I don't think
+//       that unaligned access is allowed...
+
+/*const*/ unsigned char waveTableROM[4096] =
+{
+    0xFF, 0xFF, 0xC2, 0x01, 0xFF, 0xFF, 0xC4, 0x01, 0xFF, 0xFF, 0xC6, 0x01, 0xFF, 0xFF, 0xC8, 0x01,
+    0xFF, 0xFF, 0xCA, 0x01, 0xFF, 0xFF, 0xCC, 0x01, 0xFF, 0xFF, 0xCE, 0x01, 0xFF, 0xFF, 0xD0, 0x01,
+    0xFF, 0xFF, 0xD2, 0x01, 0xFF, 0xFF, 0xD4, 0x01, 0xFF, 0xFF, 0xD6, 0x01, 0xFF, 0xFF, 0xD8, 0x01,
+    0xFF, 0xFF, 0xDA, 0x01, 0xFF, 0xFF, 0xDC, 0x01, 0xFF, 0xFF, 0xDE, 0x01, 0xFF, 0xFF, 0xE0, 0x01,
+    0xFF, 0xFF, 0xE2, 0x01, 0xFF, 0xFF, 0xE4, 0x01, 0xFF, 0xFF, 0xE6, 0x01, 0xFF, 0xFF, 0xE8, 0x01,
+    0xFF, 0xFF, 0xEA, 0x01, 0xFF, 0xFF, 0xEC, 0x01, 0xFF, 0xFF, 0xEE, 0x01, 0xFF, 0xFF, 0xF0, 0x01,
+    0xFF, 0xFF, 0xF2, 0x01, 0xFF, 0xFF, 0xF4, 0x01, 0xFF, 0xFF, 0xF6, 0x01, 0xFF, 0xFF, 0xF8, 0x01,
+    0xFF, 0xFF, 0xFA, 0x01, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x00, 0x07, 0xFF,
+    0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x00, 0x0F, 0xFF,
+    0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x00, 0x17, 0xFF,
+    0x00, 0x00, 0x19, 0xFF, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x00, 0x1F, 0xFF,
+    0x00, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x00, 0x27, 0xFF,
+    0x00, 0x00, 0x29, 0xFF, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x00, 0x2D, 0xFF, 0x00, 0x00, 0x2F, 0xFF,
+    0x00, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x00, 0x35, 0xFF, 0x00, 0x00, 0x37, 0xFF,
+    0x00, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x3B, 0xFF, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x00, 0x3F, 0xFF,
+    0x00, 0x00, 0x3D, 0xFF, 0x00, 0x00, 0x3B, 0xFF, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x37, 0xFF,
+    0x00, 0x00, 0x35, 0xFF, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x2F, 0xFF,
+    0x00, 0x00, 0x2D, 0xFF, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x00, 0x27, 0xFF,
+    0x00, 0x00, 0x25, 0xFF, 0x00, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x1F, 0xFF,
+    0x00, 0x00, 0x1D, 0xFF, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x00, 0x17, 0xFF,
+    0x00, 0x00, 0x15, 0xFF, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x0F, 0xFF,
+    0x00, 0x00, 0x0D, 0xFF, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x07, 0xFF,
+    0x00, 0x00, 0x05, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00,
+    0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFA, 0x01, 0xFF, 0xFF, 0xF8, 0x01,
+    0xFF, 0xFF, 0xF6, 0x01, 0xFF, 0xFF, 0xF4, 0x01, 0xFF, 0xFF, 0xF2, 0x01, 0xFF, 0xFF, 0xF0, 0x01,
+    0xFF, 0xFF, 0xEE, 0x01, 0xFF, 0xFF, 0xEC, 0x01, 0xFF, 0xFF, 0xEA, 0x01, 0xFF, 0xFF, 0xE8, 0x01,
+    0xFF, 0xFF, 0xE6, 0x01, 0xFF, 0xFF, 0xE4, 0x01, 0xFF, 0xFF, 0xE2, 0x01, 0xFF, 0xFF, 0xE0, 0x01,
+    0xFF, 0xFF, 0xDE, 0x01, 0xFF, 0xFF, 0xDC, 0x01, 0xFF, 0xFF, 0xDA, 0x01, 0xFF, 0xFF, 0xD8, 0x01,
+    0xFF, 0xFF, 0xD6, 0x01, 0xFF, 0xFF, 0xD4, 0x01, 0xFF, 0xFF, 0xD2, 0x01, 0xFF, 0xFF, 0xD0, 0x01,
+    0xFF, 0xFF, 0xCE, 0x01, 0xFF, 0xFF, 0xCC, 0x01, 0xFF, 0xFF, 0xCA, 0x01, 0xFF, 0xFF, 0xC8, 0x01,
+    0xFF, 0xFF, 0xC6, 0x01, 0xFF, 0xFF, 0xC4, 0x01, 0xFF, 0xFF, 0xC2, 0x01, 0xFF, 0xFF, 0xC0, 0x01,
+    0x00, 0x00, 0x06, 0x47, 0x00, 0x00, 0x0C, 0x8B, 0x00, 0x00, 0x12, 0xC7, 0x00, 0x00, 0x18, 0xF8,
+    0x00, 0x00, 0x1F, 0x19, 0x00, 0x00, 0x25, 0x27, 0x00, 0x00, 0x2B, 0x1E, 0x00, 0x00, 0x30, 0xFB,
+    0x00, 0x00, 0x36, 0xB9, 0x00, 0x00, 0x3C, 0x56, 0x00, 0x00, 0x41, 0xCD, 0x00, 0x00, 0x47, 0x1C,
+    0x00, 0x00, 0x4C, 0x3F, 0x00, 0x00, 0x51, 0x33, 0x00, 0x00, 0x55, 0xF4, 0x00, 0x00, 0x5A, 0x81,
+    0x00, 0x00, 0x5E, 0xD6, 0x00, 0x00, 0x62, 0xF1, 0x00, 0x00, 0x66, 0xCE, 0x00, 0x00, 0x6A, 0x6C,
+    0x00, 0x00, 0x6D, 0xC9, 0x00, 0x00, 0x70, 0xE1, 0x00, 0x00, 0x73, 0xB5, 0x00, 0x00, 0x76, 0x40,
+    0x00, 0x00, 0x78, 0x83, 0x00, 0x00, 0x7A, 0x7C, 0x00, 0x00, 0x7C, 0x29, 0x00, 0x00, 0x7D, 0x89,
+    0x00, 0x00, 0x7E, 0x9C, 0x00, 0x00, 0x7F, 0x61, 0x00, 0x00, 0x7F, 0xD7, 0x00, 0x00, 0x7F, 0xFF,
+    0x00, 0x00, 0x7F, 0xD7, 0x00, 0x00, 0x7F, 0x61, 0x00, 0x00, 0x7E, 0x9C, 0x00, 0x00, 0x7D, 0x89,
+    0x00, 0x00, 0x7C, 0x29, 0x00, 0x00, 0x7A, 0x7C, 0x00, 0x00, 0x78, 0x83, 0x00, 0x00, 0x76, 0x40,
+    0x00, 0x00, 0x73, 0xB5, 0x00, 0x00, 0x70, 0xE1, 0x00, 0x00, 0x6D, 0xC9, 0x00, 0x00, 0x6A, 0x6C,
+    0x00, 0x00, 0x66, 0xCE, 0x00, 0x00, 0x62, 0xF1, 0x00, 0x00, 0x5E, 0xD6, 0x00, 0x00, 0x5A, 0x81,
+    0x00, 0x00, 0x55, 0xF4, 0x00, 0x00, 0x51, 0x33, 0x00, 0x00, 0x4C, 0x3F, 0x00, 0x00, 0x47, 0x1C,
+    0x00, 0x00, 0x41, 0xCD, 0x00, 0x00, 0x3C, 0x56, 0x00, 0x00, 0x36, 0xB9, 0x00, 0x00, 0x30, 0xFB,
+    0x00, 0x00, 0x2B, 0x1E, 0x00, 0x00, 0x25, 0x27, 0x00, 0x00, 0x1F, 0x19, 0x00, 0x00, 0x18, 0xF8,
+    0x00, 0x00, 0x12, 0xC7, 0x00, 0x00, 0x0C, 0x8B, 0x00, 0x00, 0x06, 0x47, 0x00, 0x00, 0x00, 0x00,
+    0xFF, 0xFF, 0xF9, 0xB9, 0xFF, 0xFF, 0xF3, 0x75, 0xFF, 0xFF, 0xED, 0x39, 0xFF, 0xFF, 0xE7, 0x08,
+    0xFF, 0xFF, 0xE0, 0xE7, 0xFF, 0xFF, 0xDA, 0xD9, 0xFF, 0xFF, 0xD4, 0xE2, 0xFF, 0xFF, 0xCF, 0x05,
+    0xFF, 0xFF, 0xC9, 0x47, 0xFF, 0xFF, 0xC3, 0xAA, 0xFF, 0xFF, 0xBE, 0x33, 0xFF, 0xFF, 0xB8, 0xE4,
+    0xFF, 0xFF, 0xB3, 0xC1, 0xFF, 0xFF, 0xAE, 0xCD, 0xFF, 0xFF, 0xAA, 0x0C, 0xFF, 0xFF, 0xA5, 0x7F,
+    0xFF, 0xFF, 0xA1, 0x2A, 0xFF, 0xFF, 0x9D, 0x0F, 0xFF, 0xFF, 0x99, 0x32, 0xFF, 0xFF, 0x95, 0x94,
+    0xFF, 0xFF, 0x92, 0x37, 0xFF, 0xFF, 0x8F, 0x1F, 0xFF, 0xFF, 0x8C, 0x4B, 0xFF, 0xFF, 0x89, 0xC0,
+    0xFF, 0xFF, 0x87, 0x7D, 0xFF, 0xFF, 0x85, 0x84, 0xFF, 0xFF, 0x83, 0xD7, 0xFF, 0xFF, 0x82, 0x77,
+    0xFF, 0xFF, 0x81, 0x64, 0xFF, 0xFF, 0x80, 0x9F, 0xFF, 0xFF, 0x80, 0x29, 0xFF, 0xFF, 0x80, 0x01,
+    0xFF, 0xFF, 0x80, 0x29, 0xFF, 0xFF, 0x80, 0x9F, 0xFF, 0xFF, 0x81, 0x64, 0xFF, 0xFF, 0x82, 0x77,
+    0xFF, 0xFF, 0x83, 0xD7, 0xFF, 0xFF, 0x85, 0x84, 0xFF, 0xFF, 0x87, 0x7D, 0xFF, 0xFF, 0x89, 0xC0,
+    0xFF, 0xFF, 0x8C, 0x4B, 0xFF, 0xFF, 0x8F, 0x1F, 0xFF, 0xFF, 0x92, 0x37, 0xFF, 0xFF, 0x95, 0x94,
+    0xFF, 0xFF, 0x99, 0x32, 0xFF, 0xFF, 0x9D, 0x0F, 0xFF, 0xFF, 0xA1, 0x2A, 0xFF, 0xFF, 0xA5, 0x7F,
+    0xFF, 0xFF, 0xAA, 0x0C, 0xFF, 0xFF, 0xAE, 0xCD, 0xFF, 0xFF, 0xB3, 0xC1, 0xFF, 0xFF, 0xB8, 0xE4,
+    0xFF, 0xFF, 0xBE, 0x33, 0xFF, 0xFF, 0xC3, 0xAA, 0xFF, 0xFF, 0xC9, 0x47, 0xFF, 0xFF, 0xCF, 0x05,
+    0xFF, 0xFF, 0xD4, 0xE2, 0xFF, 0xFF, 0xDA, 0xD9, 0xFF, 0xFF, 0xE0, 0xE7, 0xFF, 0xFF, 0xE7, 0x08,
+    0xFF, 0xFF, 0xED, 0x39, 0xFF, 0xFF, 0xF3, 0x75, 0xFF, 0xFF, 0xF9, 0xB9, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xFF,
+    0x00, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x02, 0x3A, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x03, 0xEB,
+    0x00, 0x00, 0x04, 0xEC, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x07, 0x3D, 0x00, 0x00, 0x08, 0x88,
+    0x00, 0x00, 0x09, 0xE9, 0x00, 0x00, 0x0B, 0x5E, 0x00, 0x00, 0x0C, 0xE4, 0x00, 0x00, 0x0E, 0x7B,
+    0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x11, 0xCF, 0x00, 0x00, 0x13, 0x88, 0x00, 0x00, 0x15, 0x48,
+    0x00, 0x00, 0x17, 0x0E, 0x00, 0x00, 0x18, 0xD5, 0x00, 0x00, 0x1A, 0x9C, 0x00, 0x00, 0x1C, 0x61,
+    0x00, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x1F, 0xD8, 0x00, 0x00, 0x21, 0x85, 0x00, 0x00, 0x23, 0x26,
+    0x00, 0x00, 0x24, 0xB7, 0x00, 0x00, 0x26, 0x36, 0x00, 0x00, 0x27, 0xA1, 0x00, 0x00, 0x28, 0xF5,
+    0x00, 0x00, 0x2A, 0x30, 0x00, 0x00, 0x2B, 0x4F, 0x00, 0x00, 0x2C, 0x50, 0x00, 0x00, 0x2D, 0x31,
+    0x00, 0x00, 0x2D, 0xF0, 0x00, 0x00, 0x2E, 0x8B, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2F, 0x4D,
+    0x00, 0x00, 0x2F, 0x70, 0x00, 0x00, 0x2F, 0x69, 0x00, 0x00, 0x2F, 0x35, 0x00, 0x00, 0x2E, 0xD3,
+    0x00, 0x00, 0x2E, 0x43, 0x00, 0x00, 0x2D, 0x83, 0x00, 0x00, 0x2C, 0x93, 0x00, 0x00, 0x2B, 0x71,
+    0x00, 0x00, 0x2A, 0x1E, 0x00, 0x00, 0x28, 0x99, 0x00, 0x00, 0x26, 0xE2, 0x00, 0x00, 0x24, 0xFA,
+    0x00, 0x00, 0x22, 0xE0, 0x00, 0x00, 0x20, 0x94, 0x00, 0x00, 0x1E, 0x19, 0x00, 0x00, 0x1B, 0x6E,
+    0x00, 0x00, 0x18, 0x94, 0x00, 0x00, 0x15, 0x8C, 0x00, 0x00, 0x12, 0x59, 0x00, 0x00, 0x0E, 0xFB,
+    0x00, 0x00, 0x0B, 0x74, 0x00, 0x00, 0x07, 0xC7, 0x00, 0x00, 0x03, 0xF4, 0x00, 0x00, 0x00, 0x00,
+    0xFF, 0xFF, 0xFB, 0xEB, 0xFF, 0xFF, 0xF7, 0xB9, 0xFF, 0xFF, 0xF3, 0x6B, 0xFF, 0xFF, 0xEF, 0x06,
+    0xFF, 0xFF, 0xEA, 0x8B, 0xFF, 0xFF, 0xE5, 0xFE, 0xFF, 0xFF, 0xE1, 0x63, 0xFF, 0xFF, 0xDC, 0xBC,
+    0xFF, 0xFF, 0xD8, 0x0D, 0xFF, 0xFF, 0xD3, 0x5A, 0xFF, 0xFF, 0xCE, 0xA6, 0xFF, 0xFF, 0xC9, 0xF5,
+    0xFF, 0xFF, 0xC5, 0x4B, 0xFF, 0xFF, 0xC0, 0xAB, 0xFF, 0xFF, 0xBC, 0x19, 0xFF, 0xFF, 0xB7, 0x99,
+    0xFF, 0xFF, 0xB3, 0x2F, 0xFF, 0xFF, 0xAE, 0xDF, 0xFF, 0xFF, 0xAA, 0xAC, 0xFF, 0xFF, 0xA6, 0x9B,
+    0xFF, 0xFF, 0xA2, 0xAF, 0xFF, 0xFF, 0x9E, 0xEC, 0xFF, 0xFF, 0x9B, 0x56, 0xFF, 0xFF, 0x97, 0xF0,
+    0xFF, 0xFF, 0x94, 0xBF, 0xFF, 0xFF, 0x91, 0xC4, 0xFF, 0xFF, 0x8F, 0x04, 0xFF, 0xFF, 0x8C, 0x82,
+    0xFF, 0xFF, 0x8A, 0x41, 0xFF, 0xFF, 0x88, 0x44, 0xFF, 0xFF, 0x86, 0x8D, 0xFF, 0xFF, 0x85, 0x20,
+    0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0x83, 0x2B, 0xFF, 0xFF, 0x82, 0xA8, 0xFF, 0xFF, 0x82, 0x77,
+    0xFF, 0xFF, 0x82, 0x9A, 0xFF, 0xFF, 0x83, 0x11, 0xFF, 0xFF, 0x83, 0xDF, 0xFF, 0xFF, 0x85, 0x05,
+    0xFF, 0xFF, 0x86, 0x82, 0xFF, 0xFF, 0x88, 0x59, 0xFF, 0xFF, 0x8A, 0x88, 0xFF, 0xFF, 0x8D, 0x10,
+    0xFF, 0xFF, 0x8F, 0xF1, 0xFF, 0xFF, 0x93, 0x2A, 0xFF, 0xFF, 0x96, 0xBB, 0xFF, 0xFF, 0x9A, 0xA2,
+    0xFF, 0xFF, 0x9E, 0xDF, 0xFF, 0xFF, 0xA3, 0x6F, 0xFF, 0xFF, 0xA8, 0x51, 0xFF, 0xFF, 0xAD, 0x83,
+    0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xB8, 0xCE, 0xFF, 0xFF, 0xBE, 0xE1, 0xFF, 0xFF, 0xC5, 0x39,
+    0xFF, 0xFF, 0xCB, 0xD3, 0xFF, 0xFF, 0xD2, 0xAC, 0xFF, 0xFF, 0xD9, 0xC0, 0xFF, 0xFF, 0xE1, 0x0A,
+    0xFF, 0xFF, 0xE8, 0x87, 0xFF, 0xFF, 0xF0, 0x32, 0xFF, 0xFF, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x09, 0x69, 0x00, 0x00, 0x12, 0xC2, 0x00, 0x00, 0x1B, 0xF7, 0x00, 0x00, 0x24, 0xF9,
+    0x00, 0x00, 0x2D, 0xB7, 0x00, 0x00, 0x36, 0x22, 0x00, 0x00, 0x3E, 0x29, 0x00, 0x00, 0x45, 0xBE,
+    0x00, 0x00, 0x4C, 0xD5, 0x00, 0x00, 0x53, 0x61, 0x00, 0x00, 0x59, 0x57, 0x00, 0x00, 0x5E, 0xAE,
+    0x00, 0x00, 0x63, 0x5D, 0x00, 0x00, 0x67, 0x5E, 0x00, 0x00, 0x6A, 0xAB, 0x00, 0x00, 0x6D, 0x40,
+    0x00, 0x00, 0x6F, 0x1B, 0x00, 0x00, 0x70, 0x3D, 0x00, 0x00, 0x70, 0xA5, 0x00, 0x00, 0x70, 0x56,
+    0x00, 0x00, 0x6F, 0x55, 0x00, 0x00, 0x6D, 0xA7, 0x00, 0x00, 0x6B, 0x53, 0x00, 0x00, 0x68, 0x61,
+    0x00, 0x00, 0x64, 0xDB, 0x00, 0x00, 0x60, 0xCC, 0x00, 0x00, 0x5C, 0x3F, 0x00, 0x00, 0x57, 0x42,
+    0x00, 0x00, 0x51, 0xE2, 0x00, 0x00, 0x4C, 0x2C, 0x00, 0x00, 0x46, 0x31, 0x00, 0x00, 0x3F, 0xFF,
+    0x00, 0x00, 0x39, 0xA5, 0x00, 0x00, 0x33, 0x34, 0x00, 0x00, 0x2C, 0xBA, 0x00, 0x00, 0x26, 0x47,
+    0x00, 0x00, 0x1F, 0xE9, 0x00, 0x00, 0x19, 0xAF, 0x00, 0x00, 0x13, 0xA8, 0x00, 0x00, 0x0D, 0xDF,
+    0x00, 0x00, 0x08, 0x61, 0x00, 0x00, 0x03, 0x3A, 0xFF, 0xFF, 0xFE, 0x74, 0xFF, 0xFF, 0xFA, 0x17,
+    0xFF, 0xFF, 0xF6, 0x2A, 0xFF, 0xFF, 0xF2, 0xB4, 0xFF, 0xFF, 0xEF, 0xBB, 0xFF, 0xFF, 0xED, 0x42,
+    0xFF, 0xFF, 0xEB, 0x4A, 0xFF, 0xFF, 0xE9, 0xD5, 0xFF, 0xFF, 0xE8, 0xE2, 0xFF, 0xFF, 0xE8, 0x6E,
+    0xFF, 0xFF, 0xE8, 0x76, 0xFF, 0xFF, 0xE8, 0xF5, 0xFF, 0xFF, 0xE9, 0xE5, 0xFF, 0xFF, 0xEB, 0x3D,
+    0xFF, 0xFF, 0xEC, 0xF6, 0xFF, 0xFF, 0xEF, 0x06, 0xFF, 0xFF, 0xF1, 0x62, 0xFF, 0xFF, 0xF3, 0xFF,
+    0xFF, 0xFF, 0xF6, 0xD1, 0xFF, 0xFF, 0xF9, 0xCA, 0xFF, 0xFF, 0xFC, 0xDF, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x03, 0x21, 0x00, 0x00, 0x06, 0x36, 0x00, 0x00, 0x09, 0x2F, 0x00, 0x00, 0x0C, 0x01,
+    0x00, 0x00, 0x0E, 0x9E, 0x00, 0x00, 0x10, 0xFA, 0x00, 0x00, 0x13, 0x0A, 0x00, 0x00, 0x14, 0xC3,
+    0x00, 0x00, 0x16, 0x1B, 0x00, 0x00, 0x17, 0x0B, 0x00, 0x00, 0x17, 0x8A, 0x00, 0x00, 0x17, 0x92,
+    0x00, 0x00, 0x17, 0x1E, 0x00, 0x00, 0x16, 0x2B, 0x00, 0x00, 0x14, 0xB6, 0x00, 0x00, 0x12, 0xBE,
+    0x00, 0x00, 0x10, 0x45, 0x00, 0x00, 0x0D, 0x4C, 0x00, 0x00, 0x09, 0xD6, 0x00, 0x00, 0x05, 0xE9,
+    0x00, 0x00, 0x01, 0x8C, 0xFF, 0xFF, 0xFC, 0xC6, 0xFF, 0xFF, 0xF7, 0x9F, 0xFF, 0xFF, 0xF2, 0x21,
+    0xFF, 0xFF, 0xEC, 0x58, 0xFF, 0xFF, 0xE6, 0x51, 0xFF, 0xFF, 0xE0, 0x17, 0xFF, 0xFF, 0xD9, 0xB9,
+    0xFF, 0xFF, 0xD3, 0x46, 0xFF, 0xFF, 0xCC, 0xCC, 0xFF, 0xFF, 0xC6, 0x5B, 0xFF, 0xFF, 0xC0, 0x01,
+    0xFF, 0xFF, 0xB9, 0xCF, 0xFF, 0xFF, 0xB3, 0xD4, 0xFF, 0xFF, 0xAE, 0x1E, 0xFF, 0xFF, 0xA8, 0xBE,
+    0xFF, 0xFF, 0xA3, 0xC1, 0xFF, 0xFF, 0x9F, 0x34, 0xFF, 0xFF, 0x9B, 0x25, 0xFF, 0xFF, 0x97, 0x9F,
+    0xFF, 0xFF, 0x94, 0xAD, 0xFF, 0xFF, 0x92, 0x59, 0xFF, 0xFF, 0x90, 0xAB, 0xFF, 0xFF, 0x8F, 0xAA,
+    0xFF, 0xFF, 0x8F, 0x5B, 0xFF, 0xFF, 0x8F, 0xC3, 0xFF, 0xFF, 0x90, 0xE5, 0xFF, 0xFF, 0x92, 0xC0,
+    0xFF, 0xFF, 0x95, 0x55, 0xFF, 0xFF, 0x98, 0xA2, 0xFF, 0xFF, 0x9C, 0xA3, 0xFF, 0xFF, 0xA1, 0x52,
+    0xFF, 0xFF, 0xA6, 0xA9, 0xFF, 0xFF, 0xAC, 0x9F, 0xFF, 0xFF, 0xB3, 0x2B, 0xFF, 0xFF, 0xBA, 0x42,
+    0xFF, 0xFF, 0xC1, 0xD7, 0xFF, 0xFF, 0xC9, 0xDE, 0xFF, 0xFF, 0xD2, 0x49, 0xFF, 0xFF, 0xDB, 0x07,
+    0xFF, 0xFF, 0xE4, 0x09, 0xFF, 0xFF, 0xED, 0x3E, 0xFF, 0xFF, 0xF6, 0x97, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x0F, 0x79, 0x00, 0x00, 0x19, 0x4E, 0x00, 0x00, 0x24, 0x67,
+    0x00, 0x00, 0x30, 0x92, 0x00, 0x00, 0x3D, 0x8B, 0x00, 0x00, 0x4A, 0xF0, 0x00, 0x00, 0x58, 0x42,
+    0x00, 0x00, 0x64, 0xE0, 0x00, 0x00, 0x70, 0x09, 0x00, 0x00, 0x78, 0xE3, 0x00, 0x00, 0x7E, 0x7E,
+    0x00, 0x00, 0x7F, 0xE5, 0x00, 0x00, 0x7C, 0x35, 0x00, 0x00, 0x72, 0xB3, 0x00, 0x00, 0x62, 0xF1,
+    0x00, 0x00, 0x4C, 0xEA, 0x00, 0x00, 0x31, 0x29, 0x00, 0x00, 0x10, 0xE2, 0xFF, 0xFF, 0xEE, 0x00,
+    0xFF, 0xFF, 0xCB, 0x1A, 0xFF, 0xFF, 0xAB, 0x5D, 0xFF, 0xFF, 0x92, 0x3E, 0xFF, 0xFF, 0x83, 0x1E,
+    0xFF, 0xFF, 0x80, 0xC8, 0xFF, 0xFF, 0x8C, 0xE4, 0xFF, 0xFF, 0xA7, 0x6D, 0xFF, 0xFF, 0xCE, 0x4C,
+    0xFF, 0xFF, 0xFD, 0x34, 0x00, 0x00, 0x2D, 0xE1, 0x00, 0x00, 0x58, 0xCA, 0x00, 0x00, 0x76, 0x40,
+    0x00, 0x00, 0x7F, 0xEF, 0x00, 0x00, 0x72, 0x6A, 0x00, 0x00, 0x4E, 0x79, 0x00, 0x00, 0x19, 0xBD,
+    0xFF, 0xFF, 0xDE, 0x4A, 0xFF, 0xFF, 0xA9, 0x08, 0xFF, 0xFF, 0x86, 0xFC, 0xFF, 0xFF, 0x81, 0xE4,
+    0xFF, 0xFF, 0x9D, 0x07, 0xFF, 0xFF, 0xD3, 0x39, 0x00, 0x00, 0x16, 0xFE, 0x00, 0x00, 0x55, 0x5F,
+    0x00, 0x00, 0x7B, 0x06, 0x00, 0x00, 0x7A, 0x8A, 0x00, 0x00, 0x51, 0xD7, 0x00, 0x00, 0x0C, 0x8B,
+    0xFF, 0xFF, 0xC1, 0xA4, 0xFF, 0xFF, 0x8C, 0x61, 0xFF, 0xFF, 0x82, 0x3B, 0xFF, 0xFF, 0xA9, 0x77,
+    0xFF, 0xFF, 0xF4, 0x95, 0x00, 0x00, 0x45, 0xA2, 0x00, 0x00, 0x79, 0x85, 0x00, 0x00, 0x77, 0x6B,
+    0x00, 0x00, 0x3D, 0xC2, 0xFF, 0xFF, 0xE5, 0xAF, 0xFF, 0xFF, 0x99, 0x75, 0xFF, 0xFF, 0x80, 0x8C,
+    0xFF, 0xFF, 0xAA, 0x4D, 0x00, 0x00, 0x02, 0xF1, 0x00, 0x00, 0x5B, 0x06, 0x00, 0x00, 0x7F, 0xFF,
+    0x00, 0x00, 0x59, 0xFC, 0xFF, 0xFF, 0xFD, 0x0F, 0xFF, 0xFF, 0xA0, 0xEF, 0xFF, 0xFF, 0x80, 0x8C,
+    0xFF, 0xFF, 0xB3, 0x67, 0x00, 0x00, 0x1A, 0x51, 0x00, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x77, 0x6B,
+    0x00, 0x00, 0x28, 0x32, 0xFF, 0xFF, 0xBA, 0x5E, 0xFF, 0xFF, 0x80, 0x84, 0xFF, 0xFF, 0xA9, 0x77,
+    0x00, 0x00, 0x17, 0xC4, 0x00, 0x00, 0x73, 0x9F, 0x00, 0x00, 0x6F, 0xC6, 0x00, 0x00, 0x0C, 0x8B,
+    0xFF, 0xFF, 0x9D, 0x97, 0xFF, 0xFF, 0x85, 0x76, 0xFF, 0xFF, 0xDC, 0xAF, 0x00, 0x00, 0x55, 0x5F,
+    0x00, 0x00, 0x7D, 0xE9, 0x00, 0x00, 0x2C, 0xC7, 0xFF, 0xFF, 0xAE, 0xD7, 0xFF, 0xFF, 0x81, 0xE4,
+    0xFF, 0xFF, 0xD6, 0x51, 0x00, 0x00, 0x56, 0xF8, 0x00, 0x00, 0x7B, 0x7A, 0x00, 0x00, 0x19, 0xBD,
+    0xFF, 0xFF, 0x9A, 0xE3, 0xFF, 0xFF, 0x8D, 0x96, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x76, 0x40,
+    0x00, 0x00, 0x5C, 0x31, 0xFF, 0xFF, 0xD2, 0x1F, 0xFF, 0xFF, 0x80, 0x09, 0xFF, 0xFF, 0xCE, 0x4C,
+    0x00, 0x00, 0x5C, 0x65, 0x00, 0x00, 0x73, 0x1C, 0xFF, 0xFF, 0xF1, 0xF1, 0xFF, 0xFF, 0x83, 0x1E,
+    0xFF, 0xFF, 0xBE, 0x28, 0x00, 0x00, 0x54, 0xA3, 0x00, 0x00, 0x74, 0x8D, 0xFF, 0xFF, 0xEE, 0x00,
+    0xFF, 0xFF, 0x81, 0x20, 0xFF, 0xFF, 0xCE, 0xD7, 0x00, 0x00, 0x66, 0x4E, 0x00, 0x00, 0x62, 0xF1,
+    0xFF, 0xFF, 0xC7, 0x33, 0xFF, 0xFF, 0x83, 0xCB, 0x00, 0x00, 0x05, 0x0D, 0x00, 0x00, 0x7E, 0x7E,
+    0x00, 0x00, 0x2A, 0x0E, 0xFF, 0xFF, 0x8F, 0xF7, 0xFF, 0xFF, 0xB1, 0x37, 0x00, 0x00, 0x58, 0x42,
+    0x00, 0x00, 0x67, 0xC3, 0xFF, 0xFF, 0xC2, 0x75, 0xFF, 0xFF, 0x89, 0x95, 0x00, 0x00, 0x24, 0x67,
+    0x00, 0x00, 0x7D, 0x78, 0xFF, 0xFF, 0xF0, 0x87, 0xFF, 0xFF, 0x80, 0x33, 0x00, 0x00, 0x00, 0x00,
+    0xFF, 0xFF, 0xC6, 0x95, 0xFF, 0xFF, 0xCB, 0x25, 0xFF, 0xFF, 0xC9, 0xBC, 0xFF, 0xFF, 0xCD, 0x56,
+    0xFF, 0xFF, 0xCD, 0x2E, 0xFF, 0xFF, 0xCE, 0x03, 0xFF, 0xFF, 0xCE, 0xC0, 0xFF, 0xFF, 0xD1, 0xAC,
+    0xFF, 0xFF, 0xD6, 0x81, 0xFF, 0xFF, 0xD7, 0xD8, 0xFF, 0xFF, 0xD6, 0x23, 0xFF, 0xFF, 0xD9, 0xA3,
+    0xFF, 0xFF, 0xD9, 0x6F, 0xFF, 0xFF, 0xDE, 0x63, 0xFF, 0xFF, 0xE1, 0x8B, 0xFF, 0xFF, 0xE0, 0x2F,
+    0xFF, 0xFF, 0xDE, 0x31, 0xFF, 0xFF, 0xE6, 0xBA, 0xFF, 0xFF, 0xED, 0x65, 0xFF, 0xFF, 0xEA, 0x39,
+    0xFF, 0xFF, 0xEB, 0xAB, 0xFF, 0xFF, 0xED, 0x8B, 0xFF, 0xFF, 0xF0, 0xBA, 0xFF, 0xFF, 0xF4, 0xC5,
+    0xFF, 0xFF, 0xF5, 0x99, 0xFF, 0xFF, 0xF4, 0x3B, 0xFF, 0xFF, 0xF6, 0x89, 0xFF, 0xFF, 0xF8, 0xDF,
+    0xFF, 0xFF, 0xF8, 0xAE, 0xFF, 0xFF, 0xFE, 0x67, 0xFF, 0xFF, 0xFE, 0x69, 0x00, 0x00, 0x02, 0xF5,
+    0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x06, 0xEF, 0x00, 0x00, 0x02, 0x17, 0x00, 0x00, 0x0B, 0x0F,
+    0x00, 0x00, 0x06, 0x9D, 0x00, 0x00, 0x09, 0x67, 0x00, 0x00, 0x0D, 0x64, 0x00, 0x00, 0x0C, 0x6F,
+    0x00, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x14, 0x09, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x16, 0x07,
+    0x00, 0x00, 0x19, 0x7E, 0x00, 0x00, 0x1B, 0x11, 0x00, 0x00, 0x1D, 0xD6, 0x00, 0x00, 0x1F, 0x99,
+    0x00, 0x00, 0x1E, 0x69, 0x00, 0x00, 0x25, 0x8E, 0x00, 0x00, 0x23, 0x5F, 0x00, 0x00, 0x24, 0x44,
+    0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2C, 0x11, 0x00, 0x00, 0x2B, 0x65, 0x00, 0x00, 0x32, 0xBC,
+    0x00, 0x00, 0x2F, 0x1F, 0x00, 0x00, 0x31, 0x21, 0x00, 0x00, 0x34, 0x14, 0x00, 0x00, 0x32, 0xF5,
+    0x00, 0x00, 0x36, 0x92, 0x00, 0x00, 0x35, 0xFE, 0x00, 0x00, 0x3C, 0xE4, 0x00, 0x00, 0x3D, 0x5F,
+    0x00, 0x00, 0x38, 0x91, 0x00, 0x00, 0x39, 0x21, 0x00, 0x00, 0x36, 0x58, 0x00, 0x00, 0x37, 0xD6,
+    0x00, 0x00, 0x35, 0xE4, 0x00, 0x00, 0x32, 0xA6, 0x00, 0x00, 0x30, 0x6E, 0x00, 0x00, 0x2F, 0x1E,
+    0x00, 0x00, 0x2A, 0x3D, 0x00, 0x00, 0x2A, 0x7D, 0x00, 0x00, 0x27, 0x24, 0x00, 0x00, 0x27, 0xA4,
+    0x00, 0x00, 0x23, 0xC2, 0x00, 0x00, 0x25, 0xC2, 0x00, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x20, 0xD0,
+    0x00, 0x00, 0x1C, 0x6E, 0x00, 0x00, 0x17, 0xBF, 0x00, 0x00, 0x19, 0x64, 0x00, 0x00, 0x16, 0x6B,
+    0x00, 0x00, 0x12, 0x42, 0x00, 0x00, 0x13, 0x6F, 0x00, 0x00, 0x11, 0x9D, 0x00, 0x00, 0x0E, 0x80,
+    0x00, 0x00, 0x0F, 0xEA, 0x00, 0x00, 0x09, 0xE2, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x07, 0x98,
+    0x00, 0x00, 0x06, 0x73, 0x00, 0x00, 0x02, 0xD5, 0x00, 0x00, 0x01, 0x63, 0xFF, 0xFF, 0xFD, 0xF2,
+    0x00, 0x00, 0x01, 0xED, 0xFF, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xF7, 0x69, 0xFF, 0xFF, 0xFC, 0x16,
+    0xFF, 0xFF, 0xF4, 0xCD, 0xFF, 0xFF, 0xF4, 0x06, 0xFF, 0xFF, 0xF3, 0xC2, 0xFF, 0xFF, 0xF0, 0x30,
+    0xFF, 0xFF, 0xF1, 0x72, 0xFF, 0xFF, 0xEF, 0x53, 0xFF, 0xFF, 0xE8, 0x12, 0xFF, 0xFF, 0xE7, 0x2D,
+    0xFF, 0xFF, 0xE5, 0xDC, 0xFF, 0xFF, 0xE6, 0x34, 0xFF, 0xFF, 0xE2, 0xAE, 0xFF, 0xFF, 0xE2, 0xF2,
+    0xFF, 0xFF, 0xE0, 0x23, 0xFF, 0xFF, 0xDB, 0xDF, 0xFF, 0xFF, 0xDC, 0x2B, 0xFF, 0xFF, 0xD8, 0x95,
+    0xFF, 0xFF, 0xD6, 0xE8, 0xFF, 0xFF, 0xD8, 0xDA, 0xFF, 0xFF, 0xD1, 0x2C, 0xFF, 0xFF, 0xCE, 0x93,
+    0xFF, 0xFF, 0xD1, 0x70, 0xFF, 0xFF, 0xCB, 0xA6, 0xFF, 0xFF, 0xCC, 0x70, 0xFF, 0xFF, 0xCB, 0x45,
+    0xFF, 0xFF, 0xC8, 0x65, 0xFF, 0xFF, 0xC5, 0xEC, 0xFF, 0xFF, 0xC4, 0xBF, 0xFF, 0xFF, 0xC5, 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, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x5F, 0xFF, 0x00, 0x00, 0x7F, 0xFF,
+    0x00, 0x00, 0x5F, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xEF, 0xA6, 0x00, 0x00, 0x0F, 0x80, 0xFF, 0xFF, 0xF0, 0x04, 0x00, 0x00, 0x0E, 0xA6,
+    0xFF, 0xFF, 0xED, 0x75, 0x00, 0x00, 0x1E, 0x84, 0x00, 0x00, 0x04, 0xC7, 0x00, 0x00, 0x28, 0xD4,
+    0x00, 0x00, 0x08, 0x39, 0x00, 0x00, 0x16, 0x30, 0x00, 0x00, 0x21, 0x11, 0x00, 0x00, 0x0B, 0x1E,
+    0xFF, 0xFF, 0xF6, 0x1E, 0xFF, 0xFF, 0xFD, 0x1F, 0xFF, 0xFF, 0xE7, 0x51, 0xFF, 0xFF, 0xCB, 0x57,
+    0x00, 0x00, 0x03, 0xD6, 0x00, 0x00, 0x0D, 0xE0, 0x00, 0x00, 0x06, 0x83, 0xFF, 0xFF, 0xF8, 0x23,
+    0xFF, 0xFF, 0xF5, 0x53, 0x00, 0x00, 0x1D, 0x19, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x29, 0x17,
+    0x00, 0x00, 0x15, 0x24, 0x00, 0x00, 0x25, 0xA4, 0xFF, 0xFF, 0xDC, 0xB4, 0xFF, 0xFF, 0xF9, 0x57,
+    0x00, 0x00, 0x19, 0x77, 0x00, 0x00, 0x2E, 0xF3, 0xFF, 0xFF, 0xD4, 0x13, 0x00, 0x00, 0x02, 0x39,
+    0x00, 0x00, 0x32, 0x10, 0x00, 0x00, 0x04, 0x22, 0xFF, 0xFF, 0xEF, 0xE8, 0xFF, 0xFF, 0xDB, 0x2B,
+    0xFF, 0xFF, 0xFE, 0x4C, 0x00, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x05, 0x90, 0xFF, 0xFF, 0xFB, 0x68,
+    0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x10, 0x6F, 0x00, 0x00, 0x17, 0xA1, 0xFF, 0xFF, 0xD8, 0x31,
+    0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xF0, 0x66, 0x00, 0x00, 0x0E, 0x78, 0xFF, 0xFF, 0xF0, 0x5E,
+    0x00, 0x00, 0x1F, 0x83, 0x00, 0x00, 0x19, 0x74, 0xFF, 0xFF, 0xEB, 0x6F, 0xFF, 0xFF, 0xF0, 0xDE,
+    0x00, 0x00, 0x2B, 0x4D, 0x00, 0x00, 0x18, 0x67, 0xFF, 0xFF, 0xCE, 0x98, 0x00, 0x00, 0x0D, 0x20,
+    0x00, 0x00, 0x0A, 0x13, 0xFF, 0xFF, 0xE8, 0xD3, 0xFF, 0xFF, 0xDF, 0x60, 0x00, 0x00, 0x08, 0xDF,
+    0xFF, 0xFF, 0xE1, 0x68, 0x00, 0x00, 0x11, 0x14, 0xFF, 0xFF, 0xFE, 0x44, 0xFF, 0xFF, 0xD3, 0x92,
+    0x00, 0x00, 0x14, 0xA4, 0xFF, 0xFF, 0xE8, 0x95, 0xFF, 0xFF, 0xF2, 0xD8, 0x00, 0x00, 0x30, 0x8A,
+    0xFF, 0xFF, 0xF9, 0x85, 0xFF, 0xFF, 0xFB, 0x89, 0x00, 0x00, 0x19, 0x0E, 0x00, 0x00, 0x21, 0x02,
+    0xFF, 0xFF, 0xF2, 0x6B, 0xFF, 0xFF, 0xEE, 0x43, 0xFF, 0xFF, 0xE9, 0xFE, 0x00, 0x00, 0x0D, 0x8A,
+    0xFF, 0xFF, 0xFA, 0x2B, 0x00, 0x00, 0x09, 0xA5, 0x00, 0x00, 0x1F, 0x45, 0x00, 0x00, 0x1C, 0x1D,
+    0xFF, 0xFF, 0xEA, 0x2A, 0xFF, 0xFF, 0xE8, 0xDB, 0x00, 0x00, 0x11, 0xE2, 0x00, 0x00, 0x0C, 0x5A,
+    0x00, 0x00, 0x14, 0xC7, 0x00, 0x00, 0x08, 0x64, 0xFF, 0xFF, 0xD7, 0x61, 0xFF, 0xFF, 0xE8, 0x6E,
+    0xFF, 0xFF, 0xF0, 0x47, 0xFF, 0xFF, 0xF7, 0x6F, 0x00, 0x00, 0x02, 0x0E, 0xFF, 0xFF, 0xFE, 0xC9,
+    0xFF, 0xFF, 0xF0, 0x44, 0x00, 0x00, 0x06, 0x27, 0x00, 0x00, 0x03, 0x33, 0xFF, 0xFF, 0xFA, 0x47,
+    0xFF, 0xFF, 0xF5, 0xFE, 0xFF, 0xFF, 0xDC, 0x9F, 0x00, 0x00, 0x1B, 0x8D, 0x00, 0x00, 0x20, 0x7F,
+    0x00, 0x00, 0x0C, 0x79, 0xFF, 0xFF, 0xE7, 0x85, 0x00, 0x00, 0x0B, 0x90, 0xFF, 0xFF, 0xDF, 0xE8,
+    0x00, 0x00, 0x06, 0x90, 0x00, 0x00, 0x0A, 0xC8, 0x00, 0x00, 0x1A, 0xAF, 0x00, 0x00, 0x1E, 0xF3,
+    0x00, 0x00, 0x13, 0xFD, 0xFF, 0xFF, 0xE1, 0xCC, 0x00, 0x00, 0x19, 0xA2, 0xFF, 0xFF, 0xE5, 0xC4,
+    0xFF, 0xFF, 0xE4, 0xF3, 0x00, 0x00, 0x49, 0xEC, 0xFF, 0xFF, 0xF9, 0x26, 0xFF, 0xFF, 0xF3, 0x7F,
+    0x00, 0x00, 0x0A, 0xBC, 0xFF, 0xFF, 0xEC, 0xFD, 0x00, 0x00, 0x0E, 0xAA, 0xFF, 0xFF, 0xFC, 0x53,
+    0xFF, 0xFF, 0xFB, 0xFD, 0xFF, 0xFF, 0xF0, 0x58, 0x00, 0x00, 0x02, 0x91, 0xFF, 0xFF, 0xE3, 0x83,
+    0x00, 0x00, 0x18, 0x80, 0xFF, 0xFF, 0xF1, 0x35, 0xFF, 0xFF, 0xF3, 0x0C, 0xFF, 0xFF, 0xE6, 0xD6,
+};
index 085a158ea1371fa64a5e964ecf3f57fa9e4fed06..cfd905c108da624277e95c6f52ae2d36da9f190f 100644 (file)
 // NOTE: This can probably be converted to 32-bit table, since I don't think
 //       that unaligned access is allowed...
 
-const unsigned char wave_table[4096] =
-{
-    0xFF, 0xFF, 0xC2, 0x01, 0xFF, 0xFF, 0xC4, 0x01, 0xFF, 0xFF, 0xC6, 0x01, 0xFF, 0xFF, 0xC8, 0x01, 
-    0xFF, 0xFF, 0xCA, 0x01, 0xFF, 0xFF, 0xCC, 0x01, 0xFF, 0xFF, 0xCE, 0x01, 0xFF, 0xFF, 0xD0, 0x01, 
-    0xFF, 0xFF, 0xD2, 0x01, 0xFF, 0xFF, 0xD4, 0x01, 0xFF, 0xFF, 0xD6, 0x01, 0xFF, 0xFF, 0xD8, 0x01, 
-    0xFF, 0xFF, 0xDA, 0x01, 0xFF, 0xFF, 0xDC, 0x01, 0xFF, 0xFF, 0xDE, 0x01, 0xFF, 0xFF, 0xE0, 0x01, 
-    0xFF, 0xFF, 0xE2, 0x01, 0xFF, 0xFF, 0xE4, 0x01, 0xFF, 0xFF, 0xE6, 0x01, 0xFF, 0xFF, 0xE8, 0x01, 
-    0xFF, 0xFF, 0xEA, 0x01, 0xFF, 0xFF, 0xEC, 0x01, 0xFF, 0xFF, 0xEE, 0x01, 0xFF, 0xFF, 0xF0, 0x01, 
-    0xFF, 0xFF, 0xF2, 0x01, 0xFF, 0xFF, 0xF4, 0x01, 0xFF, 0xFF, 0xF6, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 
-    0xFF, 0xFF, 0xFA, 0x01, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x00, 0x07, 0xFF, 
-    0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 
-    0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x00, 0x17, 0xFF, 
-    0x00, 0x00, 0x19, 0xFF, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 
-    0x00, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x00, 0x27, 0xFF, 
-    0x00, 0x00, 0x29, 0xFF, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x00, 0x2D, 0xFF, 0x00, 0x00, 0x2F, 0xFF, 
-    0x00, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x00, 0x35, 0xFF, 0x00, 0x00, 0x37, 0xFF, 
-    0x00, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x3B, 0xFF, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 
-    0x00, 0x00, 0x3D, 0xFF, 0x00, 0x00, 0x3B, 0xFF, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x37, 0xFF, 
-    0x00, 0x00, 0x35, 0xFF, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x2F, 0xFF, 
-    0x00, 0x00, 0x2D, 0xFF, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x00, 0x27, 0xFF, 
-    0x00, 0x00, 0x25, 0xFF, 0x00, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 
-    0x00, 0x00, 0x1D, 0xFF, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x00, 0x17, 0xFF, 
-    0x00, 0x00, 0x15, 0xFF, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 
-    0x00, 0x00, 0x0D, 0xFF, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x07, 0xFF, 
-    0x00, 0x00, 0x05, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 
-    0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFA, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 
-    0xFF, 0xFF, 0xF6, 0x01, 0xFF, 0xFF, 0xF4, 0x01, 0xFF, 0xFF, 0xF2, 0x01, 0xFF, 0xFF, 0xF0, 0x01, 
-    0xFF, 0xFF, 0xEE, 0x01, 0xFF, 0xFF, 0xEC, 0x01, 0xFF, 0xFF, 0xEA, 0x01, 0xFF, 0xFF, 0xE8, 0x01, 
-    0xFF, 0xFF, 0xE6, 0x01, 0xFF, 0xFF, 0xE4, 0x01, 0xFF, 0xFF, 0xE2, 0x01, 0xFF, 0xFF, 0xE0, 0x01, 
-    0xFF, 0xFF, 0xDE, 0x01, 0xFF, 0xFF, 0xDC, 0x01, 0xFF, 0xFF, 0xDA, 0x01, 0xFF, 0xFF, 0xD8, 0x01, 
-    0xFF, 0xFF, 0xD6, 0x01, 0xFF, 0xFF, 0xD4, 0x01, 0xFF, 0xFF, 0xD2, 0x01, 0xFF, 0xFF, 0xD0, 0x01, 
-    0xFF, 0xFF, 0xCE, 0x01, 0xFF, 0xFF, 0xCC, 0x01, 0xFF, 0xFF, 0xCA, 0x01, 0xFF, 0xFF, 0xC8, 0x01, 
-    0xFF, 0xFF, 0xC6, 0x01, 0xFF, 0xFF, 0xC4, 0x01, 0xFF, 0xFF, 0xC2, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 
-    0x00, 0x00, 0x06, 0x47, 0x00, 0x00, 0x0C, 0x8B, 0x00, 0x00, 0x12, 0xC7, 0x00, 0x00, 0x18, 0xF8, 
-    0x00, 0x00, 0x1F, 0x19, 0x00, 0x00, 0x25, 0x27, 0x00, 0x00, 0x2B, 0x1E, 0x00, 0x00, 0x30, 0xFB, 
-    0x00, 0x00, 0x36, 0xB9, 0x00, 0x00, 0x3C, 0x56, 0x00, 0x00, 0x41, 0xCD, 0x00, 0x00, 0x47, 0x1C, 
-    0x00, 0x00, 0x4C, 0x3F, 0x00, 0x00, 0x51, 0x33, 0x00, 0x00, 0x55, 0xF4, 0x00, 0x00, 0x5A, 0x81, 
-    0x00, 0x00, 0x5E, 0xD6, 0x00, 0x00, 0x62, 0xF1, 0x00, 0x00, 0x66, 0xCE, 0x00, 0x00, 0x6A, 0x6C, 
-    0x00, 0x00, 0x6D, 0xC9, 0x00, 0x00, 0x70, 0xE1, 0x00, 0x00, 0x73, 0xB5, 0x00, 0x00, 0x76, 0x40, 
-    0x00, 0x00, 0x78, 0x83, 0x00, 0x00, 0x7A, 0x7C, 0x00, 0x00, 0x7C, 0x29, 0x00, 0x00, 0x7D, 0x89, 
-    0x00, 0x00, 0x7E, 0x9C, 0x00, 0x00, 0x7F, 0x61, 0x00, 0x00, 0x7F, 0xD7, 0x00, 0x00, 0x7F, 0xFF, 
-    0x00, 0x00, 0x7F, 0xD7, 0x00, 0x00, 0x7F, 0x61, 0x00, 0x00, 0x7E, 0x9C, 0x00, 0x00, 0x7D, 0x89, 
-    0x00, 0x00, 0x7C, 0x29, 0x00, 0x00, 0x7A, 0x7C, 0x00, 0x00, 0x78, 0x83, 0x00, 0x00, 0x76, 0x40, 
-    0x00, 0x00, 0x73, 0xB5, 0x00, 0x00, 0x70, 0xE1, 0x00, 0x00, 0x6D, 0xC9, 0x00, 0x00, 0x6A, 0x6C, 
-    0x00, 0x00, 0x66, 0xCE, 0x00, 0x00, 0x62, 0xF1, 0x00, 0x00, 0x5E, 0xD6, 0x00, 0x00, 0x5A, 0x81, 
-    0x00, 0x00, 0x55, 0xF4, 0x00, 0x00, 0x51, 0x33, 0x00, 0x00, 0x4C, 0x3F, 0x00, 0x00, 0x47, 0x1C, 
-    0x00, 0x00, 0x41, 0xCD, 0x00, 0x00, 0x3C, 0x56, 0x00, 0x00, 0x36, 0xB9, 0x00, 0x00, 0x30, 0xFB, 
-    0x00, 0x00, 0x2B, 0x1E, 0x00, 0x00, 0x25, 0x27, 0x00, 0x00, 0x1F, 0x19, 0x00, 0x00, 0x18, 0xF8, 
-    0x00, 0x00, 0x12, 0xC7, 0x00, 0x00, 0x0C, 0x8B, 0x00, 0x00, 0x06, 0x47, 0x00, 0x00, 0x00, 0x00, 
-    0xFF, 0xFF, 0xF9, 0xB9, 0xFF, 0xFF, 0xF3, 0x75, 0xFF, 0xFF, 0xED, 0x39, 0xFF, 0xFF, 0xE7, 0x08, 
-    0xFF, 0xFF, 0xE0, 0xE7, 0xFF, 0xFF, 0xDA, 0xD9, 0xFF, 0xFF, 0xD4, 0xE2, 0xFF, 0xFF, 0xCF, 0x05, 
-    0xFF, 0xFF, 0xC9, 0x47, 0xFF, 0xFF, 0xC3, 0xAA, 0xFF, 0xFF, 0xBE, 0x33, 0xFF, 0xFF, 0xB8, 0xE4, 
-    0xFF, 0xFF, 0xB3, 0xC1, 0xFF, 0xFF, 0xAE, 0xCD, 0xFF, 0xFF, 0xAA, 0x0C, 0xFF, 0xFF, 0xA5, 0x7F, 
-    0xFF, 0xFF, 0xA1, 0x2A, 0xFF, 0xFF, 0x9D, 0x0F, 0xFF, 0xFF, 0x99, 0x32, 0xFF, 0xFF, 0x95, 0x94, 
-    0xFF, 0xFF, 0x92, 0x37, 0xFF, 0xFF, 0x8F, 0x1F, 0xFF, 0xFF, 0x8C, 0x4B, 0xFF, 0xFF, 0x89, 0xC0, 
-    0xFF, 0xFF, 0x87, 0x7D, 0xFF, 0xFF, 0x85, 0x84, 0xFF, 0xFF, 0x83, 0xD7, 0xFF, 0xFF, 0x82, 0x77, 
-    0xFF, 0xFF, 0x81, 0x64, 0xFF, 0xFF, 0x80, 0x9F, 0xFF, 0xFF, 0x80, 0x29, 0xFF, 0xFF, 0x80, 0x01, 
-    0xFF, 0xFF, 0x80, 0x29, 0xFF, 0xFF, 0x80, 0x9F, 0xFF, 0xFF, 0x81, 0x64, 0xFF, 0xFF, 0x82, 0x77, 
-    0xFF, 0xFF, 0x83, 0xD7, 0xFF, 0xFF, 0x85, 0x84, 0xFF, 0xFF, 0x87, 0x7D, 0xFF, 0xFF, 0x89, 0xC0, 
-    0xFF, 0xFF, 0x8C, 0x4B, 0xFF, 0xFF, 0x8F, 0x1F, 0xFF, 0xFF, 0x92, 0x37, 0xFF, 0xFF, 0x95, 0x94, 
-    0xFF, 0xFF, 0x99, 0x32, 0xFF, 0xFF, 0x9D, 0x0F, 0xFF, 0xFF, 0xA1, 0x2A, 0xFF, 0xFF, 0xA5, 0x7F, 
-    0xFF, 0xFF, 0xAA, 0x0C, 0xFF, 0xFF, 0xAE, 0xCD, 0xFF, 0xFF, 0xB3, 0xC1, 0xFF, 0xFF, 0xB8, 0xE4, 
-    0xFF, 0xFF, 0xBE, 0x33, 0xFF, 0xFF, 0xC3, 0xAA, 0xFF, 0xFF, 0xC9, 0x47, 0xFF, 0xFF, 0xCF, 0x05, 
-    0xFF, 0xFF, 0xD4, 0xE2, 0xFF, 0xFF, 0xDA, 0xD9, 0xFF, 0xFF, 0xE0, 0xE7, 0xFF, 0xFF, 0xE7, 0x08, 
-    0xFF, 0xFF, 0xED, 0x39, 0xFF, 0xFF, 0xF3, 0x75, 0xFF, 0xFF, 0xF9, 0xB9, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xFF, 
-    0x00, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x02, 0x3A, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x03, 0xEB, 
-    0x00, 0x00, 0x04, 0xEC, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x07, 0x3D, 0x00, 0x00, 0x08, 0x88, 
-    0x00, 0x00, 0x09, 0xE9, 0x00, 0x00, 0x0B, 0x5E, 0x00, 0x00, 0x0C, 0xE4, 0x00, 0x00, 0x0E, 0x7B, 
-    0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x11, 0xCF, 0x00, 0x00, 0x13, 0x88, 0x00, 0x00, 0x15, 0x48, 
-    0x00, 0x00, 0x17, 0x0E, 0x00, 0x00, 0x18, 0xD5, 0x00, 0x00, 0x1A, 0x9C, 0x00, 0x00, 0x1C, 0x61, 
-    0x00, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x1F, 0xD8, 0x00, 0x00, 0x21, 0x85, 0x00, 0x00, 0x23, 0x26, 
-    0x00, 0x00, 0x24, 0xB7, 0x00, 0x00, 0x26, 0x36, 0x00, 0x00, 0x27, 0xA1, 0x00, 0x00, 0x28, 0xF5, 
-    0x00, 0x00, 0x2A, 0x30, 0x00, 0x00, 0x2B, 0x4F, 0x00, 0x00, 0x2C, 0x50, 0x00, 0x00, 0x2D, 0x31, 
-    0x00, 0x00, 0x2D, 0xF0, 0x00, 0x00, 0x2E, 0x8B, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2F, 0x4D, 
-    0x00, 0x00, 0x2F, 0x70, 0x00, 0x00, 0x2F, 0x69, 0x00, 0x00, 0x2F, 0x35, 0x00, 0x00, 0x2E, 0xD3, 
-    0x00, 0x00, 0x2E, 0x43, 0x00, 0x00, 0x2D, 0x83, 0x00, 0x00, 0x2C, 0x93, 0x00, 0x00, 0x2B, 0x71, 
-    0x00, 0x00, 0x2A, 0x1E, 0x00, 0x00, 0x28, 0x99, 0x00, 0x00, 0x26, 0xE2, 0x00, 0x00, 0x24, 0xFA, 
-    0x00, 0x00, 0x22, 0xE0, 0x00, 0x00, 0x20, 0x94, 0x00, 0x00, 0x1E, 0x19, 0x00, 0x00, 0x1B, 0x6E, 
-    0x00, 0x00, 0x18, 0x94, 0x00, 0x00, 0x15, 0x8C, 0x00, 0x00, 0x12, 0x59, 0x00, 0x00, 0x0E, 0xFB, 
-    0x00, 0x00, 0x0B, 0x74, 0x00, 0x00, 0x07, 0xC7, 0x00, 0x00, 0x03, 0xF4, 0x00, 0x00, 0x00, 0x00, 
-    0xFF, 0xFF, 0xFB, 0xEB, 0xFF, 0xFF, 0xF7, 0xB9, 0xFF, 0xFF, 0xF3, 0x6B, 0xFF, 0xFF, 0xEF, 0x06, 
-    0xFF, 0xFF, 0xEA, 0x8B, 0xFF, 0xFF, 0xE5, 0xFE, 0xFF, 0xFF, 0xE1, 0x63, 0xFF, 0xFF, 0xDC, 0xBC, 
-    0xFF, 0xFF, 0xD8, 0x0D, 0xFF, 0xFF, 0xD3, 0x5A, 0xFF, 0xFF, 0xCE, 0xA6, 0xFF, 0xFF, 0xC9, 0xF5, 
-    0xFF, 0xFF, 0xC5, 0x4B, 0xFF, 0xFF, 0xC0, 0xAB, 0xFF, 0xFF, 0xBC, 0x19, 0xFF, 0xFF, 0xB7, 0x99, 
-    0xFF, 0xFF, 0xB3, 0x2F, 0xFF, 0xFF, 0xAE, 0xDF, 0xFF, 0xFF, 0xAA, 0xAC, 0xFF, 0xFF, 0xA6, 0x9B, 
-    0xFF, 0xFF, 0xA2, 0xAF, 0xFF, 0xFF, 0x9E, 0xEC, 0xFF, 0xFF, 0x9B, 0x56, 0xFF, 0xFF, 0x97, 0xF0, 
-    0xFF, 0xFF, 0x94, 0xBF, 0xFF, 0xFF, 0x91, 0xC4, 0xFF, 0xFF, 0x8F, 0x04, 0xFF, 0xFF, 0x8C, 0x82, 
-    0xFF, 0xFF, 0x8A, 0x41, 0xFF, 0xFF, 0x88, 0x44, 0xFF, 0xFF, 0x86, 0x8D, 0xFF, 0xFF, 0x85, 0x20, 
-    0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0x83, 0x2B, 0xFF, 0xFF, 0x82, 0xA8, 0xFF, 0xFF, 0x82, 0x77, 
-    0xFF, 0xFF, 0x82, 0x9A, 0xFF, 0xFF, 0x83, 0x11, 0xFF, 0xFF, 0x83, 0xDF, 0xFF, 0xFF, 0x85, 0x05, 
-    0xFF, 0xFF, 0x86, 0x82, 0xFF, 0xFF, 0x88, 0x59, 0xFF, 0xFF, 0x8A, 0x88, 0xFF, 0xFF, 0x8D, 0x10, 
-    0xFF, 0xFF, 0x8F, 0xF1, 0xFF, 0xFF, 0x93, 0x2A, 0xFF, 0xFF, 0x96, 0xBB, 0xFF, 0xFF, 0x9A, 0xA2, 
-    0xFF, 0xFF, 0x9E, 0xDF, 0xFF, 0xFF, 0xA3, 0x6F, 0xFF, 0xFF, 0xA8, 0x51, 0xFF, 0xFF, 0xAD, 0x83, 
-    0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xB8, 0xCE, 0xFF, 0xFF, 0xBE, 0xE1, 0xFF, 0xFF, 0xC5, 0x39, 
-    0xFF, 0xFF, 0xCB, 0xD3, 0xFF, 0xFF, 0xD2, 0xAC, 0xFF, 0xFF, 0xD9, 0xC0, 0xFF, 0xFF, 0xE1, 0x0A, 
-    0xFF, 0xFF, 0xE8, 0x87, 0xFF, 0xFF, 0xF0, 0x32, 0xFF, 0xFF, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x09, 0x69, 0x00, 0x00, 0x12, 0xC2, 0x00, 0x00, 0x1B, 0xF7, 0x00, 0x00, 0x24, 0xF9, 
-    0x00, 0x00, 0x2D, 0xB7, 0x00, 0x00, 0x36, 0x22, 0x00, 0x00, 0x3E, 0x29, 0x00, 0x00, 0x45, 0xBE, 
-    0x00, 0x00, 0x4C, 0xD5, 0x00, 0x00, 0x53, 0x61, 0x00, 0x00, 0x59, 0x57, 0x00, 0x00, 0x5E, 0xAE, 
-    0x00, 0x00, 0x63, 0x5D, 0x00, 0x00, 0x67, 0x5E, 0x00, 0x00, 0x6A, 0xAB, 0x00, 0x00, 0x6D, 0x40, 
-    0x00, 0x00, 0x6F, 0x1B, 0x00, 0x00, 0x70, 0x3D, 0x00, 0x00, 0x70, 0xA5, 0x00, 0x00, 0x70, 0x56, 
-    0x00, 0x00, 0x6F, 0x55, 0x00, 0x00, 0x6D, 0xA7, 0x00, 0x00, 0x6B, 0x53, 0x00, 0x00, 0x68, 0x61, 
-    0x00, 0x00, 0x64, 0xDB, 0x00, 0x00, 0x60, 0xCC, 0x00, 0x00, 0x5C, 0x3F, 0x00, 0x00, 0x57, 0x42, 
-    0x00, 0x00, 0x51, 0xE2, 0x00, 0x00, 0x4C, 0x2C, 0x00, 0x00, 0x46, 0x31, 0x00, 0x00, 0x3F, 0xFF, 
-    0x00, 0x00, 0x39, 0xA5, 0x00, 0x00, 0x33, 0x34, 0x00, 0x00, 0x2C, 0xBA, 0x00, 0x00, 0x26, 0x47, 
-    0x00, 0x00, 0x1F, 0xE9, 0x00, 0x00, 0x19, 0xAF, 0x00, 0x00, 0x13, 0xA8, 0x00, 0x00, 0x0D, 0xDF, 
-    0x00, 0x00, 0x08, 0x61, 0x00, 0x00, 0x03, 0x3A, 0xFF, 0xFF, 0xFE, 0x74, 0xFF, 0xFF, 0xFA, 0x17, 
-    0xFF, 0xFF, 0xF6, 0x2A, 0xFF, 0xFF, 0xF2, 0xB4, 0xFF, 0xFF, 0xEF, 0xBB, 0xFF, 0xFF, 0xED, 0x42, 
-    0xFF, 0xFF, 0xEB, 0x4A, 0xFF, 0xFF, 0xE9, 0xD5, 0xFF, 0xFF, 0xE8, 0xE2, 0xFF, 0xFF, 0xE8, 0x6E, 
-    0xFF, 0xFF, 0xE8, 0x76, 0xFF, 0xFF, 0xE8, 0xF5, 0xFF, 0xFF, 0xE9, 0xE5, 0xFF, 0xFF, 0xEB, 0x3D, 
-    0xFF, 0xFF, 0xEC, 0xF6, 0xFF, 0xFF, 0xEF, 0x06, 0xFF, 0xFF, 0xF1, 0x62, 0xFF, 0xFF, 0xF3, 0xFF, 
-    0xFF, 0xFF, 0xF6, 0xD1, 0xFF, 0xFF, 0xF9, 0xCA, 0xFF, 0xFF, 0xFC, 0xDF, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x03, 0x21, 0x00, 0x00, 0x06, 0x36, 0x00, 0x00, 0x09, 0x2F, 0x00, 0x00, 0x0C, 0x01, 
-    0x00, 0x00, 0x0E, 0x9E, 0x00, 0x00, 0x10, 0xFA, 0x00, 0x00, 0x13, 0x0A, 0x00, 0x00, 0x14, 0xC3, 
-    0x00, 0x00, 0x16, 0x1B, 0x00, 0x00, 0x17, 0x0B, 0x00, 0x00, 0x17, 0x8A, 0x00, 0x00, 0x17, 0x92, 
-    0x00, 0x00, 0x17, 0x1E, 0x00, 0x00, 0x16, 0x2B, 0x00, 0x00, 0x14, 0xB6, 0x00, 0x00, 0x12, 0xBE, 
-    0x00, 0x00, 0x10, 0x45, 0x00, 0x00, 0x0D, 0x4C, 0x00, 0x00, 0x09, 0xD6, 0x00, 0x00, 0x05, 0xE9, 
-    0x00, 0x00, 0x01, 0x8C, 0xFF, 0xFF, 0xFC, 0xC6, 0xFF, 0xFF, 0xF7, 0x9F, 0xFF, 0xFF, 0xF2, 0x21, 
-    0xFF, 0xFF, 0xEC, 0x58, 0xFF, 0xFF, 0xE6, 0x51, 0xFF, 0xFF, 0xE0, 0x17, 0xFF, 0xFF, 0xD9, 0xB9, 
-    0xFF, 0xFF, 0xD3, 0x46, 0xFF, 0xFF, 0xCC, 0xCC, 0xFF, 0xFF, 0xC6, 0x5B, 0xFF, 0xFF, 0xC0, 0x01, 
-    0xFF, 0xFF, 0xB9, 0xCF, 0xFF, 0xFF, 0xB3, 0xD4, 0xFF, 0xFF, 0xAE, 0x1E, 0xFF, 0xFF, 0xA8, 0xBE, 
-    0xFF, 0xFF, 0xA3, 0xC1, 0xFF, 0xFF, 0x9F, 0x34, 0xFF, 0xFF, 0x9B, 0x25, 0xFF, 0xFF, 0x97, 0x9F, 
-    0xFF, 0xFF, 0x94, 0xAD, 0xFF, 0xFF, 0x92, 0x59, 0xFF, 0xFF, 0x90, 0xAB, 0xFF, 0xFF, 0x8F, 0xAA, 
-    0xFF, 0xFF, 0x8F, 0x5B, 0xFF, 0xFF, 0x8F, 0xC3, 0xFF, 0xFF, 0x90, 0xE5, 0xFF, 0xFF, 0x92, 0xC0, 
-    0xFF, 0xFF, 0x95, 0x55, 0xFF, 0xFF, 0x98, 0xA2, 0xFF, 0xFF, 0x9C, 0xA3, 0xFF, 0xFF, 0xA1, 0x52, 
-    0xFF, 0xFF, 0xA6, 0xA9, 0xFF, 0xFF, 0xAC, 0x9F, 0xFF, 0xFF, 0xB3, 0x2B, 0xFF, 0xFF, 0xBA, 0x42, 
-    0xFF, 0xFF, 0xC1, 0xD7, 0xFF, 0xFF, 0xC9, 0xDE, 0xFF, 0xFF, 0xD2, 0x49, 0xFF, 0xFF, 0xDB, 0x07, 
-    0xFF, 0xFF, 0xE4, 0x09, 0xFF, 0xFF, 0xED, 0x3E, 0xFF, 0xFF, 0xF6, 0x97, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x0F, 0x79, 0x00, 0x00, 0x19, 0x4E, 0x00, 0x00, 0x24, 0x67, 
-    0x00, 0x00, 0x30, 0x92, 0x00, 0x00, 0x3D, 0x8B, 0x00, 0x00, 0x4A, 0xF0, 0x00, 0x00, 0x58, 0x42, 
-    0x00, 0x00, 0x64, 0xE0, 0x00, 0x00, 0x70, 0x09, 0x00, 0x00, 0x78, 0xE3, 0x00, 0x00, 0x7E, 0x7E, 
-    0x00, 0x00, 0x7F, 0xE5, 0x00, 0x00, 0x7C, 0x35, 0x00, 0x00, 0x72, 0xB3, 0x00, 0x00, 0x62, 0xF1, 
-    0x00, 0x00, 0x4C, 0xEA, 0x00, 0x00, 0x31, 0x29, 0x00, 0x00, 0x10, 0xE2, 0xFF, 0xFF, 0xEE, 0x00, 
-    0xFF, 0xFF, 0xCB, 0x1A, 0xFF, 0xFF, 0xAB, 0x5D, 0xFF, 0xFF, 0x92, 0x3E, 0xFF, 0xFF, 0x83, 0x1E, 
-    0xFF, 0xFF, 0x80, 0xC8, 0xFF, 0xFF, 0x8C, 0xE4, 0xFF, 0xFF, 0xA7, 0x6D, 0xFF, 0xFF, 0xCE, 0x4C, 
-    0xFF, 0xFF, 0xFD, 0x34, 0x00, 0x00, 0x2D, 0xE1, 0x00, 0x00, 0x58, 0xCA, 0x00, 0x00, 0x76, 0x40, 
-    0x00, 0x00, 0x7F, 0xEF, 0x00, 0x00, 0x72, 0x6A, 0x00, 0x00, 0x4E, 0x79, 0x00, 0x00, 0x19, 0xBD, 
-    0xFF, 0xFF, 0xDE, 0x4A, 0xFF, 0xFF, 0xA9, 0x08, 0xFF, 0xFF, 0x86, 0xFC, 0xFF, 0xFF, 0x81, 0xE4, 
-    0xFF, 0xFF, 0x9D, 0x07, 0xFF, 0xFF, 0xD3, 0x39, 0x00, 0x00, 0x16, 0xFE, 0x00, 0x00, 0x55, 0x5F, 
-    0x00, 0x00, 0x7B, 0x06, 0x00, 0x00, 0x7A, 0x8A, 0x00, 0x00, 0x51, 0xD7, 0x00, 0x00, 0x0C, 0x8B, 
-    0xFF, 0xFF, 0xC1, 0xA4, 0xFF, 0xFF, 0x8C, 0x61, 0xFF, 0xFF, 0x82, 0x3B, 0xFF, 0xFF, 0xA9, 0x77, 
-    0xFF, 0xFF, 0xF4, 0x95, 0x00, 0x00, 0x45, 0xA2, 0x00, 0x00, 0x79, 0x85, 0x00, 0x00, 0x77, 0x6B, 
-    0x00, 0x00, 0x3D, 0xC2, 0xFF, 0xFF, 0xE5, 0xAF, 0xFF, 0xFF, 0x99, 0x75, 0xFF, 0xFF, 0x80, 0x8C, 
-    0xFF, 0xFF, 0xAA, 0x4D, 0x00, 0x00, 0x02, 0xF1, 0x00, 0x00, 0x5B, 0x06, 0x00, 0x00, 0x7F, 0xFF, 
-    0x00, 0x00, 0x59, 0xFC, 0xFF, 0xFF, 0xFD, 0x0F, 0xFF, 0xFF, 0xA0, 0xEF, 0xFF, 0xFF, 0x80, 0x8C, 
-    0xFF, 0xFF, 0xB3, 0x67, 0x00, 0x00, 0x1A, 0x51, 0x00, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x77, 0x6B, 
-    0x00, 0x00, 0x28, 0x32, 0xFF, 0xFF, 0xBA, 0x5E, 0xFF, 0xFF, 0x80, 0x84, 0xFF, 0xFF, 0xA9, 0x77, 
-    0x00, 0x00, 0x17, 0xC4, 0x00, 0x00, 0x73, 0x9F, 0x00, 0x00, 0x6F, 0xC6, 0x00, 0x00, 0x0C, 0x8B, 
-    0xFF, 0xFF, 0x9D, 0x97, 0xFF, 0xFF, 0x85, 0x76, 0xFF, 0xFF, 0xDC, 0xAF, 0x00, 0x00, 0x55, 0x5F, 
-    0x00, 0x00, 0x7D, 0xE9, 0x00, 0x00, 0x2C, 0xC7, 0xFF, 0xFF, 0xAE, 0xD7, 0xFF, 0xFF, 0x81, 0xE4, 
-    0xFF, 0xFF, 0xD6, 0x51, 0x00, 0x00, 0x56, 0xF8, 0x00, 0x00, 0x7B, 0x7A, 0x00, 0x00, 0x19, 0xBD, 
-    0xFF, 0xFF, 0x9A, 0xE3, 0xFF, 0xFF, 0x8D, 0x96, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x76, 0x40, 
-    0x00, 0x00, 0x5C, 0x31, 0xFF, 0xFF, 0xD2, 0x1F, 0xFF, 0xFF, 0x80, 0x09, 0xFF, 0xFF, 0xCE, 0x4C, 
-    0x00, 0x00, 0x5C, 0x65, 0x00, 0x00, 0x73, 0x1C, 0xFF, 0xFF, 0xF1, 0xF1, 0xFF, 0xFF, 0x83, 0x1E, 
-    0xFF, 0xFF, 0xBE, 0x28, 0x00, 0x00, 0x54, 0xA3, 0x00, 0x00, 0x74, 0x8D, 0xFF, 0xFF, 0xEE, 0x00, 
-    0xFF, 0xFF, 0x81, 0x20, 0xFF, 0xFF, 0xCE, 0xD7, 0x00, 0x00, 0x66, 0x4E, 0x00, 0x00, 0x62, 0xF1, 
-    0xFF, 0xFF, 0xC7, 0x33, 0xFF, 0xFF, 0x83, 0xCB, 0x00, 0x00, 0x05, 0x0D, 0x00, 0x00, 0x7E, 0x7E, 
-    0x00, 0x00, 0x2A, 0x0E, 0xFF, 0xFF, 0x8F, 0xF7, 0xFF, 0xFF, 0xB1, 0x37, 0x00, 0x00, 0x58, 0x42, 
-    0x00, 0x00, 0x67, 0xC3, 0xFF, 0xFF, 0xC2, 0x75, 0xFF, 0xFF, 0x89, 0x95, 0x00, 0x00, 0x24, 0x67, 
-    0x00, 0x00, 0x7D, 0x78, 0xFF, 0xFF, 0xF0, 0x87, 0xFF, 0xFF, 0x80, 0x33, 0x00, 0x00, 0x00, 0x00, 
-    0xFF, 0xFF, 0xC6, 0x95, 0xFF, 0xFF, 0xCB, 0x25, 0xFF, 0xFF, 0xC9, 0xBC, 0xFF, 0xFF, 0xCD, 0x56, 
-    0xFF, 0xFF, 0xCD, 0x2E, 0xFF, 0xFF, 0xCE, 0x03, 0xFF, 0xFF, 0xCE, 0xC0, 0xFF, 0xFF, 0xD1, 0xAC, 
-    0xFF, 0xFF, 0xD6, 0x81, 0xFF, 0xFF, 0xD7, 0xD8, 0xFF, 0xFF, 0xD6, 0x23, 0xFF, 0xFF, 0xD9, 0xA3, 
-    0xFF, 0xFF, 0xD9, 0x6F, 0xFF, 0xFF, 0xDE, 0x63, 0xFF, 0xFF, 0xE1, 0x8B, 0xFF, 0xFF, 0xE0, 0x2F, 
-    0xFF, 0xFF, 0xDE, 0x31, 0xFF, 0xFF, 0xE6, 0xBA, 0xFF, 0xFF, 0xED, 0x65, 0xFF, 0xFF, 0xEA, 0x39, 
-    0xFF, 0xFF, 0xEB, 0xAB, 0xFF, 0xFF, 0xED, 0x8B, 0xFF, 0xFF, 0xF0, 0xBA, 0xFF, 0xFF, 0xF4, 0xC5, 
-    0xFF, 0xFF, 0xF5, 0x99, 0xFF, 0xFF, 0xF4, 0x3B, 0xFF, 0xFF, 0xF6, 0x89, 0xFF, 0xFF, 0xF8, 0xDF, 
-    0xFF, 0xFF, 0xF8, 0xAE, 0xFF, 0xFF, 0xFE, 0x67, 0xFF, 0xFF, 0xFE, 0x69, 0x00, 0x00, 0x02, 0xF5, 
-    0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x06, 0xEF, 0x00, 0x00, 0x02, 0x17, 0x00, 0x00, 0x0B, 0x0F, 
-    0x00, 0x00, 0x06, 0x9D, 0x00, 0x00, 0x09, 0x67, 0x00, 0x00, 0x0D, 0x64, 0x00, 0x00, 0x0C, 0x6F, 
-    0x00, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x14, 0x09, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x16, 0x07, 
-    0x00, 0x00, 0x19, 0x7E, 0x00, 0x00, 0x1B, 0x11, 0x00, 0x00, 0x1D, 0xD6, 0x00, 0x00, 0x1F, 0x99, 
-    0x00, 0x00, 0x1E, 0x69, 0x00, 0x00, 0x25, 0x8E, 0x00, 0x00, 0x23, 0x5F, 0x00, 0x00, 0x24, 0x44, 
-    0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2C, 0x11, 0x00, 0x00, 0x2B, 0x65, 0x00, 0x00, 0x32, 0xBC, 
-    0x00, 0x00, 0x2F, 0x1F, 0x00, 0x00, 0x31, 0x21, 0x00, 0x00, 0x34, 0x14, 0x00, 0x00, 0x32, 0xF5, 
-    0x00, 0x00, 0x36, 0x92, 0x00, 0x00, 0x35, 0xFE, 0x00, 0x00, 0x3C, 0xE4, 0x00, 0x00, 0x3D, 0x5F, 
-    0x00, 0x00, 0x38, 0x91, 0x00, 0x00, 0x39, 0x21, 0x00, 0x00, 0x36, 0x58, 0x00, 0x00, 0x37, 0xD6, 
-    0x00, 0x00, 0x35, 0xE4, 0x00, 0x00, 0x32, 0xA6, 0x00, 0x00, 0x30, 0x6E, 0x00, 0x00, 0x2F, 0x1E, 
-    0x00, 0x00, 0x2A, 0x3D, 0x00, 0x00, 0x2A, 0x7D, 0x00, 0x00, 0x27, 0x24, 0x00, 0x00, 0x27, 0xA4, 
-    0x00, 0x00, 0x23, 0xC2, 0x00, 0x00, 0x25, 0xC2, 0x00, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x20, 0xD0, 
-    0x00, 0x00, 0x1C, 0x6E, 0x00, 0x00, 0x17, 0xBF, 0x00, 0x00, 0x19, 0x64, 0x00, 0x00, 0x16, 0x6B, 
-    0x00, 0x00, 0x12, 0x42, 0x00, 0x00, 0x13, 0x6F, 0x00, 0x00, 0x11, 0x9D, 0x00, 0x00, 0x0E, 0x80, 
-    0x00, 0x00, 0x0F, 0xEA, 0x00, 0x00, 0x09, 0xE2, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x07, 0x98, 
-    0x00, 0x00, 0x06, 0x73, 0x00, 0x00, 0x02, 0xD5, 0x00, 0x00, 0x01, 0x63, 0xFF, 0xFF, 0xFD, 0xF2, 
-    0x00, 0x00, 0x01, 0xED, 0xFF, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xF7, 0x69, 0xFF, 0xFF, 0xFC, 0x16, 
-    0xFF, 0xFF, 0xF4, 0xCD, 0xFF, 0xFF, 0xF4, 0x06, 0xFF, 0xFF, 0xF3, 0xC2, 0xFF, 0xFF, 0xF0, 0x30, 
-    0xFF, 0xFF, 0xF1, 0x72, 0xFF, 0xFF, 0xEF, 0x53, 0xFF, 0xFF, 0xE8, 0x12, 0xFF, 0xFF, 0xE7, 0x2D, 
-    0xFF, 0xFF, 0xE5, 0xDC, 0xFF, 0xFF, 0xE6, 0x34, 0xFF, 0xFF, 0xE2, 0xAE, 0xFF, 0xFF, 0xE2, 0xF2, 
-    0xFF, 0xFF, 0xE0, 0x23, 0xFF, 0xFF, 0xDB, 0xDF, 0xFF, 0xFF, 0xDC, 0x2B, 0xFF, 0xFF, 0xD8, 0x95, 
-    0xFF, 0xFF, 0xD6, 0xE8, 0xFF, 0xFF, 0xD8, 0xDA, 0xFF, 0xFF, 0xD1, 0x2C, 0xFF, 0xFF, 0xCE, 0x93, 
-    0xFF, 0xFF, 0xD1, 0x70, 0xFF, 0xFF, 0xCB, 0xA6, 0xFF, 0xFF, 0xCC, 0x70, 0xFF, 0xFF, 0xCB, 0x45, 
-    0xFF, 0xFF, 0xC8, 0x65, 0xFF, 0xFF, 0xC5, 0xEC, 0xFF, 0xFF, 0xC4, 0xBF, 0xFF, 0xFF, 0xC5, 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, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x5F, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 
-    0x00, 0x00, 0x5F, 0xFF, 0x00, 0x00, 0x3F, 0xFF, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xEF, 0xA6, 0x00, 0x00, 0x0F, 0x80, 0xFF, 0xFF, 0xF0, 0x04, 0x00, 0x00, 0x0E, 0xA6, 
-    0xFF, 0xFF, 0xED, 0x75, 0x00, 0x00, 0x1E, 0x84, 0x00, 0x00, 0x04, 0xC7, 0x00, 0x00, 0x28, 0xD4, 
-    0x00, 0x00, 0x08, 0x39, 0x00, 0x00, 0x16, 0x30, 0x00, 0x00, 0x21, 0x11, 0x00, 0x00, 0x0B, 0x1E, 
-    0xFF, 0xFF, 0xF6, 0x1E, 0xFF, 0xFF, 0xFD, 0x1F, 0xFF, 0xFF, 0xE7, 0x51, 0xFF, 0xFF, 0xCB, 0x57, 
-    0x00, 0x00, 0x03, 0xD6, 0x00, 0x00, 0x0D, 0xE0, 0x00, 0x00, 0x06, 0x83, 0xFF, 0xFF, 0xF8, 0x23, 
-    0xFF, 0xFF, 0xF5, 0x53, 0x00, 0x00, 0x1D, 0x19, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x29, 0x17, 
-    0x00, 0x00, 0x15, 0x24, 0x00, 0x00, 0x25, 0xA4, 0xFF, 0xFF, 0xDC, 0xB4, 0xFF, 0xFF, 0xF9, 0x57, 
-    0x00, 0x00, 0x19, 0x77, 0x00, 0x00, 0x2E, 0xF3, 0xFF, 0xFF, 0xD4, 0x13, 0x00, 0x00, 0x02, 0x39, 
-    0x00, 0x00, 0x32, 0x10, 0x00, 0x00, 0x04, 0x22, 0xFF, 0xFF, 0xEF, 0xE8, 0xFF, 0xFF, 0xDB, 0x2B, 
-    0xFF, 0xFF, 0xFE, 0x4C, 0x00, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x05, 0x90, 0xFF, 0xFF, 0xFB, 0x68, 
-    0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x10, 0x6F, 0x00, 0x00, 0x17, 0xA1, 0xFF, 0xFF, 0xD8, 0x31, 
-    0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xF0, 0x66, 0x00, 0x00, 0x0E, 0x78, 0xFF, 0xFF, 0xF0, 0x5E, 
-    0x00, 0x00, 0x1F, 0x83, 0x00, 0x00, 0x19, 0x74, 0xFF, 0xFF, 0xEB, 0x6F, 0xFF, 0xFF, 0xF0, 0xDE, 
-    0x00, 0x00, 0x2B, 0x4D, 0x00, 0x00, 0x18, 0x67, 0xFF, 0xFF, 0xCE, 0x98, 0x00, 0x00, 0x0D, 0x20, 
-    0x00, 0x00, 0x0A, 0x13, 0xFF, 0xFF, 0xE8, 0xD3, 0xFF, 0xFF, 0xDF, 0x60, 0x00, 0x00, 0x08, 0xDF, 
-    0xFF, 0xFF, 0xE1, 0x68, 0x00, 0x00, 0x11, 0x14, 0xFF, 0xFF, 0xFE, 0x44, 0xFF, 0xFF, 0xD3, 0x92, 
-    0x00, 0x00, 0x14, 0xA4, 0xFF, 0xFF, 0xE8, 0x95, 0xFF, 0xFF, 0xF2, 0xD8, 0x00, 0x00, 0x30, 0x8A, 
-    0xFF, 0xFF, 0xF9, 0x85, 0xFF, 0xFF, 0xFB, 0x89, 0x00, 0x00, 0x19, 0x0E, 0x00, 0x00, 0x21, 0x02, 
-    0xFF, 0xFF, 0xF2, 0x6B, 0xFF, 0xFF, 0xEE, 0x43, 0xFF, 0xFF, 0xE9, 0xFE, 0x00, 0x00, 0x0D, 0x8A, 
-    0xFF, 0xFF, 0xFA, 0x2B, 0x00, 0x00, 0x09, 0xA5, 0x00, 0x00, 0x1F, 0x45, 0x00, 0x00, 0x1C, 0x1D, 
-    0xFF, 0xFF, 0xEA, 0x2A, 0xFF, 0xFF, 0xE8, 0xDB, 0x00, 0x00, 0x11, 0xE2, 0x00, 0x00, 0x0C, 0x5A, 
-    0x00, 0x00, 0x14, 0xC7, 0x00, 0x00, 0x08, 0x64, 0xFF, 0xFF, 0xD7, 0x61, 0xFF, 0xFF, 0xE8, 0x6E, 
-    0xFF, 0xFF, 0xF0, 0x47, 0xFF, 0xFF, 0xF7, 0x6F, 0x00, 0x00, 0x02, 0x0E, 0xFF, 0xFF, 0xFE, 0xC9, 
-    0xFF, 0xFF, 0xF0, 0x44, 0x00, 0x00, 0x06, 0x27, 0x00, 0x00, 0x03, 0x33, 0xFF, 0xFF, 0xFA, 0x47, 
-    0xFF, 0xFF, 0xF5, 0xFE, 0xFF, 0xFF, 0xDC, 0x9F, 0x00, 0x00, 0x1B, 0x8D, 0x00, 0x00, 0x20, 0x7F, 
-    0x00, 0x00, 0x0C, 0x79, 0xFF, 0xFF, 0xE7, 0x85, 0x00, 0x00, 0x0B, 0x90, 0xFF, 0xFF, 0xDF, 0xE8, 
-    0x00, 0x00, 0x06, 0x90, 0x00, 0x00, 0x0A, 0xC8, 0x00, 0x00, 0x1A, 0xAF, 0x00, 0x00, 0x1E, 0xF3, 
-    0x00, 0x00, 0x13, 0xFD, 0xFF, 0xFF, 0xE1, 0xCC, 0x00, 0x00, 0x19, 0xA2, 0xFF, 0xFF, 0xE5, 0xC4, 
-    0xFF, 0xFF, 0xE4, 0xF3, 0x00, 0x00, 0x49, 0xEC, 0xFF, 0xFF, 0xF9, 0x26, 0xFF, 0xFF, 0xF3, 0x7F, 
-    0x00, 0x00, 0x0A, 0xBC, 0xFF, 0xFF, 0xEC, 0xFD, 0x00, 0x00, 0x0E, 0xAA, 0xFF, 0xFF, 0xFC, 0x53, 
-    0xFF, 0xFF, 0xFB, 0xFD, 0xFF, 0xFF, 0xF0, 0x58, 0x00, 0x00, 0x02, 0x91, 0xFF, 0xFF, 0xE3, 0x83, 
-    0x00, 0x00, 0x18, 0x80, 0xFF, 0xFF, 0xF1, 0x35, 0xFF, 0xFF, 0xF3, 0x0C, 0xFF, 0xFF, 0xE6, 0xD6, 
-};
+#ifndef __WAVETABLE_H__
+#define __WAVETABLE_H__
+
+// How to preserve const-ness of this stuff without introducing tons of hairiness?
+extern /*const*/ unsigned char waveTableROM[];
+
+#endif // __WAVETABLE_H__