--- /dev/null
+#\r
+# Unified Makefile for Apple 2 SDL\r
+#\r
+# by James L. Hammons\r
+# (C) 2005 Underground Software\r
+# This software is licensed under the GPL v2\r
+#\r
+\r
+# Figure out which system we're compiling for, and set the appropriate variables\r
+\r
+ifeq "$(OSTYPE)" "msys" # Win32\r
+\r
+SYSTYPE = __GCCWIN32__\r
+EXESUFFIX = .exe\r
+GLLIB = -lopengl32\r
+ICON = obj/icon.o\r
+SDLLIBTYPE = --libs\r
+MSG = Win32 on MinGW\r
+\r
+else\r
+#ifeq "$(OSTYPE)" "darwin"\r
+ifeq "darwin" "$(findstring darwin,$(OSTYPE))" # Should catch both 'darwin' and 'darwin7.0'\r
+\r
+SYSTYPE = __GCCUNIX__ -D_OSX_\r
+EXESUFFIX =\r
+GLLIB =\r
+ICON =\r
+SDLLIBTYPE = --static-libs\r
+MSG = Mac OS X\r
+\r
+else # *nix\r
+\r
+SYSTYPE = __GCCUNIX__\r
+EXESUFFIX =\r
+GLLIB = -lGL\r
+ICON =\r
+SDLLIBTYPE = --libs\r
+MSG = generic Unix/Linux\r
+\r
+endif\r
+endif\r
+\r
+CC = gcc\r
+LD = gcc\r
+TARGET = apple2\r
+\r
+# Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2\r
+#CFLAGS = -MMD -Wall -Wno-switch -O2 -D$(SYSTYPE) -ffast-math -fomit-frame-pointer `sdl-config --cflags`\r
+#CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) \\r
+# No optimization and w/gcov flags, so that we get an accurate picture from gcov\r
+#CFLAGS = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
+# -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
+#CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
+# -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
+# No optimization for profiling with gprof...\r
+CFLAGS = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
+ -ffast-math `sdl-config --cflags` -pg\r
+CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
+ -ffast-math `sdl-config --cflags` -pg\r
+# -fomit-frame-pointer `sdl-config --cflags` -g\r
+# -fomit-frame-pointer `sdl-config --cflags` -DLOG_UNMAPPED_MEMORY_ACCESSES\r
+\r
+LDFLAGS =\r
+\r
+#LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB)\r
+# Link in the gcov library (for profiling purposes)\r
+#LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lgcov\r
+# Link in the gprof lib\r
+LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -pg\r
+\r
+INCS = -I. -I./src -I/usr/local/include -I/usr/include\r
+\r
+OBJS = \\r
+ obj/button.o \\r
+ obj/draggablewindow.o \\r
+ obj/element.o \\r
+ obj/gui.o \\r
+ obj/guimisc.o \\r
+ obj/menu.o \\r
+ obj/textedit.o \\r
+ obj/window.o \\r
+ \\r
+ obj/applevideo.o \\r
+ obj/ay8910.o \\r
+ obj/dis65c02.o \\r
+ obj/floppy.o \\r
+ obj/log.o \\r
+ obj/sdlemu_config.o \\r
+ obj/sdlemu_opengl.o \\r
+ obj/settings.o \\r
+ obj/sound.o \\r
+ obj/timing.o \\r
+ obj/v65c02.o \\r
+ obj/video.o \\r
+ obj/apple2.o \\r
+ $(ICON)\r
+\r
+all: checkenv message obj $(TARGET)$(EXESUFFIX)\r
+ @echo\r
+ @echo "*** Looks like it compiled OK... Give it a whirl!"\r
+\r
+# Check the compilation environment, barf if not appropriate\r
+\r
+checkenv:\r
+ @echo\r
+ @echo -n "*** Checking compilation environment... "\r
+ifeq "" "$(shell which sdl-config)"\r
+ @echo\r
+ @echo\r
+ @echo "It seems that you don't have the SDL development libraries installed. If you"\r
+ @echo "have installed them, make sure that the sdl-config file is somewhere in your"\r
+ @echo "path and is executable."\r
+ @echo\r
+#Is there a better way to break out of the makefile?\r
+ @break\r
+else\r
+ @echo "OK"\r
+endif\r
+\r
+message:\r
+ @echo\r
+ @echo "*** Building Apple 2 SDL for $(MSG)..."\r
+ @echo\r
+\r
+clean:\r
+ @echo -n "*** Cleaning out the garbage..."\r
+ @rm -rf obj\r
+ @rm -f ./$(TARGET)$(EXESUFFIX)\r
+ @echo "done!"\r
+\r
+obj:\r
+ @mkdir obj\r
+\r
+# This is only done for Win32 at the moment...\r
+\r
+ifneq "" "$(ICON)"\r
+$(ICON): res/$(TARGET).rc res/$(TARGET).ico\r
+ @echo "*** Processing icon..."\r
+ @windres -i res/$(TARGET).rc -o $(ICON) --include-dir=./res\r
+endif\r
+\r
+obj/%.o: src/%.c\r
+ @echo "*** Compiling $<..."\r
+ @$(CC) $(CFLAGS) $(INCS) -c $< -o $@\r
+\r
+obj/%.o: src/%.cpp\r
+ @echo "*** Compiling $<..."\r
+ @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
+\r
+#GUI compilation...\r
+obj/%.o: src/gui/%.cpp\r
+ @echo "*** Compiling $<..."\r
+ @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
+\r
+$(TARGET)$(EXESUFFIX): $(OBJS)\r
+ @echo "*** Linking it all together..."\r
+ @$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)\r
+# strip --strip-all vj$(EXESUFFIX)\r
+# upx -9 vj$(EXESUFFIX)\r
+\r
+# Pull in dependencies autogenerated by gcc's -MMD switch\r
+# The "-" in front in there just in case they haven't been created yet\r
+\r
+-include obj/*.d\r
--- /dev/null
+#
+# Apple 2 configuration file
+#
+
+# Apple ROM paths
+
+BIOSROM = ./ROMs/apple2.rom
+diskROM = ./ROMs/disk.rom
+ROMs = ./ROMs
+
+# Auto state loading/saving upon starting/quitting Apple2 (1 - use, 0 - don't use)
+
+autoSaveState = 1
+#This is the default--we don't advertise it just yet... ;-)
+#autoStateFilename = ./apple2auto.state
+
+# TEMPORARY disk image load paths
+
+#floppyImage1 = ./disks/dos33.dsk
+#floppyImage1 = ./disks/prodos.dsk
+#floppyImage1 = ./disks/temp.nib
+#floppyImage1 = ./disks/temp.dsk
+# Yes
+#floppyImage1 = ./disks/bt1_boot.dsk
+# Yes
+#floppyImage1 = ./disks/bt2_boot.dsk
+# No
+#floppyImage1 = ./disks/bt3_boot.dsk
+# Yes
+#floppyImage1 = ./disks/Sabotage.dsk
+# ???
+#floppyImage1 = ./disks/airheart.dsk
+# Yes
+#floppyImage1 = ./disks/drol.dsk
+# Yes
+#floppyImage1 = ./disks/karateka.dsk
+# Yes
+#floppyImage1 = ./disks/wolfenstein_dos32.nib
+# Yes, keys???
+#floppyImage1 = ./disks/MidnightMagic_etc.dsk
+# ???
+#floppyImage1 = ./disks/battle_chess_1.dsk
+# Yes
+#floppyImage1 = ./disks/MoebiusI-1.dsk
+# Yes, but crashes on the attract mode
+#floppyImage1 = ./disks/MoebiusIIA.dsk
+# Yes
+#floppyImage1 = ./disks/wind_walker_1.dsk
+# Yes
+#floppyImage1 = ./disks/dino_eggs.dsk
+#floppyImage1 = ./disks/mockingboard1.dsk
+#floppyImage1 = ./disks/mockingboard2.dsk
+# Yes, but have to load manually
+#floppyImage1 = ./disks/ultima_ii-1.dsk
+#floppyImage2 = ./disks/ultima_ii-2.dsk
+# Yes, autoloads!
+floppyImage1 = ./disks/u2prog-patched.dsk
+floppyImage2 = ./disks/u2player-jlh.dsk
+
+
+# OpenGL options: 1 - use OpenGL rendering, 0 - use old style rendering
+
+useOpenGL = 1
+
+# OpenGL filtering type: 1 - blurry, 0 - sharp
+
+glFilterType = 0
+
+# Display options: 1 - fullscreen, 0 - windowed
+
+fullscreen = 0
+
+# Backend renderer (OpenGL dependent): 0 - regular, 1 - "TV" style
+
+#renderType = 0
+
+# NTSC/PAL options: 1 - NTSC, 0 - PAL
+
+hardwareTypeNTSC = 1
+
+# Framskip options: 0 - no skip, 1-N - draw every Nth frame
+# Note: Skipping frames may cause strange visual side effects--don't bother
+# reporting these unless they occur with a frameskip value of 0!
+
+frameSkip = 0
+
+# Joystick options: 1 - use joystick, 0 - don't use
+
+useJoystick = 0
+
+# Joyport option: If joystick is enabled above, set the port (0 - 3) here
+
+joyport = 0
+
+# Jaguar joypad key assignments
+# Note: It would be nicer to be able to have a single left side to store all this in...
+# E.g. p1keys = 34, 32, 22, etc. instead of what we have here...
+
+p1k_up = 273 # SDLK_UP
+p1k_down = 274 # SDLK_DOWN
+p1k_left = 276 # SDLK_LEFT
+p1k_right = 275 # SDLK_RIGHT
+p1k_c = 122 # SDLK_z
+p1k_b = 120 # SDLK_x
+p1k_a = 99 # SDLK_c
+p1k_option = 39 # SDLK_QUOTE
+p1k_pause = 13 # SDLK_RETURN
+p1k_0 = 256 # SDLK_KP0
+p1k_1 = 257 # SDLK_KP1
+p1k_2 = 258 # SDLK_KP2
+p1k_3 = 259 # SDLK_KP3
+p1k_4 = 260 # SDLK_KP4
+p1k_5 = 261 # SDLK_KP5
+p1k_6 = 262 # SDLK_KP6
+p1k_7 = 263 # SDLK_KP7
+p1k_8 = 264 # SDLK_KP8
+p1k_9 = 265 # SDLK_KP9
+p1k_pound = 267 # SDLK_KP_DIVIDE
+p1k_star = 268 # SDLK_KP_MULTIPLY
+
+p2k_up = 273 # SDLK_UP
+p2k_down = 274 # SDLK_DOWN
+p2k_left = 276 # SDLK_LEFT
+p2k_right = 275 # SDLK_RIGHT
+p2k_c = 122 # SDLK_z
+p2k_b = 120 # SDLK_x
+p2k_a = 99 # SDLK_c
+p2k_option = 39 # SDLK_QUOTE
+p2k_pause = 13 # SDLK_RETURN
+p2k_0 = 256 # SDLK_KP0
+p2k_1 = 257 # SDLK_KP1
+p2k_2 = 258 # SDLK_KP2
+p2k_3 = 259 # SDLK_KP3
+p2k_4 = 260 # SDLK_KP4
+p2k_5 = 261 # SDLK_KP5
+p2k_6 = 262 # SDLK_KP6
+p2k_7 = 263 # SDLK_KP7
+p2k_8 = 264 # SDLK_KP8
+p2k_9 = 265 # SDLK_KP9
+p2k_pound = 267 # SDLK_KP_DIVIDE
+p2k_star = 268 # SDLK_KP_MULTIPLY
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+
--- /dev/null
+#include "winresrc.h"\r
+\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_ICON1 ICON DISCARDABLE "apple2.ico"\r
--- /dev/null
+//\r
+// Apple 2 SDL Portable Apple Emulator\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// Loosely based on AppleWin by Tom Charlesworth which was based on AppleWin by\r
+// Oliver Schmidt which was based on AppleWin by Michael O'Brien. :-) Parts are\r
+// also derived from ApplePC. Too bad it was closed source--it could have been\r
+// *the* premier Apple II emulator out there.\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 11/12/2005 Initial port to SDL\r
+// JLH 11/18/2005 Wired up graphic soft switches \r
+// JLH 12/02/2005 Setup timer subsystem for more accurate time keeping\r
+// JLH 12/12/2005 Added preliminary state saving support\r
+//\r
+\r
+// STILL TO DO:\r
+//\r
+// - Port to SDL [DONE]\r
+// - GUI goodies\r
+// - Weed out unneeded functions [DONE]\r
+// - Disk I/O [DONE]\r
+// - 128K IIe related stuff\r
+// - State loading/saving\r
+//\r
+\r
+#include "apple2.h"\r
+\r
+#include <SDL.h>\r
+#include <fstream>\r
+#include <string>\r
+#include <iomanip>\r
+#include <iostream>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <time.h>\r
+#include "log.h"\r
+#include "video.h"\r
+#include "sound.h"\r
+#include "settings.h"\r
+#include "v65c02.h"\r
+#include "applevideo.h"\r
+#include "timing.h"\r
+#include "floppy.h"\r
+#include "firmware.h"\r
+\r
+#include "gui/gui.h"\r
+#include "gui/window.h"\r
+#include "gui/draggablewindow.h"\r
+#include "gui/textedit.h"\r
+\r
+using namespace std;\r
+\r
+// Global variables\r
+\r
+uint8 ram[0x10000], rom[0x10000]; // RAM & ROM spaces\r
+uint8 diskRom[0x100]; // Disk ROM space\r
+V65C02REGS mainCPU;\r
+uint8 appleType = APPLE_TYPE_II;\r
+\r
+// Local variables\r
+\r
+static uint8 lastKeyPressed = 0;\r
+static bool keyDown = false;\r
+\r
+static FloppyDrive floppyDrive;\r
+\r
+enum { LC_BANK_1, LC_BANK_2 };\r
+\r
+static uint8 visibleBank = LC_BANK_1;\r
+static bool readRAM = false;\r
+static bool writeRAM = false;\r
+\r
+static bool running = true; // Machine running state flag...\r
+static uint32 startTicks;\r
+\r
+static GUI * gui = NULL;\r
+\r
+// Local functions (technically, they're global...)\r
+\r
+bool LoadImg(char * filename, uint8 * ram, int size);\r
+uint8 RdMem(uint16 addr);\r
+void WrMem(uint16 addr, uint8 b);\r
+static void SaveApple2State(const char * filename);\r
+static bool LoadApple2State(const char * filename);\r
+\r
+// Local timer callback functions\r
+\r
+static void FrameCallback(void);\r
+static void BlinkTimer(void);\r
+\r
+// Test GUI function\r
+\r
+Element * TestWindow(void)\r
+{\r
+ Element * win = new DraggableWindow(10, 10, 128, 128);\r
+// ((DraggableWindow *)win)->AddElement(new TextEdit(4, 16, 92, 0, "u2prog.dsk", win));\r
+\r
+ return win;\r
+}\r
+\r
+Element * QuitEmulator(void)\r
+{\r
+ gui->Stop();\r
+ running = false;\r
+\r
+ return NULL;\r
+}\r
+\r
+/*\r
+ Small Apple II memory map:\r
+\r
+$C010 - Clear bit 7 of keyboard data ($C000)\r
+$C030 - Toggle speaker diaphragm\r
+$C051 - Display text\r
+$C054 - Select page 1\r
+$C056 - Select lo-res\r
+$C058 - Set annuciator-0 output to 0\r
+$C05A - Set annuciator-0 output to 0\r
+$C05D - Set annuciator-0 output to 1\r
+$C05F - Set annuciator-0 output to 1\r
+$C0E0 - Disk control stepper ($C0E0-7)\r
+$C0E9 - Disk control motor (on)\r
+$C0EA - Disk enable (drive 1)\r
+$C0EC - Disk R/W\r
+$C0EE - Disk set read mode\r
+*/\r
+\r
+//\r
+// V65C02 read/write memory functions\r
+//\r
+\r
+uint8 RdMem(uint16 addr)\r
+{\r
+ uint8 b;\r
+\r
+#if 0\r
+if (addr >= 0xC000 && addr <= 0xC0FF)\r
+ WriteLog("\n*** Read at I/O address %04X\n", addr);\r
+#endif\r
+#if 0\r
+if (addr >= 0xC080 && addr <= 0xC08F)\r
+ WriteLog("\n*** Read at I/O address %04X\n", addr);\r
+#endif\r
+\r
+ if ((addr & 0xFFF0) == 0xC000)\r
+ {\r
+ return lastKeyPressed | (keyDown ? 0x80 : 0x00);\r
+ }\r
+ else if ((addr & 0xFFF0) == 0xC010)\r
+ {\r
+//This is bogus: keyDown is set to false, so return val NEVER is set...\r
+//Fixed...\r
+//Also, this is IIe/IIc only...!\r
+ uint8 retVal = lastKeyPressed | (keyDown ? 0x80 : 0x00);\r
+ keyDown = false;\r
+ return retVal;\r
+ }\r
+ else if ((addr & 0xFFF0) == 0xC030)\r
+ {\r
+ ToggleSpeaker(GetCurrentV65C02Clock());\r
+//should it return something else here???\r
+ return 0x00;\r
+ }\r
+ else if (addr == 0xC050)\r
+ {\r
+ textMode = false;\r
+ }\r
+ else if (addr == 0xC051)\r
+ {\r
+ textMode = true;\r
+ }\r
+ else if (addr == 0xC052)\r
+ {\r
+ mixedMode = false;\r
+ }\r
+ else if (addr == 0xC053)\r
+ {\r
+ mixedMode = true;\r
+ }\r
+ else if (addr == 0xC054)\r
+ {\r
+ displayPage2 = false;\r
+ }\r
+ else if (addr == 0xC055)\r
+ {\r
+ displayPage2 = true;\r
+ }\r
+ else if (addr == 0xC056)\r
+ {\r
+ hiRes = false;\r
+ }\r
+ else if (addr == 0xC057)\r
+ {\r
+ hiRes = true;\r
+ }\r
+\r
+//Note that this is a kludge: The $D000-$DFFF 4K space is shared (since $C000-$CFFF is\r
+//memory mapped) between TWO banks, and that that $E000-$FFFF RAM space is a single bank.\r
+//[SHOULD BE FIXED NOW]\r
+//OK! This switch selects bank 2 of the 4K bank at $D000-$DFFF. One access makes it\r
+//visible, two makes it R/W.\r
+\r
+ else if ((addr & 0xFFFB) == 0xC080)\r
+ {\r
+//$C080 49280 OECG R Read RAM bank 2; no write\r
+ visibleBank = LC_BANK_2;\r
+ readRAM = true;\r
+ writeRAM = false;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC081)\r
+ {\r
+//$C081 49281 ROMIN OECG RR Read ROM; write RAM bank 2\r
+ visibleBank = LC_BANK_2;\r
+ readRAM = false;\r
+ writeRAM = true;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC082)\r
+ {\r
+//$C082 49282 OECG R Read ROM; no write\r
+ visibleBank = LC_BANK_2;\r
+ readRAM = false;\r
+ writeRAM = false;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC083)\r
+ {\r
+//$C083 49283 LCBANK2 OECG RR Read/write RAM bank 2\r
+ visibleBank = LC_BANK_2;\r
+ readRAM = true;\r
+ writeRAM = true;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC088)\r
+ {\r
+//$C088 49288 OECG R Read RAM bank 1; no write\r
+ visibleBank = LC_BANK_1;\r
+ readRAM = true;\r
+ writeRAM = false;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC089)\r
+ {\r
+//$C089 49289 OECG RR Read ROM; write RAM bank 1\r
+ visibleBank = LC_BANK_1;\r
+ readRAM = false;\r
+ writeRAM = true;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC08A)\r
+ {\r
+//$C08A 49290 OECG R Read ROM; no write\r
+ visibleBank = LC_BANK_1;\r
+ readRAM = false;\r
+ writeRAM = false;\r
+ }\r
+ else if ((addr & 0xFFFB) == 0xC08B)\r
+ {\r
+//$C08B 49291 OECG RR Read/write RAM bank 1\r
+ visibleBank = LC_BANK_1;\r
+ readRAM = true;\r
+ writeRAM = true;\r
+ }\r
+ else if ((addr & 0xFFF8) == 0xC0E0)\r
+ {\r
+ floppyDrive.ControlStepper(addr & 0x07);\r
+ }\r
+ else if ((addr & 0xFFFE) == 0xC0E8)\r
+ {\r
+ floppyDrive.ControlMotor(addr & 0x01);\r
+ }\r
+ else if ((addr & 0xFFFE) == 0xC0EA)\r
+ {\r
+ floppyDrive.DriveEnable(addr & 0x01);\r
+ }\r
+ else if (addr == 0xC0EC)\r
+ {\r
+ return floppyDrive.ReadWrite();\r
+ }\r
+ else if (addr == 0xC0ED)\r
+ {\r
+ return floppyDrive.GetLatchValue();\r
+ }\r
+ else if (addr == 0xC0EE)\r
+ {\r
+ floppyDrive.SetReadMode();\r
+ }\r
+ else if (addr == 0xC0EF)\r
+ {\r
+ floppyDrive.SetWriteMode();\r
+ }\r
+\r
+//This sux...\r
+ if (addr >= 0xC100 && addr <= 0xCFFF) // The $C000-$CFFF block is *never* RAM\r
+ b = rom[addr];\r
+ else if (addr >= 0xD000)\r
+ {\r
+ if (readRAM)\r
+ {\r
+ if (addr <= 0xDFFF && visibleBank == LC_BANK_1)\r
+ b = ram[addr - 0x1000];\r
+ else\r
+ b = ram[addr];\r
+ }\r
+ else\r
+ b = rom[addr];\r
+ }\r
+ else\r
+ b = ram[addr];\r
+\r
+ return b;\r
+}\r
+\r
+/*\r
+A-9 (Mockingboard)\r
+APPENDIX F Assembly Language Program Listings\r
+\r
+ 1 *PRIMARY ROUTINES\r
+ 2 *FOR SLOT 4\r
+ 3 *\r
+ 4 ORG $9000\r
+ 5 * ;ADDRESSES\r
+ FOR FIRST\r
+ 6522\r
+ 6 ORB EQU $C400 ;PORT B\r
+ 7 ORA EQU $C401 ;PORT A\r
+ 8 DDRB EQU $C402 ;DATA DIRECTION\r
+ REGISTER (A)\r
+ 9 DDRA EQU $C403 ;DATA DIRECTION\r
+ REGISTER (B)\r
+ 10 * ;ADDRESSES\r
+ FOR SECOND\r
+ 6522\r
+ 11 ORB2 EQU $C480 ;PORT B\r
+ 12 ORA2 EQU $C481 ;PORT A\r
+ 13 DDRB2 EQU $C482 ;DATA DIRECTION\r
+ REGISTER (B)\r
+ 14 DDRA2 EQU $C483 ;DATA DIRECTION\r
+ REGISTER (A)\r
+*/\r
+void WrMem(uint16 addr, uint8 b)\r
+{\r
+//temp...\r
+//extern V6809REGS regs;\r
+//if (addr >= 0xC800 && addr <= 0xCBFE)\r
+//if (addr == 0xC80F || addr == 0xC80D)\r
+// WriteLog("WrMem: Writing address %04X with %02X [PC=%04X, $CB00=%02X]\n", addr, b, regs.pc, gram[0xCB00]);//*/\r
+\r
+#if 0\r
+if (addr >= 0xC000 && addr <= 0xC0FF)\r
+ WriteLog("\n*** Write at I/O address %04X\n", addr);\r
+#endif\r
+/*\r
+Check the BIKO version on Asimov to see if it's been cracked or not...\r
+\r
+7F3D: 29 07 AND #$07 [PC=7F3F, SP=01EA, CC=---B-I--, A=01, X=4B, Y=00]\r
+7F3F: C9 06 CMP #$06 [PC=7F41, SP=01EA, CC=N--B-I--, A=01, X=4B, Y=00]\r
+7F41: 90 03 BCC $7F46 [PC=7F46, SP=01EA, CC=N--B-I--, A=01, X=4B, Y=00]\r
+[7F43: 4C 83 7E JMP $7E83] <- Skipped over... (Prints "THANK YOU VERY MUCH!")\r
+7F46: AA TAX [PC=7F47, SP=01EA, CC=---B-I--, A=01, X=01, Y=00]\r
+\r
+; INX here *ensures* 1 - 6!!! BUG!!!\r
+; Or is it? Could this be part of a braindead copy protection scheme? It's\r
+; awfully close to NOP ($EA)...\r
+; Nothing else touches it once it's been written... Hmm...\r
+\r
+7F47: E8 INX [PC=7F48, SP=01EA, CC=---B-I--, A=01, X=02, Y=00]\r
+7F48: F8 SED [PC=7F49, SP=01EA, CC=---BDI--, A=01, X=02, Y=00]\r
+7F49: 18 CLC [PC=7F4A, SP=01EA, CC=---BDI--, A=01, X=02, Y=00]\r
+7F4A: BD 15 4E LDA $4E15,X [PC=7F4D, SP=01EA, CC=---BDI--, A=15, X=02, Y=00]\r
+\r
+; 4E13: 03 00\r
+; 4E15: 25 25 15 15 10 20\r
+; 4E1B: 03 41 99 99 01 00 12\r
+; 4E22: 99 70\r
+\r
+7F4D: 65 FC ADC $FC [PC=7F4F, SP=01EA, CC=---BDI--, A=16, X=02, Y=00]\r
+7F4F: 65 FC ADC $FC [PC=7F51, SP=01EA, CC=---BDI--, A=17, X=02, Y=00]\r
+7F51: 65 FC ADC $FC [PC=7F53, SP=01EA, CC=---BDI--, A=18, X=02, Y=00]\r
+7F53: 65 FC ADC $FC [PC=7F55, SP=01EA, CC=---BDI--, A=19, X=02, Y=00]\r
+\r
+; NO checking is done on the raised stat! Aarrrgggghhhhh!\r
+\r
+7F55: 9D 15 4E STA $4E15,X [PC=7F58, SP=01EA, CC=---BDI--, A=19, X=02, Y=00]\r
+7F58: D8 CLD [PC=7F59, SP=01EA, CC=---B-I--, A=19, X=02, Y=00]\r
+\r
+; Print "ALAKAZAM!" and so on...\r
+\r
+7F59: 20 2C 40 JSR $402C [PC=402C, SP=01E8, CC=---B-I--, A=19, X=02, Y=00]\r
+*/\r
+#if 0\r
+if (addr == 0x7F47)\r
+ WriteLog("\n*** Byte %02X written at address %04X\n", b, addr);\r
+#endif\r
+/*\r
+CLR80STORE=$C000 ;80STORE Off- disable 80-column memory mapping (Write)\r
+SET80STORE=$C001 ;80STORE On- enable 80-column memory mapping (WR-only)\r
+\r
+CLRAUXRD = $C002 ;read from main 48K (WR-only)\r
+SETAUXRD = $C003 ;read from aux/alt 48K (WR-only)\r
+\r
+CLRAUXWR = $C004 ;write to main 48K (WR-only)\r
+SETAUXWR = $C005 ;write to aux/alt 48K (WR-only)\r
+\r
+CLRCXROM = $C006 ;use ROM on cards (WR-only)\r
+SETCXROM = $C007 ;use internal ROM (WR-only)\r
+\r
+CLRAUXZP = $C008 ;use main zero page, stack, & LC (WR-only)\r
+SETAUXZP = $C009 ;use alt zero page, stack, & LC (WR-only)\r
+\r
+CLRC3ROM = $C00A ;use internal Slot 3 ROM (WR-only)\r
+SETC3ROM = $C00B ;use external Slot 3 ROM (WR-only)\r
+\r
+CLR80VID = $C00C ;disable 80-column display mode (WR-only)\r
+SET80VID = $C00D ;enable 80-column display mode (WR-only)\r
+\r
+CLRALTCH = $C00E ;use main char set- norm LC, Flash UC (WR-only)\r
+SETALTCH = $C00F ;use alt char set- norm inverse, LC; no Flash (WR-only)\r
+*/\r
+ if (addr == 0xC00E)\r
+ {\r
+ alternateCharset = false;\r
+ }\r
+ else if (addr == 0xC00F)\r
+ {\r
+ alternateCharset = true;\r
+ }\r
+ else if ((addr & 0xFFF0) == 0xC010) // Keyboard strobe\r
+ {\r
+ keyDown = false;\r
+ }\r
+ else if (addr == 0xC050)\r
+ {\r
+ textMode = false;\r
+ }\r
+ else if (addr == 0xC051)\r
+ {\r
+ textMode = true;\r
+ }\r
+ else if (addr == 0xC052)\r
+ {\r
+ mixedMode = false;\r
+ }\r
+ else if (addr == 0xC053)\r
+ {\r
+ mixedMode = true;\r
+ }\r
+ else if (addr == 0xC054)\r
+ {\r
+ displayPage2 = false;\r
+ }\r
+ else if (addr == 0xC055)\r
+ {\r
+ displayPage2 = true;\r
+ }\r
+ else if (addr == 0xC056)\r
+ {\r
+ hiRes = false;\r
+ }\r
+ else if (addr == 0xC057)\r
+ {\r
+ hiRes = true;\r
+ }\r
+ else if ((addr & 0xFFF8) == 0xC0E0)\r
+ {\r
+ floppyDrive.ControlStepper(addr & 0x07);\r
+ }\r
+ else if ((addr & 0xFFFE) == 0xC0E8)\r
+ {\r
+ floppyDrive.ControlMotor(addr & 0x01);\r
+ }\r
+ else if ((addr & 0xFFFE) == 0xC0EA)\r
+ {\r
+ floppyDrive.DriveEnable(addr & 0x01);\r
+ }\r
+ else if (addr == 0xC0EC)\r
+ {\r
+//change this to Write()? (and the other to Read()?) Dunno. Seems to work OK, but still...\r
+ floppyDrive.ReadWrite();\r
+ }\r
+ else if (addr == 0xC0ED)\r
+ {\r
+ floppyDrive.SetLatchValue(b);\r
+ }\r
+ else if (addr == 0xC0EE)\r
+ {\r
+ floppyDrive.SetReadMode();\r
+ }\r
+ else if (addr == 0xC0EF)\r
+ {\r
+ floppyDrive.SetWriteMode();\r
+ }\r
+//Still need to add missing I/O switches here...\r
+\r
+ if (addr >= 0xD000)\r
+ {\r
+ if (writeRAM)\r
+ {\r
+ if (addr <= 0xDFFF && visibleBank == LC_BANK_1)\r
+ ram[addr - 0x1000] = b;\r
+ else\r
+ ram[addr] = b;\r
+ }\r
+\r
+ return;\r
+ }\r
+\r
+ ram[addr] = b;\r
+}\r
+\r
+//\r
+// Load a file into RAM/ROM image space\r
+//\r
+bool LoadImg(char * filename, uint8 * ram, int size)\r
+{\r
+ FILE * fp = fopen(filename, "rb");\r
+\r
+ if (fp == NULL)\r
+ return false;\r
+\r
+ fread(ram, 1, size, fp);\r
+ fclose(fp);\r
+\r
+ return true;\r
+}\r
+\r
+static void SaveApple2State(const char * filename)\r
+{\r
+}\r
+\r
+static bool LoadApple2State(const char * filename)\r
+{\r
+ return false;\r
+}\r
+\r
+//\r
+// Main loop\r
+//\r
+int main(int /*argc*/, char * /*argv*/[])\r
+{\r
+ InitLog("./apple2.log");\r
+ LoadSettings();\r
+ srand(time(NULL)); // Initialize RNG\r
+\r
+ // Zero out memory\r
+//Need to bankify this stuff for the IIe emulation...\r
+ memset(ram, 0, 0x10000);\r
+ memset(rom, 0, 0x10000);\r
+\r
+ // Set up V65C02 execution context\r
+ memset(&mainCPU, 0, sizeof(V65C02REGS));\r
+ mainCPU.RdMem = RdMem;\r
+ mainCPU.WrMem = WrMem;\r
+ mainCPU.cpuFlags |= V65C02_ASSERT_LINE_RESET;\r
+\r
+ if (!LoadImg(settings.BIOSPath, rom + 0xD000, 0x3000))\r
+ {\r
+ WriteLog("Could not open file '%s'!\n", settings.BIOSPath);\r
+ return -1;\r
+ }\r
+\r
+//This is now included...\r
+/* if (!LoadImg(settings.diskPath, diskRom, 0x100))\r
+ {\r
+ WriteLog("Could not open file '%s'!\nDisk II will be unavailable!\n", settings.diskPath);\r
+// return -1;\r
+ }//*/\r
+\r
+//Load up disk image from config file (for now)...\r
+ floppyDrive.LoadImage(settings.diskImagePath1, 0);\r
+ floppyDrive.LoadImage(settings.diskImagePath2, 1);\r
+// floppyDrive.LoadImage("./disks/temp.nib", 1); // Load temp .nib file into second drive...\r
+\r
+//Kill the DOS ROM in slot 6 for now...\r
+//not\r
+ memcpy(rom + 0xC600, diskROM, 0x100);\r
+\r
+ WriteLog("About to initialize video...\n");\r
+ if (!InitVideo())\r
+ {\r
+ cout << "Aborting!" << endl;\r
+ return -1;\r
+ }\r
+\r
+ // Have to do this *after* video init but *before* sound init...!\r
+//Shouldn't be necessary since we're not doing emulation in the ISR...\r
+ if (settings.autoStateSaving)\r
+ {\r
+ // Load last state from file...\r
+ if (!LoadApple2State(settings.autoStatePath))\r
+ WriteLog("Unable to use Apple2 state file \"%s\"!\n", settings.autoStatePath);\r
+ }\r
+\r
+\r
+#if 0\r
+// State loading!\r
+if (!LoadImg("./BT1_6502_RAM_SPACE.bin", ram, 0x10000))\r
+{\r
+ cout << "Couldn't load state file!" << endl;\r
+ cout << "Aborting!!" << endl;\r
+ return -1;\r
+}\r
+\r
+//A P Y X S PC\r
+//-- -- -- -- ----- -----\r
+//00 75 3B 53 FD 01 41 44\r
+\r
+mainCPU.cpuFlags = 0;\r
+mainCPU.a = 0x00;\r
+mainCPU.x = 0x53;\r
+mainCPU.y = 0x3B;\r
+mainCPU.cc = 0x75;\r
+mainCPU.sp = 0xFD;\r
+mainCPU.pc = 0x4441;\r
+\r
+textMode = false;\r
+mixedMode = false;\r
+displayPage2 = false;\r
+hiRes = true;\r
+\r
+//kludge...\r
+readHiRam = true;\r
+//dumpDis=true;\r
+//kludge II...\r
+memcpy(ram + 0xD000, ram + 0xC000, 0x1000);\r
+#endif\r
+\r
+ WriteLog("About to initialize audio...\n");\r
+ SoundInit();\r
+ SDL_EnableUNICODE(1); // Needed to do key translation shit\r
+\r
+ gui = new GUI(surface); // Set up the GUI system object...\r
+ gui->AddMenuTitle("Apple2");\r
+ gui->AddMenuItem("Test!", TestWindow/*, hotkey*/);\r
+ gui->AddMenuItem("");\r
+ gui->AddMenuItem("Quit", QuitEmulator, SDLK_q);\r
+ gui->CommitItemsToMenu();\r
+\r
+ SetupBlurTable(); // Set up the color TV emulation blur table\r
+ running = true; // Set running status...\r
+\r
+ InitializeEventList(); // Clear the event list before we use it...\r
+ SetCallbackTime(FrameCallback, 16666.66666667); // Set frame to fire at 1/60 s interval\r
+ SetCallbackTime(BlinkTimer, 250000); // Set up blinking at 1/4 s intervals\r
+ startTicks = SDL_GetTicks();\r
+\r
+ WriteLog("Entering main loop...\n");\r
+ while (running)\r
+ {\r
+ double timeToNextEvent = GetTimeToNextEvent();\r
+ Execute65C02(&mainCPU, USEC_TO_M6502_CYCLES(timeToNextEvent));\r
+//We MUST remove a frame's worth of time in order for the CPU to function... !!! FIX !!!\r
+//(Fix so that this is not a requirement!)\r
+ mainCPU.clock -= USEC_TO_M6502_CYCLES(timeToNextEvent);\r
+ HandleNextEvent();\r
+ }\r
+\r
+ if (settings.autoStateSaving)\r
+ {\r
+ // Save state here...\r
+ SaveApple2State(settings.autoStatePath);\r
+ }\r
+floppyDrive.SaveImage();\r
+\r
+ SoundDone();\r
+ VideoDone();\r
+ SaveSettings();\r
+ LogDone();\r
+\r
+ return 0;\r
+}\r
+\r
+/*\r
+Apple II keycodes\r
+-----------------\r
+\r
+Key Aln CTL SHF BTH\r
+-----------------------\r
+space $A0 $A0 $A0 $A0 No xlation\r
+RETURN $8D $8D $8D $8D No xlation\r
+0 $B0 $B0 $B0 $B0 Need to screen shift+0 (?)\r
+1! $B1 $B1 $A1 $A1 No xlation\r
+2" $B2 $B2 $A2 $A2 No xlation\r
+3# $B3 $B3 $A3 $A3 No xlation\r
+4$ $B4 $B4 $A4 $A4 No xlation\r
+5% $B5 $B5 $A5 $A5 No xlation\r
+6& $B6 $B6 $A6 $A6 No xlation\r
+7' $B7 $B7 $A7 $A7 No xlation\r
+8( $B8 $B8 $A8 $A8 No xlation\r
+9) $B9 $B9 $A9 $A9 No xlation\r
+:* $BA $BA $AA $AA No xlation\r
+;+ $BB $BB $AB $AB No xlation\r
+,< $AC $AC $BC $BC No xlation\r
+-= $AD $AD $BD $BD No xlation\r
+.> $AE $AE $BE $BE No xlation\r
+/? $AF $AF $BF $BF No xlation\r
+A $C1 $81 $C1 $81\r
+B $C2 $82 $C2 $82\r
+C $C3 $83 $C3 $83\r
+D $C4 $84 $C4 $84\r
+E $C5 $85 $C5 $85\r
+F $C6 $86 $C6 $86\r
+G $C7 $87 $C7 $87\r
+H $C8 $88 $C8 $88\r
+I $C9 $89 $C9 $89\r
+J $CA $8A $CA $8A\r
+K $CB $8B $CB $8B\r
+L $CC $8C $CC $8C\r
+M $CD $8D $DD $9D -> ODD\r
+N^ $CE $8E $DE $9E -> ODD\r
+O $CF $8F $CF $8F\r
+P@ $D0 $90 $C0 $80 Need to xlate CTL+SHFT+P & SHFT+P (?)\r
+Q $D1 $91 $D1 $91\r
+R $D2 $92 $D2 $92\r
+S $D3 $93 $D3 $93\r
+T $D4 $94 $D4 $94\r
+U $D5 $95 $D5 $95\r
+V $D6 $96 $D6 $96\r
+W $D7 $97 $D7 $97\r
+X $D8 $98 $D8 $98\r
+Y $D9 $99 $D9 $99\r
+Z $DA $9A $DA $9A\r
+<- $88 $88 $88 $88\r
+-> $95 $95 $95 $95\r
+ESC $9B $9B $9B $9B No xlation\r
+\r
+*/\r
+static void FrameCallback(void)\r
+{\r
+ SDL_Event event;\r
+\r
+ while (SDL_PollEvent(&event))\r
+ {\r
+ switch (event.type)\r
+ {\r
+ case SDL_KEYDOWN:\r
+ if (event.key.keysym.unicode != 0)\r
+ {\r
+//Need to do some key translation here, and screen out non-apple keys as well...\r
+ if (event.key.keysym.sym == SDLK_TAB) // Prelim key screening...\r
+ break;\r
+\r
+ lastKeyPressed = event.key.keysym.unicode;\r
+ keyDown = true;\r
+ //kludge: should have a caps lock thingy here...\r
+ //or all uppercase for ][+...\r
+ if (lastKeyPressed >= 'a' && lastKeyPressed <='z')\r
+ lastKeyPressed &= 0xDF; // Convert to upper case...\r
+ }\r
+\r
+ // CTRL+RESET key emulation (mapped to CTRL+`)\r
+// This doesn't work...\r
+// if (event.key.keysym.sym == SDLK_BREAK && (event.key.keysym.mod & KMOD_CTRL))\r
+// if (event.key.keysym.sym == SDLK_PAUSE && (event.key.keysym.mod & KMOD_CTRL))\r
+ if (event.key.keysym.sym == SDLK_BACKQUOTE && (event.key.keysym.mod & KMOD_CTRL))\r
+//NOTE that this shouldn't take place until the key is lifted... !!! FIX !!!\r
+//ALSO it seems to leave the machine in an inconsistent state vis-a-vis the language card...\r
+ mainCPU.cpuFlags |= V65C02_ASSERT_LINE_RESET;\r
+\r
+ if (event.key.keysym.sym == SDLK_RIGHT)\r
+ lastKeyPressed = 0x15, keyDown = true;\r
+ else if (event.key.keysym.sym == SDLK_LEFT)\r
+ lastKeyPressed = 0x08, keyDown = true;\r
+\r
+ // Use ALT+Q to exit, as well as the usual window decoration method\r
+ if (event.key.keysym.sym == SDLK_q && (event.key.keysym.mod & KMOD_ALT))\r
+ running = false;\r
+\r
+ if (event.key.keysym.sym == SDLK_F12)\r
+ dumpDis = !dumpDis; // Toggle the disassembly process\r
+ else if (event.key.keysym.sym == SDLK_F11)\r
+ floppyDrive.LoadImage("./disks/bt1_char.dsk");//Kludge to load char disk...\r
+else if (event.key.keysym.sym == SDLK_F9)\r
+{\r
+ floppyDrive.CreateBlankImage();\r
+// SpawnMessage("Image cleared...");\r
+}//*/\r
+else if (event.key.keysym.sym == SDLK_F10)\r
+{\r
+ floppyDrive.SwapImages();\r
+// SpawnMessage("Image swapped...");\r
+}//*/\r
+\r
+ if (event.key.keysym.sym == SDLK_F2)// Toggle the palette\r
+ TogglePalette();\r
+ else if (event.key.keysym.sym == SDLK_F3)// Cycle through screen types\r
+ CycleScreenTypes();\r
+\r
+// if (event.key.keysym.sym == SDLK_F5) // Temp GUI launch key\r
+ if (event.key.keysym.sym == SDLK_F1) // GUI launch key\r
+//NOTE: Should parse the output to determine whether or not the user requested\r
+// to quit completely... !!! FIX !!!\r
+ gui->Run();\r
+\r
+ break;\r
+ case SDL_QUIT:\r
+ running = false;\r
+ }\r
+ }\r
+\r
+ HandleSoundAtFrameEdge(); // Sound stuff... (ick)\r
+ RenderVideoFrame();\r
+ SetCallbackTime(FrameCallback, 16666.66666667);\r
+\r
+ while (SDL_GetTicks() - startTicks < 16); // Wait for next frame...\r
+ startTicks = SDL_GetTicks();\r
+}\r
+\r
+static void BlinkTimer(void)\r
+{\r
+ flash = !flash;\r
+ SetCallbackTime(BlinkTimer, 250000); // Set up blinking at 1/4 sec intervals\r
+}\r
--- /dev/null
+//\r
+// Apple 2 SDL Portable Apple Emulator\r
+//\r
+\r
+#include "types.h"\r
+\r
+enum { APPLE_TYPE_II, APPLE_TYPE_IIE, APPLE_TYPE_IIC };\r
+\r
+// Global variables (exported)\r
+\r
+extern uint8 ram[0x10000], rom[0x10000]; // RAM & ROM pointers\r
+extern uint8 appleType;\r
--- /dev/null
+//\r
+// Apple 2 video support\r
+//\r
+// All the video modes that a real Apple 2 supports are handled here\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 12/01/2005 Added color TV/monochrome emulation to hi-res code\r
+// JLH 12/09/2005 Cleaned up color TV emulation code\r
+// JLH 12/09/2005 Fixed lo-res color TV/mono emulation modes\r
+//\r
+// STILL TO DO:\r
+//\r
+// - Fix LoRes mode green mono to skip every other scanline instead of fill\r
+// like white mono does\r
+// - Double HiRes\r
+// - 80 column text\r
+// - Fix OSD text display so that it's visible no matter what background is there [DONE]\r
+//\r
+\r
+// Display routines seem MUCH slower now... !!! INVESTIGATE !!!\r
+\r
+#include "applevideo.h"\r
+\r
+#include <string.h> // for memset()\r
+#include <stdarg.h> // for va_* stuff\r
+#include <string> // for vsprintf()\r
+#include "apple2.h"\r
+#include "video.h"\r
+#include "charset.h"\r
+#include "font14pt.h"\r
+\r
+/* Reference: Technote tn-iigs-063 "Master Color Values"\r
+\r
+ Color Color Register LR HR DHR Master Color R,G,B\r
+ Name Value # # # Value\r
+ ----------------------------------------------------\r
+ Black 0 0 0,4 0 $0000 (0,0,0)\r
+(Magenta) Deep Red 1 1 1 $0D03 (D,0,3)\r
+ Dark Blue 2 2 8 $0009 (0,0,9)\r
+ (Violet) Purple 3 3 2 9 $0D2D (D,2,D)\r
+ Dark Green 4 4 4 $0072 (0,7,2)\r
+ (Gray 1) Dark Gray 5 5 5 $0555 (5,5,5)\r
+ (Blue) Medium Blue 6 6 6 C $022F (2,2,F)\r
+ (Cyan) Light Blue 7 7 D $06AF (6,A,F)\r
+ Brown 8 8 2 $0850 (8,5,0)\r
+ Orange 9 9 5 3 $0F60 (F,6,0)\r
+ (Gray 2) Light Gray A A A $0AAA (A,A,A)\r
+ Pink B B B $0F98 (F,9,8)\r
+ (Green) Light Green C C 1 6 $01D0 (1,D,0)\r
+ Yellow D D 7 $0FF0 (F,F,0)\r
+ (Aqua) Aquamarine E E E $04F9 (4,F,9)\r
+ White F F 3,7 F $0FFF (F,F,F)\r
+\r
+ LR: Lo-Res HR: Hi-Res DHR: Double Hi-Res */\r
+\r
+// Global variables\r
+\r
+bool flash;\r
+bool textMode;\r
+bool mixedMode;\r
+bool displayPage2;\r
+bool hiRes;\r
+bool alternateCharset;\r
+//void SpawnMessage(const char * text, ...);\r
+\r
+// Local variables\r
+\r
+// We set up the colors this way so that they'll be endian safe\r
+// when we cast them to a uint32.\r
+\r
+// "Master Color Values" palette\r
+\r
+static uint8 colors[16 * 4] = {\r
+ 0x00, 0x00, 0x00, 0xFF, // Black\r
+ 0xDD, 0x00, 0x33, 0xFF, // Deep Red (Magenta)\r
+ 0x00, 0x00, 0x99, 0xFF, // Dark Blue\r
+ 0xDD, 0x22, 0xDD, 0xFF, // Purple (Violet)\r
+ 0x00, 0x77, 0x22, 0xFF, // Dark Green\r
+ 0x55, 0x55, 0x55, 0xFF, // Dark Gray (Gray 1)\r
+ 0x22, 0x22, 0xFF, 0xFF, // Medium Blue (Blue)\r
+ 0x66, 0xAA, 0xFF, 0xFF, // Light Blue (Cyan)\r
+ 0x88, 0x55, 0x00, 0xFF, // Brown\r
+ 0xFF, 0x66, 0x00, 0xFF, // Orange\r
+ 0xAA, 0xAA, 0xAA, 0xFF, // Light Gray (Gray 2)\r
+ 0xFF, 0x99, 0x88, 0xFF, // Pink\r
+ 0x11, 0xDD, 0x00, 0xFF, // Light Green (Green)\r
+ 0xFF, 0xFF, 0x00, 0xFF, // Yellow\r
+ 0x44, 0xFF, 0x99, 0xFF, // Aquamarine (Aqua)\r
+ 0xFF, 0xFF, 0xFF, 0xFF // White\r
+};\r
+\r
+// This palette comes from ApplePC's colors (more realistic to my eye ;-)\r
+\r
+static uint8 altColors[16 * 4] = {\r
+ 0x00, 0x00, 0x00, 0xFF,\r
+ 0x7D, 0x20, 0x41, 0xFF,\r
+ 0x41, 0x30, 0x7D, 0xFF,\r
+ 0xBE, 0x51, 0xBE, 0xFF,\r
+ 0x00, 0x5D, 0x3C, 0xFF,\r
+ 0x7D, 0x7D, 0x7D, 0xFF,\r
+ 0x41, 0x8E, 0xBA, 0xFF,\r
+ 0xBE, 0xAE, 0xFB, 0xFF,\r
+ 0x3C, 0x4D, 0x00, 0xFF,\r
+ 0xBA, 0x6D, 0x41, 0xFF,\r
+ 0x7D, 0x7D, 0x7D, 0xFF,\r
+ 0xFB, 0x9E, 0xBE, 0xFF,\r
+ 0x3C, 0xAA, 0x3C, 0xFF,\r
+ 0xBA, 0xCB, 0x7D, 0xFF,\r
+ 0x7D, 0xDB, 0xBA, 0xFF,\r
+ 0xFB, 0xFB, 0xFB, 0xFF };\r
+\r
+// Lo-res starting line addresses\r
+\r
+static uint16 lineAddrLoRes[24] = {\r
+ 0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,\r
+ 0x0428, 0x04A8, 0x0528, 0x05A8, 0x0628, 0x06A8, 0x0728, 0x07A8,\r
+ 0x0450, 0x04D0, 0x0550, 0x05D0, 0x0650, 0x06D0, 0x0750, 0x07D0 };\r
+\r
+// Hi-res starting line addresses\r
+\r
+static uint16 lineAddrHiRes[192] = {\r
+ 0x2000, 0x2400, 0x2800, 0x2C00, 0x3000, 0x3400, 0x3800, 0x3C00,\r
+ 0x2080, 0x2480, 0x2880, 0x2C80, 0x3080, 0x3480, 0x3880, 0x3C80,\r
+ 0x2100, 0x2500, 0x2900, 0x2D00, 0x3100, 0x3500, 0x3900, 0x3D00,\r
+ 0x2180, 0x2580, 0x2980, 0x2D80, 0x3180, 0x3580, 0x3980, 0x3D80,\r
+\r
+ 0x2200, 0x2600, 0x2A00, 0x2E00, 0x3200, 0x3600, 0x3A00, 0x3E00,\r
+ 0x2280, 0x2680, 0x2A80, 0x2E80, 0x3280, 0x3680, 0x3A80, 0x3E80,\r
+ 0x2300, 0x2700, 0x2B00, 0x2F00, 0x3300, 0x3700, 0x3B00, 0x3F00,\r
+ 0x2380, 0x2780, 0x2B80, 0x2F80, 0x3380, 0x3780, 0x3B80, 0x3F80,\r
+\r
+ 0x2028, 0x2428, 0x2828, 0x2C28, 0x3028, 0x3428, 0x3828, 0x3C28,\r
+ 0x20A8, 0x24A8, 0x28A8, 0x2CA8, 0x30A8, 0x34A8, 0x38A8, 0x3CA8,\r
+ 0x2128, 0x2528, 0x2928, 0x2D28, 0x3128, 0x3528, 0x3928, 0x3D28,\r
+ 0x21A8, 0x25A8, 0x29A8, 0x2DA8, 0x31A8, 0x35A8, 0x39A8, 0x3DA8,\r
+\r
+ 0x2228, 0x2628, 0x2A28, 0x2E28, 0x3228, 0x3628, 0x3A28, 0x3E28,\r
+ 0x22A8, 0x26A8, 0x2AA8, 0x2EA8, 0x32A8, 0x36A8, 0x3AA8, 0x3EA8,\r
+ 0x2328, 0x2728, 0x2B28, 0x2F28, 0x3328, 0x3728, 0x3B28, 0x3F28,\r
+ 0x23A8, 0x27A8, 0x2BA8, 0x2FA8, 0x33A8, 0x37A8, 0x3BA8, 0x3FA8,\r
+\r
+ 0x2050, 0x2450, 0x2850, 0x2C50, 0x3050, 0x3450, 0x3850, 0x3C50,\r
+ 0x20D0, 0x24D0, 0x28D0, 0x2CD0, 0x30D0, 0x34D0, 0x38D0, 0x3CD0,\r
+ 0x2150, 0x2550, 0x2950, 0x2D50, 0x3150, 0x3550, 0x3950, 0x3D50,\r
+ 0x21D0, 0x25D0, 0x29D0, 0x2DD0, 0x31D0, 0x35D0, 0x39D0, 0x3DD0,\r
+\r
+ 0x2250, 0x2650, 0x2A50, 0x2E50, 0x3250, 0x3650, 0x3A50, 0x3E50,\r
+ 0x22D0, 0x26D0, 0x2AD0, 0x2ED0, 0x32D0, 0x36D0, 0x3AD0, 0x3ED0,\r
+ 0x2350, 0x2750, 0x2B50, 0x2F50, 0x3350, 0x3750, 0x3B50, 0x3F50,\r
+ 0x23D0, 0x27D0, 0x2BD0, 0x2FD0, 0x33D0, 0x37D0, 0x3BD0, 0x3FD0 };\r
+\r
+uint16 appleHiresToMono[0x200] = {\r
+ 0x0000, 0x3000, 0x0C00, 0x3C00, 0x0300, 0x3300, 0x0F00, 0x3F00,\r
+ 0x00C0, 0x30C0, 0x0CC0, 0x3CC0, 0x03C0, 0x33C0, 0x0FC0, 0x3FC0, // $0x\r
+ 0x0030, 0x3030, 0x0C30, 0x3C30, 0x0330, 0x3330, 0x0F30, 0x3F30,\r
+ 0x00F0, 0x30F0, 0x0CF0, 0x3CF0, 0x03F0, 0x33F0, 0x0FF0, 0x3FF0, // $1x\r
+ 0x000C, 0x300C, 0x0C0C, 0x3C0C, 0x030C, 0x330C, 0x0F0C, 0x3F0C,\r
+ 0x00CC, 0x30CC, 0x0CCC, 0x3CCC, 0x03CC, 0x33CC, 0x0FCC, 0x3FCC, // $2x\r
+ 0x003C, 0x303C, 0x0C3C, 0x3C3C, 0x033C, 0x333C, 0x0F3C, 0x3F3C,\r
+ 0x00FC, 0x30FC, 0x0CFC, 0x3CFC, 0x03FC, 0x33FC, 0x0FFC, 0x3FFC, // $3x\r
+ 0x0003, 0x3003, 0x0C03, 0x3C03, 0x0303, 0x3303, 0x0F03, 0x3F03,\r
+ 0x00C3, 0x30C3, 0x0CC3, 0x3CC3, 0x03C3, 0x33C3, 0x0FC3, 0x3FC3, // $4x\r
+ 0x0033, 0x3033, 0x0C33, 0x3C33, 0x0333, 0x3333, 0x0F33, 0x3F33,\r
+ 0x00F3, 0x30F3, 0x0CF3, 0x3CF3, 0x03F3, 0x33F3, 0x0FF3, 0x3FF3, // $5x\r
+ 0x000F, 0x300F, 0x0C0F, 0x3C0F, 0x030F, 0x330F, 0x0F0F, 0x3F0F,\r
+ 0x00CF, 0x30CF, 0x0CCF, 0x3CCF, 0x03CF, 0x33CF, 0x0FCF, 0x3FCF, // $6x\r
+ 0x003F, 0x303F, 0x0C3F, 0x3C3F, 0x033F, 0x333F, 0x0F3F, 0x3F3F,\r
+ 0x00FF, 0x30FF, 0x0CFF, 0x3CFF, 0x03FF, 0x33FF, 0x0FFF, 0x3FFF, // $7x\r
+ 0x0000, 0x1800, 0x0600, 0x1E00, 0x0180, 0x1980, 0x0780, 0x1F80,\r
+ 0x0060, 0x1860, 0x0660, 0x1E60, 0x01E0, 0x19E0, 0x07E0, 0x1FE0, // $8x\r
+ 0x0018, 0x1818, 0x0618, 0x1E18, 0x0198, 0x1998, 0x0798, 0x1F98,\r
+ 0x0078, 0x1878, 0x0678, 0x1E78, 0x01F8, 0x19F8, 0x07F8, 0x1FF8, // $9x\r
+ 0x0006, 0x1806, 0x0606, 0x1E06, 0x0186, 0x1986, 0x0786, 0x1F86,\r
+ 0x0066, 0x1866, 0x0666, 0x1E66, 0x01E6, 0x19E6, 0x07E6, 0x1FE6, // $Ax\r
+ 0x001E, 0x181E, 0x061E, 0x1E1E, 0x019E, 0x199E, 0x079E, 0x1F9E,\r
+ 0x007E, 0x187E, 0x067E, 0x1E7E, 0x01FE, 0x19FE, 0x07FE, 0x1FFE, // $Bx\r
+ 0x0001, 0x1801, 0x0601, 0x1E01, 0x0181, 0x1981, 0x0781, 0x1F81,\r
+ 0x0061, 0x1861, 0x0661, 0x1E61, 0x01E1, 0x19E1, 0x07E1, 0x1FE1, // $Cx\r
+ 0x0019, 0x1819, 0x0619, 0x1E19, 0x0199, 0x1999, 0x0799, 0x1F99,\r
+ 0x0079, 0x1879, 0x0679, 0x1E79, 0x01F9, 0x19F9, 0x07F9, 0x1FF9, // $Dx\r
+ 0x0007, 0x1807, 0x0607, 0x1E07, 0x0187, 0x1987, 0x0787, 0x1F87,\r
+ 0x0067, 0x1867, 0x0667, 0x1E67, 0x01E7, 0x19E7, 0x07E7, 0x1FE7, // $Ex\r
+ 0x001F, 0x181F, 0x061F, 0x1E1F, 0x019F, 0x199F, 0x079F, 0x1F9F,\r
+ 0x007F, 0x187F, 0x067F, 0x1E7F, 0x01FF, 0x19FF, 0x07FF, 0x1FFF, // $Fx\r
+\r
+ // Second half adds in the previous byte's lo pixel\r
+\r
+ 0x0000, 0x3000, 0x0C00, 0x3C00, 0x0300, 0x3300, 0x0F00, 0x3F00,\r
+ 0x00C0, 0x30C0, 0x0CC0, 0x3CC0, 0x03C0, 0x33C0, 0x0FC0, 0x3FC0, // $0x\r
+ 0x0030, 0x3030, 0x0C30, 0x3C30, 0x0330, 0x3330, 0x0F30, 0x3F30,\r
+ 0x00F0, 0x30F0, 0x0CF0, 0x3CF0, 0x03F0, 0x33F0, 0x0FF0, 0x3FF0, // $1x\r
+ 0x000C, 0x300C, 0x0C0C, 0x3C0C, 0x030C, 0x330C, 0x0F0C, 0x3F0C,\r
+ 0x00CC, 0x30CC, 0x0CCC, 0x3CCC, 0x03CC, 0x33CC, 0x0FCC, 0x3FCC, // $2x\r
+ 0x003C, 0x303C, 0x0C3C, 0x3C3C, 0x033C, 0x333C, 0x0F3C, 0x3F3C,\r
+ 0x00FC, 0x30FC, 0x0CFC, 0x3CFC, 0x03FC, 0x33FC, 0x0FFC, 0x3FFC, // $3x\r
+ 0x0003, 0x3003, 0x0C03, 0x3C03, 0x0303, 0x3303, 0x0F03, 0x3F03,\r
+ 0x00C3, 0x30C3, 0x0CC3, 0x3CC3, 0x03C3, 0x33C3, 0x0FC3, 0x3FC3, // $4x\r
+ 0x0033, 0x3033, 0x0C33, 0x3C33, 0x0333, 0x3333, 0x0F33, 0x3F33,\r
+ 0x00F3, 0x30F3, 0x0CF3, 0x3CF3, 0x03F3, 0x33F3, 0x0FF3, 0x3FF3, // $5x\r
+ 0x000F, 0x300F, 0x0C0F, 0x3C0F, 0x030F, 0x330F, 0x0F0F, 0x3F0F,\r
+ 0x00CF, 0x30CF, 0x0CCF, 0x3CCF, 0x03CF, 0x33CF, 0x0FCF, 0x3FCF, // $6x\r
+ 0x003F, 0x303F, 0x0C3F, 0x3C3F, 0x033F, 0x333F, 0x0F3F, 0x3F3F,\r
+ 0x00FF, 0x30FF, 0x0CFF, 0x3CFF, 0x03FF, 0x33FF, 0x0FFF, 0x3FFF, // $7x\r
+ 0x2000, 0x3800, 0x2600, 0x3E00, 0x2180, 0x3980, 0x2780, 0x3F80,\r
+ 0x2060, 0x3860, 0x2660, 0x3E60, 0x21E0, 0x39E0, 0x27E0, 0x3FE0, // $8x\r
+ 0x2018, 0x3818, 0x2618, 0x3E18, 0x2198, 0x3998, 0x2798, 0x3F98,\r
+ 0x2078, 0x3878, 0x2678, 0x3E78, 0x21F8, 0x39F8, 0x27F8, 0x3FF8, // $9x\r
+ 0x2006, 0x3806, 0x2606, 0x3E06, 0x2186, 0x3986, 0x2786, 0x3F86,\r
+ 0x2066, 0x3866, 0x2666, 0x3E66, 0x21E6, 0x39E6, 0x27E6, 0x3FE6, // $Ax\r
+ 0x201E, 0x381E, 0x261E, 0x3E1E, 0x219E, 0x399E, 0x279E, 0x3F9E,\r
+ 0x207E, 0x387E, 0x267E, 0x3E7E, 0x21FE, 0x39FE, 0x27FE, 0x3FFE, // $Bx\r
+ 0x2001, 0x3801, 0x2601, 0x3E01, 0x2181, 0x3981, 0x2781, 0x3F81,\r
+ 0x2061, 0x3861, 0x2661, 0x3E61, 0x21E1, 0x39E1, 0x27E1, 0x3FE1, // $Cx\r
+ 0x2019, 0x3819, 0x2619, 0x3E19, 0x2199, 0x3999, 0x2799, 0x3F99,\r
+ 0x2079, 0x3879, 0x2679, 0x3E79, 0x21F9, 0x39F9, 0x27F9, 0x3FF9, // $Dx\r
+ 0x2007, 0x3807, 0x2607, 0x3E07, 0x2187, 0x3987, 0x2787, 0x3F87,\r
+ 0x2067, 0x3867, 0x2667, 0x3E67, 0x21E7, 0x39E7, 0x27E7, 0x3FE7, // $Ex\r
+ 0x201F, 0x381F, 0x261F, 0x3E1F, 0x219F, 0x399F, 0x279F, 0x3F9F,\r
+ 0x207F, 0x387F, 0x267F, 0x3E7F, 0x21FF, 0x39FF, 0x27FF, 0x3FFF // $Fx\r
+};\r
+\r
+static uint8 blurTable[0x800][8]; // Color TV blur table\r
+static uint32 * palette = (uint32 *)altColors;\r
+enum { ST_FIRST_ENTRY = 0, ST_COLOR_TV = 0, ST_WHITE_MONO, ST_GREEN_MONO, ST_LAST_ENTRY };\r
+static uint8 screenType = ST_COLOR_TV;\r
+\r
+// Local functions\r
+\r
+static void Render40ColumnTextLine(uint8 line);\r
+static void Render40ColumnText(void);\r
+static void RenderLoRes(uint16 toLine = 24);\r
+static void RenderHiRes(uint16 toLine = 192);\r
+\r
+\r
+void SetupBlurTable(void)\r
+{\r
+ // NOTE: This table only needs to be 7 bits wide instead of 11, since the\r
+ // last four bits are copies of the previous four...\r
+\r
+ for(uint16 bitPat=0; bitPat<0x800; bitPat++)\r
+ {\r
+ uint16 w3 = bitPat & 0x888;\r
+ uint16 w2 = bitPat & 0x444;\r
+ uint16 w1 = bitPat & 0x222;\r
+ uint16 w0 = bitPat & 0x111;\r
+\r
+ uint16 blurred3 = (w3 | (w3 >> 1) | (w3 >> 2) | (w3 >> 3)) & 0x00FF;\r
+ uint16 blurred2 = (w2 | (w2 >> 1) | (w2 >> 2) | (w2 >> 3)) & 0x00FF;\r
+ uint16 blurred1 = (w1 | (w1 >> 1) | (w1 >> 2) | (w1 >> 3)) & 0x00FF;\r
+ uint16 blurred0 = (w0 | (w0 >> 1) | (w0 >> 2) | (w0 >> 3)) & 0x00FF;\r
+\r
+ for(int8 i=7; i>=0; i--)\r
+ {\r
+ uint8 color = (((blurred0 >> i) & 0x01) << 3)\r
+ | (((blurred1 >> i) & 0x01) << 2)\r
+ | (((blurred2 >> i) & 0x01) << 1)\r
+ | ((blurred3 >> i) & 0x01);\r
+ blurTable[bitPat][7 - i] = color;\r
+ }\r
+ }\r
+}\r
+\r
+void TogglePalette(void)\r
+{\r
+ if (palette == (uint32 *)colors)\r
+ {\r
+ palette = (uint32 *)altColors;\r
+ SpawnMessage("Color TV palette");\r
+ }\r
+ else\r
+ {\r
+ palette = (uint32 *)colors;\r
+ SpawnMessage("\"Master Color Values\" palette");\r
+ }\r
+}\r
+\r
+void CycleScreenTypes(void)\r
+{\r
+ char scrTypeStr[3][40] = { "Color TV", "White monochrome", "Green monochrome" };\r
+\r
+ screenType++;\r
+\r
+ if (screenType == ST_LAST_ENTRY)\r
+ screenType = ST_FIRST_ENTRY;\r
+\r
+ SpawnMessage("%s", scrTypeStr[screenType]);\r
+}\r
+\r
+static uint32 msgTicks = 0;\r
+static char message[4096];\r
+\r
+void SpawnMessage(const char * text, ...)\r
+{\r
+ va_list arg;\r
+\r
+ va_start(arg, text);\r
+ vsprintf(message, text, arg);\r
+ va_end(arg);\r
+\r
+ msgTicks = 120;\r
+}\r
+\r
+static void DrawString2(uint32 x, uint32 y, uint32 color);\r
+static void DrawString(void)\r
+{\r
+//This approach works, and seems to be fast enough... Though it probably would\r
+//be better to make the oversized font to match this one...\r
+ for(uint32 x=7; x<=9; x++)\r
+ for(uint32 y=7; y<=9; y++)\r
+ DrawString2(x, y, 0x00000000);\r
+\r
+ DrawString2(8, 8, 0x0020FF20);\r
+}\r
+\r
+static void DrawString2(uint32 x, uint32 y, uint32 color)\r
+{\r
+//uint32 x = 8, y = 8;\r
+ uint32 length = strlen(message), address = x + (y * VIRTUAL_SCREEN_WIDTH);\r
+// uint32 color = 0x0020FF20;\r
+//This could be done ahead of time, instead of on each pixel...\r
+//(Now it is!)\r
+ uint8 nBlue = (color >> 16) & 0xFF, nGreen = (color >> 8) & 0xFF, nRed = color & 0xFF;\r
+\r
+ for(uint32 i=0; i<length; i++)\r
+ {\r
+ uint8 c = message[i];\r
+ c = (c < 32 ? 0 : c - 32);\r
+ uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;\r
+\r
+ for(uint32 yy=0; yy<FONT_HEIGHT; yy++)\r
+ {\r
+ for(uint32 xx=0; xx<FONT_WIDTH; xx++)\r
+ {\r
+/* uint8 fontTrans = font1[fontAddr++];\r
+// uint32 newTrans = (fontTrans * transparency / 255) << 24;\r
+ uint32 newTrans = fontTrans << 24;\r
+ uint32 pixel = newTrans | color;\r
+\r
+ *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH)) = pixel;//*/\r
+\r
+ uint8 trans = font1[fontAddr++];\r
+\r
+ if (trans)\r
+ {\r
+ uint32 existingColor = *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH));\r
+\r
+ uint8 eBlue = (existingColor >> 16) & 0xFF,\r
+ eGreen = (existingColor >> 8) & 0xFF,\r
+ eRed = existingColor & 0xFF;\r
+\r
+//This could be sped up by using a table of 5 + 5 + 5 bits (32 levels transparency -> 32768 entries)\r
+//Here we've modified it to have 33 levels of transparency (could have any # we want!)\r
+//because dividing by 32 is faster than dividing by 31...!\r
+ uint8 invTrans = 255 - trans;\r
+\r
+ uint32 bRed = (eRed * invTrans + nRed * trans) / 255;\r
+ uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;\r
+ uint32 bBlue = (eBlue * invTrans + nBlue * trans) / 255;\r
+\r
+//THIS IS NOT ENDIAN SAFE\r
+ *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;\r
+ }\r
+ }\r
+ }\r
+\r
+ address += FONT_WIDTH;\r
+ }\r
+}\r
+\r
+static void Render40ColumnTextLine(uint8 line)\r
+{\r
+ uint32 pixelOn = (screenType == ST_GREEN_MONO ? 0xFF61FF61 : 0xFFFFFFFF);\r
+\r
+ for(int x=0; x<40; x++)\r
+ {\r
+ uint8 chr = ram[lineAddrLoRes[line] + (displayPage2 ? 0x0400 : 0x0000) + x];\r
+\r
+ // Render character at (x, y)\r
+\r
+ for(int cy=0; cy<8; cy++)\r
+ {\r
+ for(int cx=0; cx<7; cx++)\r
+ {\r
+ uint32 pixel = 0xFF000000;\r
+\r
+ if (!alternateCharset)\r
+ {\r
+ if (textChar[((chr & 0x3F) * 56) + cx + (cy * 7)])\r
+// pixel = 0xFFFFFFFF;\r
+ pixel = pixelOn;\r
+\r
+ if (chr < 0x80)\r
+ pixel = pixel ^ (screenType == ST_GREEN_MONO ? 0x0061FF61 : 0x00FFFFFF);\r
+\r
+ if ((chr & 0xC0) == 0x40 && flash)\r
+ pixel = 0xFF000000;\r
+ }\r
+ else\r
+ {\r
+ if (textChar2e[(chr * 56) + cx + (cy * 7)])\r
+// pixel = 0xFFFFFFFF;\r
+ pixel = pixelOn;\r
+ }\r
+\r
+// scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8) + (cx * 2) + 0 + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+// scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8) + (cx * 2) + 1 + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+ scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 0 + (cy * VIRTUAL_SCREEN_WIDTH * 2)] = pixel;\r
+ scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 1 + (cy * VIRTUAL_SCREEN_WIDTH * 2)] = pixel;\r
+\r
+ if (screenType == ST_GREEN_MONO)\r
+ pixel = 0xFF000000;\r
+\r
+ {\r
+ scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 0 + (((cy * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+ scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 1 + (((cy * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+static void Render40ColumnText(void)\r
+{\r
+ for(uint8 line=0; line<24; line++)\r
+ Render40ColumnTextLine(line);\r
+}\r
+\r
+static void RenderLoRes(uint16 toLine/*= 24*/)\r
+{\r
+// NOTE: The green mono rendering doesn't skip every other line... !!! FIX !!!\r
+/*\r
+Note that these colors correspond to the bit patterns generated by the numbers 0-F in order:\r
+Color #s correspond to the bit patterns in reverse... Interesting!\r
+\r
+00 00 00 -> 0 [0000] -> 0 (lores color #)\r
+3c 4d 00 -> 8 [0001] -> 8? BROWN\r
+00 5d 3c -> 4 [0010] -> 4? DARK GREEN\r
+3c aa 3c -> 12 [0011] -> 12? LIGHT GREEN (GREEN)\r
+41 30 7d -> 2 [0100] -> 2? DARK BLUE\r
+7d 7d 7d -> 10 [0101] -> 10? LIGHT GRAY\r
+41 8e ba -> 6 [0110] -> 6? MEDIUM BLUE (BLUE)\r
+7d db ba -> 14 [0111] -> 14? AQUAMARINE (AQUA)\r
+7d 20 41 -> 1 [1000] -> 1? DEEP RED (MAGENTA)\r
+ba 6d 41 -> 9 [1001] -> 9? ORANGE\r
+7d 7d 7d -> 5 [1010] -> 5? DARK GRAY\r
+ba cb 7d -> 13 [1011] -> 13? YELLOW\r
+be 51 be -> 3 [1100] -> 3 PURPLE (VIOLET)\r
+fb 9e be -> 11 [1101] -> 11? PINK\r
+be ae fb -> 7 [1110] -> 7? LIGHT BLUE (CYAN)\r
+fb fb fb -> 15 [1111] -> 15 WHITE\r
+*/\r
+ uint8 mirrorNybble[16] = { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 };\r
+\r
+//This is the old "perfect monitor" rendering code...\r
+/* if (screenType != ST_COLOR_TV) // Not correct, but for now...\r
+//if (1)\r
+ {\r
+ for(uint16 y=0; y<toLine; y++)\r
+ {\r
+ for(uint16 x=0; x<40; x++)\r
+ {\r
+ uint8 scrByte = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x];\r
+ uint32 pixel = palette[scrByte & 0x0F];\r
+ \r
+ for(int cy=0; cy<4; cy++)\r
+ for(int cx=0; cx<14; cx++)\r
+ scrBuffer[((x * 14) + cx) + (((y * 8) + cy) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+ \r
+ pixel = palette[scrByte >> 4];\r
+ \r
+ for(int cy=4; cy<8; cy++)\r
+ for(int cx=0; cx<14; cx++)\r
+ scrBuffer[(x * 14) + (y * VIRTUAL_SCREEN_WIDTH * 8) + cx + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+ }\r
+ }\r
+ }\r
+ else//*/\r
+\r
+ uint32 pixelOn = (screenType == ST_WHITE_MONO ? 0xFFFFFFFF : 0xFF61FF61);\r
+\r
+ for(uint16 y=0; y<toLine; y++)\r
+ {\r
+ // Do top half of lores screen bytes...\r
+\r
+ uint32 previous3Bits = 0;\r
+\r
+ for(uint16 x=0; x<40; x+=2)\r
+ {\r
+ uint8 scrByte1 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 0] & 0x0F;\r
+ uint8 scrByte2 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 1] & 0x0F;\r
+ scrByte1 = mirrorNybble[scrByte1];\r
+ scrByte2 = mirrorNybble[scrByte2];\r
+ // This is just a guess, but it'll have to do for now...\r
+ uint32 pixels = previous3Bits | (scrByte1 << 24) | (scrByte1 << 20) | (scrByte1 << 16)\r
+ | ((scrByte1 & 0x0C) << 12) | ((scrByte2 & 0x03) << 12)\r
+ | (scrByte2 << 8) | (scrByte2 << 4) | scrByte2;\r
+\r
+ // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+ // 0ppp 1111 1111 1111 11|11 1111 1111 1111\r
+ // 31 27 23 19 15 11 7 3 0\r
+\r
+ if (screenType == ST_COLOR_TV)\r
+ {\r
+ for(uint8 i=0; i<7; i++)\r
+ {\r
+ uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+ pixels <<= 4;\r
+\r
+ for(uint8 j=0; j<4; j++)\r
+ {\r
+ uint8 color = blurTable[bitPat][j];\r
+\r
+ for(uint32 cy=0; cy<8; cy++)\r
+ {\r
+ scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+// scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+ }\r
+ }\r
+ }\r
+\r
+ previous3Bits = pixels & 0x70000000;\r
+ }\r
+ else\r
+ {\r
+ for(int j=0; j<28; j++)\r
+ {\r
+ for(uint32 cy=0; cy<8; cy++)\r
+ {\r
+ scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+// scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+ }\r
+\r
+ pixels <<= 1;\r
+ }\r
+ }\r
+ }\r
+\r
+ // Now do bottom half...\r
+\r
+ previous3Bits = 0;\r
+\r
+ for(uint16 x=0; x<40; x+=2)\r
+ {\r
+ uint8 scrByte1 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 0] >> 4;\r
+ uint8 scrByte2 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 1] >> 4;\r
+ scrByte1 = mirrorNybble[scrByte1];\r
+ scrByte2 = mirrorNybble[scrByte2];\r
+ // This is just a guess, but it'll have to do for now...\r
+ uint32 pixels = previous3Bits | (scrByte1 << 24) | (scrByte1 << 20) | (scrByte1 << 16)\r
+ | ((scrByte1 & 0x0C) << 12) | ((scrByte2 & 0x03) << 12)\r
+ | (scrByte2 << 8) | (scrByte2 << 4) | scrByte2;\r
+\r
+ // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+ // 0ppp 1111 1111 1111 11|11 1111 1111 1111\r
+ // 31 27 23 19 15 11 7 3 0\r
+\r
+ if (screenType == ST_COLOR_TV)\r
+ {\r
+ for(uint8 i=0; i<7; i++)\r
+ {\r
+ uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+ pixels <<= 4;\r
+\r
+ for(uint8 j=0; j<4; j++)\r
+ {\r
+ uint8 color = blurTable[bitPat][j];\r
+\r
+ for(uint32 cy=8; cy<16; cy++)\r
+ {\r
+ scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+// scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+ }\r
+ }\r
+ }\r
+\r
+ previous3Bits = pixels & 0x70000000;\r
+ }\r
+ else\r
+ {\r
+ for(int j=0; j<28; j++)\r
+ {\r
+ for(uint32 cy=8; cy<16; cy++)\r
+ {\r
+ scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+// scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+ }\r
+\r
+ pixels <<= 1;\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+static void RenderHiRes(uint16 toLine/*= 192*/)\r
+{\r
+ uint32 pixelOn = (screenType == ST_WHITE_MONO ? 0xFFFFFFFF : 0xFF61FF61);\r
+\r
+ for(uint16 y=0; y<toLine; y++)\r
+ {\r
+ uint16 previousLoPixel = 0;\r
+ uint32 previous3bits = 0;\r
+\r
+ for(uint16 x=0; x<40; x+=2)\r
+ {\r
+ uint8 screenByte = ram[lineAddrHiRes[y] + (displayPage2 ? 0x2000 : 0x0000) + x];\r
+ uint32 pixels = appleHiresToMono[previousLoPixel | screenByte];\r
+ previousLoPixel = (screenByte << 2) & 0x0100;\r
+\r
+ screenByte = ram[lineAddrHiRes[y] + (displayPage2 ? 0x2000 : 0x0000) + x + 1];\r
+ uint32 pixels2 = appleHiresToMono[previousLoPixel | screenByte];\r
+ previousLoPixel = (screenByte << 2) & 0x0100;\r
+\r
+ pixels = previous3bits | (pixels << 14) | pixels2;\r
+\r
+ // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+ // 0ppp 1111 1111 1111 1111 1111 1111 1111\r
+ // 31 27 23 19 15 11 7 3 0\r
+\r
+ if (screenType == ST_COLOR_TV)\r
+ {\r
+ for(uint8 i=0; i<7; i++)\r
+ {\r
+ uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+ pixels <<= 4;\r
+\r
+ for(uint8 j=0; j<4; j++)\r
+ {\r
+ uint8 color = blurTable[bitPat][j];\r
+#if 0\r
+//This doesn't seem to make things go any faster...\r
+//It's the OpenGL render that's faster... Hmm...\r
+ scrBuffer[(x * 14) + (i * 4) + j + (y * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+#else\r
+ scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+ scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+#endif\r
+ }\r
+ }\r
+\r
+ previous3bits = pixels & 0x70000000;\r
+ }\r
+ else\r
+ {\r
+ for(int j=0; j<28; j++)\r
+ {\r
+ scrBuffer[(x * 14) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+\r
+ if (screenType == ST_GREEN_MONO)\r
+ pixels &= 0x07FFFFFF;\r
+\r
+ scrBuffer[(x * 14) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+ pixels <<= 1;\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+void RenderVideoFrame(void)\r
+{\r
+//temp...\r
+/*RenderLoRes();\r
+RenderScreenBuffer();\r
+return;//*/\r
+\r
+ if (textMode)\r
+ {\r
+ // There's prolly more to it than this (like 80 column text), but this'll have to do for now...\r
+ Render40ColumnText();\r
+ }\r
+ else\r
+ {\r
+ if (mixedMode)\r
+ {\r
+ if (hiRes)\r
+ {\r
+ RenderHiRes(160);\r
+ Render40ColumnTextLine(20);\r
+ Render40ColumnTextLine(21);\r
+ Render40ColumnTextLine(22);\r
+ Render40ColumnTextLine(23);\r
+ }\r
+ else\r
+ {\r
+ RenderLoRes(20);\r
+ Render40ColumnTextLine(20);\r
+ Render40ColumnTextLine(21);\r
+ Render40ColumnTextLine(22);\r
+ Render40ColumnTextLine(23);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (hiRes)\r
+ RenderHiRes();\r
+ else\r
+ RenderLoRes();\r
+ }\r
+ }\r
+\r
+ if (msgTicks)\r
+ {\r
+ DrawString();\r
+ msgTicks--;\r
+ }\r
+\r
+ RenderScreenBuffer();\r
+}\r
--- /dev/null
+//\r
+// Apple 2 video support\r
+//\r
+\r
+#ifndef __APPLEVIDEO_H__\r
+#define __APPLEVIDEO_H__\r
+\r
+// Global variables (exported)\r
+\r
+extern bool flash;\r
+extern bool textMode;\r
+extern bool mixedMode;\r
+extern bool displayPage2;\r
+extern bool hiRes;\r
+extern bool alternateCharset;\r
+\r
+// Functions (exported)\r
+\r
+void SetupBlurTable(void);\r
+void TogglePalette(void);\r
+void CycleScreenTypes(void);\r
+void SpawnMessage(const char * text, ...);\r
+void RenderVideoFrame(void);\r
+\r
+#endif // __APPLEVIDEO_H__\r
--- /dev/null
+/***************************************************************************\r
+\r
+ ay8910.cpp\r
+\r
+ Emulation of the AY-3-8910 / YM2149 sound chip.\r
+\r
+ Based on various code snippets by Ville Hallik, Michael Cuddy,\r
+ Tatsuyuki Satoh, Fabrice Frances, Nicola Salmoria.\r
+\r
+***************************************************************************/\r
+\r
+// \r
+// From mame.txt (http://www.mame.net/readme.html)\r
+// \r
+// VI. Reuse of Source Code\r
+// --------------------------\r
+// This chapter might not apply to specific portions of MAME (e.g. CPU\r
+// emulators) which bear different copyright notices.\r
+// The source code cannot be used in a commercial product without the written\r
+// authorization of the authors. Use in non-commercial products is allowed, and\r
+// indeed encouraged. If you use portions of the MAME source code in your\r
+// program, however, you must make the full source code freely available as\r
+// well.\r
+// Usage of the _information_ contained in the source code is free for any use.\r
+// However, given the amount of time and energy it took to collect this\r
+// information, if you find new information we would appreciate if you made it\r
+// freely available as well.\r
+// \r
+\r
+// JLH: Removed MAME specific crap\r
+\r
+#include <string.h> // for memset()\r
+#include "ay8910.h"\r
+\r
+///////////////////////////////////////////////////////////\r
+// typedefs & dummy funcs to allow MAME code to compile:\r
+//\r
+//typedef UINT8 (*mem_read_handler)(UINT32);\r
+//typedef void (*mem_write_handler)(UINT32, UINT8);\r
+//\r
+//static void logerror(char* psz, ...)\r
+//{\r
+//}\r
+//\r
+//static unsigned short activecpu_get_pc()\r
+//{\r
+// return 0;\r
+//}\r
+//\r
+//\r
+///////////////////////////////////////////////////////////\r
+\r
+#define MAX_OUTPUT 0x7fff\r
+\r
+// See AY8910_set_clock() for definition of STEP\r
+#define STEP 0x8000\r
+\r
+//This is not used at all...\r
+//static int num = 0, ym_num = 0;\r
+\r
+struct AY8910\r
+{\r
+ int Channel;\r
+ int SampleRate;\r
+// mem_read_handler PortAread;\r
+// mem_read_handler PortBread;\r
+// mem_write_handler PortAwrite;\r
+// mem_write_handler PortBwrite;\r
+ int register_latch;\r
+ unsigned char Regs[16];\r
+ int lastEnable;\r
+ unsigned int UpdateStep;\r
+ int PeriodA,PeriodB,PeriodC,PeriodN,PeriodE;\r
+ int CountA,CountB,CountC,CountN,CountE;\r
+ unsigned int VolA,VolB,VolC,VolE;\r
+ unsigned char EnvelopeA,EnvelopeB,EnvelopeC;\r
+ unsigned char OutputA,OutputB,OutputC,OutputN;\r
+ signed char CountEnv;\r
+ unsigned char Hold,Alternate,Attack,Holding;\r
+ int RNG;\r
+ unsigned int VolTable[32];\r
+};\r
+\r
+/* register id's */\r
+#define AY_AFINE (0)\r
+#define AY_ACOARSE (1)\r
+#define AY_BFINE (2)\r
+#define AY_BCOARSE (3)\r
+#define AY_CFINE (4)\r
+#define AY_CCOARSE (5)\r
+#define AY_NOISEPER (6)\r
+#define AY_ENABLE (7)\r
+#define AY_AVOL (8)\r
+#define AY_BVOL (9)\r
+#define AY_CVOL (10)\r
+#define AY_EFINE (11)\r
+#define AY_ECOARSE (12)\r
+#define AY_ESHAPE (13)\r
+\r
+#define AY_PORTA (14)\r
+#define AY_PORTB (15)\r
+\r
+\r
+static struct AY8910 AYPSG[MAX_8910]; /* array of PSG's */\r
+\r
+\r
+\r
+void _AYWriteReg(int n, int r, int v)\r
+{\r
+ struct AY8910 *PSG = &AYPSG[n];\r
+ int old;\r
+\r
+\r
+ PSG->Regs[r] = v;\r
+\r
+ /* A note about the period of tones, noise and envelope: for speed reasons,*/\r
+ /* we count down from the period to 0, but careful studies of the chip */\r
+ /* output prove that it instead counts up from 0 until the counter becomes */\r
+ /* greater or equal to the period. This is an important difference when the*/\r
+ /* program is rapidly changing the period to modulate the sound. */\r
+ /* To compensate for the difference, when the period is changed we adjust */\r
+ /* our internal counter. */\r
+ /* Also, note that period = 0 is the same as period = 1. This is mentioned */\r
+ /* in the YM2203 data sheets. However, this does NOT apply to the Envelope */\r
+ /* period. In that case, period = 0 is half as period = 1. */\r
+ switch( r )\r
+ {\r
+ case AY_AFINE:\r
+ case AY_ACOARSE:\r
+ PSG->Regs[AY_ACOARSE] &= 0x0f;\r
+ old = PSG->PeriodA;\r
+ PSG->PeriodA = (PSG->Regs[AY_AFINE] + 256 * PSG->Regs[AY_ACOARSE]) * PSG->UpdateStep;\r
+ if (PSG->PeriodA == 0) PSG->PeriodA = PSG->UpdateStep;\r
+ PSG->CountA += PSG->PeriodA - old;\r
+ if (PSG->CountA <= 0) PSG->CountA = 1;\r
+ break;\r
+ case AY_BFINE:\r
+ case AY_BCOARSE:\r
+ PSG->Regs[AY_BCOARSE] &= 0x0f;\r
+ old = PSG->PeriodB;\r
+ PSG->PeriodB = (PSG->Regs[AY_BFINE] + 256 * PSG->Regs[AY_BCOARSE]) * PSG->UpdateStep;\r
+ if (PSG->PeriodB == 0) PSG->PeriodB = PSG->UpdateStep;\r
+ PSG->CountB += PSG->PeriodB - old;\r
+ if (PSG->CountB <= 0) PSG->CountB = 1;\r
+ break;\r
+ case AY_CFINE:\r
+ case AY_CCOARSE:\r
+ PSG->Regs[AY_CCOARSE] &= 0x0f;\r
+ old = PSG->PeriodC;\r
+ PSG->PeriodC = (PSG->Regs[AY_CFINE] + 256 * PSG->Regs[AY_CCOARSE]) * PSG->UpdateStep;\r
+ if (PSG->PeriodC == 0) PSG->PeriodC = PSG->UpdateStep;\r
+ PSG->CountC += PSG->PeriodC - old;\r
+ if (PSG->CountC <= 0) PSG->CountC = 1;\r
+ break;\r
+ case AY_NOISEPER:\r
+ PSG->Regs[AY_NOISEPER] &= 0x1f;\r
+ old = PSG->PeriodN;\r
+ PSG->PeriodN = PSG->Regs[AY_NOISEPER] * PSG->UpdateStep;\r
+ if (PSG->PeriodN == 0) PSG->PeriodN = PSG->UpdateStep;\r
+ PSG->CountN += PSG->PeriodN - old;\r
+ if (PSG->CountN <= 0) PSG->CountN = 1;\r
+ break;\r
+ case AY_ENABLE:\r
+ if ((PSG->lastEnable == -1) ||\r
+ ((PSG->lastEnable & 0x40) != (PSG->Regs[AY_ENABLE] & 0x40)))\r
+ {\r
+ /* write out 0xff if port set to input */\r
+// if (PSG->PortAwrite)\r
+// (*PSG->PortAwrite)(0, (UINT8) ((PSG->Regs[AY_ENABLE] & 0x40) ? PSG->Regs[AY_PORTA] : 0xff)); // [TC: UINT8 cast]\r
+ }\r
+\r
+ if ((PSG->lastEnable == -1) ||\r
+ ((PSG->lastEnable & 0x80) != (PSG->Regs[AY_ENABLE] & 0x80)))\r
+ {\r
+ /* write out 0xff if port set to input */\r
+// if (PSG->PortBwrite)\r
+// (*PSG->PortBwrite)(0, (UINT8) ((PSG->Regs[AY_ENABLE] & 0x80) ? PSG->Regs[AY_PORTB] : 0xff)); // [TC: UINT8 cast]\r
+ }\r
+\r
+ PSG->lastEnable = PSG->Regs[AY_ENABLE];\r
+ break;\r
+ case AY_AVOL:\r
+ PSG->Regs[AY_AVOL] &= 0x1f;\r
+ PSG->EnvelopeA = PSG->Regs[AY_AVOL] & 0x10;\r
+ PSG->VolA = PSG->EnvelopeA ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_AVOL] ? PSG->Regs[AY_AVOL]*2+1 : 0];\r
+ break;\r
+ case AY_BVOL:\r
+ PSG->Regs[AY_BVOL] &= 0x1f;\r
+ PSG->EnvelopeB = PSG->Regs[AY_BVOL] & 0x10;\r
+ PSG->VolB = PSG->EnvelopeB ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_BVOL] ? PSG->Regs[AY_BVOL]*2+1 : 0];\r
+ break;\r
+ case AY_CVOL:\r
+ PSG->Regs[AY_CVOL] &= 0x1f;\r
+ PSG->EnvelopeC = PSG->Regs[AY_CVOL] & 0x10;\r
+ PSG->VolC = PSG->EnvelopeC ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_CVOL] ? PSG->Regs[AY_CVOL]*2+1 : 0];\r
+ break;\r
+ case AY_EFINE:\r
+ case AY_ECOARSE:\r
+ old = PSG->PeriodE;\r
+ PSG->PeriodE = ((PSG->Regs[AY_EFINE] + 256 * PSG->Regs[AY_ECOARSE])) * PSG->UpdateStep;\r
+ if (PSG->PeriodE == 0) PSG->PeriodE = PSG->UpdateStep / 2;\r
+ PSG->CountE += PSG->PeriodE - old;\r
+ if (PSG->CountE <= 0) PSG->CountE = 1;\r
+ break;\r
+ case AY_ESHAPE:\r
+ /* envelope shapes:\r
+ C AtAlH\r
+ 0 0 x x \___\r
+\r
+ 0 1 x x /___\r
+\r
+ 1 0 0 0 \\\\\r
+\r
+ 1 0 0 1 \___\r
+\r
+ 1 0 1 0 \/\/\r
+ ___\r
+ 1 0 1 1 \\r
+\r
+ 1 1 0 0 ////\r
+ ___\r
+ 1 1 0 1 /\r
+\r
+ 1 1 1 0 /\/\\r
+\r
+ 1 1 1 1 /___\r
+\r
+ The envelope counter on the AY-3-8910 has 16 steps. On the YM2149 it\r
+ has twice the steps, happening twice as fast. Since the end result is\r
+ just a smoother curve, we always use the YM2149 behaviour.\r
+ */\r
+ PSG->Regs[AY_ESHAPE] &= 0x0f;\r
+ PSG->Attack = (PSG->Regs[AY_ESHAPE] & 0x04) ? 0x1f : 0x00;\r
+ if ((PSG->Regs[AY_ESHAPE] & 0x08) == 0)\r
+ {\r
+ /* if Continue = 0, map the shape to the equivalent one which has Continue = 1 */\r
+ PSG->Hold = 1;\r
+ PSG->Alternate = PSG->Attack;\r
+ }\r
+ else\r
+ {\r
+ PSG->Hold = PSG->Regs[AY_ESHAPE] & 0x01;\r
+ PSG->Alternate = PSG->Regs[AY_ESHAPE] & 0x02;\r
+ }\r
+ PSG->CountE = PSG->PeriodE;\r
+ PSG->CountEnv = 0x1f;\r
+ PSG->Holding = 0;\r
+ PSG->VolE = PSG->VolTable[PSG->CountEnv ^ PSG->Attack];\r
+ if (PSG->EnvelopeA) PSG->VolA = PSG->VolE;\r
+ if (PSG->EnvelopeB) PSG->VolB = PSG->VolE;\r
+ if (PSG->EnvelopeC) PSG->VolC = PSG->VolE;\r
+ break;\r
+ case AY_PORTA:\r
+ if (PSG->Regs[AY_ENABLE] & 0x40)\r
+ {\r
+// if (PSG->PortAwrite)\r
+// (*PSG->PortAwrite)(0, PSG->Regs[AY_PORTA]);\r
+// else\r
+// logerror("PC %04x: warning - write %02x to 8910 #%d Port A\n",activecpu_get_pc(),PSG->Regs[AY_PORTA],n);\r
+ }\r
+ else\r
+ {\r
+// logerror("warning: write to 8910 #%d Port A set as input - ignored\n",n);\r
+ }\r
+ break;\r
+ case AY_PORTB:\r
+ if (PSG->Regs[AY_ENABLE] & 0x80)\r
+ {\r
+// if (PSG->PortBwrite)\r
+// (*PSG->PortBwrite)(0, PSG->Regs[AY_PORTB]);\r
+// else\r
+// logerror("PC %04x: warning - write %02x to 8910 #%d Port B\n",activecpu_get_pc(),PSG->Regs[AY_PORTB],n);\r
+ }\r
+ else\r
+ {\r
+// logerror("warning: write to 8910 #%d Port B set as input - ignored\n",n);\r
+ }\r
+ break;\r
+ }\r
+}\r
+\r
+\r
+// /length/ is the number of samples we require\r
+// NB. This should be called at twice the 6522 IRQ rate or (eg) 60Hz if no IRQ.\r
+void AY8910Update(int chip, int16 ** buffer, int length) // [TC: Removed static]\r
+{\r
+ struct AY8910 *PSG = &AYPSG[chip];\r
+ INT16 *buf1,*buf2,*buf3;\r
+ int outn;\r
+\r
+ buf1 = buffer[0];\r
+ buf2 = buffer[1];\r
+ buf3 = buffer[2];\r
+\r
+\r
+ /* The 8910 has three outputs, each output is the mix of one of the three */\r
+ /* tone generators and of the (single) noise generator. The two are mixed */\r
+ /* BEFORE going into the DAC. The formula to mix each channel is: */\r
+ /* (ToneOn | ToneDisable) & (NoiseOn | NoiseDisable). */\r
+ /* Note that this means that if both tone and noise are disabled, the output */\r
+ /* is 1, not 0, and can be modulated changing the volume. */\r
+\r
+\r
+ /* If the channels are disabled, set their output to 1, and increase the */\r
+ /* counter, if necessary, so they will not be inverted during this update. */\r
+ /* Setting the output to 1 is necessary because a disabled channel is locked */\r
+ /* into the ON state (see above); and it has no effect if the volume is 0. */\r
+ /* If the volume is 0, increase the counter, but don't touch the output. */\r
+ if (PSG->Regs[AY_ENABLE] & 0x01)\r
+ {\r
+ if (PSG->CountA <= length*STEP) PSG->CountA += length*STEP;\r
+ PSG->OutputA = 1;\r
+ }\r
+ else if (PSG->Regs[AY_AVOL] == 0)\r
+ {\r
+ /* note that I do count += length, NOT count = length + 1. You might think */\r
+ /* it's the same since the volume is 0, but doing the latter could cause */\r
+ /* interferencies when the program is rapidly modulating the volume. */\r
+ if (PSG->CountA <= length*STEP) PSG->CountA += length*STEP;\r
+ }\r
+ if (PSG->Regs[AY_ENABLE] & 0x02)\r
+ {\r
+ if (PSG->CountB <= length*STEP) PSG->CountB += length*STEP;\r
+ PSG->OutputB = 1;\r
+ }\r
+ else if (PSG->Regs[AY_BVOL] == 0)\r
+ {\r
+ if (PSG->CountB <= length*STEP) PSG->CountB += length*STEP;\r
+ }\r
+ if (PSG->Regs[AY_ENABLE] & 0x04)\r
+ {\r
+ if (PSG->CountC <= length*STEP) PSG->CountC += length*STEP;\r
+ PSG->OutputC = 1;\r
+ }\r
+ else if (PSG->Regs[AY_CVOL] == 0)\r
+ {\r
+ if (PSG->CountC <= length*STEP) PSG->CountC += length*STEP;\r
+ }\r
+\r
+ /* for the noise channel we must not touch OutputN - it's also not necessary */\r
+ /* since we use outn. */\r
+ if ((PSG->Regs[AY_ENABLE] & 0x38) == 0x38) /* all off */\r
+ if (PSG->CountN <= length*STEP) PSG->CountN += length*STEP;\r
+\r
+ outn = (PSG->OutputN | PSG->Regs[AY_ENABLE]);\r
+\r
+\r
+ /* buffering loop */\r
+ while (length)\r
+ {\r
+ int vola,volb,volc;\r
+ int left;\r
+\r
+\r
+ /* vola, volb and volc keep track of how long each square wave stays */\r
+ /* in the 1 position during the sample period. */\r
+ vola = volb = volc = 0;\r
+\r
+ left = STEP;\r
+ do\r
+ {\r
+ int nextevent;\r
+\r
+\r
+ if (PSG->CountN < left) nextevent = PSG->CountN;\r
+ else nextevent = left;\r
+\r
+ if (outn & 0x08)\r
+ {\r
+ if (PSG->OutputA) vola += PSG->CountA;\r
+ PSG->CountA -= nextevent;\r
+ /* PeriodA is the half period of the square wave. Here, in each */\r
+ /* loop I add PeriodA twice, so that at the end of the loop the */\r
+ /* square wave is in the same status (0 or 1) it was at the start. */\r
+ /* vola is also incremented by PeriodA, since the wave has been 1 */\r
+ /* exactly half of the time, regardless of the initial position. */\r
+ /* If we exit the loop in the middle, OutputA has to be inverted */\r
+ /* and vola incremented only if the exit status of the square */\r
+ /* wave is 1. */\r
+ while (PSG->CountA <= 0)\r
+ {\r
+ PSG->CountA += PSG->PeriodA;\r
+ if (PSG->CountA > 0)\r
+ {\r
+ PSG->OutputA ^= 1;\r
+ if (PSG->OutputA) vola += PSG->PeriodA;\r
+ break;\r
+ }\r
+ PSG->CountA += PSG->PeriodA;\r
+ vola += PSG->PeriodA;\r
+ }\r
+ if (PSG->OutputA) vola -= PSG->CountA;\r
+ }\r
+ else\r
+ {\r
+ PSG->CountA -= nextevent;\r
+ while (PSG->CountA <= 0)\r
+ {\r
+ PSG->CountA += PSG->PeriodA;\r
+ if (PSG->CountA > 0)\r
+ {\r
+ PSG->OutputA ^= 1;\r
+ break;\r
+ }\r
+ PSG->CountA += PSG->PeriodA;\r
+ }\r
+ }\r
+\r
+ if (outn & 0x10)\r
+ {\r
+ if (PSG->OutputB) volb += PSG->CountB;\r
+ PSG->CountB -= nextevent;\r
+ while (PSG->CountB <= 0)\r
+ {\r
+ PSG->CountB += PSG->PeriodB;\r
+ if (PSG->CountB > 0)\r
+ {\r
+ PSG->OutputB ^= 1;\r
+ if (PSG->OutputB) volb += PSG->PeriodB;\r
+ break;\r
+ }\r
+ PSG->CountB += PSG->PeriodB;\r
+ volb += PSG->PeriodB;\r
+ }\r
+ if (PSG->OutputB) volb -= PSG->CountB;\r
+ }\r
+ else\r
+ {\r
+ PSG->CountB -= nextevent;\r
+ while (PSG->CountB <= 0)\r
+ {\r
+ PSG->CountB += PSG->PeriodB;\r
+ if (PSG->CountB > 0)\r
+ {\r
+ PSG->OutputB ^= 1;\r
+ break;\r
+ }\r
+ PSG->CountB += PSG->PeriodB;\r
+ }\r
+ }\r
+\r
+ if (outn & 0x20)\r
+ {\r
+ if (PSG->OutputC) volc += PSG->CountC;\r
+ PSG->CountC -= nextevent;\r
+ while (PSG->CountC <= 0)\r
+ {\r
+ PSG->CountC += PSG->PeriodC;\r
+ if (PSG->CountC > 0)\r
+ {\r
+ PSG->OutputC ^= 1;\r
+ if (PSG->OutputC) volc += PSG->PeriodC;\r
+ break;\r
+ }\r
+ PSG->CountC += PSG->PeriodC;\r
+ volc += PSG->PeriodC;\r
+ }\r
+ if (PSG->OutputC) volc -= PSG->CountC;\r
+ }\r
+ else\r
+ {\r
+ PSG->CountC -= nextevent;\r
+ while (PSG->CountC <= 0)\r
+ {\r
+ PSG->CountC += PSG->PeriodC;\r
+ if (PSG->CountC > 0)\r
+ {\r
+ PSG->OutputC ^= 1;\r
+ break;\r
+ }\r
+ PSG->CountC += PSG->PeriodC;\r
+ }\r
+ }\r
+\r
+ PSG->CountN -= nextevent;\r
+ if (PSG->CountN <= 0)\r
+ {\r
+ /* Is noise output going to change? */\r
+ if ((PSG->RNG + 1) & 2) /* (bit0^bit1)? */\r
+ {\r
+ PSG->OutputN = ~PSG->OutputN;\r
+ outn = (PSG->OutputN | PSG->Regs[AY_ENABLE]);\r
+ }\r
+\r
+ /* The Random Number Generator of the 8910 is a 17-bit shift */\r
+ /* register. The input to the shift register is bit0 XOR bit3 */\r
+ /* (bit0 is the output). This was verified on AY-3-8910 and YM2149 chips. */\r
+\r
+ /* The following is a fast way to compute bit17 = bit0^bit3. */\r
+ /* Instead of doing all the logic operations, we only check */\r
+ /* bit0, relying on the fact that after three shifts of the */\r
+ /* register, what now is bit3 will become bit0, and will */\r
+ /* invert, if necessary, bit14, which previously was bit17. */\r
+ if (PSG->RNG & 1) PSG->RNG ^= 0x24000; /* This version is called the "Galois configuration". */\r
+ PSG->RNG >>= 1;\r
+ PSG->CountN += PSG->PeriodN;\r
+ }\r
+\r
+ left -= nextevent;\r
+ } while (left > 0);\r
+\r
+ /* update envelope */\r
+ if (PSG->Holding == 0)\r
+ {\r
+ PSG->CountE -= STEP;\r
+ if (PSG->CountE <= 0)\r
+ {\r
+ do\r
+ {\r
+ PSG->CountEnv--;\r
+ PSG->CountE += PSG->PeriodE;\r
+ } while (PSG->CountE <= 0);\r
+\r
+ /* check envelope current position */\r
+ if (PSG->CountEnv < 0)\r
+ {\r
+ if (PSG->Hold)\r
+ {\r
+ if (PSG->Alternate)\r
+ PSG->Attack ^= 0x1f;\r
+ PSG->Holding = 1;\r
+ PSG->CountEnv = 0;\r
+ }\r
+ else\r
+ {\r
+ /* if CountEnv has looped an odd number of times (usually 1), */\r
+ /* invert the output. */\r
+ if (PSG->Alternate && (PSG->CountEnv & 0x20))\r
+ PSG->Attack ^= 0x1f;\r
+\r
+ PSG->CountEnv &= 0x1f;\r
+ }\r
+ }\r
+\r
+ PSG->VolE = PSG->VolTable[PSG->CountEnv ^ PSG->Attack];\r
+ /* reload volume */\r
+ if (PSG->EnvelopeA) PSG->VolA = PSG->VolE;\r
+ if (PSG->EnvelopeB) PSG->VolB = PSG->VolE;\r
+ if (PSG->EnvelopeC) PSG->VolC = PSG->VolE;\r
+ }\r
+ }\r
+\r
+#if 0\r
+ *(buf1++) = (vola * PSG->VolA) / STEP;\r
+ *(buf2++) = (volb * PSG->VolB) / STEP;\r
+ *(buf3++) = (volc * PSG->VolC) / STEP;\r
+#else\r
+ // Output PCM wave [-32768...32767] instead of MAME's voltage level [0...32767]\r
+ // - This allows for better s/w mixing\r
+\r
+ if(PSG->VolA)\r
+ {\r
+ if(vola)\r
+ *(buf1++) = (vola * PSG->VolA) / STEP;\r
+ else\r
+ *(buf1++) = - (int) PSG->VolA;\r
+ }\r
+ else\r
+ {\r
+ *(buf1++) = 0;\r
+ }\r
+\r
+ //\r
+\r
+ if(PSG->VolB)\r
+ {\r
+ if(volb)\r
+ *(buf2++) = (volb * PSG->VolB) / STEP;\r
+ else\r
+ *(buf2++) = - (int) PSG->VolB;\r
+ }\r
+ else\r
+ {\r
+ *(buf2++) = 0;\r
+ }\r
+\r
+ //\r
+\r
+ if(PSG->VolC)\r
+ {\r
+ if(volc)\r
+ *(buf3++) = (volc * PSG->VolC) / STEP;\r
+ else\r
+ *(buf3++) = - (int) PSG->VolC;\r
+ }\r
+ else\r
+ {\r
+ *(buf3++) = 0;\r
+ }\r
+#endif\r
+\r
+ length--;\r
+ }\r
+}\r
+\r
+\r
+static void AY8910_set_clock(int chip,int clock)\r
+{\r
+ struct AY8910 *PSG = &AYPSG[chip];\r
+\r
+ /* the step clock for the tone and noise generators is the chip clock */\r
+ /* divided by 8; for the envelope generator of the AY-3-8910, it is half */\r
+ /* that much (clock/16), but the envelope of the YM2149 goes twice as */\r
+ /* fast, therefore again clock/8. */\r
+ /* Here we calculate the number of steps which happen during one sample */\r
+ /* at the given sample rate. No. of events = sample rate / (clock/8). */\r
+ /* STEP is a multiplier used to turn the fraction into a fixed point */\r
+ /* number. */\r
+ PSG->UpdateStep = (unsigned int) (((double)STEP * PSG->SampleRate * 8 + clock/2) / clock); // [TC: unsigned int cast]\r
+}\r
+\r
+\r
+static void build_mixer_table(int chip)\r
+{\r
+ struct AY8910 *PSG = &AYPSG[chip];\r
+ int i;\r
+ double out;\r
+\r
+\r
+ /* calculate the volume->voltage conversion table */\r
+ /* The AY-3-8910 has 16 levels, in a logarithmic scale (3dB per step) */\r
+ /* The YM2149 still has 16 levels for the tone generators, but 32 for */\r
+ /* the envelope generator (1.5dB per step). */\r
+ out = MAX_OUTPUT;\r
+ for (i = 31;i > 0;i--)\r
+ {\r
+ PSG->VolTable[i] = (unsigned int) (out + 0.5); /* round to nearest */ // [TC: unsigned int cast]\r
+\r
+ out /= 1.188502227; /* = 10 ^ (1.5/20) = 1.5dB */\r
+ }\r
+ PSG->VolTable[0] = 0;\r
+}\r
+\r
+\r
+void AY8910_reset(int chip)\r
+{\r
+ int i;\r
+ struct AY8910 *PSG = &AYPSG[chip];\r
+\r
+ PSG->register_latch = 0;\r
+ PSG->RNG = 1;\r
+ PSG->OutputA = 0;\r
+ PSG->OutputB = 0;\r
+ PSG->OutputC = 0;\r
+ PSG->OutputN = 0xff;\r
+ PSG->lastEnable = -1; /* force a write */\r
+ for (i = 0;i < AY_PORTA;i++)\r
+ _AYWriteReg(chip,i,0); /* AYWriteReg() uses the timer system; we cannot */\r
+ /* call it at this time because the timer system */\r
+ /* has not been initialized. */\r
+}\r
+\r
+//-------------------------------------\r
+\r
+void AY8910_InitAll(int nClock, int nSampleRate)\r
+{\r
+ for(int nChip=0; nChip<MAX_8910; nChip++)\r
+ {\r
+ struct AY8910 *PSG = &AYPSG[nChip];\r
+\r
+ memset(PSG,0,sizeof(struct AY8910));\r
+ PSG->SampleRate = nSampleRate;\r
+\r
+// PSG->PortAread = NULL;\r
+// PSG->PortBread = NULL;\r
+// PSG->PortAwrite = NULL;\r
+// PSG->PortBwrite = NULL;\r
+\r
+ AY8910_set_clock(nChip, nClock);\r
+\r
+ build_mixer_table(nChip);\r
+ }\r
+}\r
+\r
+//-------------------------------------\r
+\r
+void AY8910_InitClock(int nClock)\r
+{\r
+ for(int nChip=0; nChip<MAX_8910; nChip++)\r
+ {\r
+ AY8910_set_clock(nChip, nClock);\r
+ }\r
+}\r
+\r
+//-------------------------------------\r
+\r
+uint8 * AY8910_GetRegsPtr(uint16 nAyNum)\r
+{\r
+ if(nAyNum >= MAX_8910)\r
+ return NULL;\r
+\r
+ return &AYPSG[nAyNum].Regs[0];\r
+}\r
--- /dev/null
+#ifndef AY8910_H\r
+#define AY8910_H\r
+\r
+#include "types.h"\r
+\r
+#define MAX_8910 4\r
+\r
+void _AYWriteReg(int n, int r, int v);\r
+void AY8910_reset(int chip);\r
+void AY8910Update(int chip, int16 ** buffer, int length);\r
+\r
+void AY8910_InitAll(int nClock, int nSampleRate);\r
+void AY8910_InitClock(int nClock);\r
+uint8 * AY8910_GetRegsPtr(uint16 nAyNum);\r
+\r
+#endif\r
--- /dev/null
+//\r
+// The Apple II/IIe video generator character set\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// While we could pack things into bytes, it doesn't cost too much to have everything\r
+// unpacked as we have it here.\r
+//\r
+\r
+// Apple II character set has 64 chars (56 bytes for each character)\r
+\r
+char textChar[0x0E00] = {\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+// Apple IIe/IIc character set has 256 chars (56 bytes for each character)\r
+\r
+char textChar2e[0x3800] = {\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+ 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, 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,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 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,\r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,\r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF,\r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+ 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 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,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+#if 0\r
+char textChar[0x7000] = {\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+\r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+\r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+ 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, 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, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, \r
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+ 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+};\r
+#endif\r
--- /dev/null
+//\r
+// 65C02 disassembler\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+\r
+#include <stdio.h>\r
+#include <string>\r
+#include "dis65c02.h"\r
+//#include "types.h"\r
+#include "v65c02.h"\r
+#include "log.h"\r
+\r
+using namespace std;\r
+\r
+// External shit\r
+\r
+extern V65C02REGS mainCPU;//Hm. Shouldn't we pass this shit in?\r
+\r
+// Private globals variables\r
+\r
+static uint8 op_mat[256] = {\r
+ 14, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 2, 3, 3, 2, 14, 10, 14, 0, 8, 9, 9, 13,\r
+ 8, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 3, 3, 3, 2, 14, 10, 14, 0, 9, 9, 9, 13,\r
+ 14, 6, 0, 0, 0, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13,\r
+ 14, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 11, 8, 8, 13,\r
+ 13, 7, 5, 0, 3, 3, 3, 2, 14, 10, 14, 0, 12, 9, 9, 13,\r
+ 13, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 3, 3, 4, 2, 14, 10, 14, 0, 8, 9, 9, 13,\r
+ 1, 6, 1, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 3, 3, 4, 2, 14, 10, 14, 0, 9, 9, 10, 13,\r
+ 1, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13,\r
+ 1, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13,\r
+ 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13 };\r
+\r
+static uint8 mnemonics[256][6] = {\r
+ "BRK ","ORA ","??? ","??? ","TSB ","ORA ","ASL ","RMB0 ",\r
+ "PHP ","ORA ","ASL ","??? ","TSB ","ORA ","ASL ","BBR0 ",\r
+ "BPL ","ORA ","ORA ","??? ","TRB ","ORA ","ASL ","RMB1 ",\r
+ "CLC ","ORA ","INC ","??? ","TRB ","ORA ","ASL ","BBR1 ",\r
+ "JSR ","AND ","??? ","??? ","BIT ","AND ","ROL ","RMB2 ",\r
+ "PLP ","AND ","ROL ","??? ","BIT ","AND ","ROL ","BBR2 ",\r
+ "BMI ","AND ","AND ","??? ","BIT ","AND ","ROL ","RMB3 ",\r
+ "SEC ","AND ","DEC ","??? ","BIT ","AND ","ROL ","BBR3 ",\r
+ "RTI ","EOR ","??? ","??? ","??? ","EOR ","LSR ","RMB4 ",\r
+ "PHA ","EOR ","LSR ","??? ","JMP ","EOR ","LSR ","BBR4 ",\r
+ "BVC ","EOR ","EOR ","??? ","??? ","EOR ","LSR ","RMB5 ",\r
+ "CLI ","EOR ","PHY ","??? ","??? ","EOR ","LSR ","BBR5 ",\r
+ "RTS ","ADC ","??? ","??? ","STZ ","ADC ","ROR ","RMB6 ",\r
+ "PLA ","ADC ","ROR ","??? ","JMP ","ADC ","ROR ","BBR6 ",\r
+ "BVS ","ADC ","ADC ","??? ","STZ ","ADC ","ROR ","RMB7 ",\r
+ "SEI ","ADC ","PLY ","??? ","JMP ","ADC ","ROR ","BBR7 ",\r
+ "BRA ","STA ","??? ","??? ","STY ","STA ","STX ","SMB0 ",\r
+ "DEY ","BIT ","TXA ","??? ","STY ","STA ","STX ","BBS0 ",\r
+ "BCC ","STA ","STA ","??? ","STY ","STA ","STX ","SMB1 ",\r
+ "TYA ","STA ","TXS ","??? ","STZ ","STA ","STZ ","BBS1 ",\r
+ "LDY ","LDA ","LDX ","??? ","LDY ","LDA ","LDX ","SMB2 ",\r
+ "TAY ","LDA ","TAX ","??? ","LDY ","LDA ","LDX ","BBS2 ",\r
+ "BCS ","LDA ","LDA ","??? ","LDY ","LDA ","LDX ","SMB3 ",\r
+ "CLV ","LDA ","TSX ","??? ","LDY ","LDA ","LDX ","BBS3 ",\r
+ "CPY ","CMP ","??? ","??? ","CPY ","CMP ","DEC ","SMB4 ",\r
+ "INY ","CMP ","DEX ","??? ","CPY ","CMP ","DEC ","BBS4 ",\r
+ "BNE ","CMP ","CMP ","??? ","??? ","CMP ","DEC ","SMB5 ",\r
+ "CLD ","CMP ","PHX ","??? ","??? ","CMP ","DEC ","BBS5 ",\r
+ "CPX ","SBC ","??? ","??? ","CPX ","SBC ","INC ","SMB6 ",\r
+ "INX ","SBC ","NOP ","??? ","CPX ","SBC ","INC ","BBS6 ",\r
+ "BEQ ","SBC ","SBC ","??? ","??? ","SBC ","INC ","SMB7 ",\r
+ "SED ","SBC ","PLX ","??? ","??? ","SBC ","INC ","BBS7 " };\r
+\r
+//\r
+// Display bytes in mem in hex\r
+//\r
+static void DisplayBytes(uint16 src, uint32 dst)\r
+{\r
+ WriteLog("%04X: ", src);\r
+ uint8 cnt = 0; // Init counter...\r
+\r
+ if (src > dst)\r
+ dst += 0x10000; // That should fix the FFFF bug...\r
+\r
+ for(uint32 i=src; i<dst; i++)\r
+ {\r
+ WriteLog("%02X ", mainCPU.RdMem(i));\r
+ cnt++; // Bump counter...\r
+ }\r
+\r
+ for(int i=cnt; i<5; i++) // Pad the leftover spaces...\r
+ WriteLog(" ");\r
+}\r
+\r
+//\r
+// Decode a 65C02 instruction\r
+//\r
+int Decode65C02(uint16 pc)\r
+{\r
+/*\r
+ 0) illegal\r
+ 1) imm = #$00\r
+ 2) zp = $00\r
+ 3) zpx = $00,X\r
+ 4) zpy = $00,Y\r
+ 5) izp = ($00)\r
+ 6) izx = ($00,X)\r
+ 7) izy = ($00),Y\r
+ 8) abs = $0000\r
+ 9) abx = $0000,X\r
+10) aby = $0000,Y\r
+11) ind = ($0000)\r
+12) iax = ($0000,X)\r
+13) rel = $0000 (PC-relative)\r
+14) inherent\r
+*/\r
+ char outbuf[80];\r
+\r
+ uint16 addr = pc;\r
+ uint8 opcode = mainCPU.RdMem(addr++); // Get the opcode\r
+\r
+ switch (op_mat[opcode]) // Decode the addressing mode...\r
+ {\r
+ case 0: // Illegal\r
+ sprintf(outbuf, "???");\r
+ break;\r
+ case 1: // Immediate\r
+ sprintf(outbuf, "%s #$%02X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 2: // Zero page\r
+ sprintf(outbuf, "%s $%02X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 3: // Zero page, X\r
+ sprintf(outbuf, "%s $%02X,X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 4: // Zero page, Y\r
+ sprintf(outbuf, "%s $%02X,Y", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 5: // Zero page indirect\r
+ sprintf(outbuf, "%s ($%02X)", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 6: // Zero page, X indirect\r
+ sprintf(outbuf, "%s ($%02X,X)", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 7: // Zero page, Y indirect\r
+ sprintf(outbuf, "%s ($%02X),Y", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+ break;\r
+ case 8: // Absolute\r
+ sprintf(outbuf, "%s $%04X", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+ break;\r
+ case 9: // Absolute, X\r
+ sprintf(outbuf, "%s $%04X,X", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+ break;\r
+ case 10: // Absolute, Y\r
+ sprintf(outbuf, "%s $%04X,Y", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+ break;\r
+ case 11: // Indirect\r
+ sprintf(outbuf, "%s ($%04X)", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+ break;\r
+ case 12: // Indirect, X\r
+ sprintf(outbuf, "%s ($%04X,X)", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+ break;\r
+ case 13: // Relative\r
+// sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16)(int8)mainCPU.RdMem(addr));\r
+ sprintf(outbuf, "%s $%04X", mnemonics[opcode], addr + (int16)((int8)mainCPU.RdMem(addr)) + 1);\r
+ addr++;\r
+ break;\r
+ case 14: // Inherent\r
+ sprintf(outbuf, "%s ", mnemonics[opcode]);\r
+ break;\r
+ }\r
+\r
+ DisplayBytes(pc, addr); // Show bytes\r
+ WriteLog("%-16s", outbuf); // Display opcode & addressing, etc.\r
+\r
+ return addr - pc;\r
+}\r
--- /dev/null
+//\r
+// DIS65C02.H\r
+//\r
+// by James L. Hammons\r
+// (C) 2004 Underground Software\r
+//\r
+\r
+#ifndef __DIS65C02_H__\r
+#define __DIS65C02_H__\r
+\r
+#include "types.h"\r
+\r
+int Decode65C02(uint16 pc);\r
+\r
+#endif // __DIS65C02_H__\r
--- /dev/null
+/* GIMP RGBA C-Source image dump (fd-img-128x128.c) */\r
+\r
+uint8 floppyDiskImg[] = {\r
+// 128 / 256, 128 % 256, // width (HI byte, LO byte)\r
+// 128 / 256, 128 % 256, // height (HI byte, LO byte)\r
+ "\000\200\000\200" // Same thing as above, just in octal... :-P\r
+ "\213\234\243\40`lq\321[ej\377\\fj\377\\fk\377[ej\377]fk\377[ej\377\\gl\377"\r
+ "[fk\377Zej\377Zej\377\\fk\377Zek\377^hj\377\\ej\377^jp\377^io\377^jp\377"\r
+ "`kp\377bmr\377ams\377[gl\377[fk\377[fk\377Zek\377Zfj\377[hm\377Zfk\377[g"\r
+ "l\377Zej\377Zej\377[ej\377]hm\377Zek\377\\fl\377^im\377[fk\377Zej\377Zek"\r
+ "\377[fl\377]hl\377\\in\377[fk\377Zfj\377[fk\377[fk\377Zej\377[fm\377[fm\377"\r
+ "[go\377[hp\377[fk\377]ip\377\\ho\377Zfm\377Zfl\377[fm\377[fm\377[fl\377["\r
+ "fl\377[fo\377[fm\377[ho\377[fn\377[fo\377\\hq\377[gp\377[fp\377\\jt\377["\r
+ "hr\377\\jq\377[js\377\\js\377\\jt\377^is\377\\jr\377`mt\377]go\377[hp\377"\r
+ "[io\377]iq\377]ir\377[go\377[hp\377]jq\377\\is\377[iq\377[iq\377\\kt\377"\r
+ "\\kt\377amt\377^ls\377_ls\377`mt\377]lt\377]kr\377]js\377`nx\377\\ku\377"\r
+ "]mv\377]mv\377^oy\377cqy\377bqz\377bpx\377`py\377ar~\377ar~\377`p{\377_p"\r
+ "{\377aq}\377_oz\377_p{\377ar~\377ar~\377`q|\377`p|\377`q|\377ar}\377bq{\377"\r
+ "br}\377ft}\377dt~\377hw~\377es|\377]ip\321&.6\40`lq\317\17\26\36\377\16\25"\r
+ "\37\377\16\27#\377\20\30#\377\16\26\"\377\20\27#\377\11\20\31\377\5\15\27"\r
+ "\377\3\12\25\377\2\12\24\377\4\14\26\377\3\10\20\377\2\7\22\377\5\10\20\377"\r
+ "\3\5\17\377\5\12\23\377\5\12\22\377\5\11\23\377\7\11\23\377\11\16\25\377"\r
+ "\13\21\30\377\3\11\17\377\2\3\13\377\2\3\14\377\3\6\13\377\2\7\16\377\3\12"\r
+ "\20\377\2\10\16\377\5\14\23\377\2\11\22\377\2\10\21\377\4\13\24\377\12\21"\r
+ "\31\377\5\14\26\377\4\10\21\377\4\14\25\377\3\10\17\377\2\7\15\377\2\10\20"\r
+ "\377\2\5\20\377\6\12\23\377\5\11\21\377\2\6\21\377\2\11\23\377\2\12\24\377"\r
+ "\2\10\22\377\2\3\21\377\2\7\22\377\3\7\20\377\5\16\32\377\5\16\30\377\2\11"\r
+ "\24\377\4\14\30\377\3\13\27\377\2\7\23\377\2\3\16\377\2\4\17\377\2\4\17\377"\r
+ "\2\3\15\377\2\6\15\377\2\3\16\377\2\5\16\377\2\7\21\377\2\4\20\377\2\4\17"\r
+ "\377\3\5\17\377\3\4\16\377\2\4\17\377\3\7\21\377\2\5\20\377\3\7\22\377\3"\r
+ "\7\21\377\3\11\24\377\3\10\21\377\5\10\17\377\4\12\22\377\6\11\21\377\4\7"\r
+ "\20\377\2\5\17\377\2\6\17\377\4\6\23\377\4\6\23\377\2\4\17\377\2\5\22\377"\r
+ "\4\7\23\377\3\6\23\377\2\10\24\377\3\13\24\377\3\10\22\377\3\10\25\377\7"\r
+ "\11\22\377\5\10\21\377\6\11\23\377\6\11\27\377\4\11\30\377\4\10\23\377\4"\r
+ "\7\23\377\6\13\25\377\3\7\22\377\4\10\21\377\4\10\20\377\5\11\21\377\11\14"\r
+ "\25\377\10\14\24\377\10\13\23\377\6\12\17\377\10\14\25\377\10\14\25\377\6"\r
+ "\12\22\377\6\12\22\377\6\13\22\377\5\12\20\377\6\12\20\377\7\14\23\377\7"\r
+ "\14\22\377\6\13\20\377\6\12\21\377\6\14\25\377\10\17\33\377\14\26\"\377\21"\r
+ "\34+\377\31#0\377\31&1\377\40+3\377#+5\377\30\",\377$*2\317Zhq\377\36$/\377"\r
+ "'/7\377%,5\377',7\377\36%0\377\21\26\36\377\12\17\24\377\3\11\21\377\2\10"\r
+ "\17\377\2\7\17\377\2\3\12\377\2\3\11\377\2\5\14\377\2\3\13\377\2\2\7\377"\r
+ "\2\2\10\377\2\2\10\377\2\2\5\377\2\2\5\377\2\2\4\377\1\1\1\377\1\1\1\377"\r
+ "\1\1\1\377\1\1\1\377\1\1\1\377\1\1\3\377\1\1\1\377\1\1\1\377\1\1\1\377\1"\r
+ "\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\2\1"\r
+ "\2\377\4\2\3\377\11\12\12\377\12\13\13\377\27\26\21\377\17\17\13\377\10\11"\r
+ "\11\377\15\15\13\377\16\17\16\377\23\23\16\377\22\22\20\377\31\27\25\377"\r
+ "\32\33\27\377#!\32\377!\40\32\377\25\24\20\377\24\22\16\377\24\24\16\377"\r
+ "\25\25\20\377\34\34\27\377\37\37\32\377''!\377*&\36\377&#\33\377%\"\35\377"\r
+ "+(\"\377((#\377-*#\377//,\37740&\37720.\377211\37732/\37773)\37751'\3776"\r
+ "41\37720.\37796/\377888\377666\377<::\377:99\377?>?\377ECA\377D?<\377EA>"\r
+ "\377BBB\377???\377@>=\377FF=\377B?9\377>;9\377AA6\377CA:\377CD=\377HK=\377"\r
+ "JLD\377NKH\377RMG\377KLK\377ILB\377NPA\377b_S\377`[Q\377]YP\377YVR\377ZU"\r
+ "L\377^ZS\377`f^\377ihh\377jii\377ji`\377ji_\377jjc\377jif\377jhj\377jhj\377"\r
+ "jhj\377jii\377jhj\377jii\377jig\377c^T\377420\377\7\12\25\377\34\"*\377&"\r
+ "+4\377'.7\377+2:\377&0:\377#)1\377Zhp\377\40'0\377*08\377'.6\377\"(3\377"\r
+ "\20\23\27\377AC@\377\232\227\223\377\257\252\244\377\257\256\257\377\277"\r
+ "\277\270\377\303\302\262\377\303\301\275\377\300\274\253\377\303\277\301"\r
+ "\377\303\300\303\377\303\300\303\377\303\300\303\377\303\300\303\377\303"\r
+ "\300\303\377\303\300\303\377\303\300\303\377\303\300\303\377\303\300\303"\r
+ "\377\303\300\303\377\303\300\303\377\303\301\270\377\303\300\303\377\303"\r
+ "\300\303\377\303\300\303\377\303\301\303\377\303\301\303\377\303\301\303"\r
+ "\377\303\301\303\377\303\301\303\377\303\301\303\377\303\301\303\377\304"\r
+ "\301\303\377\305\301\304\377\310\305\310\377\310\305\307\377\314\310\270"\r
+ "\377\313\311\307\377\307\305\307\377\312\307\310\377\313\310\312\377\316"\r
+ "\313\312\377\315\312\311\377\321\315\316\377\322\317\317\377\326\322\321"\r
+ "\377\325\322\321\377\317\313\312\377\316\311\312\377\316\313\312\377\317"\r
+ "\315\276\377\323\320\317\377\324\324\315\377\331\326\323\377\332\325\322"\r
+ "\377\330\324\321\377\330\324\311\377\333\330\317\377\331\326\326\377\334"\r
+ "\332\313\377\335\335\324\377\340\335\317\377\336\335\314\377\337\336\331"\r
+ "\377\336\333\312\377\337\332\303\377\340\333\327\377\341\335\336\377\337"\r
+ "\333\334\377\343\340\333\377\342\340\341\377\341\336\341\377\344\341\343"\r
+ "\377\343\340\342\377\346\343\345\377\351\346\346\377\351\344\344\377\351"\r
+ "\345\345\377\350\345\347\377\346\343\345\377\346\343\345\377\352\347\345"\r
+ "\377\350\343\343\377\346\341\342\377\347\344\341\377\350\344\343\377\350"\r
+ "\346\345\377\353\352\345\377\354\352\351\377\356\352\352\377\361\354\351"\r
+ "\377\355\352\355\377\354\352\350\377\356\355\347\377\371\365\361\377\371"\r
+ "\363\360\377\367\361\357\377\365\360\361\377\365\357\355\377\370\362\361"\r
+ "\377\371\371\367\377\376\372\375\377\376\372\376\377\376\373\371\377\376"\r
+ "\373\370\377\376\373\372\377\376\372\374\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\373\375\377\376\372\376\377\376\373\375\377\376"\r
+ "\373\374\377\372\365\362\377\337\333\334\377sof\377\16\21\31\377\"*2\377"\r
+ "*/8\377,08\377&,7\377#)1\377Zen\377%&-\377).7\377%*3\377\12\14\21\377\213"\r
+ "\211\212\377\376\373\375\377\376\372\376\377\376\372\376\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\373\375\377\376"\r
+ "\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+ "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+ "\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+ "\375\373\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\362\377\376\375\373\377\376\374\374\377\376"\r
+ "\374\374\377\376\374\373\377\376\376\366\377\376\374\373\377\376\375\373"\r
+ "\377\376\376\361\377\376\376\371\377\376\375\373\377\376\375\373\377\376"\r
+ "\376\370\377\376\376\371\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+ "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+ "\375\373\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+ "\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+ "\374\374\377\376\373\375\377\376\373\375\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\362\355\355\377FC?\377"\r
+ "\31\37&\377&-5\377$)3\377&.6\377#)1\377Zgq\377$(/\377',4\377\35#+\377PON"\r
+ "\377\362\356\361\377\376\372\376\377\376\374\374\377\376\375\373\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\375\373\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+ "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+ "\375\373\377\376\375\373\377\372\371\363\377\375\372\372\377\376\372\376"\r
+ "\377\230\224\224\377\17\23\27\377',5\377$)2\377%,5\377#)1\377Zeo\377\"%."\r
+ "\377'+3\377\14\21\33\377\206\203\205\377\376\372\376\377\376\372\376\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\375\373\377\376\375\373\377\376\373\375\377\372\372"\r
+ "\366\377\375\373\373\377\376\372\376\377\312\304\277\377\11\16\25\377$*5"\r
+ "\377%*1\377\40(4\377#)1\377Zen\377\37#.\377#)0\377\12\14\20\377\213\210\206"\r
+ "\377\376\372\376\377\376\374\374\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\373\375\377\376\374\374\377\376\373\375\377\376\372\376"\r
+ "\377\333\327\314\377\6\13\22\377\"*3\377%+1\377\40'0\377#)1\377Zem\377\37"\r
+ "%-\377%+3\377\14\15\20\377\217\214\211\377\376\372\376\377\376\374\374\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\375\373\377\376\374\374\377\376\375"\r
+ "\373\377\376\373\375\377\376\372\376\377\340\336\327\377\5\13\21\377#*3\377"\r
+ "$'/\377!)3\377#)1\377[is\377\37%/\377$*2\377\13\14\17\377\213\210\206\377"\r
+ "\376\373\370\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375"\r
+ "\373\377\376\375\373\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\340\336\317\377\5\13\21\377$+3\377%)/\377!'0\377#)1\377[js\377\37'1\377"\r
+ "$*2\377\13\14\16\377\213\210\206\377\376\375\366\377\376\375\373\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\340\336\316\377\3\10\17\377!*2\377#"\r
+ "(0\377\"(2\377#)1\377[is\377\37%.\377$*1\377\12\14\21\377\213\210\206\377"\r
+ "\376\372\376\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\375"\r
+ "\373\377\376\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377"\r
+ "\336\332\312\377\6\14\23\377#)3\377&,3\377\")1\377#)1\377[go\377\35#+\377"\r
+ "#(0\377\13\14\20\377\216\212\210\377\376\372\376\377\376\372\376\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\333\324\304\377\10\15\24\377%+4\377"\r
+ "$*2\377\37%.\377#)1\377Zgo\377\33\40(\377'-3\377\13\15\20\377\211\207\205"\r
+ "\377\376\372\376\377\376\372\376\377\376\373\375\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376"\r
+ "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\336\333\316\377\7\14\23\377%*3\377%+3\377!&/\377#)1\377Zgo\377\36$+"\r
+ "\377&+4\377\11\12\15\377\207\204\205\377\376\372\376\377\376\372\376\377"\r
+ "\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377"\r
+ "\376\373\375\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\333\326\315\377\12\17\25\377&+4"\r
+ "\377&+3\377#*2\377#)1\377Zeo\377\37#-\377'.5\377\13\14\16\377\211\207\205"\r
+ "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\374\374\377\376\372\376\377\376\373\375\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372\376"\r
+ "\377\324\316\303\377\11\16\25\377#+5\377',7\377\"'2\377#)1\377Zfp\377\37"\r
+ "%/\377,07\377\17\20\22\377\221\216\214\377\376\372\376\377\376\372\376\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\374\374\377\376\375\373\377\376\374\374\377"\r
+ "\376\373\375\377\376\372\376\377\376\373\375\377\376\373\375\377\376\373"\r
+ "\375\377\376\373\375\377\376\372\376\377\321\311\300\377\12\17\25\377#)4"\r
+ "\377&-4\377\")2\377#)1\377Zgq\377\35$,\377(/6\377\11\13\14\377\207\205\205"\r
+ "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\375\373\377\376\374\374\377\376\372\376"\r
+ "\377\376\373\375\377\376\375\373\377\376\375\373\377\376\373\375\377\376"\r
+ "\373\375\377\376\373\375\377\376\373\375\377\375\374\375\377\376\372\376"\r
+ "\377\327\321\310\377\10\15\23\377#*3\377'-5\377\40&.\377#)1\377Ydj\377\33"\r
+ "\40%\377&.4\377\13\14\15\377\213\211\207\377\376\372\376\377\376\372\376"\r
+ "\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\373\375\377\376\375\373\377\376\375\373\377\376\373\375\377\376"\r
+ "\373\375\377\374\374\376\377\376\372\376\377\330\321\304\377\5\13\21\377"\r
+ "&-6\377)/6\377\40%,\377#)1\377Zel\377\34\40(\377%-4\377\12\13\20\377\210"\r
+ "\206\210\377\376\372\376\377\376\372\376\377\376\373\375\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376\374\374"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+ "\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\375\373\377\376\375\373"\r
+ "\377\376\373\375\377\376\373\375\377\376\375\373\377\376\373\375\377\376"\r
+ "\372\376\377\327\317\302\377\7\15\23\377\"*3\377$+3\377\37$)\377#)1\377Y"\r
+ "di\377\33!%\377(-6\377\13\14\16\377\214\211\207\377\376\372\376\377\376\372"\r
+ "\376\377\376\373\375\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\314\306\270\377\7\15\24"\r
+ "\377!)1\377&-2\377\37#(\377#)1\377Ydi\377\33\37&\377(/7\377\14\15\21\377"\r
+ "\214\211\207\377\376\372\376\377\376\372\376\377\376\375\373\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+ "\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\314\305\270\377\11\14\22\377!)1\377&-4\377\40&-\377#)1\377"\r
+ "Ydi\377\33\36$\377)-6\377\13\14\22\377\212\205\205\377\376\372\376\377\376"\r
+ "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\374\374\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\327\320\302\377\11\16"\r
+ "\24\377%+4\377&-3\377\36&.\377#)1\377Ydi\377\34\36%\377&,6\377\15\15\16\377"\r
+ "\222\215\207\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374"\r
+ "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\374\374\377\376\374\374\377\376\372\376\377"\r
+ "\376\372\376\377\322\313\302\377\7\15\23\377%*4\377&+4\377\37&.\377#)1\377"\r
+ "Ydi\377\27\36$\377&,3\377\15\15\15\377\224\216\207\377\376\372\376\377\376"\r
+ "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\374\374\377\376\372\376\377\376\372\376"\r
+ "\377\376\375\373\377\376\373\375\377\376\373\375\377\376\372\376\377\376"\r
+ "\372\376\377\376\374\374\377\376\373\374\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\333\325\311\377\5\13"\r
+ "\21\377$*2\377%+1\377\")/\377#)1\377Ydi\377\34\40&\377&,5\377\16\16\15\377"\r
+ "\225\217\211\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374"\r
+ "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+ "\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\330\320\300\377\5\13\21\377$(1\377%+2\377\35\"(\377#)1\377"\r
+ "Ydi\377\34!'\377%+1\377\17\17\17\377\233\225\223\377\376\372\376\377\376"\r
+ "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376"\r
+ "\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\373\375\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\374\374\377\376\374\374\377\376\374\374\377\376\373\375"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\315\304\271\377\7\14"\r
+ "\23\377!(2\377%*1\377\40%,\377#)1\377Ydi\377\36\"'\377&-5\377\17\17\17\377"\r
+ "\230\223\214\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\373\375\377\376\373\375\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\375\373\377\376\374"\r
+ "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\320\311\300\377\7\14\22\377\32\",\377\36#+\377\22\31\40"\r
+ "\377!&-\377Ydi\377\37#(\377&+5\377\16\16\15\377\225\221\212\377\376\372\376"\r
+ "\377\376\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+ "\377\376\373\375\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\374\374\377\376\374\374\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\272\271\247"\r
+ "\377\5\7\15\377\6\13\25\377\1\2\4\377\4\4\4\377\32\34\"\377Ydi\377\36$'\377"\r
+ "(-6\377\21\21\21\377\235\232\224\377\376\372\376\377\376\372\376\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\374\374\377\376\373\375\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\375\373\377\376\374\374\377\376\372\376\377\376\372\376\377\376"\r
+ "\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\310\303\267\377\1\1\2\377\4\4\7<\1\1"\r
+ "\1\27\6\6\6\27\35\40%\27Ydi\377\37\")\377'-5\377\21\22\22\377\237\234\230"\r
+ "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\374\374\377\376\372\376\377\376\375\373\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\310\301\267\377\1\1\1\377\1\1\1)\0\0\0\0\0\0\0\0\0\0\0\0Ydi\377\35\40"\r
+ "'\377'.6\377\21\22\21\377\236\233\226\377\376\372\376\377\376\372\376\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376\372\376\377"\r
+ "\376\372\376\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\374\374\377\376\373"\r
+ "\375\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\274\266\260\377\1\1\1\377\1\1\1"\r
+ ")\0\0\0\0\0\0\0\0\0\0\0\0Ydi\377\37#)\377'/7\377\24\24\22\377\251\242\233"\r
+ "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+ "\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\373\375\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\274\270\266\377\1\1\1\377\1\1\1)\0\0\0\0\0\0\0\0\0\0\0\0Zdj\377\37#"\r
+ "+\377%*4\377\27\26\25\377\263\254\244\377\376\372\376\377\376\372\376\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\375\373\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+ "\372\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\374\374\377\376\376\372\377\376\376"\r
+ "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+ "\376\376\372\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\272\260\250\377\1\1\1\377\1\1\1"\r
+ ")\0\0\0\0\0\0\0\0\0\0\0\0Zdj\377\37#)\377',4\377\31\31\30\377\272\263\253"\r
+ "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376\377\376"\r
+ "\373\375\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376"\r
+ "\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\373\375\377\376\375\373\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\374\374\377\376\374\374"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\375\373\377\376\373\375\377\376\372\376"\r
+ "\377\263\251\245\377\1\1\1\377\36\36\37<\207\206\205\27\207\206\205\27\207"\r
+ "\206\205\27Zej\377\37$*\377*/7\377\30\27\25\377\257\250\237\377\376\372\376"\r
+ "\377\376\372\376\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+ "\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\373\375\377\376\374\374\377\376\374\374"\r
+ "\377\376\375\373\377\376\376\372\377\376\374\374\377\376\374\374\377\376"\r
+ "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\374\374"\r
+ "\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\227\224\224"\r
+ "\377\6\10\12\3778;@\377X[^\377X[^\377Y[^\377Yej\377\40$*\377,08\377\21\22"\r
+ "\23\377\235\231\225\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+ "\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+ "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373"\r
+ "\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+ "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\373\375"\r
+ "\377\376\373\375\377\376\373\375\377\376\374\374\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375"\r
+ "\377\376\375\373\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+ "\372\376\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\375\373\377\376\373\375\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377oi`\377\21\25\32\377&.6\377#)4\377\40&.\377\"&.\377Z"\r
+ "fl\377\37$+\377+19\377\22\30\40\377\202qj\377\375\366\370\377\376\372\376"\r
+ "\377\376\372\376\377\376\373\375\377\376\375\373\377\376\376\372\377\376"\r
+ "\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376\374\374"\r
+ "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+ "\374\374\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\373\375\377\376\374\374\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\375\372\372\377\376\372\375"\r
+ "\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376"\r
+ "\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+ "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+ "\372\376\377\376\372\376\377\342\335\334\377/.-\377\35$,\377*.6\377'.6\377"\r
+ "%)4\377\"&.\377Zek\377\40%,\377*08\377$)3\377\27\24\27\377\300\274\275\377"\r
+ "\373\367\371\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+ "\375\377\376\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\375\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\375\377"\r
+ "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+ "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+ "\376\373\374\377\376\373\372\377\376\372\374\377\375\370\366\377\374\367"\r
+ "\364\377\374\367\364\377\373\366\364\377\376\372\373\377\373\367\367\377"\r
+ "\375\371\372\377\376\372\376\377\376\373\366\377\374\370\362\377\374\367"\r
+ "\370\377\375\371\367\377\372\365\363\377\374\370\366\377\371\363\363\377"\r
+ "\370\363\362\377\370\363\362\377\371\364\364\377\370\363\362\377\370\363"\r
+ "\362\377\366\360\357\377\366\360\357\377\366\361\360\377\370\363\364\377"\r
+ "\370\363\364\377\371\364\364\377\365\360\357\377\366\361\362\377\367\362"\r
+ "\363\377\371\364\364\377\371\364\364\377\373\366\364\377\372\366\370\377"\r
+ "\373\365\364\377\375\370\370\377\376\372\375\377\375\370\371\377\375\372"\r
+ "\372\377\364\356\356\377\317\313\314\377PMC\377\26\32!\377&,5\377&-4\377"\r
+ "%+3\377%+3\377\"&.\377[hp\377!'/\377*.7\377*/7\377\36#(\377\33\32\32\377"\r
+ "mhd\377\261\255\252\377\271\264\260\377\272\266\261\377\272\266\264\377\271"\r
+ "\263\255\377\271\265\263\377\272\266\267\377\262\260\260\377\263\261\263"\r
+ "\377\264\262\265\377\262\257\260\377\255\246\234\377\242\233\227\377\221"\r
+ "\214\206\377\217\216\212\377\217\215\211\377\216\213\206\377\211\206{\377"\r
+ "\211\203\200\377\203\177|\377\203\177y\377\201\177~\377yvr\377zws\377}yq"\r
+ "\377}wq\377qmo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377"\r
+ "omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377onm\377omn\377om"\r
+ "o\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377"\r
+ "omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377om"\r
+ "o\377omo\377omo\377omo\377omo\377ooj\377ooh\377onk\377li^\377kg[\377jf[\377"\r
+ "hd[\377nnh\377ifa\377mjf\377omo\377onm\377lh_\377jgb\377lka\377gcX\377ki"\r
+ "^\377d_X\377c_V\377c_V\377eaZ\377c_V\377c_W\377_ZP\377_YP\377_ZS\377c_Z\377"\r
+ "b^Z\377e`Z\377\\XP\377^[W\377`]Y\377e`Z\377eaZ\377ie[\377fdb\377hc[\377l"\r
+ "jb\377onm\377ljd\377nmg\377ZVO\377\26\26\27\377\20\26\36\377!'0\377'-4\377"\r
+ "'-7\377'-5\377&+3\377\"&.\377Zej\377\37#)\377*.6\377*.8\377).8\377\"'/\377"\r
+ "\23\26\33\377\24\26\27\377\25\27\27\377\26\27\31\377\25\27\30\377\26\26\27"\r
+ "\377\24\26\27\377\25\27\31\377\24\25\27\377\24\25\30\377\24\26\30\377\24"\r
+ "\26\30\377\23\24\25\377\21\23\24\377\17\22\21\377\17\21\23\377\20\22\24\377"\r
+ "\17\21\22\377\17\21\21\377\20\21\23\377\16\20\21\377\16\20\20\377\16\20\21"\r
+ "\377\16\17\23\377\16\20\26\377\17\20\25\377\16\20\26\377\14\17\31\377\14"\r
+ "\17\27\377\14\17\25\377\14\16\23\377\14\16\30\377\15\20\32\377\14\17\33\377"\r
+ "\14\17\37\377\14\17\33\377\14\24\40\377\15\22\34\377\15\17\33\377\14\17\32"\r
+ "\377\15\20\32\377\14\16\30\377\14\17\27\377\14\17\31\377\15\17\34\377\13"\r
+ "\16\36\377\14\22\35\377\14\22\33\377\14\17\31\377\15\24\33\377\15\21\33\377"\r
+ "\14\17\30\377\14\16\25\377\15\24\36\377\15\21\31\377\14\23\34\377\14\22\33"\r
+ "\377\13\22\36\377\14\23\33\377\14\24\34\377\14\21\31\377\14\22\33\377\13"\r
+ "\23\35\377\16\27\40\377\14\24\35\377\13\23\36\377\17\26\36\377\15\25\37\377"\r
+ "\14\25\40\377\13\24\40\377\20\30!\377\21\31\"\377\20\31\"\377\21\34%\377"\r
+ "\23\33'\377\26\36*\377\24\35(\377\23\35&\377\27\37+\377\25\35)\377\24\35"\r
+ ")\377\21\33%\377\22\34%\377\23\34(\377\26\36*\377\24\36(\377\22\34&\377\23"\r
+ "\34'\377\22\34'\377\27\37+\377\30\40+\377\25\37*\377\27\40+\377\30\40+\377"\r
+ "\26\36*\377\32!*\377\30!+\377\27\37*\377\27\35'\377\25\36)\377\26\35&\377"\r
+ "\25\35*\377\26\35&\377\25\36)\377\26\35&\377\26\35&\377\23\33%\377\23\33"\r
+ "%\377\24\33#\377\20\31#\377\22\27\40\377\20\30!\377\21\32%\377\30\40*\377"\r
+ "\35$,\377\")1\377%*1\377%*1\377%+2\377%+4\377$*3\377\"&.\377Zdj\377\37#+"\r
+ "\377'.6\377',6\377(/6\377'.6\377(/7\377'-5\377&-3\377)-8\377&,5\377&,4\377"\r
+ "&,3\377&-5\377%,4\377'+4\377&-4\377'-5\377',5\377',6\377(.4\377&+5\377)."\r
+ "7\377&+5\377(.6\377'/7\377&.6\377)/6\377)/7\377*.7\377(/7\377).7\377).7\377"\r
+ ").6\377)/7\377(16\377)08\377)/8\377(/7\377*08\377).8\377).8\377(/7\377)-"\r
+ "7\377*.6\377(.7\377)/7\377(-5\377'-6\377'-5\377).7\377&-5\377'-4\377(-4\377"\r
+ "&.3\377&-5\377'+6\377',6\377(-5\377&-4\377'-5\377&-5\377%*1\377$)1\377&-"\r
+ "2\377&,5\377&,3\377%+3\377%*3\377%,4\377$)2\377%*4\377&,2\377)/6\377(.6\377"\r
+ "&+4\377&+6\377(-6\377%-5\377&/6\377)-6\377*08\377)/7\377)/6\377(.6\377*."\r
+ "7\377*/8\377&-3\377).6\377'.7\377).7\377)/7\377'.6\377'.7\377).7\377)-9\377"\r
+ ")/7\377).7\377(.7\377(,6\377).6\377(.6\377).6\377&-4\377'-5\377&-5\377%+"\r
+ "3\377&*6\377%,5\377&,5\377'-6\377'-6\377%,4\377%+2\377%*3\377$*2\377$+2\377"\r
+ "$+1\377%,2\377$)1\377$*1\377$*1\377$*1\377%+2\377#*2\377&+4\377\"'1\377\""\r
+ "&.\377Zel\377\36\")\377&-4\377(-5\377(.5\377(-5\377&-5\377(.6\377'.6\377"\r
+ "&+5\377(.5\377'.5\377'.4\377)/6\377'.6\377(.6\377'-6\377'.6\377',6\377)-"\r
+ "8\377&.6\377(-5\377&-6\377&-6\377'.6\377'.7\377'-7\377'.6\377).8\377).7\377"\r
+ ").8\377*/7\377*.8\377).8\377).8\377).8\377)/6\377*.7\377*07\377*.6\377)."\r
+ "6\377'.7\377).8\377).8\377*06\377)/7\377(.6\377'-6\377).6\377(.6\377&/5\377"\r
+ "(-5\377'.6\377'.6\377'-4\377%,4\377%*3\377%+1\377%*3\377%,2\377%+1\377$*"\r
+ "1\377$*2\377%,2\377%-2\377#(2\377$+2\377%,3\377$*1\377&,2\377%*3\377$*2\377"\r
+ "%-3\377&.4\377&-5\377&+4\377(.5\377',3\377).6\377).6\377'/6\377&,6\377&."\r
+ "6\377'-6\377)/7\377*/9\377).6\377).6\377&-6\377&.6\377&+6\377(,6\377',6\377"\r
+ "&-6\377).6\377*.6\377'/6\377&,6\377)/6\377'-6\377'.6\377&-5\377(,6\377(-"\r
+ "6\377',6\377).5\377',6\377%+4\377%+2\377%+3\377$+2\377%,3\377$)1\377$)1\377"\r
+ "$*1\377%*2\377%*1\377$)1\377$)1\377#*1\377\"*2\377%-2\377$+2\377#)3\377%"\r
+ "*2\377&*4\377%)3\377\"&.\377Ydi\377\34!'\377&-5\377&-4\377(+5\377&,4\377"\r
+ "'-5\377'.5\377&,2\377%*3\377$+3\377&.4\377(-5\377&.6\377&,5\377(.5\377&,"\r
+ "5\377&-5\377',6\377'-6\377).6\377&-5\377(-6\377'-6\377',6\377'.4\377)-6\377"\r
+ ").6\377).6\377*.7\377).6\377(/6\377(.7\377'.6\377(.7\377'.7\377)/6\377*."\r
+ "6\377*.6\377(.6\377'.6\377(.8\377)07\377'-7\377)-6\377'+7\377'-4\377&+5\377"\r
+ "(.6\377',4\377&.4\377&-4\377(-6\377',6\377(-6\377$+3\377&+4\377&,3\377$*"\r
+ "1\377%+1\377%-2\377%*3\377&,2\377&*2\377%+3\377%,4\377$*1\377%*2\377$*1\377"\r
+ "%*1\377$)0\377%*3\377&-3\377%+4\377&*5\377&,4\377&-5\377&,5\377'-4\377(-"\r
+ "6\377)/6\377&.6\377&.5\377'-6\377)/7\377'/7\377'.6\377'.6\377(-6\377).6\377"\r
+ "'-6\377&,4\377)-7\377(-6\377'.5\377).7\377'.6\377&-6\377&-5\377&-5\377&-"\r
+ "4\377&-5\377%,4\377&-6\377'.4\377',5\377$*4\377%,4\377%+2\377'+6\377%+2\377"\r
+ "$*1\377$*3\377&,4\377&+3\377%+2\377%*1\377$)3\377\")2\377\"(2\377#*1\377"\r
+ "#+2\377#)2\377$*2\377%,2\377%*3\377!'1\377\"&.\377Ydi\377\35!%\377%+2\377"\r
+ "$+2\377',6\377&+4\377$*3\377&-3\377&,3\377&+5\377%*2\377&*4\377',4\377&,"\r
+ "5\377&,5\377',5\377&-5\377&-6\377&+4\377&-4\377&-5\377'-6\377&,4\377,06\377"\r
+ "&,3\377&-3\377&-5\377'.6\377',6\377)-6\377',3\377(.5\377(.8\377).6\377)."\r
+ "6\377*.6\377(.7\377&.6\377&.6\377'-7\377'/7\377'.6\377(.6\377).6\377'.6\377"\r
+ "'.6\377'.4\377'-5\377)/5\377',5\377&-5\377&.5\377&-5\377%*2\377\"'.\377$"\r
+ "+3\377$,4\377&-4\377&,3\377%,3\377$)0\377\36!+\377\30\34&\377\30\32\"\377"\r
+ "\33\37$\377\31\36%\377\31\37&\377\34%0\377\")1\377#*3\377$)0\377$*1\377%"\r
+ "+1\377\"&/\377$)0\377&+3\377&+2\377&,3\377&-4\377&+6\377(07\377(.5\377'-"\r
+ "6\377(06\377)/7\377&.6\377&-6\377(.6\377(.6\377'.6\377&.5\377&-6\377&,6\377"\r
+ "(-6\377%,4\377(.6\377'-5\377&+5\377&-5\377&,6\377',4\377&-6\377&-5\377%,"\r
+ "4\377%,3\377&+3\377%*2\377$*1\377#*2\377$+2\377#(2\377#*2\377%*4\377%*2\377"\r
+ "$)0\377%*2\377$)3\377#)2\377$)1\377%+1\377$*1\377#)2\377$)1\377$*1\377$*"\r
+ "2\377$)3\377\"(1\377\"&.\377Ydi\377\35!%\377&-4\377%+3\377&,4\377$,3\377"\r
+ "&-6\377%+2\377$*2\377',3\377&-4\377%+3\377%+2\377&-6\377&+5\377'-5\377%,"\r
+ "4\377%+3\377&-4\377%-4\377$+2\377&+2\377$+2\377&+5\377&-6\377(.6\377&.6\377"\r
+ "&.6\377(.6\377'-6\377',6\377'.6\377&.6\377'.4\377',6\377'.6\377&-6\377&."\r
+ "6\377&.6\377).6\377'/6\377&.6\377'.6\377(.6\377'-4\377&-6\377&.5\377&.6\377"\r
+ "&.5\377&.4\377&+5\377'.5\377&-5\377$+3\377$,3\377%+2\377#)1\377!&.\377\26"\r
+ "\31#\377\21\23\24\377\24\25\30\377\40\"#\377,..\377.4,\377/4+\377.4-\377"\r
+ "'(\"\377\26\32\35\377\21\23\24\377\20\25\34\377\34\"*\377%)0\377%+1\377%"\r
+ "+1\377%*1\377%*1\377(/6\377'.6\377(.6\377&-6\377&.6\377'.6\377'.6\377&.6"\r
+ "\377(/6\377(.6\377&.6\377'.6\377&.6\377'.6\377'.5\377&.6\377&-6\377&+6\377"\r
+ "&.6\377&,6\377&.4\377&-5\377&.5\377&-4\377'-6\377$+3\377&,3\377%+2\377%+"\r
+ "4\377%+1\377&-5\377%*3\377%+3\377$,2\377$*1\377$*1\377\"*2\377#*2\377%+1"\r
+ "\377%+1\377%*1\377#*3\377#*3\377#(2\377#)2\377\"*2\377!)0\377$)1\377$*1\377"\r
+ "$*1\377!%/\377\"&.\377Ydi\377\36!'\377&-3\377',4\377&,4\377&,4\377&-4\377"\r
+ "%*3\377$*1\377&+5\377%*2\377%+2\377%*1\377&,4\377%*2\377&*4\377$+2\377%+"\r
+ "3\377%,4\377$*2\377%+2\377$,2\377&,3\377%+2\377&-4\377&,4\377&-5\377'-6\377"\r
+ "&.6\377(-6\377(,5\377',6\377'-6\377'.6\377&,6\377&-4\377'.5\377(.6\377(-"\r
+ "6\377'.6\377(.6\377&.6\377(.6\377(-5\377',4\377&,6\377).6\377)/6\377&,5\377"\r
+ "&-6\377&-4\377#(0\377%*3\377&+4\377&+4\377\31\35#\377\21\20\26\377\37#\37"\r
+ "\377::3\377PTG\377[XP\377\\XM\377]XJ\377ZWK\377^XJ\377YWK\377]XJ\377ZXN\377"\r
+ "VTH\377CC;\377**(\377\25\26\31\377\24\27\33\377$*2\377$,3\377%,2\377#(/\377"\r
+ "#)0\377(,4\377',4\377'.5\377).6\377',6\377'-4\377'.6\377&.6\377'-6\377&-"\r
+ "6\377&-6\377'-6\377(-6\377(.6\377&-4\377'.6\377'-6\377$+3\377%,2\377%+3\377"\r
+ "&-6\377&+6\377'-5\377(.5\377'-6\377&+4\377&-4\377%*2\377%*3\377#+2\377%*"\r
+ "3\377%*3\377%*1\377$*1\377#*2\377$*3\377$*4\377$+2\377$)1\377$+2\377#*3\377"\r
+ "#)2\377#(2\377#)2\377$(0\377$)1\377$*2\377%-2\377\"(1\377\"&.\377Zek\377"\r
+ "\35\"(\377&-3\377&-4\377&+5\377%+3\377%,3\377%+2\377%-4\377&,4\377%*2\377"\r
+ "&,3\377&*5\377&+4\377$*3\377&*5\377$*2\377$*1\377%+2\377#*2\377$*2\377&-"\r
+ "4\377&.4\377%*3\377&,5\377&-5\377&+6\377%,4\377&,5\377&-4\377&-3\377&-6\377"\r
+ ").6\377',6\377'.6\377'.6\377(.6\377&.6\377&-6\377&,5\377&,5\377&,6\377&."\r
+ "6\377(.6\377'-4\377&+6\377&,4\377&.6\377&-4\377(.6\377*/7\377'+4\377&,3\377"\r
+ "\35$,\377\20\25\31\377()'\377KJB\377TUG\377URF\377RQG\377ROE\377QOE\377Q"\r
+ "NE\377RNE\377RNE\377QNE\377QNE\377OOF\377QOF\377RQH\377XTH\377RQI\377:90"\r
+ "\377\23\25\30\377\33\40%\377%*3\377&+2\377&.4\377&,5\377&-5\377).6\377(-"\r
+ "6\377',6\377'.6\377*/6\377&.6\377(-6\377&.6\377&.6\377'.6\377&.6\377&-6\377"\r
+ "&-6\377(-7\377&-6\377'-6\377',3\377&-6\377%*4\377&,5\377&*4\377&,4\377$+"\r
+ "3\377%+2\377%+1\377%*2\377%*2\377#*2\377$*2\377$*2\377$(0\377%*1\377#)3\377"\r
+ "$)3\377#*2\377$)2\377%*1\377%*2\377\")2\377#)3\377$+3\377#)1\377#'/\377\""\r
+ "'1\377#(0\377$+2\377!(0\377\"&.\377Yej\377\36\")\377&+3\377&+5\377%+3\377"\r
+ "%+2\377$*3\377&,4\377%,2\377%*3\377&*4\377%*1\377%*2\377&+3\377%*3\377%*"\r
+ "2\377%+3\377%,2\377%,3\377%*4\377$+4\377%+4\377&-3\377%*4\377&*4\377%-5\377"\r
+ "%,4\377%+5\377%,3\377%*4\377'-4\377$,4\377&-6\377',6\377'-6\377'-4\377'."\r
+ "5\377'.5\377&,4\377%*5\377%-5\377'-6\377(.6\377'-7\377&,6\377&,6\377'-6\377"\r
+ "&,6\377%+3\377&-3\377&-5\377&,4\377\30\34\"\377\34\40\37\377AE9\377WVI\377"\r
+ "SQF\377ROE\377ROE\377POF\377RPF\377SPG\377RSI\377QPG\377QPG\377RQH\377SP"\r
+ "G\377QOE\377ONE\377ONF\377RNE\377OOF\377XVI\377SRD\377++%\377\15\26\35\377"\r
+ "%*4\377(.6\377%,5\377$,4\377'+4\377&-6\377).6\377(-7\377(.6\377&.6\377&."\r
+ "6\377&.6\377&.5\377'.6\377&.5\377&-6\377&,4\377&,4\377&+4\377%+5\377%*4\377"\r
+ "%*5\377%*5\377&*6\377&+6\377&*6\377',4\377%+3\377$+2\377\"*2\377#)3\377#"\r
+ "*2\377$*2\377\"*2\377$*1\377$+2\377%+3\377&,5\377$*3\377$*1\377$*3\377$*"\r
+ "2\377#*2\377\")1\377%+1\377$)0\377%*3\377$*3\377%*2\377&,3\377\35#,\377\""\r
+ "&.\377Zek\377\34\")\377&-2\377%+2\377%,2\377$+2\377%+3\377&-6\377%+3\377"\r
+ "%,2\377%+1\377%*1\377%*1\377%+2\377%,3\377#*2\377#)2\377#*2\377$+2\377%*"\r
+ "2\377%,2\377%+4\377#*2\377%,2\377$*1\377$+2\377%+2\377%+2\377%+2\377$*2\377"\r
+ "&,4\377%*4\377&+4\377(-5\377'-5\377&-5\377&,5\377&.4\377%+3\377&-6\377&+"\r
+ "6\377&,4\377&+6\377&+6\377&+6\377(,6\377&.4\377&+5\377%-3\377&-4\377\")1"\r
+ "\377\27\32\37\377'+%\377WUG\377WWI\377ROE\377ROE\377ROE\377SPF\377YUM\377"\r
+ "TTF\377LLA\377FG@\377DD:\377CC:\377IIA\377LLI\377VTI\377a\\M\377YXO\377R"\r
+ "QI\377QME\377ONF\377RPF\377VTF\377>?4\377\27\31\31\377\37'.\377%+5\377&,"\r
+ "6\377(-6\377&.6\377&-6\377',6\377'.6\377&.6\377&.6\377&,5\377&-4\377%,4\377"\r
+ "&-6\377&-6\377%*3\377&,5\377&,5\377&+5\377%+4\377&,5\377$*2\377&*3\377%*"\r
+ "4\377%*2\377%*3\377&+4\377&+5\377%,2\377$*2\377$*3\377#*2\377$*1\377#)2\377"\r
+ "#+2\377\")1\377\"*2\377\")2\377#(0\377%*2\377$*2\377$*3\377\")1\377$*1\377"\r
+ "$)0\377#)2\377$*1\377%,2\377\"*2\377\"'/\377\"&.\377Zek\377\34\")\377%+1"\r
+ "\377',3\377',3\377&,2\377%*1\377&-5\377$*2\377%+2\377%*1\377#)2\377#*2\377"\r
+ "#*2\377#*2\377#*2\377#'1\377%*2\377$+2\377$*2\377$*1\377&-4\377%+3\377$*"\r
+ "3\377%*3\377%+3\377%*2\377%-5\377&-3\377&,5\377&+4\377%)5\377&+3\377%+2\377"\r
+ "$*1\377&-4\377'-5\377&,3\377%*3\377'.4\377&-4\377'-6\377&+6\377&-6\377&+"\r
+ "5\377',5\377&-6\377&+5\377%+4\377&-4\377\20\24\31\37711+\377WVH\377ROF\377"\r
+ "QOF\377RQF\377PPF\377KK@\377FE;\377BB8\377;>4\377;;2\377::0\377::0\377;:"\r
+ "0\377=<2\377>>6\377BA8\377FE=\377SQL\377]YT\377ZXR\377ONE\377POF\377QOF\377"\r
+ "USG\377EE;\377\25\27\27\377&*3\377'-7\377&,6\377$*4\377'/6\377&.6\377&-6"\r
+ "\377&.6\377&-6\377&,4\377&,5\377%*5\377&*4\377&-5\377&,5\377&+4\377'.4\377"\r
+ "'+4\377$+3\377#*2\377#*3\377&*2\377%*4\377$)1\377\")2\377$*1\377$*3\377$"\r
+ ")3\377$)1\377$*2\377\"*2\377#*2\377#)1\377\")1\377!(0\377\"*1\377#)1\377"\r
+ "#(2\377$+3\377#)2\377#*2\377$*1\377#*2\377$*1\377%*3\377%*3\377\"*2\377\""\r
+ "(2\377\36$-\377\"&.\377Zek\377\34\")\377&+3\377&,2\377%*1\377&+3\377&,4\377"\r
+ "$+2\377&,3\377%*2\377$*1\377%)3\377%*2\377$*3\377%,2\377%,2\377%*3\377$*"\r
+ "1\377%*1\377%*1\377$)0\377#)0\377%,3\377%,4\377$*2\377$*2\377%)3\377$*2\377"\r
+ "%+3\377%+3\377%*2\377%,4\377#+3\377%-4\377%*1\377&-2\377%,3\377&+3\377&,"\r
+ "4\377&,4\377&-5\377&.6\377'-5\377&-4\377&+5\377)-6\377'.6\377'-5\377&.7\377"\r
+ "\30\32\40\37797+\377VTF\377QOF\377RQF\377QPE\377II@\377CC:\377;<2\377;;1"\r
+ "\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8.\377:9.\377:8-\377"\r
+ "::0\377880\377KJ@\377\\ZT\377WXO\377NOF\377OOF\377SSG\377II>\377\30\31\30"\r
+ "\377%*3\377'-6\377'-6\377&-5\377&,5\377&-6\377'.7\377'.7\377%-5\377&-5\377"\r
+ "&+4\377&-4\377&,3\377$+3\377&-6\377$+4\377%*3\377%,4\377$*3\377$+4\377#*"\r
+ "2\377\"*2\377#)3\377#*3\377#*2\377$*2\377#*2\377#(2\377#+1\377$*1\377\"*"\r
+ "2\377$*1\377$(1\377#)1\377$+2\377$)1\377#*1\377#)1\377#*2\377%*2\377\"*2"\r
+ "\377#*2\377$*1\377%*4\377#'1\377\")1\377#)2\377\"&.\377\"&.\377Zeo\377\35"\r
+ "\"+\377$*1\377%*1\377$*1\377$+3\377%,3\377%+2\377%+2\377%*2\377#(2\377#)"\r
+ "2\377%+1\377%+1\377%*2\377%*2\377$(1\377%*1\377$*1\377%*2\377$*3\377$*1\377"\r
+ "$+1\377$*2\377$,2\377&*4\377%+4\377%)3\377%+2\377%*1\377%*2\377$)2\377&+"\r
+ "4\377%+2\377&,4\377$,3\377%-4\377%,3\377%,4\377&,4\377&-5\377&-4\377&,5\377"\r
+ "&-3\377',4\377#(1\377&-5\377&,5\377\31!)\377,+%\377SQG\377QPF\377RPF\377"\r
+ "PPD\377EF;\377==3\377<;0\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8"\r
+ "-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\37798.\37788/\377<=3\377XXR\377"\r
+ "[ZS\377PND\377QOE\377WTJ\377EB3\377\24\31\33\377'-8\377&-6\377&+6\377(-6"\r
+ "\377'-6\377'.5\377&,5\377%+5\377&-5\377',4\377%*5\377&+6\377&,5\377%+5\377"\r
+ "#*3\377#*3\377$*3\377$*4\377$,3\377%+3\377$*1\377$)4\377\"*2\377\"(0\377"\r
+ "#)2\377$*2\377$*2\377\")1\377\"'2\377\")0\377#*2\377$*1\377#)2\377$+3\377"\r
+ "\"(2\377$*1\377%)2\377%*2\377%,2\377$*1\377#*2\377\")2\377#)3\377$*3\377"\r
+ "!(0\377$*1\377$(/\377\"&.\377Zel\377\35!)\377$+1\377%,4\377&-4\377$,2\377"\r
+ "%+2\377$+3\377$,4\377&,3\377%+1\377%*1\377#(0\377%+2\377$+3\377%,5\377%)"\r
+ "2\377$)0\377$+2\377\"*2\377#(0\377#*1\377$*0\377$)0\377$*1\377#*2\377$)4"\r
+ "\377&+4\377#+2\377&-2\377%*1\377#(2\377%*2\377&*4\377%*1\377%*4\377&-3\377"\r
+ "&-4\377&+6\377%*3\377$*2\377$+2\377&+4\377&-5\377%,3\377%+2\377%+3\377\40"\r
+ "%.\377%%\40\377RQD\377OOF\377QPF\377PPD\377CC9\377;;2\377:8-\377:8-\377:"\r
+ "8-\377:8-\274:8-\247:8-\35:8-\3:8-\3:8-\3:8-\3:8-\3:8-K:8-\247:8-\247:8-"\r
+ "\364:8-\377:8-\377:8-\37777.\377KK?\377`]X\377PQG\377POF\377XWH\37700&\377"\r
+ "\33\40(\377*/9\377).7\377'+7\377%,5\377&.6\377&,6\377%,5\377$*3\377&,5\377"\r
+ "&-3\377$)0\377%+3\377%*3\377%*3\377#(3\377$*1\377%,3\377$+3\377#*2\377#'"\r
+ "0\377$*1\377\"*2\377#)2\377\"*2\377\")2\377\"(2\377#)2\377\")1\377\"(1\377"\r
+ "#(1\377$*1\377#*2\377\"'2\377$)3\377$+3\377$*4\377%*2\377#*2\377$*2\377$"\r
+ "*2\377$)4\377'+4\377%+1\377&*3\377%*2\377!&-\377\"&.\377Zem\377\35\37*\377"\r
+ "%+1\377%*2\377%*3\377%+2\377&-4\377%+3\377%(1\377$*2\377&,2\377&+3\377$,"\r
+ "2\377#+3\377#)0\377%*1\377$*2\377\")1\377#)1\377#*2\377#)2\377%+2\377&-4"\r
+ "\377$)1\377#*1\377#*2\377#)3\377%+5\377$+2\377%+1\377%,4\377$*4\377%,2\377"\r
+ "$*1\377#*2\377#)2\377$*1\377%*2\377%*3\377&+3\377#)2\377$*3\377&,4\377%*"\r
+ "3\377%+3\377$+2\377$*3\377\27\31\40\377LM?\377PPF\377PPF\377QQG\377DD:\377"\r
+ ";<2\377:8.\377:8-\377:8-\366:8-\260:8-\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-D:8-\260:8-\366:8-\377"\r
+ "98.\37799.\377QOE\377^]X\377PPF\377PPF\377OPB\377\34\35\31\377\37%,\377'"\r
+ ",6\377%*4\377$*3\377&,6\377&,6\377$*3\377%*2\377$*2\377%+4\377%*3\377#*2"\r
+ "\377$*2\377$*3\377$)1\377$*1\377#*2\377#)2\377#(2\377#(1\377\")2\377\"'2"\r
+ "\377\"&/\377\40'2\377#)2\377\"(0\377!(0\377$)1\377#)2\377$(2\377$*2\377\""\r
+ "(2\377\")2\377\"(2\377#)1\377$*2\377$*1\377#*2\377%*3\377&+5\377\"*2\377"\r
+ "$)2\377%+1\377%*2\377%*2\377#)0\377\"&.\377Zen\377\34\40+\377%+1\377&,3\377"\r
+ "%,3\377&,2\377',3\377%*1\377$*1\377$)1\377%,2\377'+3\377$*1\377\")1\377#"\r
+ "*2\377%-2\377#)2\377$*1\377#*2\377#*2\377$+1\377#*1\377#)1\377$,2\377$*1"\r
+ "\377%*3\377$)2\377#*2\377$,2\377%+3\377&,4\377%+2\377$+1\377$)2\377$+3\377"\r
+ "#*2\377$*2\377$,2\377#*2\377&*4\377%*3\377#*3\377%,3\377\")1\377%-2\377$"\r
+ "*1\377\36!(\377--'\377SSE\377RPF\377QPF\377GG>\377;;2\377:8-\377:8-\377:"\r
+ "8-\336:8-1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-1:8-\336:8-\377:8-\377"\r
+ "76*\377TTM\377ZXO\377QNE\377QPF\377??2\377\35\37!\377&,8\377&-3\377&,4\377"\r
+ "&-6\377&-5\377&.3\377#+2\377%*4\377#*2\377$*2\377%*3\377%+4\377#)2\377#)"\r
+ "2\377#)2\377#*2\377#)2\377\")1\377!(0\377#)2\377#+3\377\"(1\377\")1\377\""\r
+ ")1\377#(0\377!'/\377\"(1\377#(1\377#(1\377%)1\377$*1\377\"(2\377$)4\377#"\r
+ "*2\377$*1\377\"*2\377\"*2\377$*4\377%,3\377\")1\377%*4\377%+3\377$*3\377"\r
+ "$)1\377!%,\377\"&.\377Zen\377\34\40+\377&,2\377&-2\377%+2\377%,2\377%+3\377"\r
+ "%,3\377$*2\377$*1\377$*1\377$)0\377%*1\377#*2\377$)1\377$*1\377$(4\377#)"\r
+ "2\377#*2\377%(0\377%*3\377$)1\377$(3\377$*2\377#*2\377$)0\377\")1\377\"*"\r
+ "2\377\"*2\377$)2\377%*1\377$(1\377$*1\377$*1\377#*2\377$*1\377$*2\377$*2"\r
+ "\377%*3\377%*2\377%,3\377%,2\377%+1\377$*1\377$+2\377$+3\377\40\"!\377HH"\r
+ "?\377RPF\377SOE\377LKA\377<;1\377:8.\377:8-\377:8-\356:8-1\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-1:8-\356:8-\37798.\377::2\377"\r
+ "TPE\377SQF\377RNE\377UTK\377'&%\377!)2\377&-5\377$*4\377#*2\377$*2\377&+"\r
+ "5\377%*5\377$*2\377$*4\377$+2\377#*2\377$*1\377\"*1\377\"*1\377\"(1\377\""\r
+ "'1\377\"(2\377\"'1\377\")2\377#)1\377#(0\377\")1\377\"(2\377\"*2\377$*1\377"\r
+ "!'/\377#)1\377\")2\377#)1\377\"*2\377$*2\377#)2\377\"'1\377$)1\377$(0\377"\r
+ "\"'0\377\"'2\377#*3\377$*3\377#*3\377&*5\377%,4\377$*4\377#(2\377!'/\377"\r
+ "\"&.\377Zfo\377\36\",\377'-4\377%*2\377%+2\377&,3\377&,2\377%*1\377%+3\377"\r
+ "%,3\377%+2\377%+2\377&,2\377%,4\377%*1\377#*2\377$*3\377$*1\377#(1\377$*"\r
+ "2\377#)2\377$*1\377#)2\377$)1\377#(2\377%)1\377\"*2\377#*2\377$*2\377$*2"\r
+ "\377\")2\377$*1\377#(0\377#)1\377%*3\377$*1\377$*1\377$*1\377$*1\377$*1\377"\r
+ "#*2\377$,3\377%+2\377&-4\377&+5\377\37&.\377..#\377QPE\377POF\377ZXL\377"\r
+ "A@6\377:8-\377:8-\377:8-\343:8-7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-7:8-\343:8-\37755)\377ED;\377URI\377Q"\r
+ "OF\377OOF\377DD;\377\33\36'\377&,6\377!*1\377#)1\377%*2\377$*3\377\"*2\377"\r
+ "%+3\377$)0\377$*1\377$*3\377#)2\377!)1\377#(2\377\"(2\377\"(2\377$*1\377"\r
+ "#)0\377\"*2\377\"'/\377#)1\377\"'/\377\"(0\377!(1\377\"(0\377\")2\377$)1"\r
+ "\377%,3\377#)2\377#*2\377\"*2\377\"(1\377\"'/\377\")2\377\")2\377\")2\377"\r
+ "\"(2\377$)2\377%+3\377$+3\377#)3\377$*2\377$*2\377%*4\377#(/\377\"&.\377"\r
+ "Zfm\377\34!*\377',3\377&-4\377%-3\377%*1\377%,1\377%-4\377$+2\377%*1\377"\r
+ "%,3\377$*2\377$*1\377%+2\377%*2\377&*4\377%*2\377',4\377\"*2\377%-2\377%"\r
+ "*1\377#(0\377#)2\377#*1\377$)3\377%)1\377#(/\377#*2\377#*2\377#)1\377$+2"\r
+ "\377#(2\377$*1\377#*1\377$)2\377#*2\377%*1\377%*1\377$*1\377$*1\377%,2\377"\r
+ "&,5\377%+2\377%+2\377'-8\377\31!(\377?@5\377RPE\377PRH\377KLE\377:8.\377"\r
+ ":8-\377:8-\377:8-<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0nxx\246:8-\37787,\37767.\377OKB\377ROF"\r
+ "\377QPF\377HG=\377\40%&\377\"(0\377#)1\377#(2\377$*2\377\"*2\377\"(2\377"\r
+ "*/6\377&*1\377#*2\377#(2\377$)0\377\"(2\377\")2\377\"(0\377$*1\377\"'2\377"\r
+ "\"'0\377#*1\377\"(1\377\"'0\377\"'/\377\"'/\377\"'/\377\"&0\377\"'1\377\""\r
+ ")1\377$*2\377$*1\377\"(0\377\")2\377$)2\377$(0\377\"'/\377#*2\377#(2\377"\r
+ "#*2\377$*1\377#*2\377#*2\377#*2\377$+3\377%*4\377#*2\377$)0\377\"&.\377Z"\r
+ "gp\377\35\"-\377&,3\377%,1\377%+1\377&+3\377%,1\377#*2\377$+2\377&*1\377"\r
+ "&+3\377$*2\377#)1\377&+4\377&+2\377%+2\377$*1\377&+4\377#*2\377%-2\377$*"\r
+ "1\377%*1\377#(2\377$)1\377$)1\377#(1\377\"'0\377#*2\377#*1\377\"(1\377$*"\r
+ "1\377#*2\377%+3\377%)2\377&*4\377%+1\377$+3\377$*2\377$*1\377%*1\377%+3\377"\r
+ "'-5\377&*5\377#*2\377\"(0\377\36\"#\377OPA\377OOF\377NOG\377>=5\377:8-\377"\r
+ ":8-\377:8-\271:8-\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-\17:8-\27197,\37766,\377IH=\377VU"\r
+ "K\377QOE\377OMC\377$&\"\377\40&/\377$+2\377%+4\377%*1\377#)2\377#)2\377\""\r
+ "(1\377\"*1\377#)1\377#'0\377$+2\377#(1\377\"&0\377#'0\377\"(1\377#(2\377"\r
+ "#(1\377\"'1\377\"&/\377\"&/\377\"'0\377!(0\377#(0\377\"&0\377\"'0\377\"("\r
+ "1\377$)1\377\"(1\377\"'0\377\"(2\377#(2\377$)1\377#(1\377#)3\377\")1\377"\r
+ "$*1\377$*1\377%*1\377#*3\377#*2\377#*2\377%*3\377&,4\377%)2\377\"&.\377Z"\r
+ "el\377\34!)\377&-3\377&-2\377',3\377%*2\377#*2\377%+3\377%+1\377%*1\377$"\r
+ ",3\377%*3\377%+1\377%*2\377&*4\377%*2\377&+4\377%+2\377$*1\377%+1\377$+2"\r
+ "\377%*2\377$)3\377$)1\377$+3\377\")1\377$+4\377\"*1\377\"*2\377#*3\377#*"\r
+ "1\377$)1\377\")2\377#)2\377$*2\377%*3\377$*1\377#(2\377%*1\377$*1\377#*2"\r
+ "\377$)0\377$*0\377$*1\377\")0\377021\377RPC\377OOF\377KNE\377;:0\377:8-\377"\r
+ ":8-\366:8-^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\214\220^CC:\36665)\377<=7\377"\r
+ "WYR\377ONF\377QOE\3770/)\377\37%+\377\"(1\377\")1\377\40&.\377#(1\377#)1"\r
+ "\377#(0\377#)1\377#(0\377\"'0\377#'0\377\"'0\377\"&1\377\"'/\377\"&1\377"\r
+ "\"'1\377\"&/\377\"'0\377$)1\377\"'1\377#)1\377\"'1\377\"'/\377\"&1\377\""\r
+ "&0\377\"'/\377\"'2\377\"(2\377$*2\377#)1\377!(1\377!'1\377\")2\377\"*2\377"\r
+ "\")1\377\")2\377#*2\377$*1\377%*2\377$*1\377%*1\377%+1\377%*4\377!%.\377"\r
+ "\"&.\377Ydi\377\34!&\377%,3\377',3\377%+1\377%*1\377#)2\377&+2\377&+2\377"\r
+ "#)2\377%+1\377$*1\377$-0\377#*2\377#)2\377#(2\377'-5\377&,4\377%*1\377%*"\r
+ "1\377$*1\377%*1\377$*2\377$(1\377#)1\377#)1\377$*3\377\40'0\377!(/\377$)"\r
+ "1\377$)1\377#(1\377$+2\377%*1\377$)0\377$*1\377%*1\377%*1\377%*1\377$*1\377"\r
+ "\")2\377$+3\377$+2\377$*3\377\40$,\37712.\377QPE\377OOF\377AA9\37798.\377"\r
+ ":8-\377:8-\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^eb\326:8-"\r
+ "\37777.\377UUQ\377NNF\377QNE\377;;.\377\34\")\377\"'0\377\")2\377!(0\377"\r
+ "\"'0\377\")1\377\"*2\377#(0\377#(0\377#*1\377#(/\377\")2\377\"'1\377#)1\377"\r
+ "\"'0\377\"'1\377!&.\377!%.\377#)2\377\"(1\377\"(1\377\")2\377#(2\377\"&/"\r
+ "\377\"&2\377\"(0\377\")1\377\"'/\377\")1\377\"'0\377!&/\377#)2\377\"(2\377"\r
+ "$*2\377\"(1\377#(2\377%*2\377$*2\377%*1\377$*2\377$*1\377%+1\377#*2\377\40"\r
+ "&-\377\"&.\377Zek\377\34\40'\377&-3\377&+2\377%*2\377%+1\377$*1\377$*2\377"\r
+ "%*2\377#*2\377%*1\377%+2\377$*1\377%+1\377%*1\377$*1\377$)1\377%+4\377&,"\r
+ "5\377&-3\377#(0\377%*1\377%*1\377$*1\377%*1\377\")2\377#)2\377$'0\377$)1"\r
+ "\377%+1\377$)1\377#*2\377%*1\377#(2\377#(1\377#)1\377%*1\377$*1\377%,1\377"\r
+ "%*1\377#*2\377&,3\377%*3\377%*3\377\"&/\377<<3\377RQE\377NMD\377DE<\377>"\r
+ "=3\377:8-\377:8-=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r}\177\246"\r
+ ":8-\37798-\377EEA\377OOF\377PNE\377A@3\377\35\"(\377!&0\377#)1\377#)1\377"\r
+ "\"&/\377\40&/\377\"(0\377\")2\377\"(0\377#'/\377\"&/\377$)1\377\40(/\377"\r
+ "\"&/\377\"(0\377!'0\377\")1\377\"(2\377\"'/\377#(0\377#'/\377!'/\377\"(2"\r
+ "\377\"&/\377\"'0\377\"(2\377#)1\377\37&.\377!%/\377\"(0\377\"(0\377#(0\377"\r
+ "%*1\377$*1\377#)2\377\"(2\377\")2\377#)1\377$+2\377%+2\377$*3\377$*4\377"\r
+ "#)2\377#'/\377\"&.\377Zdj\377\35!(\377%+1\377%+2\377%*2\377%-3\377#*2\377"\r
+ "%*2\377%*2\377#*2\377$*1\377$)1\377\"*2\377#+2\377%*2\377%*2\377%*1\377$"\r
+ "*1\377%)1\377&+2\377$)0\377$(0\377$*1\377$)1\377$)1\377$*1\377$*1\377#)2"\r
+ "\377#*2\377#*2\377\"(1\377$)0\377%*1\377$*1\377$)1\377\"(1\377$)1\377#(0"\r
+ "\377#)2\377$)1\377#)2\377&,2\377&,4\377$*1\377\"(/\377A?6\377RRF\377LL@\377"\r
+ "==4\377:9.\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "nyy3QTO\37797-\377@A<\377PQF\377ONF\377GE;\377\30\40'\377\40&.\377\"(2\377"\r
+ "$)1\377\"(1\377\"(1\377\"(1\377#(1\377#(0\377#)0\377\"&.\377\")1\377!'/\377"\r
+ "\"'0\377\"'0\377\"&.\377#'/\377\"'/\377\"&.\377#'0\377\"&/\377\"&/\377\""\r
+ "'1\377\"'/\377\"(0\377#(1\377!(0\377!)1\377\"'0\377#'/\377$*1\377\"'/\377"\r
+ "$)1\377\"'2\377!'1\377!'1\377\")2\377\"(2\377#(3\377$*2\377\"*2\377#*2\377"\r
+ "%+2\377!'/\377\"&.\377Ydi\377\34\37'\377%*1\377%+1\377%*1\377&,2\377$*3\377"\r
+ "%-2\377#(3\377$*1\377$+3\377$)0\377$*1\377%)2\377%*3\377#*2\377$(1\377%+"\r
+ "4\377$*1\377%*2\377%+3\377%*1\377$+2\377$+2\377%*1\377\"(1\377#'1\377$*1"\r
+ "\377#(0\377\")1\377$*1\377%,2\377$)2\377$)0\377$)1\377$*1\377$)0\377\"'1"\r
+ "\377#)2\377#(0\377%*1\377\"(0\377$)1\377#(3\377\37&1\377CC;\377RRF\377JJ"\r
+ "?\377891\37787-\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\213\234\2433^da\377:8-\377BB7\377NPF\377PNE\377KJ@\377\37$*\377#)"\r
+ "0\377#(1\377\40&.\377\")1\377#(0\377\"&/\377\"(0\377\")0\377\"&/\377\"&/"\r
+ "\377\")1\377\"'1\377#)1\377#(0\377#'/\377\"(0\377\"'/\377\"&/\377\"(0\377"\r
+ "\"&.\377\"&1\377#'/\377#(0\377!&0\377#(0\377\"&.\377$)0\377\")1\377\"(0\377"\r
+ "!'/\377!&/\377\"&0\377\"&/\377\"*1\377\"*2\377#(2\377$+2\377\"(2\377\"(2"\r
+ "\377#*2\377$*1\377#*2\377#)1\377\"&.\377Ydi\377\36\40(\377&+5\377&-4\377"\r
+ "%*1\377%*1\377%*1\377$+2\377#*3\377%*2\377&+3\377$+2\377$*3\377#)1\377%*"\r
+ "1\377$*1\377%+1\377$*1\377$*1\377%*1\377$,2\377$*1\377$+2\377%*1\377$*2\377"\r
+ "\"(0\377#)1\377%*1\377%*1\377$)1\377#*1\377%*1\377#)2\377$)0\377#'1\377#"\r
+ "*2\377$*1\377$)1\377$)1\377$+1\377$)0\377$(0\377%*1\377$+2\377\34\".\377"\r
+ "=>7\377RRE\377JJ?\37799/\37787+\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\213\234\2433^da\377:8-\377BB:\377PPF\377NNF\377HH"\r
+ "<\377\32\"+\377\37&-\377\"&/\377!&0\377\"'/\377$)0\377\")2\377#)0\377!'/"\r
+ "\377\"'0\377#'/\377\"'/\377\"'1\377#'0\377\"'/\377\"(0\377\"'1\377\"'2\377"\r
+ "\"&/\377\"&.\377\"&0\377\"&/\377#)1\377\"'/\377!'/\377\"&/\377\"'1\377\""\r
+ "'1\377\"'/\377$(0\377\"'/\377!'0\377\"'/\377\"(0\377\"(2\377\"'0\377\"(0"\r
+ "\377\"'1\377\"(2\377\"'2\377\"'/\377$*1\377$*1\377\40$.\377\"&.\377Zdj\377"\r
+ "\35!(\377&+4\377$+2\377'+5\377&+3\377%*1\377%+3\377$+2\377$*2\377$+2\377"\r
+ "%+1\377%*2\377%+4\377%-3\377#*3\377$)1\377%*1\377%*1\377%*1\377%*1\377%*"\r
+ "2\377&+3\377$)0\377$+2\377$(0\377#)1\377'-3\377%+2\377%*1\377$*1\377#)2\377"\r
+ "%)3\377$)0\377#)2\377#)1\377$)1\377%*2\377\"'1\377#'0\377%+1\377%*2\377%"\r
+ "*1\377#)2\377!(2\377=>9\377RPE\377LK?\377=<3\377:8-\377:8-\377:8-3\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\2433^da\377:8-\377DE>"\r
+ "\377PQH\377PNF\377FF9\377\27\37&\377\35#*\377\")1\377\40&0\377\32\35(\377"\r
+ "\36%.\377#*2\377#(0\377#'0\377&)1\377$)0\377\40&0\377#(2\377\"&.\377\37&"\r
+ "-\377\"'0\377#+3\377\"&/\377!&0\377\"(0\377!&.\377\"&1\377\"&/\377\"(0\377"\r
+ "#'/\377#'0\377!'.\377#'/\377\"&/\377\"'/\377!&/\377\"(0\377#)1\377\"(0\377"\r
+ "\")2\377#(1\377#+2\377#*2\377\"&0\377\"&1\377\"'1\377\")2\377#)1\377$)0\377"\r
+ "\"&.\377Ydi\377\35!'\377%+1\377%*2\377%+4\377&+2\377%*1\377#*3\377$,2\377"\r
+ "%*3\377$+2\377%,2\377%*1\377$+2\377$+2\377#*2\377#)1\377%*1\377$)1\377%*"\r
+ "1\377$*2\377\"'0\377$)2\377$)1\377%*1\377#*2\377#*2\377$+2\377%*1\377$(0"\r
+ "\377$)0\377#(0\377\"(0\377\40(/\377!'/\377\"'1\377#(0\377#(1\377#(1\377#"\r
+ "'0\377$(1\377%+2\377%*1\377$)2\377#*2\377EC>\377RRC\377LL@\377::1\37797,"\r
+ "\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243"\r
+ "3^da\377:8-\377BB<\377OOF\377ROE\377EC8\377\32!)\377!'-\377\26\33!\377\23"\r
+ "\24\25\377\30\27\27\377\22\24\24\377\27\32\"\377#(0\377!&/\377&,2\377#*0"\r
+ "\377!(0\377!&/\377\"&.\377!&0\377\37&.\377\"'/\377\"'/\377!'/\377%*2\377"\r
+ "\"&1\377\"&2\377\"&/\377\40&.\377\"&.\377$(0\377!'.\377\"'/\377\40&/\377"\r
+ "\"'/\377\37'.\377\"'/\377\"'.\377#'/\377\"'/\377\"&.\377\36%-\377\"'1\377"\r
+ "#)1\377\"'0\377!&/\377\")1\377\"&0\377!&.\377\"&.\377Ydi\377\32\35%\377#"\r
+ "*2\377%*1\377%,3\377%*1\377$*1\377#)1\377%)1\377$*0\377%*1\377%*2\377$)1"\r
+ "\377$)0\377#*1\377$*1\377#)0\377$+2\377$*2\377%*1\377'-3\377$*2\377#)2\377"\r
+ "%)2\377#)1\377#*2\377$*3\377#)2\377$*1\377$)0\377$)0\377#(1\377$*1\377#)"\r
+ "0\377$*1\377\"'/\377$)0\377#(0\377#(1\377#(0\377$+2\377#(0\377#)1\377#*2"\r
+ "\377\37(0\377)-.\377RRC\377NNC\377<<3\37722%\377:8-\377:8-3\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\200^da\37798-\377DD<\377N"\r
+ "NF\377QPE\377142\377\35$,\377\31\40(\377-.&\377KL?\266MB)\206KG8\330-+&\377"\r
+ "\37%+\377$*3\377\"&/\377!&/\377\40'.\377!'0\377!(0\377!'0\377\"&.\377\"("\r
+ "0\377\"(0\377#)1\377\"'/\377\"&/\377\"&0\377!&.\377\37&-\377!&/\377!&.\377"\r
+ "\37&-\377!&.\377\37&.\377\"%-\377!&.\377\40&/\377!&.\377\40&.\377\37%,\377"\r
+ "\40&-\377!&.\377!&.\377!'/\377\"'/\377\"'/\377\"(2\377\40'/\377\34!)\377"\r
+ "\"&.\377Ydi\377\33\36&\377$*1\377%+2\377$*1\377$*1\377%*1\377%+2\377%+2\377"\r
+ "$)1\377$)1\377%+1\377#*2\377%*3\377%*1\377%,1\377$*1\377&*4\377%,2\377%+"\r
+ "1\377%*1\377%+2\377%+1\377%,4\377%,2\377$)2\377#)2\377%*1\377$*1\377#(2\377"\r
+ "$*1\377#*2\377#)1\377#)1\377$*1\377\")1\377#*1\377$*1\377$)1\377$*1\377$"\r
+ "*2\377\"(0\377$*1\377$*1\377#)1\377'*0\377RQC\377POF\377@@8\37787+\377:8"\r
+ "-\377:8-\272\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\210\214\326"\r
+ "@@6\377<:/\377LLH\377NNF\377SOB\377\"'/\377\40(2\377*-/\377LLA\314RNE\22"\r
+ "\0\0\0\0RNE&FC8\377\36\37\37\377\37&/\377\"'1\377\"&0\377\")1\377\"'1\377"\r
+ "!&.\377!&.\377\"&1\377\"&0\377\"&.\377#(0\377\"&/\377\"&/\377\"(0\377\"&"\r
+ "/\377!&0\377!&.\377!(0\377\40'0\377!&0\377\37&-\377\40&.\377\"(0\377\40&"\r
+ "/\377\"&.\377\40&-\377!&-\377!&.\377\37&.\377!&.\377\40&-\377!&.\377\"'/"\r
+ "\377!'/\377\"&1\377\37%-\377\"&.\377Ydi\377\35\40%\377%+1\377%,3\377%+1\377"\r
+ "$+2\377%+2\377%*1\377$+3\377$*3\377$*2\377%+3\377#*2\377&,3\377%*1\377%*"\r
+ "1\377#(0\377#)3\377%*2\377$*1\377$+2\377%+3\377%+1\377#)1\377#+1\377%+2\377"\r
+ "%+2\377$*1\377$*1\377\"(1\377$*1\377#(2\377\"'1\377\"&1\377#(0\377#)2\377"\r
+ "#)1\377\"(1\377$)0\377$*1\377#*2\377#)2\377'+4\377(-5\377#(0\377\24\34&\377"\r
+ "NL?\377TSH\377GG>\377>=3\377:8-\377:8-\354:8-B\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\213\234\243By\206\212\35497-\377<;0\377MNK\377PPE\377FD>\377\33$4"\r
+ "\377'-7\377687\377MMD\302\0\0\0\0\0\0\0\0RNE\12MJ@\377&'(\377\40&1\377\""\r
+ "&/\377\"(0\377\"(0\377\"&.\377#(0\377#(0\377\"&/\377\"&.\377\"&.\377!'/\377"\r
+ "#'/\377\"'1\377\"'1\377\"'0\377\"&0\377\"'/\377\"&0\377!'/\377!&/\377!&."\r
+ "\377\40'/\377\"&.\377\"'/\377\40&-\377\40&.\377\40&-\377\37&-\377!&.\377"\r
+ "\37&.\377\40&.\377!&/\377\40&-\377\37%,\377\"&.\377\37#*\377\"&.\377Ydi\377"\r
+ "\34\40'\377%+1\377%,1\377%*2\377#(2\377$*1\377%*2\377',4\377%*1\377%+1\377"\r
+ "%,2\377%,2\377$*2\377%*1\377%*1\377#*1\377#*2\377$*3\377%*2\377%*2\377%+"\r
+ "2\377%+1\377#)0\377(-5\377%*1\377%*1\377$*1\377$)0\377$)0\377$)0\377#'0\377"\r
+ "$*1\377\"(0\377#)1\377$)1\377$)0\377%)1\377#(0\377#)0\377$*1\377%*1\377\""\r
+ "'/\377\"'/\377$*1\377\37&0\377556\377VSF\377NKA\377>?5\377:8-\377:8-\377"\r
+ ":8-\233:8-\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\7\213\234\243\233MOH\37797-\377"\r
+ "CC<\377MMF\377SPD\37736;\377#*6\377).9\3779BE\377NMC\370MMD\200OP?>OMB\257"\r
+ "NLF\377*3:\377#)2\377$)0\377\"'1\377\"'/\377\"&,\377\40&/\377\"&/\377\"&"\r
+ "0\377\"&0\377!&.\377!%0\377\"&/\377\40&/\377$(0\377\"'0\377\"(2\377\"&/\377"\r
+ "\"&.\377\"&/\377!%.\377!%-\377!&/\377!&.\377\"&/\377\40&-\377\40%.\377\37"\r
+ "&-\377!&.\377!&,\377\36&-\377\37&-\377\37%-\377\40%-\377\40&.\377\"'.\377"\r
+ "\"$*\377\"&.\377Ydi\377\33\40'\377#(1\377%*3\377%*3\377$*2\377$*1\377%*3"\r
+ "\377%*2\377%+1\377&-2\377%*3\377$*2\377$*1\377$*1\377$*1\377#(1\377$)1\377"\r
+ "#*2\377%*1\377$*2\377#+3\377#*2\377%*1\377%*2\377\"*2\377%*1\377$*1\377$"\r
+ ")0\377$)1\377\"&.\377\"&/\377#)2\377$)1\377#(2\377#*2\377$*1\377#)1\377\""\r
+ "(0\377\"(0\377$*1\377%*2\377#(2\377#(/\377#*1\377&,3\377\"*1\377QMB\377N"\r
+ "MC\377BB9\377:9/\377:8-\377:8-\377:8-\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\200"\r
+ "t\177\201\377?>5\37787-\377HH?\377NNE\377PMC\377\37)5\377%,4\377%*3\377\35"\r
+ "#4\377jnk\377_]O\377TQ@\377om^\377R_g\377\27\37)\377\")2\377#'0\377#'/\377"\r
+ "#(0\377$(0\377\"&.\377\"(0\377!&/\377\"'0\377#(1\377!%/\377\"&/\377\"(1\377"\r
+ "#'/\377\"'/\377\40&/\377!&/\377\"&.\377!&.\377!&.\377\37&-\377\"&/\377!&"\r
+ ".\377\40%,\377\40&-\377\40%-\377\36&-\377\36&-\377\40&-\377\40$-\377\40&"\r
+ "-\377\40%-\377\36%,\377\40&-\377\37&,\377\"&.\377\"&.\377Ydi\377\35\40'\377"\r
+ "&+5\377%,3\377%+2\377$*1\377%+1\377%+1\377$*2\377$*1\377$*2\377%+1\377%+"\r
+ "1\377%+1\377%*1\377#*2\377$*1\377$*1\377$*1\377#(0\377#)0\377#)1\377$*1\377"\r
+ "#)0\377#*0\377#(0\377%*1\377$)1\377$)0\377$(0\377#)1\377#(0\377\"*2\377$"\r
+ ")1\377#(0\377#*3\377#*2\377#*2\377$)1\377#*2\377#(0\377$*1\377%*1\377$)1"\r
+ "\377$)0\377#*2\377\37'1\3775:B\377UQC\377LJ@\377==3\377:8-\377:8-\377:8-"\r
+ "\314:8-\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\213\234\243\37\200\216\223\324<;0\37798.\377BB;\377MME\377WTG"\r
+ "\377>DI\377\40(3\377&*5\377%+3\377\40&/\377!,:\377V[d\377gns\377HUc\377\31"\r
+ "\"*\377\"'-\377\"'1\377\"(1\377\"'0\377!(0\377\"&.\377\"&.\377\"'/\377#'"\r
+ "0\377\"(1\377\37&.\377\37$,\377\"'0\377\"&/\377\"'0\377\"&.\377!&.\377\37"\r
+ "'/\377\40'.\377\"&.\377\40&-\377\40'.\377\40%,\377\35%,\377\37&-\377\40&"\r
+ "-\377\40&-\377\"&/\377\40&-\377\36&-\377\37&-\377\40&-\377\36&-\377\37%-"\r
+ "\377!&/\377!&-\377\37#+\377\"&.\377Ydi\377\33\37%\377%*2\377$*2\377&+4\377"\r
+ "$*4\377$+1\377&-4\377&-3\377%,1\377$*1\377%*1\377#+2\377#*2\377%*1\377#*"\r
+ "2\377$*1\377$,2\377%*1\377$*1\377$*1\377$)1\377#*2\377#*2\377%+1\377#)1\377"\r
+ "#*1\377#)1\377$)0\377$*1\377$)0\377$*1\377\"*2\377\"'0\377$)1\377#*3\377"\r
+ "$+2\377$)1\377#(2\377#'2\377$)1\377$*1\377#(2\377$)1\377\")/\377$*1\377\""\r
+ ")1\377!,?\377KLO\377SNC\377EF<\377;:/\377:8-\377:8-\377:8-\312:8-\10\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\10\213\233"\r
+ "\242\312_fc\37787-\377<<4\377IKC\377POE\377URJ\377\35(7\377#)1\377%*2\377"\r
+ "#*2\377\"(0\377\40&.\377\26\36'\377\25\35)\377\33\40(\377\"(1\377$)2\377"\r
+ "$*1\377$)1\377#(1\377#(/\377\"&.\377\"'/\377#(1\377\")1\377#(0\377\40&0\377"\r
+ "\37&.\377\"'0\377\37&.\377\37'.\377!&.\377!&.\377!&.\377#'/\377\"&.\377!"\r
+ "&.\377\40'.\377\40%-\377\35$,\377\37&-\377\40&.\377!&.\377#(0\377\40$,\377"\r
+ "!&/\377\"&.\377\36$-\377\40&-\377!%-\377!&.\377\40&.\377\40$+\377\"&.\377"\r
+ "Ydi\377\34\40'\377&,4\377%+1\377&,3\377'-3\377&*4\377',3\377%*3\377&,2\377"\r
+ "%,2\377%*1\377$*2\377%*2\377$*1\377$*1\377%*3\377$*1\377%*1\377%*3\377%+"\r
+ "1\377$*1\377%+2\377#(2\377%)0\377#(0\377#*2\377$*1\377\"(1\377#(1\377$*1"\r
+ "\377\"(2\377#(0\377#(2\377$)1\377\"(2\377#)1\377$*2\377#)2\377$(1\377$(0"\r
+ "\377%+1\377%*1\377\"(1\377!&.\377\")0\377$)2\377$'.\377$;P\377URJ\377PME"\r
+ "\377FE<\377:90\377:8-\377:8-\377:8-\313:8-\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\213\234\243Y\212\232\241\313Y^Z\37797-\377:91\377HHB\377PND"\r
+ "\377UTJ\377+5A\377#'0\377$(2\377\")2\377#*1\377$)1\377\"(0\377#(1\377#)1"\r
+ "\377\40'/\377\40$+\377\"'0\377\"'2\377%*1\377#)1\377\"*2\377\"'2\377#(0\377"\r
+ "#(/\377\"&/\377\"&1\377!'/\377!'.\377#'0\377\"&.\377\"&.\377\"&1\377\"&2"\r
+ "\377#'1\377!&.\377\"'/\377\40'.\377\37&-\377#%.\377\"'/\377!&.\377\"'/\377"\r
+ "#'/\377!&/\377\40&.\377\37&-\377\36&-\377\40&-\377!&.\377!&.\377\40&.\377"\r
+ "!'/\377\"&-\377\"&.\377Ydi\377\35!'\377%+2\377%,2\377&,2\377&+2\377$*2\377"\r
+ "$+2\377#+2\377%*2\377&*4\377$)2\377%)1\377$*1\377%*2\377$*3\377%,3\377$*"\r
+ "1\377%*1\377%*1\377$*1\377\"(2\377$+2\377$)3\377%*0\377%)1\377%*1\377$*1"\r
+ "\377#)1\377%*1\377$*1\377$*1\377$*2\377#*2\377#*2\377\")2\377#)1\377#)2\377"\r
+ "$*2\377$*1\377%*1\377$*1\377$*1\377#)2\377%+2\377%*1\377#*1\377!)0\377\30"\r
+ "\40*\3779EZ\377[RF\377ONC\377@A8\377:8.\377:8-\377:8-\377=;1\316\177\215"\r
+ "\221uu\201\203\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\20\213\234\243ut\200\202\374PSM\377"\r
+ ":8-\377:8.\377CB<\377MLD\377]WK\3777@N\377\35%0\377\40$+\377#*2\377#)1\377"\r
+ "#*2\377#)1\377#(0\377#(1\377$)1\377#)1\377\"(0\377#)1\377\"(1\377#(0\377"\r
+ "#)1\377\"'1\377$(0\377#'0\377#'/\377!&.\377\"&/\377\"'/\377\37&.\377\37&"\r
+ "-\377\40&.\377\"&0\377!&/\377\40&.\377\"&/\377!&.\377\"&.\377\37%.\377!&"\r
+ ".\377\40&.\377\"&.\377!&.\377\40'.\377!&.\377!$-\377\37&-\377\40&.\377!&"\r
+ ".\377\40&.\377\40&.\377\40&.\377\"&/\377!&/\377\40&.\377\"&.\377Ydi\377\33"\r
+ "\40%\377$*1\377%*3\377&,3\377%*1\377&,3\377'-3\377$*1\377&,2\377%+1\377%"\r
+ "+2\377%*1\377&-2\377$)3\377$*1\377$)1\377$*1\377%+1\377$)1\377$*1\377%*1"\r
+ "\377%*3\377\")1\377$+2\377#)2\377#)1\377#)2\377$+2\377&,2\377#*1\377$(1\377"\r
+ "%)3\377%*1\377$)0\377\"(1\377$*1\377#*2\377#)2\377#)2\377%*1\377$)1\377$"\r
+ "*1\377#*2\377#)2\377#)1\377!(0\377#+2\377\"(0\377\35(2\377DLZ\377SNE\377"\r
+ "QQC\377FC9\377:9/\377:8-\377:8-\377:8-\377Z`\\\355ahfl\213\234\243W\0\0\0"\r
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243W\213\234\243l\202"\r
+ "\221\226\355irq\377;:/\37797-\377::1\377AA7\377LKB\377XUJ\3779G]\377\33'"\r
+ "2\377\"(/\377\"'1\377#(1\377!%0\377#'0\377$(1\377\")2\377#*2\377#)2\377\""\r
+ "'/\377$)0\377#*1\377#)1\377\"(1\377#'/\377\"(0\377#(0\377\"'0\377#(1\377"\r
+ "#'/\377!&.\377\"(0\377\"'1\377#(0\377!'/\377!'0\377\"&.\377!'/\377\"&/\377"\r
+ "#'/\377\"'/\377!&.\377!&.\377\40&-\377\"&/\377!&.\377\"&/\377\40%-\377\37"\r
+ "%.\377\40%.\377!'0\377!'.\377$(0\377$(0\377!&.\377!&.\377!&/\377#'0\377\""\r
+ "&.\377Ydi\377\34!'\377%*1\377%*1\377&*4\377&,3\377&,3\377&-3\377%*2\377%"\r
+ ",1\377$+2\377&+2\377%,3\377%*1\377%*2\377%*1\377#'/\377#)1\377$)2\377$*2"\r
+ "\377#)0\377%*2\377%+3\377%)3\377%*1\377$)0\377$)0\377#*2\377#)2\377#*2\377"\r
+ "#*1\377#'1\377#'0\377$)1\377$*1\377$)1\377#)0\377$+2\377%)1\377$*1\377%*"\r
+ "1\377\"(1\377$)0\377%*1\377#(0\377$*0\377$*0\377#)1\377#*2\377$)0\377\34"\r
+ "%5\3778EX\377[XK\377PNE\377GF>\377<:/\377:8.\377:8-\377:8-\377CC:\377IKC"\r
+ "\364`gd\306}\213\217\306}\213\217\306}\213\217\306}\213\217\306}\213\217"\r
+ "\306w\203\206\364LNG\377HIA\377:8-\37798-\377;;1\377FD;\377NLB\377]ZU\377"\r
+ ":G\\\377\35(8\377#)/\377#(0\377#*2\377$*2\377\")1\377#)1\377#(1\377#)2\377"\r
+ "#(0\377\"(0\377#)1\377\"'1\377$)1\377\"'1\377!)1\377\")1\377\"'1\377\"'/"\r
+ "\377\"'0\377\"&/\377\"'/\377!&.\377\"(0\377\"'/\377\"'/\377\"(0\377\"'/\377"\r
+ "\"&0\377$(0\377\"&0\377\"&0\377\"&0\377\"&0\377\40&.\377\"&.\377\"&.\377"\r
+ "\"&.\377\"(0\377!&.\377\"'1\377\40'0\377\"'/\377!'.\377\37&.\377\37$.\377"\r
+ "\40&.\377!(0\377\"'/\377\"&/\377\"&.\377Ydi\377\33\40%\377$*2\377%,1\377"\r
+ "&+3\377%+2\377#*2\377$+2\377%+1\377%,2\377&+4\377%,2\377%+1\377$+1\377$+"\r
+ "1\377%+1\377#)1\377$)1\377#)2\377%+3\377$*1\377#*2\377$+2\377%*2\377&+4\377"\r
+ "$*1\377$*1\377#(0\377$*2\377$)2\377%+1\377$*1\377%*1\377$*1\377#)2\377$)"\r
+ "1\377\"'1\377#)1\377$)1\377$)0\377$*1\377%*1\377$(0\377#(1\377\")2\377#("\r
+ "1\377$)1\377#'0\377$*3\377$*1\377\"'1\377\36&2\377>L[\377TYY\377POD\377J"\r
+ "J?\377BB8\377:90\37776,\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-"\r
+ "\377:8-\377:8-\37787-\377:9.\377;;1\377??5\377II>\377SPD\377^b_\377;GY\377"\r
+ "\33#-\377\40'.\377#)2\377\"'1\377$+2\377$*1\377\"'0\377\")0\377\"(0\377\""\r
+ "(1\377#)1\377!)1\377#)2\377\")1\377\"(0\377!'0\377#(0\377\"(1\377\"'1\377"\r
+ "!'1\377\"'1\377!(0\377#)2\377\"&0\377\"&.\377#(0\377\"(1\377!)1\377\"'0\377"\r
+ "\"'0\377\"'/\377\40'/\377\"'0\377\"(0\377\"'.\377#'/\377!(/\377\"'0\377!"\r
+ "&.\377\40'/\377!&.\377\"&0\377\"&1\377!%/\377\"'/\377\"&1\377!&0\377#(0\377"\r
+ "!'/\377#(1\377!&.\377\"&.\377Ydi\377\34\37&\377%+3\377&-3\377&,2\377&,3\377"\r
+ "%*3\377$*2\377%,3\377$*1\377%*4\377%,2\377%+1\377$+2\377$*1\377$)0\377$*"\r
+ "1\377%+1\377%+1\377%*1\377%*1\377$*1\377$+2\377#(0\377%*2\377#*2\377#*2\377"\r
+ "%)2\377$)2\377$*4\377%,2\377%*3\377%*1\377$*1\377$*2\377#*2\377\")2\377#"\r
+ "(1\377$*3\377$*1\377$)1\377#(0\377#*2\377%*1\377%*1\377#*2\377#*2\377#)1"\r
+ "\377#'/\377#)1\377%*2\377#)0\377\36#+\377*7G\377W^d\377[XO\377USI\377LK?"\r
+ "\377EE:\377=>4\377:90\377<:/\377;9/\377::0\377::1\37798/\377:8/\377;9/\377"\r
+ "=<2\377CC9\377IH=\377TRG\377_`U\377]ci\377/:G\377\34#+\377$)1\377\"*2\377"\r
+ "\")2\377\")2\377\40'/\377!(1\377\"&2\377#(1\377#(1\377#)2\377#(0\377\")0"\r
+ "\377\"&/\377\"'/\377#)1\377#)1\377\")1\377\"&1\377\"&1\377!&/\377\"(0\377"\r
+ "\"'/\377#'0\377$(0\377\"&.\377\"&.\377\"&/\377!'0\377\"(1\377!&.\377!&.\377"\r
+ "!&.\377\"&/\377\"&.\377\"'0\377\"&.\377\")0\377#'/\377\"&/\377\"'/\377#'"\r
+ "/\377\"&/\377#(0\377#'/\377\"&/\377\"(1\377#(0\377#'0\377\"'0\377#'0\377"\r
+ "\"&0\377\"&.\377Ydi\377\34\40%\377%+1\377&,3\377&-2\377&,4\377&+3\377%*2"\r
+ "\377%*3\377%,2\377%*1\377%+1\377%+1\377%*2\377%)1\377$(1\377#*2\377%+1\377"\r
+ "%+1\377$)1\377%*1\377#)2\377%+2\377%*1\377&+3\377$*2\377$)1\377$)1\377&+"\r
+ "3\377$*2\377\"*2\377#*2\377%+1\377%*1\377#(1\377#*2\377$*3\377#(2\377#)2"\r
+ "\377$*1\377#)2\377#)1\377%*1\377#*2\377#(0\377#)2\377$*2\377$)1\377$)0\377"\r
+ "$(0\377\"'0\377#*1\377!'/\377\40%,\377\37(/\377>HT\377ell\377da\\\377YVK"\r
+ "\377PPD\377KI?\377IF=\377GG>\377HF:\377IH=\377KH?\377JF;\377II=\377NK?\377"\r
+ "YWL\377mok\377dpq\377@PY\377\35%/\377\35$,\377\"'.\377%*1\377%+2\377#)0\377"\r
+ "#)1\377%*1\377\"*2\377\"'2\377#'1\377#'0\377#'2\377#(2\377#'/\377\"&.\377"\r
+ "$(2\377$)1\377$(0\377#)1\377\"'2\377!(2\377!'2\377!'0\377#'1\377\"(0\377"\r
+ "\"(0\377#(0\377!(0\377!'/\377!'2\377\"(1\377\"&0\377\"&/\377\"&1\377\"&/"\r
+ "\377$(0\377!'0\377\"&1\377\"'/\377!(/\377\40'1\377\")1\377\"&.\377#(0\377"\r
+ "#)1\377#'0\377$(1\377\")1\377\")1\377$)0\377\"&0\377#'1\377$)2\377\"&.\377"\r
+ "Ydi\377\33!%\377%+2\377&.5\377&.4\377&-4\377&*3\377$(3\377%*2\377&*4\377"\r
+ "&,3\377&+3\377#*2\377$)0\377%+1\377$(2\377\"*2\377$*1\377$*3\377%,4\377#"\r
+ "*2\377#(2\377#)2\377#)2\377%*1\377&+2\377$)0\377$*1\377&(1\377%+3\377$*2"\r
+ "\377$*1\377$*1\377$*1\377%*2\377$*1\377!*1\377#*1\377$)1\377$*1\377\")1\377"\r
+ "#)1\377#(1\377\")2\377\")1\377\")2\377#*2\377#(/\377$*1\377#'/\377!(/\377"\r
+ "$*1\377#*1\377$*1\377#)1\377\36#)\377\33\40*\377*5F\377DPa\377bcd\377YZX"\r
+ "\377Z[T\377WXO\377ZWL\377\\WL\377Z[R\377\\\\Y\377_^W\377U_d\377CP`\377(2"\r
+ "B\377\31\37)\377\35\"(\377#(1\377%*1\377#)1\377#(0\377\40&.\377$(0\377\""\r
+ ")1\377$(1\377$*1\377\")2\377\"(0\377$)0\377$*1\377#(2\377\")2\377\"'0\377"\r
+ "\")2\377\"*1\377$)1\377$*1\377#)1\377\"'/\377#&/\377\"&0\377\"&1\377$)0\377"\r
+ "#'1\377#(1\377$(1\377\"(0\377\"&0\377!'/\377#'2\377\"'0\377\"(1\377\"&/\377"\r
+ "\"'2\377\"'0\377\")2\377%*1\377\"(0\377\"(2\377\"(0\377\"(0\377#(3\377#("\r
+ "2\377$*1\377%*2\377%*2\377%*4\377$*2\377#'0\377$)1\377$)0\377\"&.\377Ydi"\r
+ "\377\35!'\377&,4\377&,6\377&-6\377&-3\377%*2\377%+3\377&+4\377%*3\377%*3"\r
+ "\377$*1\377%,2\377%*1\377%+2\377$+2\377#*2\377%*3\377#(/\377#(0\377#*2\377"\r
+ "%*1\377#)2\377$)1\377%*3\377$*1\377%,3\377$*1\377&,3\377%*1\377%*2\377%*"\r
+ "3\377%,2\377$*2\377%+2\377$*1\377\"*2\377#*1\377#(1\377\"*2\377\")1\377%"\r
+ "*1\377#(2\377#*2\377#)1\377\"(0\377#)1\377\"(0\377#*2\377$)0\377#*2\377$"\r
+ "*1\377#(/\377$(0\377%+2\377\"'0\377\")1\377#(0\377\34#,\377\36$-\377$/>\377"\r
+ ".9I\3773<J\377:BN\377:BM\3773@M\377*6E\377&.8\377!)2\377\33\37%\377!&/\377"\r
+ "#)1\377\"(0\377#(1\377#)1\377#'/\377\"(0\377#)2\377#)1\377\")1\377#)2\377"\r
+ "#)1\377#(0\377#(0\377#(1\377\"*2\377#*2\377#*2\377\"(0\377\"(1\377!)1\377"\r
+ "\"(1\377#(1\377!'0\377$*1\377$)1\377\"&/\377\"&.\377#(1\377#'1\377\"(2\377"\r
+ "\"&0\377#(1\377\"'/\377\"(1\377\"'2\377\"&0\377\"'0\377\"'0\377\"(0\377\""\r
+ "(1\377\"(1\377$(1\377#(2\377\")1\377$+1\377$)0\377&,5\377$+3\377#+2\377#"\r
+ "*3\377$+2\377&+4\377&+6\377%)4\377$)0\377$)2\377\"&.\377Ydi\377\35!'\377"\r
+ "&-4\377&-6\377&-3\377',3\377&-2\377(.5\377%+2\377%+1\377%*1\377%+1\377%*"\r
+ "1\377%,2\377%)1\377$*2\377$*1\377$*1\377#)1\377#*2\377%*2\377$*2\377#*2\377"\r
+ "\"'/\377#*1\377#)1\377\"(1\377$*2\377$*2\377$)2\377%*1\377#*2\377&*2\377"\r
+ "$+2\377$+1\377$)0\377#)1\377%*1\377#)2\377#)2\377\"(0\377\"'1\377#)1\377"\r
+ "#)2\377%*1\377$)1\377$*1\377#)2\377#)1\377%)1\377\"&/\377#(1\377#*1\377#"\r
+ "(.\377#)0\377%*1\377$(1\377%*1\377$*1\377$)1\377$*2\377',4\377$(0\377%*2"\r
+ "\377&-6\377%,2\377\40)/\377$,3\377%*3\377#*2\377\"*2\377#)1\377\"(1\377#"\r
+ "(2\377#(0\377\"(0\377#(0\377\"&1\377#)1\377\")2\377\")1\377$*1\377\"*2\377"\r
+ "#(0\377#*2\377$)1\377\"(1\377#(0\377#(0\377$)1\377#'/\377#'0\377#'1\377#"\r
+ "(1\377\")1\377\"'/\377\")2\377$(0\377#)0\377#'0\377#(1\377\"'0\377\"(1\377"\r
+ "\")1\377\"*1\377\"'/\377#)1\377\"'0\377\")1\377\"(0\377!)1\377$)1\377$)1"\r
+ "\377$)0\377#*2\377$*1\377#*2\377$*2\377$,2\377&*5\377$*3\377$+3\377%*3\377"\r
+ "%+3\377&-4\377&-2\377#*2\377\"&.\377Ydi\377\33\40%\377&,5\377(,8\377&,6\377"\r
+ "&-5\377'.5\377$+4\377%+2\377$+2\377',3\377%-2\377%+1\377&,2\377$)0\377%*"\r
+ "1\377$*1\377$*1\377#+2\377$*1\377%*2\377$)2\377%+2\377\")2\377%+1\377$*1"\r
+ "\377$*1\377$)2\377#*2\377#(0\377$*1\377\"(0\377#)2\377$*1\377#)1\377#)0\377"\r
+ "\")0\377%*1\377$)1\377#)1\377\")0\377\"'1\377$*1\377#)2\377$)1\377$*3\377"\r
+ "#*2\377#(2\377\"'/\377#(1\377\")2\377#*2\377#)2\377#*2\377#*2\377%*1\377"\r
+ "\"*1\377$*1\377%*1\377$*1\377%+1\377&+4\377%*4\377%*2\377&.3\377%+2\377%"\r
+ "*1\377$*1\377$*1\377$*1\377$*1\377!(0\377\"'/\377#)2\377$)1\377#(0\377\""\r
+ "'/\377\"&.\377$)1\377#)2\377!)1\377#*2\377\"'2\377\"(0\377\"*2\377#)1\377"\r
+ "\"'0\377\"'/\377\"'/\377!'/\377\"'/\377\")1\377\"(1\377#(1\377#(0\377\"&"\r
+ "/\377\"'/\377$(0\377#'0\377\")1\377!(0\377\40(/\377\"(/\377\40'/\377\"(0"\r
+ "\377\"'1\377#)1\377\")1\377\")1\377$)1\377#*1\377#*1\377\"&1\377!&/\377#"\r
+ "*2\377$*2\377%*2\377$*2\377$,3\377&,4\377&,4\377&,5\377&-6\377%-5\377%,2"\r
+ "\377%,4\377%,4\377\"&.\377Ydi\377\36!'\377',4\377(.6\377&,6\377-29\377'+"\r
+ "6\377%+2\377%,2\377&+4\377%*1\377%+3\377$)2\377%*3\377$)1\377\"'2\377#)2"\r
+ "\377#*2\377%,4\377$*1\377#)1\377%+1\377%,1\377#)2\377$(0\377#(0\377$)1\377"\r
+ "!'0\377#*1\377%*1\377$*1\377$*1\377$)1\377%*2\377$*1\377$)1\377$)2\377$)"\r
+ "1\377$)0\377\"'/\377\"(0\377#*2\377\"*2\377#)2\377$*1\377$)1\377$(1\377\""\r
+ "'1\377\")1\377\"(0\377#)1\377%*1\377$)1\377%*1\377#(2\377$)1\377%*2\377&"\r
+ "-2\377%+1\377$*1\377#*2\377%+2\377%*1\377&*4\377$+0\377$*1\377%*1\377#*1"\r
+ "\377$)1\377$+2\377#*2\377%*1\377$*1\377#)1\377#(1\377!'.\377#)1\377\"(1\377"\r
+ "\"&/\377\"'0\377#'0\377\"'2\377#*2\377#'/\377\"'/\377\"'1\377\"(0\377\")"\r
+ "1\377\"(2\377!'/\377!)1\377#)1\377#)2\377#)2\377\"(1\377#)1\377#(1\377#("\r
+ "1\377$(0\377#(0\377\"&/\377!&.\377!'1\377\"'0\377\"(0\377#'/\377\"'0\377"\r
+ "$*1\377\"'2\377!*1\377#(1\377%*1\377%)1\377$*1\377$*3\377&*4\377&,4\377%"\r
+ ",2\377%*1\377&+5\377%-4\377&-7\377&+7\377&+6\377&-6\377&+6\377&,4\377\"&"\r
+ ".\377Ydi\377\35!'\377&,5\377',5\377)-6\377-18\377&-6\377%-2\377%,2\377&-"\r
+ "4\377%+2\377%+1\377$)2\377%*1\377%*1\377$*1\377#)2\377%*1\377%*2\377%*1\377"\r
+ "#)1\377$*1\377$*1\377$)1\377#*2\377$*1\377\"(2\377$*1\377$*1\377$*1\377$"\r
+ "*1\377%*1\377$)1\377%+2\377$*1\377$)1\377$*2\377$*1\377\"'0\377#(0\377#("\r
+ "0\377#(0\377\"(2\377\"*2\377#(0\377$)1\377$)1\377#)1\377#*2\377$)1\377$("\r
+ "1\377#)1\377$)1\377#*2\377$*2\377$)1\377%*2\377%+1\377#*2\377$*1\377$*1\377"\r
+ "%+2\377&-2\377%+2\377$)0\377%*1\377%*1\377%*1\377#)2\377#*2\377$)1\377#)"\r
+ "1\377$)0\377$)1\377#)2\377\"(1\377$)1\377#(0\377#)1\377\"*2\377#*2\377\""\r
+ ")2\377#'1\377\"&0\377#(0\377#)1\377\40&/\377\"'/\377\"(2\377\")1\377\"'0"\r
+ "\377\"&0\377\"'/\377#'0\377#(0\377$*1\377\"&/\377\"&/\377$(0\377\"'/\377"\r
+ "#)0\377\")1\377\"*2\377\")1\377\"(2\377\"'1\377\")1\377$(0\377#'1\377#*1"\r
+ "\377#+2\377$)3\377#(2\377\"*2\377$)2\377%*4\377%*3\377#(3\377&,5\377&-6\377"\r
+ "'-5\377&+3\377&+5\377%+5\377&.6\377'.6\377$*2\377\"&.\377Ydi\377\37#'\377"\r
+ "*.6\377)-6\377'-5\377&.6\377&-4\377&,5\377%,3\377%+1\377',3\377#)2\377%*"\r
+ "4\377%,3\377#*2\377#(0\377#*2\377%*1\377$(1\377#)2\377$)0\377%*1\377$)0\377"\r
+ "\"*2\377$*1\377$)1\377%+1\377$*1\377#*2\377$*1\377$*1\377%*1\377#)2\377#"\r
+ "'2\377%+2\377$*2\377#(1\377$)0\377#)0\377$*1\377%*1\377#)1\377#(/\377#'/"\r
+ "\377\")0\377$*3\377\"(1\377$)1\377$*2\377#*1\377#*2\377$(0\377$*1\377$+2"\r
+ "\377$*1\377$*1\377$*1\377#+1\377#*2\377%+1\377$*1\377$+1\377%+1\377$)1\377"\r
+ "%*3\377$*1\377\"*2\377$*1\377$*1\377#*2\377#)0\377#'1\377#)1\377#)2\377$"\r
+ "*1\377#)2\377\"'/\377#(0\377#(0\377#(2\377%*1\377\"*1\377#)3\377$)1\377\""\r
+ "(1\377\")1\377#)2\377#'/\377#'0\377\"'/\377\"'0\377#(1\377\"(0\377\"&/\377"\r
+ "!'0\377\"'/\377#)1\377\"'/\377\"(0\377\"(0\377\"&/\377#*1\377!)1\377\"(0"\r
+ "\377#(2\377\"(2\377\"(0\377\"(1\377\"*2\377#)2\377\")2\377#)1\377$*2\377"\r
+ "%*4\377%+4\377$)3\377%)5\377%*4\377&,6\377).8\377'-7\377'.7\377&.6\377'."\r
+ "6\377(.6\377&.6\377&,4\377\"&.\377Ydi\377\36\")\377'-5\377&+3\377&,4\377"\r
+ "&-3\377&-4\377&+4\377%+4\377%+2\377%+3\377$*1\377%+1\377$*2\377#*2\377#("\r
+ "0\377$*1\377$(1\377#*2\377$*1\377$*1\377$)1\377$)0\377$*1\377%,2\377$*1\377"\r
+ "#)2\377%*1\377$*2\377$*3\377#)1\377$)1\377#*2\377$*1\377$)3\377%*4\377#("\r
+ "0\377$(1\377\"(2\377#(2\377#)1\377#*2\377$*1\377#*1\377$)1\377$*2\377\"("\r
+ "2\377\40*1\377\"'/\377\"'1\377#*2\377#(1\377%*1\377#)2\377#*2\377#*2\377"\r
+ "$,2\377\37'.\377#*1\377$+2\377%*1\377%*1\377!(/\377$*1\377#'1\377\"'/\377"\r
+ "$)1\377#(1\377\")1\377$*1\377!(/\377!'/\377#*1\377#)2\377$)1\377$*1\377\""\r
+ ")1\377$*1\377#'1\377\"&/\377#)1\377#'0\377\")2\377\"(/\377!'/\377\")1\377"\r
+ "$)1\377\"&/\377\"(1\377\"(0\377\"&/\377!'/\377\"'/\377\"&/\377$)1\377#'/"\r
+ "\377\"'0\377!'.\377#(1\377\40(0\377\"'/\377#(2\377#(0\377\40'0\377\")2\377"\r
+ "\"(1\377\")1\377#)0\377#(0\377#)3\377#)2\377#)2\377$*1\377$(1\377#*2\377"\r
+ "%,4\377$+4\377%*5\377&+6\377&,4\377&.6\377&.6\377&,6\377(.6\377'.6\377'."\r
+ "6\377%*3\377\"&.\377Ydi\377\36!'\377&,2\377'-3\377&,4\377&,2\377&-2\377%"\r
+ "+1\377&-5\377&-4\377&,2\377%*1\377%+2\377$*2\377%*2\377$*2\377$)1\377$)1"\r
+ "\377#)1\377$*1\377$*2\377%*2\377%,2\377$*1\377#*2\377&,2\377$)1\377%+1\377"\r
+ "#*2\377$)1\377%+1\377$)2\377$*1\377$*1\377#)0\377$*1\377#*2\377#)2\377#'"\r
+ "2\377#(1\377\"(2\377#*2\377\"*2\377\")1\377#*2\377#)1\377#)2\377\")1\377"\r
+ "\")2\377\")2\377#)2\377#(0\377#*2\377$)0\377#*2\377\"'1\377$+2\377%*1\377"\r
+ "#*1\377!&0\377#)1\377#)0\377\34#+\377\24\32#\377\26\31#\377\30\36'\377#'"\r
+ "/\377$)0\377\"'/\377\"(0\377$)1\377$)1\377\"'/\377\"'1\377\"'2\377$(0\377"\r
+ "\"(2\377#)1\377\"'2\377\"'1\377#(0\377\"'1\377\"&/\377#)1\377#)2\377\")2"\r
+ "\377#(0\377!'.\377#)1\377#(3\377#'2\377#)2\377\"(0\377\"&0\377#)2\377#(2"\r
+ "\377#(0\377#(0\377$(1\377#)1\377\"'.\377\"(0\377$)1\377\")1\377\"&1\377\""\r
+ ")2\377\"'1\377$*1\377#)0\377\"*2\377$*3\377$*3\377%+1\377$)2\377%*4\377$"\r
+ "*2\377%*3\377$*3\377',5\377&,6\377&-6\377&,5\377&.6\377'-7\377'/6\377&+6"\r
+ "\377\")1\377\"&.\377Ydi\377\32\37%\377%*1\377%,2\377%*1\377$)1\377$*1\377"\r
+ "#*2\377%*2\377$*1\377%,2\377%*1\377&,2\377%+2\377%*1\377%*1\377%*1\377#*"\r
+ "2\377#*1\377%*1\377%*1\377%+1\377%*1\377$*1\377%*2\377$)1\377%)3\377%*1\377"\r
+ "#(0\377$*1\377%,2\377#*2\377#*2\377$*1\377$*1\377#+2\377$*1\377\")2\377#"\r
+ "(0\377#(/\377%*1\377$*3\377%,2\377#(1\377%)2\377$*3\377#)1\377$(0\377\"("\r
+ "0\377\"(0\377\"*2\377$)1\377#)2\377#)1\377$*1\377%*1\377$*2\377%,2\377$)"\r
+ "1\377$)1\377\35\")\377\24\26\33\377%&%\377210\377532\377)))\377\25\30\31"\r
+ "\377\33\36%\377#(1\377\"(0\377\")2\377\")1\377$)0\377\")2\377\"(2\377\"("\r
+ "2\377\")2\377\"'0\377\"&/\377\40'/\377#)1\377\")1\377!(0\377!(/\377\"(/\377"\r
+ "\")2\377\"*2\377\40)1\377\"'1\377#(0\377\"(0\377\"(1\377\"*2\377$)1\377\""\r
+ "'/\377\"(/\377#'0\377#)1\377#'/\377\"'0\377\")1\377#'1\377$)1\377\")1\377"\r
+ "\"'1\377!)1\377\"'1\377!(0\377#*2\377#*2\377$*2\377#(0\377%+2\377#)2\377"\r
+ "%*3\377%+4\377$*3\377$*3\377&,5\377$*4\377&+6\377&,6\377(,6\377&,4\377&-"\r
+ "5\377&+4\377\"(1\377\"&.\377Yej\377\33\37%\377&(0\377$)1\377$*1\377$*3\377"\r
+ "$*1\377$*1\377$)1\377%*1\377#*2\377$)0\377$*1\377$*1\377$*1\377$)3\377%+"\r
+ "1\377%+1\377$*1\377%+2\377%*3\377#'0\377$)0\377\"*2\377$*3\377%*1\377$)1"\r
+ "\377#*2\377$*1\377$*1\377$*1\377$*1\377$)1\377\"(0\377#*2\377%+2\377#*2\377"\r
+ "\"(2\377#(0\377$(0\377$*1\377$+2\377#*2\377#*2\377#*2\377$)1\377#(1\377$"\r
+ ")1\377$*1\377$)0\377!)2\377\"(1\377#(0\377\"(0\377#)2\377&-3\377%*1\377\""\r
+ ")2\377$)4\377\34\40&\377\35\37\37\377EE:\377YVH\377ZVH\377XUG\377YUG\377"\r
+ "TPA\377*)%\377\23\27\35\377#*2\377#(0\377!'.\377$(0\377#(1\377#(1\377$*1"\r
+ "\377\")0\377#)1\377\"'1\377\"(2\377#'0\377!'0\377#(0\377!(1\377!&.\377\""\r
+ "'1\377\"'1\377\"'2\377\"(1\377#(2\377\"(0\377\"(1\377\"*2\377#)1\377!(/\377"\r
+ "!&.\377\"'2\377\"(1\377#)2\377#(1\377\"'0\377\"&/\377$(1\377#)1\377$(0\377"\r
+ "#(1\377#)1\377\"'1\377(,5\377,06\377$*1\377#*2\377#)2\377$*1\377%+3\377#"\r
+ "*2\377$*3\377&*5\377%+4\377&*5\377&*5\377&-6\377&+6\377&*4\377%*2\377%*4"\r
+ "\377$)1\377\"&.\377Ydi\377\34\37&\377#'/\377%*1\377%+2\377$(2\377$*1\377"\r
+ "#)2\377#*2\377$*1\377$(1\377$*1\377%+1\377$*1\377%+2\377%*2\377#*2\377$+"\r
+ "2\377$*1\377#(2\377#(2\377#)2\377$)2\377$)1\377$)1\377$*1\377$*1\377#*2\377"\r
+ "$*2\377$*2\377%*1\377$(1\377#)1\377%+3\377$(0\377#(2\377\")2\377$*1\377#"\r
+ "*1\377#'/\377#)1\377$*1\377$)1\377#'1\377#*1\377$)0\377#(0\377$+2\377\"*"\r
+ "2\377#(0\377$)1\377#(0\377#*1\377#*1\377%*1\377\40'/\377#)0\377#(2\377\40"\r
+ "$.\377#\"\36\377SPB\377QOD\377MMC\377MME\377MME\377MME\377PNE\377RQD\377"\r
+ "01)\377\31\36%\377\")1\377\"'2\377#(0\377#'/\377#'1\377#)1\377\"(1\377!'"\r
+ "/\377#)2\377\")2\377\")2\377\"&0\377\"'0\377#(1\377\40'/\377\")1\377\"'/"\r
+ "\377#)1\377\"'1\377\"'0\377#(0\377\"'/\377!'/\377\"'/\377\"'0\377\"(2\377"\r
+ "\"'/\377!'0\377\"&0\377\"(1\377#'0\377#(0\377!'/\377#)2\377#)2\377\"'0\377"\r
+ "$)1\377#(2\377#)2\377$(1\377\"(0\377\")1\377#*3\377\"(2\377$*1\377$*2\377"\r
+ "%*4\377%+3\377$+3\377#*2\377$*4\377$*4\377%*5\377%+2\377&-5\377%*4\377%+"\r
+ "2\377\"&.\377Ydi\377\33\37%\377%(/\377%*1\377&+4\377$(1\377#)1\377\"'1\377"\r
+ "$)1\377$*1\377%*1\377%*1\377#'/\377$*1\377#)2\377\"(1\377$*1\377&+2\377$"\r
+ "*1\377$,2\377%+1\377%,1\377%*2\377%*2\377#*2\377$*1\377#*2\377$*1\377%,2"\r
+ "\377$*2\377%*1\377$*1\377#)1\377$*1\377%)2\377#*1\377#)2\377\"*2\377#*2\377"\r
+ "$*1\377$*1\377#)1\377$(0\377$*1\377#(2\377#)0\377$*1\377%+1\377#*2\377$*"\r
+ "1\377\")2\377#(0\377$)1\377$*1\377#*2\377#*1\377$*1\377$*3\377$'-\377FG;"\r
+ "\377LMC\377JKB\377KLB\377KLB\377KLB\377KLB\377JKB\377KKC\377RO@\377#\40\37"\r
+ "\377\40$-\377$(3\377\")1\377#(1\377\"(1\377!(0\377\"*1\377$*1\377#(2\377"\r
+ "$*1\377#(0\377#)2\377!)1\377#)0\377#(0\377#(2\377#)1\377\")2\377\40'/\377"\r
+ "#)0\377#+3\377#*2\377\"(0\377#(0\377\"&1\377\"'1\377!(0\377\37)/\377!&.\377"\r
+ "\"&0\377#)3\377\"&1\377\"'2\377\"'2\377\40)1\377\"'1\377#(1\377\")2\377$"\r
+ ")1\377#)0\377#)2\377#'/\377#*3\377\"*2\377\")2\377\"*2\377#*2\377$*3\377"\r
+ "#*2\377#*2\377$*1\377$*2\377%*3\377$*3\377&*5\377&*3\377#)0\377\"&.\377Y"\r
+ "di\377\32\36$\377%*1\377$*1\377%*1\377#'0\377$(1\377%*1\377#(0\377%*1\377"\r
+ "$*1\377#(1\377#)1\377$)1\377$*2\377%*2\377$*2\377\"*2\377$+2\377$*1\377%"\r
+ "+1\377$)0\377&+3\377%*4\377$*1\377#)1\377#*2\377$)1\377$)1\377#'/\377%(0"\r
+ "\377%*1\377$)1\377%,2\377%*1\377#*2\377#)2\377$*1\377\")1\377$*2\377%,2\377"\r
+ "#)1\377\")1\377#)1\377#(1\377\"'/\377#(0\377#'/\377\"'/\377\"(0\377#)2\377"\r
+ "\"(1\377$(1\377$*1\377#)0\377&,2\377%+2\377\32\40(\377450\377NNA\377KLB\377"\r
+ "KLB\377LMD\377LMD\377LMD\377LMD\377KLB\377KLB\377MNA\377<<5\377\35\"*\377"\r
+ "!&-\377$*1\377%+2\377%*1\377\"(1\377\")1\377\"'1\377\")1\377#*2\377$)1\377"\r
+ "#)2\377#(1\377$*1\377#)0\377\"(0\377!'1\377\"&/\377#(0\377#)1\377\"'0\377"\r
+ "#'/\377#(/\377\"(1\377#'/\377\"(0\377\"&.\377\"&.\377\"'/\377\"(0\377$)1"\r
+ "\377!)0\377\"&0\377\40&0\377\"&2\377\"'0\377\")1\377!)2\377$*1\377#*2\377"\r
+ "$)1\377#)2\377#'2\377\"(2\377#)2\377\"*2\377\"'1\377\")1\377%+3\377$+2\377"\r
+ "\"(2\377&+3\377#)2\377\")1\377#*2\377\"(/\377#'1\377\"&.\377Ydi\377\34\37"\r
+ "&\377%*1\377$*1\377$)0\377%*1\377#)1\377%*1\377$*1\377$*1\377\"(2\377\"'"\r
+ "1\377#)1\377#)1\377$(0\377%*1\377#(3\377$*2\377$+2\377$*1\377%+1\377%*1\377"\r
+ "%*1\377%*1\377#*2\377\")1\377$*2\377&,3\377%,4\377%+2\377$)1\377$)1\377#"\r
+ ")2\377%*1\377$*1\377\"*2\377#*1\377#*2\377#(1\377$*1\377#*2\377#)1\377\""\r
+ ")1\377#(0\377%*1\377#*2\377$)1\377$)3\377\"(0\377\"'1\377#*2\377$)3\377%"\r
+ "+3\377#(0\377\")1\377\40%,\377#(/\377\40',\377CD:\377LLC\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377GG>\377!&,\377\"'1\377\40"\r
+ "(0\377\40'/\377#*2\377#)2\377\")1\377!&/\377\"&0\377\"'1\377#)1\377\40'/"\r
+ "\377\"'.\377#)1\377\")1\377#)1\377\40)1\377\"'1\377\")1\377\")1\377#)2\377"\r
+ "#)2\377$)0\377\"'/\377#&1\377\"'0\377\"(1\377\"&1\377#'2\377\40&/\377#)1"\r
+ "\377$+1\377#'0\377\"(2\377\")2\377\"'/\377\"(2\377\")0\377!)1\377!(0\377"\r
+ "\"(1\377\"'1\377#*2\377#*2\377\"(2\377\"*2\377\")1\377\")1\377#+2\377%*1"\r
+ "\377#*2\377#+2\377#)2\377#*2\377#*2\377#(.\377\40$,\377\"&.\377Ydi\377\35"\r
+ "!&\377&+1\377#*2\377%*1\377$)1\377#'/\377\"&.\377\"&.\377$)0\377%*1\377\""\r
+ "&/\377#)1\377#)1\377\")2\377\"(1\377#)1\377$*1\377$*1\377#'1\377#)2\377%"\r
+ "*1\377%*3\377#(1\377#)0\377\"*2\377\"*2\377#)1\377#)1\377$*1\377$*1\377\""\r
+ "(0\377#*2\377%*1\377#*2\377#*2\377#*2\377#*2\377$*1\377$*1\377$*1\377#)2"\r
+ "\377#)1\377#*2\377$*1\377$*1\377$,2\377\"(0\377$)1\377\"(0\377#'1\377#)1"\r
+ "\377#(/\377#(1\377$)1\377#*2\377$*1\377$+1\377GF>\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377IJ<\377\"'-\377#*1\377#"\r
+ ")1\377#'0\377$)1\377!(1\377!'0\377#(1\377\"'0\377\"(0\377$*1\377\"'1\377"\r
+ "\"'/\377$*1\377\"'/\377$(1\377#(1\377$*1\377#*1\377!)1\377\"'/\377#)2\377"\r
+ "\"(2\377\"'0\377\"'0\377!'1\377\")0\377#'/\377\"&1\377\"'0\377!'/\377\"("\r
+ "0\377!'1\377!&0\377\"(2\377\")1\377\"'0\377\"&0\377\"&0\377\"'1\377$)0\377"\r
+ "\"'/\377#'1\377!&0\377#'0\377#'1\377#'0\377\"&0\377!'1\377\"(2\377\"'2\377"\r
+ "$(1\377%*1\377#)1\377#'0\377#'.\377\")1\377\"&.\377Ydi\377\33\37$\377&+1"\r
+ "\377#(2\377%*1\377$)1\377#(/\377#(/\377\"&.\377#(/\377#'/\377#'/\377$)1\377"\r
+ "\"'0\377#(0\377\40&.\377\"'/\377\"'/\377\"'0\377#(1\377#(2\377$+2\377&-3"\r
+ "\377%*1\377#)1\377\"*2\377\"(2\377#'0\377#)2\377$)1\377%*1\377$*1\377\"*"\r
+ "2\377$*1\377%*1\377#(0\377$)2\377#*1\377#)1\377$)1\377$)3\377#)1\377$)1\377"\r
+ "#*2\377$)1\377$)0\377\")1\377#)1\377\"(0\377\"(1\377#)1\377!(/\377$)0\377"\r
+ "#(0\377#(2\377\")2\377$)1\377\34#,\377BB<\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377IJ?\377&+0\377#*1\377\")1\377#"\r
+ "'1\377#(1\377!&0\377!&.\377#(/\377\40)0\377!)0\377\40)1\377\"(1\377#)0\377"\r
+ "#*1\377#(/\377\"&1\377\"&2\377\")2\377\"'1\377\40%0\377\"'1\377#)2\377\""\r
+ ")2\377#(0\377!'1\377\37'/\377\"&/\377#'/\377#)1\377\")1\377\40&.\377\37&"\r
+ ".\377!(0\377#(/\377#(0\377!(0\377#)1\377#'0\377\"'0\377\"*2\377$)0\377#("\r
+ "0\377$(0\377!&.\377\"(0\377#'/\377\")1\377#(1\377!'2\377#*2\377$)1\377\""\r
+ ")2\377#'0\377\")1\377#(2\377!&/\377!&/\377\"&.\377Ydi\377\35\37&\377%+1\377"\r
+ "%*1\377#'/\377\"'/\377#(/\377#'0\377\"&/\377\"&.\377\"&.\377#'/\377#'/\377"\r
+ "#(/\377!&.\377!&.\377#(0\377#(0\377%*1\377'+3\377&,2\377&,4\377%+2\377$)"\r
+ "1\377#*2\377#)2\377\"*2\377#(0\377$)0\377$)0\377%+1\377#*2\377$*1\377$*1"\r
+ "\377$*0\377$*1\377#)1\377$(0\377$(0\377#)1\377#(1\377#)0\377%*1\377$(0\377"\r
+ "#(/\377#(0\377$(1\377$*1\377#(/\377\")1\377\"'1\377$)0\377$(0\377%*2\377"\r
+ "&+2\377#(/\377\")0\377\"+1\377DD>\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377LLC\377GH=\377#(,\377#*1\377!'/\377\40&-\377"\r
+ "!(0\377\"(0\377\")1\377\"&.\377!&/\377\"&.\377!)0\377\"'2\377\"&/\377\"'"\r
+ "/\377\"*1\377\")2\377#(1\377#(2\377$(0\377#(1\377!(0\377#(1\377#*2\377#)"\r
+ "2\377\"&1\377\"&2\377#'0\377%'/\377$)0\377#(0\377#)0\377\"(1\377!(1\377\""\r
+ "&/\377\"&1\377\"'0\377$)1\377#)1\377\"(0\377\")1\377#'0\377\"&0\377#'0\377"\r
+ "\"&/\377#(0\377#'0\377#'/\377\"'0\377\"'2\377#(2\377#'1\377#'/\377\"&1\377"\r
+ "#*2\377#*2\377\"'/\377\37&/\377\"&.\377Ydi\377\32\37%\377$+2\377%*1\377#"\r
+ "*1\377#(1\377#'/\377#'/\377#'/\377$)0\377\"'/\377!&/\377\"(0\377$)0\377%"\r
+ "(0\377#&.\377#(/\377$)0\377%*1\377%*2\377%*1\377$)0\377$)0\377\"(1\377$)"\r
+ "0\377#*2\377$*1\377%)2\377$)1\377#(0\377%*1\377$*1\377#*2\377$*1\377$*1\377"\r
+ "#*2\377$*1\377$)0\377#)1\377#*2\377#(0\377#*2\377#(0\377#)1\377#(0\377$*"\r
+ "1\377%*1\377$*1\377#)1\377#)1\377%+2\377#(0\377$(1\377#(0\377$*1\377$)1\377"\r
+ "$)2\377#(1\377@A:\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KL"\r
+ "B\377KLB\377KLB\377KK>\377$*.\377\"(1\377\")0\377\"(1\377\"'2\377\"(1\377"\r
+ "#)0\377\"&0\377\"'0\377\")1\377\"(1\377\"&1\377#)1\377$)1\377#'2\377#)2\377"\r
+ "$*1\377$)1\377#(1\377\"(0\377\"&/\377\"(0\377$)1\377#(1\377$(1\377\"'0\377"\r
+ "$)1\377#)1\377#(0\377\"'/\377#'0\377\"&.\377\"'.\377!(/\377#'0\377\"(1\377"\r
+ "#'/\377\"(1\377\"'/\377\"'/\377\"'/\377#(0\377\"(0\377\"&0\377\"'/\377\""\r
+ "'/\377\"&/\377\")1\377\")1\377%)1\377#'1\377#)1\377#)1\377#)0\377\"*2\377"\r
+ "\"'.\377\36#+\377\"&.\377Ydi\377\33\40%\377&.3\377$*2\377#*2\377#*1\377#"\r
+ "'/\377\"&.\377\"&.\377#'/\377\"(/\377#'/\377!&.\377!&0\377%*1\377$)0\377"\r
+ "$+1\377$*1\377#(0\377$(1\377$)0\377%*1\377#*2\377$)0\377$*1\377#(2\377\""\r
+ "(1\377$)1\377$)1\377#)2\377$*1\377#)0\377$*1\377%*1\377$)1\377$)1\377#(1"\r
+ "\377$(0\377#)0\377\")1\377#)1\377#)2\377\")1\377$*1\377#*2\377\")2\377#*"\r
+ "2\377#'1\377$*1\377#*2\377$*1\377#'0\377%*1\377#*1\377$)1\377#)1\377$*2\377"\r
+ "\31\40)\377?@7\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377GH<\377!&*\377\36#-\377&-3\377$+4\377$)1\377\"(0\377#(0\377"\r
+ "$(1\377\"'.\377\"(/\377\"&/\377\"'0\377#(1\377%*1\377#*2\377$)0\377#)0\377"\r
+ "\"'1\377#)0\377#(0\377#'1\377$)0\377$)0\377\"'/\377#(1\377#(0\377#(0\377"\r
+ "\"'/\377\"'/\377$)1\377#(2\377#'/\377#(1\377#(0\377&,3\377\"'0\377$)1\377"\r
+ "#(1\377#(1\377#(0\377\"'/\377\"'/\377#'0\377\"&/\377$*1\377#(0\377!&0\377"\r
+ "\"(0\377\"(0\377\"'/\377%)2\377\"'1\377#)2\377#*2\377#)2\377!%,\377!'.\377"\r
+ "\"&.\377Ydi\377\32\37%\377&+3\377#(1\377\")0\377\"'.\377\"&.\377#(0\377\40"\r
+ "&/\377\"&.\377\"'/\377#'/\377#(/\377$)1\377$)0\377#)1\377\"'/\377#(/\377"\r
+ "%)0\377%)1\377%*1\377%+1\377%+1\377#(2\377$*1\377\"&1\377#(1\377$)1\377$"\r
+ ")0\377\")0\377$)1\377$*1\377$*1\377%*1\377#*2\377#*1\377$)1\377#(/\377#("\r
+ "0\377#)1\377#*2\377!*1\377$)0\377$*1\377$*1\377#)2\377#)1\377#*2\377$)0\377"\r
+ "#)1\377#'1\377#)1\377#)2\377$)1\377$)1\377!'0\377$)0\377\37$,\377B@9\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377GH"\r
+ "=\377&-/\377#(/\377$*1\377#)1\377$)0\377#'1\377$)1\377#(0\377#'0\377#*1\377"\r
+ "\")1\377\")1\377\"'/\377$)0\377\40'.\377\"(1\377\"(0\377\"'1\377!&0\377\""\r
+ "'1\377\"'2\377#(/\377#'/\377%*1\377\"&0\377\"(1\377$)1\377#'1\377\"'0\377"\r
+ "\40'/\377!'/\377!'/\377!'/\377#(0\377\"'/\377#(/\377#(/\377\"'/\377#)0\377"\r
+ "\"&/\377#'/\377#)0\377!)0\377$)1\377'-3\377#'/\377\"&0\377\"(0\377!'/\377"\r
+ "#(0\377%)1\377#(0\377#(0\377\"(2\377#(2\377\40&-\377\")0\377\"&.\377Ydi\377"\r
+ "\35\40'\377'-4\377%*1\377$*1\377\"&.\377!&.\377\"'1\377!'0\377\"&.\377$("\r
+ "1\377$*2\377#(1\377$)0\377\"'.\377\"(/\377\"'1\377\"(2\377#*2\377#)2\377"\r
+ "#*2\377#)2\377$)1\377&+3\377#(0\377\"(0\377#(1\377\"(0\377$)0\377$)0\377"\r
+ "$)1\377$*1\377$*1\377#*2\377\")1\377$*1\377$*1\377%*1\377$(1\377\"(1\377"\r
+ "$)0\377#)1\377#'/\377$)1\377$*1\377#(0\377#)0\377\")2\377#(0\377\"'0\377"\r
+ "$(1\377$)1\377#*2\377#)1\377#)1\377!'.\377#(.\377\35%+\377>?7\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377II?\377(."\r
+ "2\377$)0\377!(/\377\"'0\377$(0\377#(2\377\"(0\377#'1\377!&/\377\"(/\377\""\r
+ "*2\377#)1\377$)1\377#(0\377#)0\377#*1\377$)0\377#)1\377!(0\377#)1\377\"("\r
+ "0\377\"&/\377\"&/\377#(/\377\40&/\377!&0\377\"(/\377!'0\377\"(1\377\"*2\377"\r
+ "#)1\377\"'1\377\"'/\377\"&1\377!&0\377#)1\377#(1\377\"(0\377\"'/\377\"&1"\r
+ "\377#'/\377!&/\377!'.\377\"(0\377#'0\377!&/\377#'0\377\"'/\377\40(/\377\""\r
+ "&1\377#'/\377#'0\377#)2\377#(2\377%+1\377\"(.\377#(0\377\"&.\377Zek\377\30"\r
+ "\36&\377)39\377&,3\377%*1\377#*1\377#)1\377#*2\377!(/\377#)1\377%(0\377%"\r
+ ")1\377#'/\377\"(0\377#)1\377#'/\377$(1\377#)2\377#)1\377#)1\377$*1\377#("\r
+ "1\377$(0\377#)1\377\"'0\377$*1\377\")1\377\"(0\377#*2\377$*1\377#*2\377$"\r
+ "*1\377%*1\377%+1\377%*2\377$*1\377$*1\377$*1\377#)2\377$)1\377$*1\377#*2"\r
+ "\377\")1\377#)0\377$)1\377!'.\377!(/\377\"(2\377$)0\377#)1\377$)0\377#(0"\r
+ "\377#(/\377\"'0\377$)1\377$+1\377\")1\377\35$-\377>?8\377MOD\377KLB\377K"\r
+ "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FG<\377\36%'\377\""\r
+ "*2\377$*1\377#'2\377#)1\377\"&/\377&-5\377$+3\377\"(1\377#(0\377#)1\377\""\r
+ "&1\377!'0\377#)0\377$(0\377#)1\377#'2\377#'1\377\"(2\377\"&.\377#'/\377\""\r
+ "'0\377\"&/\377\")2\377\")1\377!&0\377\"'/\377#)1\377$)1\377#(0\377\"(0\377"\r
+ "\"'/\377#)2\377\"'1\377\"'/\377#'/\377#'/\377\"'/\377#)0\377!&.\377\"&.\377"\r
+ "\"&/\377#)0\377#(0\377!&/\377\"'/\377#(0\377#'0\377\"'0\377\40&0\377!'0\377"\r
+ "!(0\377#(2\377#)1\377#)1\377!%-\377\"(0\377\"&.\377Zfk\377\31\35%\377%-4"\r
+ "\377%*1\377$)0\377%*1\377#(/\377#)1\377$)0\377#(0\377#(0\377#'/\377#(1\377"\r
+ "$)1\377#'2\377#)1\377#'/\377$(0\377$)2\377#)2\377%*1\377#(2\377$)1\377$'"\r
+ "/\377#(1\377#'/\377\"(0\377\"(2\377$*1\377\"*2\377$*1\377%*1\377$*0\377$"\r
+ "+2\377$*2\377#*2\377#*2\377%*1\377%)1\377\")1\377$*1\377$*1\377#'2\377$*"\r
+ "1\377$*1\377#)1\377#(0\377\"(0\377\"&.\377#'/\377#)0\377\"(0\377$)2\377$"\r
+ ")2\377#(0\377#(1\377#(/\377\35%*\377>?7\377NPE\377MPE\377LNC\377KLB\377K"\r
+ "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377GH=\377\40',\377\36%.\377$)1\377"\r
+ "#(2\377#)2\377#'2\377\"*2\377#+2\377!&1\377!'/\377\")0\377\"(0\377\"'0\377"\r
+ "$)1\377#(1\377#'0\377#'2\377#)1\377#)0\377\"(0\377#'/\377\"'/\377\"(0\377"\r
+ "\")1\377#)0\377\")1\377\")1\377\"(0\377\"'0\377#(2\377!)2\377\"'1\377#'0"\r
+ "\377#(/\377\"&0\377#'0\377\"'/\377\"'1\377\"'/\377\"&.\377\"&.\377\"'/\377"\r
+ "\"&0\377\"'/\377\"'1\377\"(/\377!'0\377#(0\377#(/\377#'0\377#*1\377\"(0\377"\r
+ "\"(0\377#)1\377\"*2\377!(/\377#)0\377\"&.\377Ydi\377\33\36&\377%+1\377%-"\r
+ "1\377$)0\377%*1\377#(0\377$)1\377\"'2\377$)0\377$)0\377#'/\377#(0\377#(0"\r
+ "\377#(0\377$(1\377\"&1\377#'0\377#'/\377#(0\377$)2\377%*1\377#*2\377$)0\377"\r
+ "$*1\377$*1\377#*2\377$*1\377%*1\377$)1\377%*1\377%*1\377#*2\377#(0\377$)"\r
+ "1\377#*2\377#*2\377$*1\377$*1\377#*2\377\"*2\377%*1\377$*1\377%*1\377$*1"\r
+ "\377#)2\377#)1\377$)1\377\"'0\377\")2\377#*2\377#*1\377#'/\377\"(1\377#*"\r
+ "2\377\37%-\377\"*0\377\40$+\377HE;\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377FG<\377#(-\377#'/\377\"(/\377\37'0\377"\r
+ "\"'2\377!&/\377#(/\377#)2\377\")2\377\"*2\377\"(1\377\"'1\377$*1\377\"'/"\r
+ "\377!&.\377\"'/\377\"'0\377\"&/\377\"&/\377\"(0\377\"&.\377!(0\377\"'/\377"\r
+ "\"'1\377!&.\377\"'/\377\"'2\377\"'0\377!&/\377$)0\377\"'/\377#(/\377\"'/"\r
+ "\377\"&.\377#)1\377\")1\377#(/\377\"'/\377!(/\377#)3\377\"(0\377#'/\377\""\r
+ "'/\377#(1\377\"&/\377\"&0\377#(1\377\"(1\377\"(2\377#*3\377#*3\377\"&/\377"\r
+ "\40'/\377#)2\377\"*2\377\"(0\377\40'.\377\"&.\377Ydi\377\32\37$\377%*1\377"\r
+ "%+1\377%*1\377#*2\377%*1\377%)1\377#)2\377%*1\377%*1\377$)0\377#'/\377%)"\r
+ "1\377$*1\377$(0\377\")2\377$*1\377%)1\377$(0\377#'/\377$)0\377\"'/\377%+"\r
+ "1\377$*1\377$*1\377#*2\377$)0\377#(/\377$(0\377#'/\377#)1\377#'2\377#)2\377"\r
+ "#)2\377#*2\377$)1\377%*1\377\"*2\377\"*2\377\"(2\377%*1\377#*2\377$*1\377"\r
+ "#*2\377#)2\377%*1\377%*1\377%+2\377#)2\377#)0\377$)0\377#'/\377\")1\377$"\r
+ ")0\377$)2\377#)2\377\32\40%\3779:3\377KLB\377KLB\377LKB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377EF:\377!)*\377%)1\377\40&.\377\"'/\377"\r
+ "\")1\377#'/\377#(1\377\"'1\377\"(1\377#)1\377\")0\377#(/\377\"'/\377\"'/"\r
+ "\377\"'0\377#(0\377$)0\377\"'2\377\"'1\377\"&.\377#(0\377\"(0\377\"&/\377"\r
+ "\"&0\377!&0\377#)1\377!'/\377\"'/\377\"&0\377#'0\377!)1\377\"&.\377\"(0\377"\r
+ "#(0\377#)1\377\"(0\377#'1\377\"'/\377#'/\377\"'0\377\"'2\377#'0\377#'/\377"\r
+ "#)1\377#(/\377\"&.\377!'.\377\"'/\377\"(0\377#'/\377#)1\377\"(1\377\"'1\377"\r
+ "#)0\377$*1\377#)1\377$*1\377\"&.\377Ydi\377\33\40%\377&.3\377$+2\377$*1\377"\r
+ "$*1\377%+3\377%+3\377$)0\377#+2\377%+1\377%+2\377$*1\377$*1\377%+1\377#)"\r
+ "2\377\")1\377$*1\377$+2\377$)1\377$)1\377$*1\377\")1\377\"'/\377#)0\377!"\r
+ "'0\377\")1\377#*2\377$)0\377\"&/\377%*1\377#)2\377$(1\377$)1\377#*2\377$"\r
+ ")0\377$*1\377$)0\377#*2\377$)1\377\")2\377%)1\377#(0\377$(1\377$)0\377$)"\r
+ "0\377#*2\377$*1\377#(1\377$(0\377#(/\377\"'.\377%*1\377$*1\377#)0\377#'0"\r
+ "\377%)0\377\40%,\377>?7\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB"\r
+ "\377KLB\377KLB\377KLB\377HI;\377\37%*\377\37$,\377%*1\377#'1\377#(0\377!"\r
+ "&1\377#(0\377#(0\377$(1\377#*1\377\"(0\377#(1\377\"'1\377\")1\377\"&.\377"\r
+ "\"(0\377\"&/\377#)1\377$(1\377\"'2\377\"'1\377#)2\377',3\377!(/\377\"'0\377"\r
+ "\"(1\377!'.\377!&.\377\"&0\377\")1\377$*1\377\"(2\377\"'/\377$)0\377\"'1"\r
+ "\377\"&/\377\"(0\377\"'0\377\"(0\377#)1\377\"&1\377#)0\377!&1\377\"'1\377"\r
+ "#(0\377\"(0\377\"&0\377\"(1\377#'0\377%)2\377\"(/\377#)1\377#*2\377#(0\377"\r
+ "#*2\377\")0\377!&.\377\"&.\377Ydi\377\32\36%\377&.2\377$+2\377%*1\377%*1"\r
+ "\377%*1\377#*3\377$+3\377$)3\377%*2\377$+2\377%*1\377$*2\377%+1\377%+2\377"\r
+ "$)1\377#*2\377%*1\377$)1\377$)1\377%*1\377$*1\377\"(1\377#*1\377\40)1\377"\r
+ "\"(1\377\"(1\377&,3\377#*1\377%*1\377#)2\377#(0\377\")1\377$*/\377\")0\377"\r
+ "#*2\377$)1\377%*1\377#*2\377\"(0\377%*1\377$)0\377\"&0\377#'/\377$*1\377"\r
+ "\"*2\377\")1\377#)1\377%+1\377#*1\377\")1\377$*3\377$*2\377$(1\377\"&-\377"\r
+ "$(0\377\35\"*\377=>6\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377GF;\377\40(+\377\"(/\377$)0\377#)2\377#(1\377\"'/\377"\r
+ "$(2\377#(0\377\"(1\377\"(0\377!&.\377\"(1\377\")1\377\"*2\377\")1\377\"("\r
+ "1\377\"&1\377\"(1\377#)1\377\")2\377\"'/\377\"(0\377,/6\377\"(0\377\"&0\377"\r
+ "\"(0\377\"'/\377\"'0\377#(0\377\")1\377\"'/\377\"(0\377\"'/\377\"'1\377\""\r
+ "&/\377\")1\377#(0\377\"&.\377\"&0\377\"(0\377\"&/\377\"'0\377\"'/\377!)1"\r
+ "\377\"'/\377\"'/\377\"(1\377!)1\377#)1\377#*1\377\"(2\377\"'/\377\")1\377"\r
+ "#'2\377#)2\377!'/\377\37$-\377\"&.\377Zdj\377\36!(\377%+1\377%*1\377%+1\377"\r
+ "&,3\377&-2\377%,2\377%+2\377%+3\377',3\377%+2\377%*2\377&,3\377%,1\377#*"\r
+ "2\377$(1\377$)1\377$)2\377%)1\377$)1\377$*1\377#*2\377#'0\377$)1\377\"'0"\r
+ "\377#)1\377\"(1\377#(0\377#(1\377#)1\377#)1\377\"(2\377\")2\377$*1\377$*"\r
+ "1\377#*2\377%*1\377$*1\377#*2\377$*1\377#)2\377#)2\377#)2\377$*1\377#(1\377"\r
+ "#(2\377\")2\377%*1\377$*1\377#(0\377\"(2\377\"'/\377#(0\377$)0\377$)0\377"\r
+ "$)1\377\36\"*\377;;5\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377HI;\377#(+\377$)0\377#)0\377$(1\377\"'0\377\"&.\377"\r
+ "\"(1\377\"(0\377\"'/\377$)1\377$)0\377$)0\377$(1\377\"(0\377\"(/\377\"'1"\r
+ "\377\"&0\377\"(0\377\40'.\377!(/\377#)0\377#(0\377#'/\377\"'/\377$)1\377"\r
+ "\"'/\377\"'0\377#'0\377#(2\377\"&1\377\"'1\377\"(2\377!'/\377!&0\377\"&/"\r
+ "\377\"'/\377\"&.\377#(/\377$)1\377!)0\377\"'/\377!'/\377\"&/\377!'/\377#"\r
+ "(/\377#)1\377$(0\377$(0\377#)1\377\"'/\377#(0\377#'1\377#(/\377#(1\377#*"\r
+ "2\377!(0\377\37$+\377\"&.\377Ydi\377\36!'\377%*3\377%+1\377%,3\377&-4\377"\r
+ "%+1\377&-5\377&+5\377&-3\377'.5\377',3\377%+2\377&,3\377$*2\377%*2\377$*"\r
+ "1\377$+2\377#*2\377%*1\377%+2\377$)1\377$)1\377$)1\377#*2\377$*1\377&+4\377"\r
+ "%*3\377$)1\377$)0\377$+2\377$*1\377$*1\377#)1\377%*1\377$*1\377$)1\377$*"\r
+ "1\377$*1\377#)1\377#)1\377$*1\377$*1\377%*1\377$)1\377$)1\377$*1\377#*2\377"\r
+ "$)1\377\")1\377#(0\377#*1\377\"(0\377$*1\377#*1\377$*0\377%+1\377\35!*\377"\r
+ "994\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KL"\r
+ "B\377GF<\377\"',\377\"'1\377$)1\377$(0\377\"(1\377\"&.\377\"'1\377\"'/\377"\r
+ "\"'/\377#)1\377#(0\377#(2\377\"'2\377\"'/\377#'1\377!'/\377\"'0\377\"&0\377"\r
+ "\"&.\377\")1\377#)1\377#)1\377$)1\377!(0\377#(2\377\")1\377\"&.\377$(0\377"\r
+ "\"(2\377\")1\377\"(2\377\"'/\377!'.\377#(1\377\"&0\377\"(1\377\40&.\377\""\r
+ "&.\377\"&1\377\"'2\377\"'0\377\"'0\377#(0\377\"(1\377!'.\377#(1\377#)1\377"\r
+ "#(0\377\"(2\377\"(1\377$(1\377\"(2\377#(1\377\"(2\377\"(2\377\"(0\377!&."\r
+ "\377\"&.\377Zej\377\34!(\377%*2\377%+2\377&,5\377&-4\377%*2\377%+3\377&+"\r
+ "5\377&-5\377(.4\377&-3\377&-4\377%+2\377%*3\377%*3\377%*2\377%+4\377$*1\377"\r
+ "$*1\377$*1\377$)0\377%*3\377$)0\377$+2\377%+1\377#*2\377$*1\377#*2\377#)"\r
+ "2\377#)2\377#*2\377$*1\377%+2\377$*1\377$)0\377#)0\377#(0\377#)1\377#'0\377"\r
+ "%*1\377%+1\377$*1\377%*1\377$(0\377$(1\377$*2\377#)2\377#)2\377$*1\377$)"\r
+ "1\377%+1\377#)1\377#*1\377$+2\377\36$+\377\")1\377\37$+\377>?7\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FE;\377\""\r
+ "&*\377\40'/\377#)0\377#(/\377#(/\377#'/\377#(1\377\")1\377\"(0\377\"(/\377"\r
+ "#(2\377\")2\377#(0\377#(0\377#*2\377#*1\377#(/\377\")1\377\"'1\377#(1\377"\r
+ "#(1\377\"'0\377#'/\377$(1\377%)1\377$(0\377#'/\377#(0\377\"'1\377#(0\377"\r
+ "#)2\377#(0\377\")0\377\"(1\377#(1\377\"&.\377\"'0\377\"&0\377#(0\377!'/\377"\r
+ "\"(1\377#'1\377$*3\377$(1\377\"(0\377$*1\377\"'/\377\"(0\377\"'0\377#)1\377"\r
+ "\")1\377!)1\377&,4\377\"'0\377\"(1\377#(0\377!%-\377\"&.\377Ydi\377\36!'"\r
+ "\377&,4\377&,4\377',3\377(.6\377'-6\377(-5\377&-5\377'-6\377&-5\377&.3\377"\r
+ "&.5\377&,3\377&-5\377%+3\377$+3\377(.5\377&,2\377%,2\377$(3\377%*1\377$)"\r
+ "0\377#(2\377%,3\377#*2\377#*2\377#*2\377#*2\377$*1\377%*1\377%+3\377%*1\377"\r
+ "#)0\377%+1\377%*1\377#(1\377$)1\377#*2\377$(0\377$)0\377#)0\377#*2\377%*"\r
+ "1\377$*1\377$*1\377#)1\377\")1\377$+2\377#*2\377#(2\377%*1\377%*1\377#(/"\r
+ "\377$)0\377$)0\377$*1\377\37$*\377::4\377KLB\377KLB\377KLB\377KLB\377KLB"\r
+ "\377KLB\377KLB\377LKB\377KLB\377KLB\377EE;\377\"'*\377$+2\377$)1\377\"(0"\r
+ "\377\"'/\377#(0\377$)1\377\"(0\377\"(1\377#(1\377$)1\377#*2\377\"(0\377\""\r
+ "'/\377#*1\377\")1\377\"'0\377\")1\377\40)0\377\"'/\377#(0\377%*3\377\"'/"\r
+ "\377\"&/\377\"'/\377#'/\377\"'/\377\")1\377\"&0\377#(0\377\"'1\377\")2\377"\r
+ "\"'0\377\"'0\377\"'1\377\"&/\377!'0\377\"'0\377\"(0\377\"'1\377#'1\377$)"\r
+ "1\377\"(0\377\"'1\377\"&/\377$)1\377#)0\377\")1\377\"&/\377\"'1\377#*2\377"\r
+ "\"(2\377#(2\377#)1\377#)1\377#(0\377#'/\377\"&.\377Ydi\377\36!'\377&-3\377"\r
+ "%*2\377%+1\377'-5\377'-5\377(.6\377'.6\377&.5\377(.5\377'-5\377%,3\377%-"\r
+ "4\377&+5\377&+5\377%+2\377%,4\377%+2\377&+2\377&+3\377&+2\377%+1\377$+1\377"\r
+ "#)1\377$)1\377%*3\377$*1\377#*1\377#)1\377$)1\377$+2\377%*2\377%*4\377%*"\r
+ "3\377%*1\377#*2\377#(2\377$)1\377#)1\377#*2\377#)2\377#*2\377$*1\377\"*2"\r
+ "\377#)1\377#*1\377#*2\377#)2\377$(0\377#)2\377$*1\377%*1\377%+1\377%+1\377"\r
+ "$+3\377$)1\377\35\"+\377<<6\377LLB\377KLB\377KLB\377KLB\377KLB\377LLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377GF=\377\37'*\377\36&.\377#)2\377\")1\377#)0\377"\r
+ "#)2\377\")0\377$)0\377\"(0\377!(0\377#(1\377\"(2\377#*2\377#*1\377\"'/\377"\r
+ "\")1\377\"(0\377#(0\377#(0\377\")1\377\"(1\377#(2\377$)1\377#'1\377\"'/\377"\r
+ "#)2\377#'0\377\"(0\377$)1\377\"'0\377#)1\377#*2\377\"(1\377#'/\377#'/\377"\r
+ "#'/\377#(0\377#'/\377\")1\377\"&/\377\"&0\377\"&1\377\")1\377#(0\377#'/\377"\r
+ "\"(1\377\"(1\377#(1\377\"(1\377#'/\377#(0\377#)2\377\"(0\377#'1\377#)2\377"\r
+ "#)0\377#(/\377\"&.\377Ydi\377\35!&\377&.4\377&.2\377&-3\377%,3\377&-3\377"\r
+ "&.4\377&.3\377&.4\377&+6\377&-6\377&-6\377'-4\377&-3\377&-3\377&,4\377%,"\r
+ "4\377$)0\377%*2\377%,3\377%*1\377%,3\377%*1\377%*1\377\"*2\377$*1\377%*1"\r
+ "\377$)1\377#)2\377%,4\377#*2\377$*1\377$)1\377%)1\377%+1\377\")1\377$*1\377"\r
+ "%+1\377%-3\377%,3\377%*1\377$*1\377$+2\377%+2\377#*2\377#*2\377#*2\377%+"\r
+ "1\377#+2\377%*1\377#)1\377$)2\377$)1\377$)0\377#*3\377%*2\377$(.\377@@8\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377HG"\r
+ ":\377\"')\377\40'/\377%*2\377\"(1\377#(1\377\")1\377#)0\377\"*2\377\"'1\377"\r
+ "\"&0\377$)1\377#'2\377\40'0\377!&.\377\"'/\377!(/\377!'/\377\"*2\377\"(0"\r
+ "\377\"'0\377\"'1\377\"&.\377#(1\377#)1\377\"'/\377\40*1\377#)1\377#(0\377"\r
+ "\"'0\377\40'0\377\"(2\377\"'0\377\")2\377#(0\377\"'0\377\"&.\377#'/\377\""\r
+ "'1\377\"&/\377\"&0\377!&0\377\")1\377\"'1\377\"(0\377$)1\377#)0\377\"(0\377"\r
+ "\"(1\377\40(/\377\"'0\377\"(0\377\"&/\377\"'/\377#*1\377!*1\377\"(/\377\40"\r
+ "&.\377\"&.\377Ydi\377\35!&\377%+2\377&,4\377&.5\377'+6\377%*2\377(/4\377"\r
+ "&,4\377'-6\377'-6\377&.5\377&.4\377'.6\377'.4\377'.3\377&-4\377%+2\377&+"\r
+ "4\377&-3\377%+1\377$*1\377$*1\377#*2\377$*1\377#)1\377$*2\377%*3\377$(1\377"\r
+ "%*1\377$*2\377$+2\377#(0\377#)0\377$)1\377#)2\377$)1\377#(/\377$*0\377%*"\r
+ "1\377%+2\377%*1\377%*1\377%+2\377%+4\377\"*2\377#(0\377$*1\377$*1\377#(2"\r
+ "\377#)2\377#(0\377$*1\377&,5\377%+1\377#*2\377%,3\377!$.\377==7\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FF=\377#("\r
+ ",\377$*3\377$*3\377\"(1\377\"&0\377#)1\377\"'/\377!'/\377#(1\377$)2\377#"\r
+ "'/\377#(2\377!&1\377\40'.\377#)0\377\"'1\377\"(1\377\")1\377\"'0\377\"'2"\r
+ "\377\"(0\377\"&.\377\")0\377%*2\377!(0\377!'/\377%*1\377#'1\377#'1\377\""\r
+ "'1\377#(1\377#(0\377!'/\377$)1\377\"'2\377\"(0\377#'/\377\"'/\377#'0\377"\r
+ "\"'.\377!)1\377#*2\377\"'/\377\"&.\377#(0\377\"(0\377#'/\377\"'/\377!'.\377"\r
+ "\"(0\377\40'/\377!&.\377\40'/\377#)0\377$*2\377%)2\377\"&0\377\"&.\377Ze"\r
+ "m\377\34!)\377&-3\377%+2\377',4\377(-5\377&+3\377&-2\377&.3\377',6\377'."\r
+ "6\377&.5\377',5\377%-5\377&,5\377&-6\377&-2\377&,3\377%+3\377%*1\377$*1\377"\r
+ "%+2\377$*2\377$)2\377%*1\377%,1\377%*1\377$)1\377%+1\377%)1\377%+1\377#*"\r
+ "2\377%,1\377%+1\377#)1\377#)1\377#'0\377$*1\377$)0\377$*1\377%*1\377%*1\377"\r
+ "#*2\377#)2\377#(2\377%*1\377$*1\377$*1\377%*1\377%*1\377%*4\377$*2\377$*"\r
+ "2\377#)2\377$*2\377$*1\377%+2\377#&/\377??8\377NLC\377KLB\377KLB\377KLB\377"\r
+ "LKB\377KLB\377KLB\377KLB\377KLB\377KLB\377EF;\377\36%(\377$)3\377%*1\377"\r
+ "#)1\377#'/\377\"'/\377#)1\377#)1\377#)2\377#)2\377\")1\377#*2\377\"'1\377"\r
+ "\"&0\377#(0\377\40(0\377$)1\377\"(0\377\"&.\377\"'/\377\"'0\377!'0\377\""\r
+ "&/\377\"&0\377$)0\377\40&.\377\"(1\377\"&0\377\")2\377#)1\377#'0\377!'0\377"\r
+ "\"'/\377#&0\377\")1\377$)0\377\"(1\377!'/\377\"&.\377\"'0\377\"&.\377#'0"\r
+ "\377$+1\377\"'/\377#(0\377\"'/\377\"'0\377\"(2\377\"'0\377!%.\377\"&0\377"\r
+ "\40&/\377#'1\377#)1\377\"(1\377\"'1\377#%.\377\"&.\377Yej\377\35!(\377%*"\r
+ "3\377&*4\377&+6\377'.6\377(,6\377&+5\377&.6\377&.6\377&,6\377'.5\377'.6\377"\r
+ "'-5\377&+3\377(-6\377&,4\377&-3\377%*1\377%*1\377%-2\377$+3\377$*2\377%+"\r
+ "1\377#*2\377$+2\377%+1\377$*1\377%*1\377$(0\377%*1\377%*1\377$*1\377$)1\377"\r
+ "$)1\377%*1\377%*1\377$*1\377$)1\377#*1\377$*1\377%*1\377$*1\377$)1\377#*"\r
+ "2\377%*1\377#+3\377#+3\377$+2\377$+1\377$)1\377$*2\377$*2\377%*1\377$+2\377"\r
+ "#*2\377$+1\377\33\40%\377<=4\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+ "KLB\377KLB\377KLB\377KLB\377JG=\377\"&(\377\34\"+\377#)2\377#'1\377$)0\377"\r
+ "\"(1\377$)1\377\"&0\377!&/\377\"'1\377#)1\377#*2\377$)1\377\"'/\377!(/\377"\r
+ "\"(1\377$)1\377#'/\377$)0\377$)1\377$*1\377$)1\377\"'0\377\"&1\377#'0\377"\r
+ "\"&0\377#(0\377\"&1\377\"'0\377#'1\377$)3\377\"'/\377#(/\377#'/\377\"'1\377"\r
+ "#'/\377\"&1\377\40&.\377\"(0\377\"'/\377!'.\377%)1\377\"(/\377\")1\377!("\r
+ "1\377!(/\377\"&0\377\"&0\377\"'/\377!'/\377\"&1\377\"&0\377#'/\377#(1\377"\r
+ "\"'/\377#*1\377\40$-\377\"&.\377Ydi\377\35!&\377&,3\377&,4\377'-6\377'.4"\r
+ "\377'-5\377(.6\377(.6\377&,5\377&+4\377&-5\377&,6\377&.5\377&*5\377%+2\377"\r
+ "%*3\377%,2\377%*2\377%*1\377$+3\377%,2\377%+2\377#)2\377#)2\377%*2\377#*"\r
+ "1\377$)0\377#(0\377$*1\377#(0\377#(2\377%*1\377$)0\377$*3\377#*2\377#)3\377"\r
+ "%*3\377$*1\377$*1\377#*2\377$*1\377$*1\377%+1\377%*1\377$*1\377#*2\377$*"\r
+ "1\377%)1\377$*1\377%+1\377$,3\377$*1\377$*1\377%*1\377#*1\377$*1\377!(/\377"\r
+ "AC:\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377LKB\377KLB\377KLB\377LJ"\r
+ "B\377ROB\377(.1\377\")1\377$(2\377\"'/\377\")1\377\")1\377#(2\377$*2\377"\r
+ "\"(1\377$,4\377#'0\377#(1\377\"&0\377\"&2\377\"(1\377#(0\377\"&/\377\"(0"\r
+ "\377\"'/\377\"(0\377\"(2\377\"(1\377\"(0\377#(1\377\"&/\377\"&0\377\"'0\377"\r
+ "\"'0\377\"'1\377!&.\377\"'/\377$)1\377\"'0\377#*2\377#'1\377\"'/\377\"&/"\r
+ "\377!&.\377#(1\377\")1\377\"&/\377#'/\377\"'0\377$)1\377!'0\377\40&/\377"\r
+ "!'/\377\"&1\377!&.\377\"'0\377$)0\377\"'1\377\"&0\377!'/\377\"(/\377#(/\377"\r
+ "#(0\377\"&.\377Ydi\377\35!'\377&-4\377&+5\377',4\377'.4\377'-5\377'.5\377"\r
+ ").5\377',7\377(-5\377&-5\377&+5\377&.6\377&-6\377&,4\377%+4\377%+2\377%*"\r
+ "2\377$*2\377%*2\377%*1\377$,3\377$+2\377$*1\377%*1\377$,1\377%-2\377%*1\377"\r
+ "$*1\377$*1\377$*1\377#(0\377$*1\377$*3\377$*2\377$)2\377%*2\377%*1\377#*"\r
+ "2\377#*2\377$*1\377%*1\377%*1\377#*2\377$*3\377%,2\377%+1\377#)0\377$)0\377"\r
+ "$+2\377%*1\377%+1\377$*1\377%,2\377\"'.\377$)0\377!(1\377BA:\377LLB\377K"\r
+ "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KKB\377GD;\377#(."\r
+ "\377$*3\377\")1\377\40&/\377#)1\377\"'0\377#)1\377$(0\377\")1\377#*1\377"\r
+ "#)0\377#)1\377$)0\377\"(1\377\"*2\377\"(0\377\"(/\377\"'/\377\"'/\377\"*"\r
+ "1\377\"(0\377\"(1\377\"(0\377\"(0\377\"(1\377#(/\377\"&/\377\"(1\377#)1\377"\r
+ "!'/\377\"&/\377!(/\377\"'/\377\"'/\377$(0\377\"'/\377\"&0\377!&/\377\40'"\r
+ "/\377\"(2\377\"&0\377$)0\377#(1\377\"'/\377\"&/\377\"&/\377#(0\377#)2\377"\r
+ "#)0\377\"&1\377\40&.\377\40&/\377\"&.\377\"'/\377\40&.\377\"'/\377\"&0\377"\r
+ "\"&.\377Ydi\377\35!'\377&,3\377&+4\377&,6\377&-6\377&+4\377&-6\377&-6\377"\r
+ "',4\377'.6\377%-4\377%+2\377&-4\377&*3\377&+3\377%,3\377$+2\377%*3\377%+"\r
+ "1\377%+1\377%+2\377$+2\377%*1\377%*1\377#(/\377$)1\377$*3\377%*2\377%*4\377"\r
+ "$*1\377#)1\377#)1\377$*1\377#*2\377$*1\377%*1\377#(1\377#)1\377$+2\377$)"\r
+ "2\377\")1\377#*1\377$+1\377#)0\377#)2\377#*2\377#)2\377$)1\377\")1\377#*"\r
+ "2\377$*1\377#*2\377#*2\377&+2\377$)0\377#*2\377\37'1\377.6;\377SOB\377KL"\r
+ "B\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377NLA\377=?>\377\36'"\r
+ "0\377$)0\377\"&.\377\")1\377#(0\377#(0\377\40&.\377!&.\377\"&/\377\"&.\377"\r
+ "\"&.\377\"&.\377#(1\377#(1\377#(0\377\"(0\377!&.\377#(0\377\"(0\377#'0\377"\r
+ "!(0\377\"'/\377!)0\377!&0\377\"'0\377\"&0\377\"'2\377\"'/\377\"&/\377!&."\r
+ "\377\"(0\377!(0\377\40&-\377\")1\377#'0\377#(2\377\")0\377\40'.\377!&.\377"\r
+ "#(1\377\"&.\377\"'1\377\"(2\377\"'2\377\"'/\377\40&.\377\"'0\377\"(0\377"\r
+ "!'0\377\"&1\377\"'2\377\"&/\377\"&/\377#'/\377#'/\377!&.\377\"%-\377\"&."\r
+ "\377Ydi\377\36!&\377%*2\377&+5\377'-4\377&.5\377&-5\377%+3\377&+5\377&-6"\r
+ "\377&+5\377&,2\377%+3\377&,5\377$*2\377$*2\377%*2\377%*1\377$*2\377%*3\377"\r
+ "#*2\377$*2\377#*2\377%*3\377#*2\377$*1\377#*2\377#)2\377#*2\377$)2\377$*"\r
+ "2\377#*1\377#)1\377$)1\377#*2\377\"*2\377#*2\377#)2\377#*1\377#)0\377%,3"\r
+ "\377\")1\377$)1\377%*1\377#)1\377#(2\377#'1\377%)1\377$)0\377$)1\377%+1\377"\r
+ "#)2\377\"'1\377#*1\377#*1\377\")1\377$)4\377$*1\377\40+9\377GKP\377NMC\377"\r
+ "KLB\377KLB\377KLB\377KLB\377KLB\377JKC\377HID\377OQQ\377#-:\377\"'0\377\""\r
+ "&0\377$(0\377!&1\377\"'1\377!&.\377\37&-\377!&.\377\"&/\377\"&0\377\"&.\377"\r
+ "\"(0\377\"(0\377#(0\377!&.\377\"'1\377\"'1\377\"'1\377\40(0\377\"'0\377\""\r
+ "'/\377\"'0\377!&/\377#(0\377\")1\377\"&0\377\40(0\377\"&.\377\"&/\377\"&"\r
+ "0\377\"&.\377!&0\377\"&/\377$)0\377#'/\377\"&/\377\"&0\377\"(0\377\40'.\377"\r
+ "#)0\377\"'/\377#)1\377\"'0\377\"&/\377\"&.\377!&0\377\"(/\377\"&/\377\40"\r
+ "&/\377!&.\377!'/\377\40&.\377\40&.\377\40'.\377!%-\377\40#+\377\36#+\377"\r
+ "\"&.\377Ydi\377\34\40&\377%*1\377%*1\377%*2\377%,2\377&+5\377%+3\377%*3\377"\r
+ "&-4\377&+2\377'+4\377&,5\377%+2\377%)1\377$)1\377#*2\377%*1\377$*1\377%*"\r
+ "1\377$*1\377$*1\377%+2\377$*1\377#)0\377%*1\377%*1\377$)1\377%*1\377$*1\377"\r
+ "%*1\377#)2\377#)2\377#(2\377$*3\377\")2\377$*1\377%)2\377#(0\377%*1\377%"\r
+ "*1\377\"(0\377\"(1\377$)0\377#)1\377$'0\377#'0\377#'0\377\"&.\377\"&.\377"\r
+ "#'/\377#(1\377#(1\377!(0\377$(0\377!)0\377\"*2\377\")1\377#'/\377-7C\377"\r
+ "[aa\377SQD\377JJ@\377KLB\377KLB\377LKA\377QPC\377ggc\3774?O\377\36$,\377"\r
+ "\"'0\377!&.\377!'.\377\40&.\377\40&-\377\40&-\377!&.\377\40&-\377\40'/\377"\r
+ "!&.\377#'/\377#(/\377\"&/\377\"&.\377!&/\377\"'1\377\"'/\377!(0\377\"(1\377"\r
+ "!'0\377!(0\377#'0\377#(1\377\"'/\377!(1\377!'.\377!'/\377#'0\377#'/\377\""\r
+ "&/\377!&.\377!&.\377!&.\377\"&.\377\"&1\377\"&.\377\"&.\377\"&.\377\"&.\377"\r
+ "!'0\377!&.\377\")0\377\"&.\377#'/\377!'.\377\40&-\377\"%-\377\"&.\377!&."\r
+ "\377!&.\377\"'/\377\"&.\377\"&.\377\37%-\377\40$,\377\37#*\377\36\")\377"\r
+ "\"&.\377Ydi\377\32\36$\377%*1\377%*1\377%+1\377%+1\377%*2\377%+2\377%+2\377"\r
+ "$*2\377%*1\377%,2\377#*2\377%*1\377#)1\377#(1\377#)1\377\"'/\377%*1\377$"\r
+ ")1\377#(1\377$)1\377$*1\377$(0\377#(0\377$)1\377$)1\377#*1\377!'.\377#(/"\r
+ "\377$(0\377\"(0\377\"(0\377\")1\377\"&.\377#(0\377#(0\377$)0\377\"'/\377"\r
+ "\"&.\377#(/\377!&.\377!&0\377!&.\377\"&0\377\"&/\377\"(/\377!&.\377!(0\377"\r
+ "!&.\377\40&.\377!&.\377#'/\377\"&.\377#(/\377!'.\377!'.\377!(0\377\"&.\377"\r
+ "\34!(\377%0=\377Qan\377jkk\377fbV\377db\\\377hf^\377UZ_\377.5?\377\32\36"\r
+ "(\377\40'/\377\40&.\377\37&-\377!&.\377!&/\377!%.\377\40&-\377\36$,\377\36"\r
+ "%-\377\36&-\377!'.\377\"'.\377\"'.\377\40&/\377\37&.\377\40&-\377\37%-\377"\r
+ "\40%-\377!&.\377!&.\377\"(/\377\"&.\377\")0\377!'.\377\37&.\377\40%.\377"\r
+ "!&.\377\"&0\377\"&.\377\"&.\377!&.\377\37&-\377\37&-\377\36&-\377\"&/\377"\r
+ "!&.\377\40&.\377!&.\377!&.\377\"'/\377#)0\377\"'.\377\40&.\377\40&.\377\""\r
+ "&.\377!'.\377!$-\377\"%-\377\40&.\377\40&-\377!&-\377\37&-\377!$,\377\40"\r
+ "$,\377\40'.\377\"&0\377\40$-\377!%-\377\"&.\377Ydi\377\32\35&\377$*1\377"\r
+ "%-2\377%+2\377%+1\377$+1\377%+1\377%+1\377$)0\377$(0\377\"(0\377!(/\377#"\r
+ "(/\377\"'/\377\40&-\377!&.\377!&.\377!(/\377\"&.\377\"&-\377!&.\377!'.\377"\r
+ "\"&/\377!&.\377\"&.\377!&/\377!&.\377!&,\377\40&.\377\40&-\377\"'/\377\""\r
+ "'/\377!'/\377\40&-\377\37'/\377!&0\377\"&.\377\"&.\377\40%-\377\37%-\377"\r
+ "\36&-\377\37%-\377\37&,\377\40%,\377\37%,\377!&+\377\40&.\377\37&-\377\36"\r
+ "$,\377\35#+\377\34$,\377!(/\377\40&.\377\40(-\377\40&.\377!&.\377\37%,\377"\r
+ "\40%-\377\36%,\377\35$+\377\26\33#\377\35&5\377*08\377',5\377\36%/\377\21"\r
+ "\32&\377\31\40(\377\35$+\377\36$,\377\37%,\377\40$,\377\40&-\377\37$,\377"\r
+ "\36$-\377\37#*\377\34#+\377\22\33#\377\33\",\377!&.\377\36$+\377\37%-\377"\r
+ "\37%,\377\36#+\377\36#+\377\37$,\377\37$,\377\37&-\377\37&-\377\37&-\377"\r
+ "!&.\377\37&-\377\37&-\377!%.\377!$-\377\40%-\377!%-\377!%-\377!&.\377\37"\r
+ "&-\377!&.\377\37&-\377\37&-\377!&/\377\40&.\377\40&-\377\40&.\377\40&-\377"\r
+ "\40&.\377\"&.\377\"'/\377!&.\377!&.\377\"&.\377#'-\377\37&-\377\37$,\377"\r
+ "\36&-\377\36&-\377!%,\377\36&-\377\40$+\377\36#+\377%,1\377!'.\377\37#,\377"\r
+ "\40$.\377\"&.\377NW[\317\21\27\37\377#)1\377&+3\377%+3\377%*2\377%+2\377"\r
+ "#(0\377\"'/\377\"'/\377!&.\377!&.\377!%-\377!%-\377\36&-\377\40%.\377\40"\r
+ "&-\377\36%,\377\37%-\377\37%,\377\37%,\377\40%-\377!%-\377\40%+\377\40%-"\r
+ "\377\37%,\377\37%-\377!%.\377\40$*\377\35#+\377\36$,\377\36\"*\377\35#*\377"\r
+ "\36#+\377\37\"+\377!$-\377\37%-\377\35$+\377\36$+\377\34$,\377\33!)\377\34"\r
+ "!)\377\35!)\377\35!(\377\35\")\377\36#*\377\36\")\377\34\40(\377\24\33\""\r
+ "\377\14\23\33\377'()\377\36\37#\377\21\26\37\377\31\36'\377\34\"(\377\32"\r
+ "\40)\377\36$,\377\34!)\377\35#*\377\33\40(\377\35\"+\377\35#+\377\31\40)"\r
+ "\377\33\"+\377\30\37)\377\32\37'\377\31\37(\377\33\40(\377\30\36'\377\32"\r
+ "\37(\377\31\37'\377\33\40)\377\33\"*\377\32\40*\377\30\35&\377\21\27\37\377"\r
+ "\23\24\26\377)*-\325\20\21\25\371\23\30\36\377\24\36$\377\30\37&\377\30\37"\r
+ "&\377\30\34%\377\27\34\"\377\30\34$\377\30\34#\377\32\35!\377\32\34!\377"\r
+ "\27\33\40\377\26\33\40\377\27\35\40\377\30\33!\377\27\33\40\377\30\35#\377"\r
+ "\30\35$\377\32\36#\377\30\33\"\377\27\36#\377\30\34#\377\27\33\"\377\30\34"\r
+ "\"\377\30\34#\377\27\35#\377\31\34\"\377\30\35#\377\30\35#\377\27\33\"\377"\r
+ "\31\34!\377\30\34#\377\30\33!\377\30\33\"\377\30\35\"\377\27\32!\377\30\33"\r
+ "\"\377\26\33\40\377\26\33\40\377\26\35!\377\26\32\37\377\26\33\40\377\26"\r
+ "\33\40\377\26\33\40\377\27\33\40\377\26\32\40\377\25\32\37\377\15\21\26\377"\r
+ "\4\10\15\377\24\27\33\317\1\1\1\40\2\5\7\321\23\26\34\377\"&/\377!&/\377"\r
+ "!%-\377\40$-\377\37$,\377\36#+\377\37$,\377\36#+\377\36#+\377\36\"*\377\36"\r
+ "#+\377\36#+\377\36#+\377\36#+\377\36\"*\377\36#*\377\36\"*\377\36\"*\377"\r
+ "\36\"+\377\36\"*\377\36\"*\377\36\"*\377\35\"*\377\36\"*\377\36\"*\377\36"\r
+ "\"*\377\35!)\377\36\"*\377\36\"*\377\35!)\377\36\"*\377\36\"*\377\36\"*\377"\r
+ "\35\"*\377\35\"*\377\22\25\31\377\11\14\17\377\12\13\16\377\11\13\16\377"\r
+ "\12\14\16\377\12\14\17\377\13\14\16\377\13\14\17\377\13\14\16\377\11\12\15"\r
+ "\377\3\7\12\377>>?\362{}{ZPNNu\21\21\26\377\5\7\12\377\10\11\13\377\10\12"\r
+ "\15\377\11\14\17\377\11\13\17\377\12\13\16\377\10\12\15\377\10\12\16\377"\r
+ "\12\14\17\377\11\14\20\377\11\14\21\377\11\14\20\377\11\13\16\377\10\12\15"\r
+ "\377\10\12\15\377\6\11\14\377\7\12\15\377\6\11\14\377\10\12\15\377\10\12"\r
+ "\15\377\6\11\14\377\4\6\12\377\1\3\4\377(((u\376\376\372(\27\30\32\201\1"\r
+ "\1\1\377\2\5\6\377\4\5\10\377\5\6\10\377\4\3\7\377\3\5\6\377\4\3\6\377\4"\r
+ "\2\4\377\3\3\1\377\3\2\1\377\3\1\1\377\2\1\1\377\3\3\1\377\1\1\1\377\1\1"\r
+ "\1\377\1\1\1\377\1\2\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1"\r
+ "\377\1\1\1\377\1\1\1\377\1\1\1\377\2\2\1\377\1\1\1\377\1\1\1\377\1\1\1\377"\r
+ "\2\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1"\r
+ "\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1"\r
+ "\1\377\1\1\1\377\1\1\1\377\1\1\1\377\2\2\4\321\1\1\1\40"\r
+};\r
--- /dev/null
+//\r
+// This file was automagically generated by bin2c (by James L. Hammons)\r
+//\r
+\r
+char diskROM[0x100] = { // Loads at $C600 (slot 6)\r
+ 0xA2, 0x20, 0xA0, 0x00, 0xA2, 0x03, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C,\r
+ 0x49, 0xFF, 0x29, 0x7E, 0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10,\r
+ 0xE5, 0x20, 0x58, 0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x2B, 0xAA, 0xBD,\r
+ 0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, 0x80, 0xC0,\r
+ 0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, 0xFC, 0x88,\r
+ 0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0xA9, 0x08, 0x85, 0x27, 0x18, 0x08, 0xBD, 0x8C,\r
+ 0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF7, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3,\r
+ 0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xDF, 0x49, 0xAD, 0xF0,\r
+ 0x25, 0xD0, 0xD9, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD,\r
+ 0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xBE, 0xA5, 0x40,\r
+ 0xC5, 0x41, 0xD0, 0xB8, 0xB0, 0xB7, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59,\r
+ 0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10,\r
+ 0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB,\r
+ 0x59, 0xD6, 0x02, 0xD0, 0x87, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00,\r
+ 0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5,\r
+ 0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x2B, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char hdROM[0x100] = { // Loads at $C700 (slot 7)\r
+ 0xA9, 0x20, 0xA9, 0x00, 0xA9, 0x03, 0xA9, 0x3C, 0xA9, 0x00, 0x8D, 0xF2, 0xC0, 0xA9, 0x70, 0x8D,\r
+ 0xF3, 0xC0, 0xAD, 0xF0, 0xC0, 0x48, 0xAD, 0xF1, 0xC0, 0x18, 0xC9, 0x01, 0xD0, 0x01, 0x38, 0x68,\r
+ 0x90, 0x03, 0x4C, 0x00, 0xC6, 0xA9, 0x70, 0x85, 0x43, 0xA9, 0x00, 0x85, 0x44, 0x85, 0x46, 0x85,\r
+ 0x47, 0xA9, 0x08, 0x85, 0x45, 0xA9, 0x01, 0x85, 0x42, 0x20, 0x46, 0xC7, 0x90, 0x03, 0x4C, 0x00,\r
+ 0xC6, 0xA2, 0x70, 0x4C, 0x01, 0x08, 0x18, 0xA5, 0x42, 0x8D, 0xF2, 0xC0, 0xA5, 0x43, 0x8D, 0xF3,\r
+ 0xC0, 0xA5, 0x44, 0x8D, 0xF4, 0xC0, 0xA5, 0x45, 0x8D, 0xF5, 0xC0, 0xA5, 0x46, 0x8D, 0xF6, 0xC0,\r
+ 0xA5, 0x47, 0x8D, 0xF7, 0xC0, 0xAd, 0xF0, 0xC0, 0x48, 0xA5, 0x42, 0xC9, 0x01, 0xD0, 0x03, 0x20,\r
+ 0x7D, 0xC7, 0xAD, 0xF1, 0xC0, 0x18, 0xC9, 0x01, 0xD0, 0x01, 0x38, 0x68, 0x60, 0x98, 0x48, 0xA0,\r
+ 0x00, 0xAD, 0xF8, 0xC0, 0x91, 0x44, 0xC8, 0xD0, 0xF8, 0xE6, 0x45, 0xA0, 0x00, 0xAD, 0xF8, 0xC0,\r
+ 0x91, 0x44, 0xC8, 0xD0, 0xF8, 0x68, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xD7, 0x46\r
+};\r
+\r
+// Various firmware from the IIe ROM file...\r
+\r
+//Not sure what the heck this is...\r
+char slot2e[0x100] = {\r
+ 0x2C, 0x58, 0xFF, 0x70, 0x0C, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x06, 0x01, 0x31, 0x8E, 0x94, 0x97, \r
+ 0x9A, 0x85, 0x27, 0x86, 0x35, 0x8A, 0x48, 0x98, 0x48, 0x08, 0x78, 0x8D, 0xFF, 0xCF, 0x20, 0x58, \r
+ 0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x8D, 0xF8, 0x07, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x26, 0xA8, \r
+ 0x28, 0x50, 0x29, 0x1E, 0x38, 0x05, 0x5E, 0x38, 0x05, 0xB9, 0x8A, 0xC0, 0x29, 0x1F, 0xD0, 0x05, \r
+ 0xA9, 0xEF, 0x20, 0x05, 0xC8, 0xE4, 0x37, 0xD0, 0x0B, 0xA9, 0x07, 0xC5, 0x36, 0xF0, 0x05, 0x85, \r
+ 0x36, 0x18, 0x90, 0x08, 0xE4, 0x39, 0xD0, 0xF9, 0xA9, 0x05, 0x85, 0x38, 0xBD, 0x38, 0x07, 0x29, \r
+ 0x02, 0x08, 0x90, 0x03, 0x4C, 0xBF, 0xC8, 0xBD, 0xB8, 0x04, 0x48, 0x0A, 0x10, 0x0E, 0xA6, 0x35, \r
+ 0xA5, 0x27, 0x09, 0x20, 0x9D, 0x00, 0x02, 0x85, 0x27, 0xAE, 0xF8, 0x07, 0x68, 0x29, 0xBF, 0x9D, \r
+ 0xB8, 0x04, 0x28, 0xF0, 0x06, 0x20, 0x63, 0xCB, 0x4C, 0xB5, 0xC8, 0x4C, 0xFC, 0xC8, 0x20, 0x00, \r
+ 0xC8, 0xA2, 0x00, 0x60, 0x4C, 0x9B, 0xC8, 0x4C, 0xAA, 0xC9, 0x4A, 0x20, 0x9B, 0xC9, 0xB0, 0x08, \r
+ 0x20, 0xF5, 0xCA, 0xF0, 0x06, 0x18, 0x90, 0x03, 0x20, 0xD2, 0xCA, 0xBD, 0xB8, 0x05, 0xAA, 0x60, \r
+ 0xA2, 0x03, 0xB5, 0x36, 0x48, 0xCA, 0x10, 0xFA, 0xAE, 0xF8, 0x07, 0xBD, 0x38, 0x06, 0x85, 0x36, \r
+ 0xBD, 0xB8, 0x04, 0x29, 0x38, 0x4A, 0x4A, 0x4A, 0x09, 0xC0, 0x85, 0x37, 0x8A, 0x48, 0xA5, 0x27, \r
+ 0x48, 0x09, 0x80, 0x20, 0xED, 0xFD, 0x68, 0x85, 0x27, 0x68, 0x8D, 0xF8, 0x07, 0xAA, 0x0A, 0x0A, \r
+ 0x0A, 0x0A, 0x85, 0x26, 0x8D, 0xFF, 0xCF, 0xA5, 0x36, 0x9D, 0x38, 0x06, 0xA2, 0x00, 0x68, 0x95, \r
+ 0x36, 0xE8, 0xE0, 0x04, 0x90, 0xF8, 0xAE, 0xF8, 0x07, 0x60, 0xC1, 0xD0, 0xD0, 0xCC, 0xC5, 0x08\r
+};\r
+\r
+//This looks identical to diskROM\r
+char slot6e[0x100] = {\r
+ 0xA2, 0x20, 0xA0, 0x00, 0xA2, 0x03, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C, \r
+ 0x49, 0xFF, 0x29, 0x7E, 0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10, \r
+ 0xE5, 0x20, 0x58, 0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x2B, 0xAA, 0xBD, \r
+ 0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, 0x80, 0xC0, \r
+ 0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, 0xFC, 0x88, \r
+ 0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0xA9, 0x08, 0x85, 0x27, 0x18, 0x08, 0xBD, 0x8C, \r
+ 0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF7, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3, \r
+ 0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xDF, 0x49, 0xAD, 0xF0, \r
+ 0x25, 0xD0, 0xD9, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD, \r
+ 0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xBE, 0xA5, 0x40, \r
+ 0xC5, 0x41, 0xD0, 0xB8, 0xB0, 0xB7, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59, \r
+ 0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, \r
+ 0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, \r
+ 0x59, 0xD6, 0x02, 0xD0, 0x87, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00, \r
+ 0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5, \r
+ 0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x2B, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+// Various firmware from the IIc\r
+\r
+char slot1[0x100] = {\r
+ 0x2C, 0x89, 0xC1, 0x70, 0x0C, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x06, 0x01, 0x31, 0x9E, 0xA8, 0xB4, \r
+ 0xBB, 0xDA, 0xA2, 0xC1, 0x4C, 0x1C, 0xC2, 0x90, 0x03, 0x4C, 0xE5, 0xC7, 0x0A, 0x7A, 0x5A, 0xBD, \r
+ 0xB8, 0x04, 0xF0, 0x42, 0xA5, 0x24, 0xB0, 0x1C, 0xDD, 0xB8, 0x04, 0x90, 0x03, 0xBD, 0x38, 0x07, \r
+ 0xDD, 0x38, 0x07, 0xB0, 0x0B, 0xC9, 0x11, 0xB0, 0x11, 0x09, 0xF0, 0x3D, 0x38, 0x07, 0x65, 0x24, \r
+ 0x85, 0x24, 0x80, 0x06, 0xC5, 0x21, 0x90, 0x02, 0x64, 0x24, 0x7A, 0x5A, 0xBD, 0x38, 0x07, 0xDD, \r
+ 0xB8, 0x04, 0xB0, 0x08, 0xC5, 0x24, 0xB0, 0x0E, 0xA9, 0x40, 0x80, 0x02, 0xA9, 0x1A, 0xC0, 0x80, \r
+ 0x6A, 0x20, 0x9B, 0xC1, 0x80, 0xE4, 0x98, 0x20, 0x8A, 0xC1, 0xBD, 0xB8, 0x04, 0xF0, 0x17, 0x3C, \r
+ 0xB8, 0x06, 0x30, 0x12, 0xBD, 0x38, 0x07, 0xFD, 0xB8, 0x04, 0xC9, 0xF8, 0x90, 0x04, 0x18, 0x65, \r
+ 0x21, 0xAC, 0xA9, 0x00, 0x85, 0x24, 0x68, 0x7A, 0xFA, 0x60, 0x20, 0xA9, 0xC7, 0x90, 0xFA, 0x3C, \r
+ 0xB8, 0x06, 0x10, 0x07, 0xC9, 0x91, 0xF0, 0x03, 0x20, 0xF0, 0xFD, 0x4C, 0xCD, 0xC7, 0x5A, 0x48, \r
+ 0x20, 0xB6, 0xC2, 0x9E, 0xB8, 0x06, 0x80, 0x07, 0x5A, 0x20, 0xD9, 0xC7, 0x90, 0xFA, 0x90, 0x68, \r
+ 0x7A, 0xA2, 0x00, 0x60, 0x5A, 0x48, 0x20, 0x8A, 0xC1, 0x80, 0xF4, 0x5A, 0x48, 0x4A, 0xD0, 0x15, \r
+ 0x08, 0x20, 0xD3, 0xC7, 0x28, 0x90, 0x05, 0x29, 0x28, 0x0A, 0x80, 0x02, 0x29, 0x30, 0xC9, 0x10, \r
+ 0xF0, 0xDD, 0x18, 0x80, 0xDA, 0xA2, 0x40, 0x68, 0x7A, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot2[0x100] = {\r
+ 0x2C, 0x89, 0xC1, 0x70, 0x14, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x0E, 0x01, 0x31, 0x11, 0x13, 0x15, \r
+ 0x17, 0x80, 0x8B, 0x80, 0x93, 0x80, 0x9D, 0x80, 0xA2, 0xDA, 0xA2, 0xC2, 0x5A, 0x48, 0x8E, 0xF8, \r
+ 0x07, 0x50, 0x22, 0xA5, 0x36, 0x45, 0x38, 0xF0, 0x06, 0xA5, 0x37, 0xC5, 0x39, 0xF0, 0x03, 0x20, \r
+ 0xB6, 0xC2, 0x8A, 0x45, 0x39, 0x05, 0x38, 0xD0, 0x07, 0xA9, 0x05, 0x85, 0x38, 0x38, 0x80, 0x05, \r
+ 0xA9, 0x07, 0x85, 0x36, 0x18, 0xBD, 0xB8, 0x06, 0x89, 0x01, 0xD0, 0x03, 0x4C, 0x17, 0xC1, 0x90, \r
+ 0xFB, 0x68, 0x80, 0x28, 0x3C, 0xB8, 0x03, 0x50, 0x1C, 0x20, 0x8F, 0xC1, 0x80, 0x1E, 0x68, 0x20, \r
+ 0x70, 0xCC, 0x10, 0x1B, 0x20, 0xA9, 0xC7, 0xB0, 0xEB, 0x29, 0x5F, 0xC9, 0x51, 0xF0, 0x04, 0xC9, \r
+ 0x52, 0xD0, 0x09, 0xA9, 0x98, 0x7A, 0xFA, 0x60, 0x18, 0x20, 0xA3, 0xC7, 0x20, 0x4C, 0xCC, 0x48, \r
+ 0x20, 0xD9, 0xC7, 0xB0, 0x09, 0xBD, 0xB8, 0x06, 0x29, 0x10, 0xF0, 0xD2, 0x80, 0xF2, 0xA8, 0x68, \r
+ 0x5A, 0x20, 0xB8, 0xC3, 0x68, 0xBC, 0x38, 0x06, 0xF0, 0x12, 0x09, 0x80, 0xC9, 0x91, 0xF0, 0xDC, \r
+ 0xC9, 0xFF, 0xF0, 0xD8, 0xC9, 0x92, 0xF0, 0xD0, 0xC9, 0x94, 0xF0, 0xCD, 0x3C, 0xB8, 0x03, 0x50, \r
+ 0xC4, 0x20, 0xED, 0xFD, 0x80, 0xC6, 0x20, 0x9A, 0xCF, 0xBC, 0x29, 0xC2, 0x20, 0x7C, 0xC3, 0x48, \r
+ 0x88, 0x30, 0x04, 0xC0, 0x03, 0xD0, 0xF5, 0x20, 0x9A, 0xCF, 0x68, 0xBC, 0x2B, 0xC2, 0x99, 0xFB, \r
+ 0xBF, 0x68, 0x99, 0xFA, 0xBF, 0x68, 0x9D, 0xB8, 0x06, 0x29, 0x01, 0xD0, 0x02, 0xA9, 0x09, 0x9D, \r
+ 0x38, 0x06, 0x68, 0x9D, 0xB8, 0x04, 0x9E, 0xB8, 0x03, 0x60, 0x03, 0x07, 0xA0, 0xB0, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot3[0x100] = {\r
+ 0x48, 0xDA, 0x5A, 0x80, 0x12, 0x38, 0x90, 0x18, 0x80, 0x1A, 0xEA, 0x01, 0x88, 0x2C, 0x2F, 0x32, \r
+ 0x35, 0x4C, 0xAF, 0xC7, 0x4C, 0xB5, 0xC7, 0x20, 0x20, 0xCE, 0x20, 0xBE, 0xCD, 0x20, 0x58, 0xFC, \r
+ 0x7A, 0xFA, 0x68, 0x18, 0xB0, 0x03, 0x4C, 0xF6, 0xFD, 0x4C, 0x1B, 0xFD, 0x4C, 0x41, 0xCF, 0x4C, \r
+ 0x35, 0xCF, 0x4C, 0xC2, 0xCE, 0x4C, 0xB1, 0xCE, 0xA9, 0x06, 0xCD, 0xB3, 0xFB, 0xF0, 0x3C, 0x20, \r
+ 0x60, 0xC3, 0xA9, 0xF8, 0x85, 0x37, 0x64, 0x36, 0xB2, 0x36, 0x92, 0x36, 0xE6, 0x36, 0xD0, 0xF8, \r
+ 0xE6, 0x37, 0xD0, 0xF4, 0xDA, 0xAE, 0x78, 0x04, 0x3C, 0x81, 0xC0, 0x3C, 0x81, 0xC0, 0xFA, 0x60, \r
+ 0xDA, 0xA2, 0x00, 0x2C, 0x11, 0xC0, 0x30, 0x02, 0xA2, 0x08, 0x2C, 0x12, 0xC0, 0x10, 0x02, 0xE8, \r
+ 0xE8, 0x2C, 0x81, 0xC0, 0x2C, 0x81, 0xC0, 0x8E, 0x78, 0x04, 0xFA, 0x60, 0xAD, 0x13, 0xC0, 0x0A, \r
+ 0xAD, 0x18, 0xC0, 0x08, 0x8D, 0x00, 0xC0, 0x8D, 0x03, 0xC0, 0xB9, 0x78, 0x04, 0x28, 0xB0, 0x03, \r
+ 0x8D, 0x02, 0xC0, 0x10, 0x03, 0x8D, 0x01, 0xC0, 0x60, 0x09, 0x80, 0xC9, 0xFB, 0xB0, 0x06, 0xC9, \r
+ 0xE1, 0x90, 0x02, 0x29, 0xDF, 0x60, 0x48, 0xA9, 0x08, 0x1C, 0xFB, 0x04, 0x68, 0x20, 0xED, 0xFD, \r
+ 0x4C, 0x44, 0xFD, 0x20, 0x9D, 0xCC, 0x80, 0x09, 0x20, 0x9D, 0xCC, 0x24, 0x32, 0x30, 0x02, 0x29, \r
+ 0x7F, 0x5A, 0x09, 0x00, 0x30, 0x15, 0x48, 0xAD, 0xFB, 0x04, 0x6A, 0x68, 0x90, 0x0D, 0x2C, 0x1E, \r
+ 0xC0, 0x10, 0x08, 0x49, 0x40, 0x89, 0x60, 0xF0, 0x02, 0x49, 0x40, 0x2C, 0x1F, 0xC0, 0x10, 0x19, \r
+ 0x48, 0x8D, 0x01, 0xC0, 0x98, 0x45, 0x20, 0x4A, 0xB0, 0x04, 0xAD, 0x55, 0xC0, 0xC8, 0x98, 0x4A, \r
+ 0xA8, 0x68, 0x91, 0x28, 0x2C, 0x54, 0xC0, 0x7A, 0x60, 0x91, 0x28, 0x7A, 0x60, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot4[0x100] = {\r
+ 0x80, 0x05, 0xA2, 0x03, 0x60, 0x38, 0x90, 0x18, 0x4C, 0xCF, 0xC5, 0x01, 0x20, 0x02, 0x02, 0x02, \r
+ 0x02, 0x00, 0x3B, 0xDC, 0x93, 0x82, 0x69, 0xBD, 0x6B, 0x1A, 0x9C, 0x7C, 0x07, 0xA2, 0x80, 0xA0, \r
+ 0x01, 0x9E, 0x7D, 0x04, 0x9E, 0x7D, 0x05, 0xA9, 0xFF, 0x9D, 0x7D, 0x06, 0xA9, 0x03, 0x9D, 0x7D, \r
+ 0x07, 0xA2, 0x00, 0x88, 0x10, 0xEB, 0x20, 0x6B, 0xC4, 0xA9, 0x00, 0xAA, 0x20, 0x9A, 0xCF, 0x8A, \r
+ 0x8D, 0x78, 0x04, 0x4A, 0x0D, 0x78, 0x04, 0xC9, 0x10, 0xB0, 0x1F, 0x29, 0x05, 0xF0, 0x01, 0x58, \r
+ 0x69, 0x55, 0x08, 0x78, 0x8E, 0xFC, 0x07, 0x8D, 0x79, 0xC0, 0xA2, 0x08, 0xCA, 0x0A, 0x90, 0x03, \r
+ 0x9D, 0x58, 0xC0, 0xD0, 0xF7, 0x8D, 0x78, 0xC0, 0x28, 0x18, 0x60, 0xA2, 0x80, 0x80, 0x02, 0xA2, \r
+ 0x00, 0xBD, 0x7D, 0x04, 0x9D, 0x7C, 0x04, 0xBD, 0x7D, 0x05, 0x9D, 0x7C, 0x05, 0xCA, 0x10, 0xEF, \r
+ 0x80, 0x0C, 0x9C, 0x7C, 0x04, 0x9C, 0x7C, 0x05, 0x9C, 0xFC, 0x04, 0x9C, 0xFC, 0x05, 0x9C, 0x7C, \r
+ 0x06, 0x18, 0x60, 0xA9, 0x20, 0x1C, 0x7C, 0x07, 0x2D, 0x7C, 0x06, 0x1C, 0x7C, 0x06, 0x2C, 0xFC, \r
+ 0x07, 0x30, 0x13, 0x2C, 0x63, 0xC0, 0x30, 0x02, 0x09, 0x80, 0x2C, 0x7C, 0x07, 0x10, 0x02, 0x09, \r
+ 0x40, 0x8D, 0x7C, 0x07, 0x18, 0x60, 0x0D, 0x7C, 0x07, 0x29, 0xE0, 0x80, 0xF4, 0x6A, 0x6A, 0x29, \r
+ 0x80, 0xAA, 0xAD, 0x78, 0x04, 0x9D, 0x7D, 0x04, 0xAD, 0x78, 0x05, 0x9D, 0x7D, 0x05, 0xAD, 0xF8, \r
+ 0x04, 0x9D, 0x7D, 0x06, 0xAD, 0xF8, 0x05, 0x9D, 0x7D, 0x07, 0x18, 0x60, 0x48, 0x18, 0xA9, 0x0E, \r
+ 0x2D, 0x7C, 0x07, 0xD0, 0x01, 0x38, 0x68, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot5[0x100] = {\r
+ 0xA2, 0x20, 0xA2, 0x00, 0xA2, 0x03, 0xC9, 0x00, 0xB0, 0x17, 0x38, 0xB0, 0x01, 0x18, 0xA2, 0x05, \r
+ 0x7E, 0x73, 0x04, 0x18, 0xA2, 0xC5, 0x8E, 0xF8, 0x07, 0xA2, 0x05, 0xAD, 0xFF, 0xCF, 0x4C, 0x97, \r
+ 0xC7, 0xA2, 0x05, 0x86, 0x58, 0xA9, 0xC5, 0x8D, 0xF8, 0x07, 0x20, 0x76, 0xC5, 0xA0, 0x05, 0xB9, \r
+ 0x70, 0xC5, 0x99, 0x42, 0x00, 0x88, 0x10, 0xF7, 0x20, 0x0A, 0xC5, 0xB0, 0x15, 0xAE, 0x00, 0x08, \r
+ 0xCA, 0xD0, 0x0F, 0xAE, 0x01, 0x08, 0xF0, 0x0A, 0xA5, 0x58, 0x0A, 0x0A, 0x0A, 0x0A, 0xAA, 0x4C, \r
+ 0x01, 0x08, 0xA2, 0x10, 0xBD, 0x5F, 0xC5, 0x9D, 0xDB, 0x07, 0xCA, 0x10, 0xF7, 0x80, 0xFE, 0xC3, \r
+ 0xE8, 0xE5, 0xE3, 0xEB, 0xA0, 0xC4, 0xE9, 0xF3, 0xEB, 0xA0, 0xC4, 0xF2, 0xE9, 0xF6, 0xE5, 0xAE, \r
+ 0x01, 0x50, 0x00, 0x08, 0x00, 0x00, 0xA2, 0x08, 0xBD, 0x83, 0xC5, 0x95, 0x00, 0xCA, 0x10, 0xF8, \r
+ 0x4C, 0x00, 0x00, 0x20, 0x0D, 0xC5, 0x05, 0x07, 0x00, 0x60, 0x01, 0x00, 0x00, 0x00, 0xA2, 0x03, \r
+ 0xA0, 0x00, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C, 0x49, 0xFF, 0x29, 0x7E, \r
+ 0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10, 0xE5, 0xA9, 0x08, 0x85, \r
+ 0x27, 0xA0, 0x7F, 0x60, 0xB9, 0x00, 0x02, 0xC8, 0x4C, 0x99, 0xC3, 0xC1, 0xF0, 0xF0, 0xEC, 0xE5, \r
+ 0xA0, 0xAF, 0xAF, 0xE3, 0x20, 0xD0, 0xF8, 0x20, 0x53, 0xF9, 0x85, 0x3A, 0x84, 0x3B, 0x60, 0x5A, \r
+ 0xB0, 0x1C, 0xA0, 0xC4, 0xC4, 0x39, 0xD0, 0x04, 0xA4, 0x38, 0xF0, 0x12, 0xDA, 0x48, 0x29, 0x7F, \r
+ 0xC9, 0x02, 0xB0, 0x06, 0x20, 0x3B, 0xC4, 0x20, 0x6B, 0xC4, 0x68, 0xFA, 0x7A, 0x60, 0x4C, 0x9D, \r
+ 0xC7, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x52, 0xC5, 0x4C, 0x76, 0xC5, 0x00, 0x00, 0x00, 0xBF, 0x0A\r
+};\r
+\r
+char slot6[0x100] = {\r
+ 0xA2, 0x20, 0xA0, 0x00, 0x64, 0x03, 0x64, 0x3C, 0xA9, 0x60, 0xAA, 0x86, 0x2B, 0x85, 0x4F, 0x5A, \r
+ 0xBD, 0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0x7A, 0xB9, 0xEA, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, \r
+ 0x80, 0xC0, 0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, \r
+ 0xFC, 0x88, 0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0x20, 0x8E, 0xC5, 0x64, 0x03, 0x18, \r
+ 0x08, 0x28, 0xA6, 0x2B, 0xC6, 0x03, 0xD0, 0x0E, 0xBD, 0x88, 0xC0, 0xA5, 0x01, 0xC9, 0xC6, 0xD0, \r
+ 0xA4, 0x4C, 0x00, 0xC5, 0x00, 0x00, 0x08, 0x88, 0xD0, 0x04, 0xF0, 0xE5, 0x80, 0xDF, 0xBD, 0x8C, \r
+ 0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF0, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3, \r
+ 0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xC2, 0x49, 0xAD, 0xF0, \r
+ 0x25, 0xD0, 0xBC, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD, \r
+ 0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xA1, 0xA5, 0x40, \r
+ 0xC5, 0x41, 0xD0, 0x9B, 0xB0, 0x9C, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59, \r
+ 0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, \r
+ 0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, \r
+ 0x59, 0xD6, 0x02, 0xD0, 0xCD, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00, \r
+ 0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5, \r
+ 0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x4F, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot7[0x100] = {\r
+ 0x2C, 0x03, 0xC7, 0x70, 0x1B, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x15, 0x01, 0x9B, 0x1C, 0x1C, 0x1C, \r
+ 0x1C, 0x88, 0x18, 0x80, 0x2A, 0x38, 0x78, 0xA2, 0xFF, 0x9A, 0x80, 0x26, 0x38, 0xA2, 0x03, 0x60, \r
+ 0x8D, 0x78, 0x04, 0xA9, 0xC7, 0x8D, 0xF8, 0x07, 0x08, 0xC5, 0x39, 0xF0, 0xE8, 0x28, 0x4D, 0x7F, \r
+ 0x04, 0xD0, 0x1A, 0xAD, 0xFF, 0x07, 0x48, 0xAD, 0x7F, 0x07, 0x48, 0xAD, 0x78, 0x04, 0x60, 0x8D, \r
+ 0xF8, 0x07, 0x20, 0xD3, 0xC7, 0x70, 0x01, 0x60, 0xB0, 0x03, 0x6C, 0xCB, 0x00, 0xAD, 0x81, 0xC0, \r
+ 0xAD, 0x81, 0xC0, 0x20, 0x84, 0xFE, 0x20, 0x2F, 0xFB, 0x20, 0x58, 0xFC, 0x20, 0x93, 0xFE, 0x20, \r
+ 0x89, 0xFE, 0xA0, 0x10, 0xB9, 0x6F, 0xC7, 0x99, 0xDB, 0x07, 0x88, 0x10, 0xF7, 0x80, 0xFE, 0xC1, \r
+ 0xF0, 0xF0, 0xEC, 0xE5, 0xD4, 0xE1, 0xEC, 0xEB, 0xA0, 0xCF, 0xE6, 0xE6, 0xEC, 0xE9, 0xEE, 0xE5, \r
+ 0x8D, 0x28, 0xC0, 0x40, 0x8D, 0x28, 0xC0, 0x60, 0x8D, 0x28, 0xC0, 0x4C, 0x62, 0xFA, 0x8D, 0x28, \r
+ 0xC0, 0x2C, 0x87, 0xC7, 0x4C, 0x04, 0xC8, 0x8D, 0x28, 0xC0, 0x4C, 0xF1, 0xC7, 0x8D, 0x28, 0xC0, \r
+ 0x4C, 0xF6, 0xC7, 0x8D, 0x28, 0xC0, 0x4C, 0xF1, 0xC7, 0x8D, 0x28, 0xC0, 0x4C, 0x06, 0xC8, 0x8D, \r
+ 0x28, 0xC0, 0x4C, 0x4E, 0xC3, 0x8D, 0x28, 0xC0, 0x4C, 0x97, 0xC3, 0x8D, 0x28, 0xC0, 0x4C, 0x00, \r
+ 0xC1, 0x8D, 0x28, 0xC0, 0x4C, 0xA9, 0xD4, 0x8D, 0x28, 0xC0, 0x4C, 0x80, 0xC5, 0x8D, 0x28, 0xC0, \r
+ 0x4C, 0x4F, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xAC, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xC3, 0xC2, 0x8D, \r
+ 0x28, 0xC0, 0x4C, 0xF7, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xE0, 0xD4, 0x8D, 0x28, 0xC0, 0x6C, 0xED, \r
+ 0x03, 0x20, 0x23, 0xCE, 0x80, 0x8E, 0x20, 0x4D, 0xCE, 0x80, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
--- /dev/null
+//\r
+// Apple 2 floppy disk support\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 12/03/2005 Created this file\r
+// JLH 12/15/2005 Fixed nybblization functions to work properly\r
+// JLH 12/27/2005 Added blank disk creation, fixed saving to work properly\r
+//\r
+\r
+#include "floppy.h"\r
+\r
+#include <stdio.h>\r
+#include <string>\r
+#include "apple2.h"\r
+#include "log.h"\r
+#include "applevideo.h" // For message spawning... Though there's probably a better approach than this!\r
+\r
+using namespace std;\r
+\r
+// Useful enums\r
+\r
+enum { IO_MODE_READ, IO_MODE_WRITE };\r
+\r
+// FloppyDrive class variable initialization\r
+\r
+uint8 FloppyDrive::header[21] = {\r
+ 0xD5, 0xAA, 0x96, 0xFF, 0xFE, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0xDE, 0xAA, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xD5, 0xAA, 0xAD };\r
+uint8 FloppyDrive::doSector[16] = {\r
+ 0x0, 0x7, 0xE, 0x6, 0xD, 0x5, 0xC, 0x4, 0xB, 0x3, 0xA, 0x2, 0x9, 0x1, 0x8, 0xF };\r
+uint8 FloppyDrive::poSector[16] = {\r
+ 0x0, 0x8, 0x1, 0x9, 0x2, 0xA, 0x3, 0xB, 0x4, 0xC, 0x5, 0xD, 0x6, 0xE, 0x7, 0xF };\r
+\r
+// FloppyDrive class implementation...\r
+\r
+FloppyDrive::FloppyDrive(): motorOn(0), activeDrive(0), ioMode(IO_MODE_READ), phase(0), track(0)\r
+{\r
+ disk[0] = disk[1] = NULL;\r
+ diskSize[0] = diskSize[1] = 0;\r
+ diskType[0] = diskType[1] = DT_UNKNOWN;\r
+ imageDirty[0] = imageDirty[1] = false;\r
+ imageName[0][0] = imageName[1][0] = 0; // Zero out filenames\r
+}\r
+\r
+FloppyDrive::~FloppyDrive()\r
+{\r
+ if (disk[0])\r
+ delete[] disk[0];\r
+\r
+ if (disk[1])\r
+ delete[] disk[1];\r
+}\r
+\r
+bool FloppyDrive::LoadImage(const char * filename, uint8 driveNum/*= 0*/)\r
+{\r
+ if (driveNum > 1)\r
+ {\r
+ WriteLog("FLOPPY: Attempted to load image to drive #%u!\n", driveNum);\r
+ return false;\r
+ }\r
+\r
+ imageName[driveNum][0] = 0; // Zero out filename, in case it doesn't load\r
+\r
+ FILE * fp = fopen(filename, "rb");\r
+\r
+ if (fp == NULL)\r
+ {\r
+ WriteLog("FLOPPY: Failed to open image file '%s' for reading...\n", filename);\r
+ return false;\r
+ }\r
+\r
+ if (disk[driveNum])\r
+ delete[] disk[driveNum];\r
+\r
+ fseek(fp, 0, SEEK_END);\r
+ diskSize[driveNum] = ftell(fp);\r
+ fseek(fp, 0, SEEK_SET);\r
+ disk[driveNum] = new uint8[diskSize[driveNum]];\r
+ fread(disk[driveNum], 1, diskSize[driveNum], fp);\r
+\r
+ fclose(fp);\r
+//printf("Read disk image: %u bytes.\n", diskSize);\r
+ DetectImageType(filename, driveNum);\r
+ strcpy(imageName[driveNum], filename);\r
+\r
+ return true;\r
+}\r
+\r
+bool FloppyDrive::SaveImage(uint8 driveNum/*= 0*/)\r
+{\r
+ if (driveNum > 1)\r
+ {\r
+ WriteLog("FLOPPY: Attempted to save image to drive #%u!\n", driveNum);\r
+ return false;\r
+ }\r
+\r
+ if (!imageDirty[driveNum])\r
+ {\r
+ WriteLog("FLOPPY: No need to save unchanged image...\n");\r
+ return false;\r
+ }\r
+\r
+ if (imageName[driveNum][0] == 0)\r
+ {\r
+ WriteLog("FLOPPY: Attempted to save non-existant image!\n");\r
+ return false;\r
+ }\r
+\r
+ if (diskType[driveNum] == DT_NYBBLE)\r
+ memcpy(disk[driveNum], nybblizedImage[driveNum], 232960);\r
+ else\r
+ DenybblizeImage(driveNum);\r
+\r
+ FILE * fp = fopen(imageName[driveNum], "wb");\r
+\r
+ if (fp == NULL)\r
+ {\r
+ WriteLog("FLOPPY: Failed to open image file '%s' for writing...\n", imageName[driveNum]);\r
+ return false;\r
+ }\r
+\r
+ fwrite(disk[driveNum], 1, diskSize[driveNum], fp);\r
+ fclose(fp);\r
+\r
+ return true;\r
+}\r
+\r
+bool FloppyDrive::SaveImageAs(const char * filename, uint8 driveNum/*= 0*/)\r
+{\r
+//WARNING: Buffer overflow possibility\r
+ strcpy(imageName[driveNum], filename);\r
+ return SaveImage(driveNum);\r
+}\r
+\r
+void FloppyDrive::CreateBlankImage(uint8 driveNum/*= 0*/)\r
+{\r
+ if (disk[driveNum] != NULL)\r
+ delete disk[driveNum];\r
+\r
+ disk[driveNum] = new uint8[143360];\r
+ diskSize[driveNum] = 143360;\r
+ memset(disk[driveNum], 0x00, 143360);\r
+ memset(nybblizedImage[driveNum], 0x00, 232960); // Set it to 0 instead of $FF for proper formatting...\r
+ diskType[driveNum] = DT_DOS33;\r
+ strcpy(imageName[driveNum], "newblank.dsk");\r
+SpawnMessage("New blank image inserted in drive %u...", driveNum);\r
+}\r
+\r
+void FloppyDrive::SwapImages(void)\r
+{\r
+ uint8 nybblizedImageTmp[232960];\r
+ char imageNameTmp[MAX_PATH];\r
+\r
+ memcpy(nybblizedImageTmp, nybblizedImage[0], 232960);\r
+ memcpy(nybblizedImage[0], nybblizedImage[1], 232960);\r
+ memcpy(nybblizedImage[1], nybblizedImageTmp, 232960);\r
+\r
+ memcpy(imageNameTmp, imageName[0], MAX_PATH);\r
+ memcpy(imageName[0], imageName[1], MAX_PATH);\r
+ memcpy(imageName[1], imageNameTmp, MAX_PATH);\r
+\r
+ uint8 * diskTmp = disk[0];\r
+ disk[0] = disk[1];\r
+ disk[1] = diskTmp;\r
+\r
+ uint32 diskSizeTmp = diskSize[0];\r
+ diskSize[0] = diskSize[1];\r
+ diskSize[1] = diskSizeTmp;\r
+\r
+ uint8 diskTypeTmp = diskType[0];\r
+ diskType[0] = diskType[1];\r
+ diskType[1] = diskTypeTmp;\r
+\r
+ uint8 imageDirtyTmp = imageDirty[0];\r
+ imageDirty[0] = imageDirty[1];\r
+ imageDirty[1] = imageDirtyTmp;\r
+SpawnMessage("Drive 0: %s...", imageName[0]);\r
+}\r
+\r
+void FloppyDrive::DetectImageType(const char * filename, uint8 driveNum)\r
+{\r
+ diskType[driveNum] = DT_UNKNOWN;\r
+\r
+ if (diskSize[driveNum] == 232960)\r
+ {\r
+ diskType[driveNum] = DT_NYBBLE;\r
+ memcpy(nybblizedImage[driveNum], disk[driveNum], 232960);\r
+ }\r
+ else if (diskSize[driveNum] == 143360)\r
+ {\r
+ const char * ext = strrchr(filename, '.');\r
+\r
+ if (ext == NULL)\r
+ return;\r
+WriteLog("FLOPPY: Found extension [%s]...\n", ext);\r
+\r
+//Apparently .dsk can house either DOS order OR PRODOS order... !!! FIX !!!\r
+//[DONE, see below why we don't need it]\r
+ if (strcasecmp(ext, ".po") == 0)\r
+ diskType[driveNum] = DT_PRODOS;\r
+ else if ((strcasecmp(ext, ".do") == 0) || (strcasecmp(ext, ".dsk") == 0))\r
+ {\r
+ diskType[driveNum] = DT_DOS33;\r
+//WriteLog("Detected DOS 3.3 disk!\n");\r
+/*\r
+This doesn't seem to be accurate... Maybe it's just a ProDOS disk in a DOS33 order...\r
+That would seem to be the case--just because it's a ProDOS disk doesn't mean anything\r
+WRT to the disk image itself.\r
+ // This could really be a ProDOS order disk with a .dsk extension, so let's see...\r
+ char fingerprint[3][4] = {\r
+ { 0x04, 0x00, 0x00, 0x00 }, // @ $500\r
+ { 0x03, 0x00, 0x05, 0x00 }, // @ $700\r
+ { 0x02, 0x00, 0x04, 0x00 } }; // @ $900\r
+\r
+ if ((strcmp((char *)(disk[driveNum] + 0x500), fingerprint[0]) == 0)\r
+ && (strcmp((char *)(disk[driveNum] + 0x700), fingerprint[1]) == 0)\r
+ && (strcmp((char *)(disk[driveNum] + 0x900), fingerprint[2]) == 0))\r
+ diskType[driveNum] = DT_PRODOS;\r
+//*/\r
+ }\r
+\r
+ NybblizeImage(driveNum);\r
+ }\r
+WriteLog("FLOPPY: Detected image type %s...\n", (diskType[driveNum] == DT_NYBBLE ?\r
+ "Nybble image" : (diskType[driveNum] == DT_DOS33 ?\r
+ "DOS 3.3 image" : (diskType[driveNum] == DT_PRODOS ? "ProDOS image" : "unknown"))));\r
+}\r
+\r
+void FloppyDrive::NybblizeImage(uint8 driveNum)\r
+{\r
+ // Format of a sector is header (23) + nybbles (343) + footer (30) = 396\r
+ // (short by 20 bytes of 416 [413 if 48 byte header is one time only])\r
+// Hmph. Who'da thunk that AppleWin's nybblization routines would be wrong?\r
+// This is now correct, BTW\r
+ // hdr (21) + nybbles (343) + footer (48) = 412 bytes per sector\r
+ // (not incl. 64 byte track marker)\r
+\r
+ uint8 footer[48] = {\r
+ 0xDE, 0xAA, 0xEB, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };\r
+\r
+ uint8 diskbyte[0x40] = {\r
+ 0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6,\r
+ 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3,\r
+ 0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC,\r
+ 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3,\r
+ 0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE,\r
+ 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC,\r
+ 0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,\r
+ 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF };\r
+\r
+ uint8 * img = nybblizedImage[driveNum];\r
+ memset(img, 0xFF, 232960); // Doesn't matter if 00s or FFs...\r
+\r
+ for(uint8 trk=0; trk<35; trk++)\r
+ {\r
+ memset(img, 0xFF, 64); // Write gap 1, 64 bytes (self-sync)\r
+ img += 64;\r
+\r
+ for(uint8 sector=0; sector<16; sector++)\r
+ {\r
+ memcpy(img, header, 21); // Set up the sector header\r
+\r
+ img[5] = ((trk >> 1) & 0x55) | 0xAA;\r
+ img[6] = (trk & 0x55) | 0xAA;\r
+ img[7] = ((sector >> 1) & 0x55) | 0xAA;\r
+ img[8] = (sector & 0x55) | 0xAA;\r
+ img[9] = (((trk ^ sector ^ 0xFE) >> 1) & 0x55) | 0xAA;\r
+ img[10] = ((trk ^ sector ^ 0xFE) & 0x55) | 0xAA;\r
+\r
+ img += 21;\r
+ uint8 * bytes = disk[driveNum];\r
+\r
+ if (diskType[driveNum] == DT_DOS33)\r
+ bytes += (doSector[sector] * 256) + (trk * 256 * 16);\r
+ else if (diskType[driveNum] == DT_PRODOS)\r
+ bytes += (poSector[sector] * 256) + (trk * 256 * 16);\r
+ else\r
+ bytes += (sector * 256) + (trk * 256 * 16);\r
+\r
+ // Convert the 256 8-bit bytes into 342 6-bit bytes.\r
+\r
+ for(uint16 i=0; i<0x56; i++)\r
+ {\r
+ img[i] = ((bytes[(i + 0xAC) & 0xFF] & 0x01) << 7)\r
+ | ((bytes[(i + 0xAC) & 0xFF] & 0x02) << 5)\r
+ | ((bytes[(i + 0x56) & 0xFF] & 0x01) << 5)\r
+ | ((bytes[(i + 0x56) & 0xFF] & 0x02) << 3)\r
+ | ((bytes[(i + 0x00) & 0xFF] & 0x01) << 3)\r
+ | ((bytes[(i + 0x00) & 0xFF] & 0x02) << 1);\r
+ }\r
+\r
+ img[0x54] &= 0x3F;\r
+ img[0x55] &= 0x3F;\r
+ memcpy(img + 0x56, bytes, 256);\r
+\r
+ // XOR the data block with itself, offset by one byte,\r
+ // creating a 343rd byte which is used as a cheksum.\r
+\r
+ img[342] = 0x00;\r
+\r
+ for(uint16 i=342; i>0; i--)\r
+ img[i] = img[i] ^ img[i - 1];\r
+\r
+ // Using a lookup table, convert the 6-bit bytes into disk bytes.\r
+\r
+ for(uint16 i=0; i<343; i++)\r
+ img[i] = diskbyte[img[i] >> 2];\r
+\r
+ img += 343;\r
+\r
+ // Done with the nybblization, now for the epilogue...\r
+\r
+ memcpy(img, footer, 48);\r
+ img += 48;\r
+ }\r
+ }\r
+}\r
+\r
+void FloppyDrive::DenybblizeImage(uint8 driveNum)\r
+{\r
+ uint8 decodeNybble[0x80] = {\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\r
+ 0x00, 0x00, 0x08, 0x0C, 0x00, 0x10, 0x14, 0x18,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20,\r
+ 0x00, 0x00, 0x00, 0x24, 0x28, 0x2C, 0x30, 0x34,\r
+ 0x00, 0x00, 0x38, 0x3C, 0x40, 0x44, 0x48, 0x4C,\r
+ 0x00, 0x50, 0x54, 0x58, 0x5C, 0x60, 0x64, 0x68,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+ 0x00, 0x00, 0x00, 0x6C, 0x00, 0x70, 0x74, 0x78,\r
+ 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x80, 0x84,\r
+ 0x00, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9C, 0xA0,\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA8, 0xAC,\r
+ 0x00, 0xB0, 0xB4, 0xB8, 0xBC, 0xC0, 0xC4, 0xC8,\r
+ 0x00, 0x00, 0xCC, 0xD0, 0xD4, 0xD8, 0xDC, 0xE0,\r
+ 0x00, 0xE4, 0xE8, 0xEC, 0xF0, 0xF4, 0xF8, 0xFC };\r
+\r
+ // Sanity checks...\r
+ if (disk[driveNum] == NULL || diskSize[driveNum] < 143360)\r
+ {\r
+ WriteLog("FLOPPY: Source disk image invalid! [drive=%u, disk=%08X, diskSize=%u]\n",\r
+ driveNum, disk[driveNum], diskSize[driveNum]);\r
+ return;\r
+ }\r
+\r
+ uint8 * srcImg = nybblizedImage[driveNum];\r
+ uint8 * dstImg = disk[driveNum];\r
+ uint8 buffer[345]; // 2 extra bytes for the unpack routine below...\r
+\r
+ for(uint8 trk=0; trk<35; trk++)\r
+ {\r
+ uint8 * trackBase = srcImg + (trk * 6656);\r
+\r
+ for(uint8 sector=0; sector<16; sector++)\r
+ {\r
+ uint16 sectorStart = (uint16)-1;\r
+\r
+ for(uint16 i=0; i<6656; i++)\r
+ {\r
+ if (trackBase[i] == header[0]\r
+ && trackBase[(i + 1) % 6656] == header[1]\r
+ && trackBase[(i + 2) % 6656] == header[2]\r
+ && trackBase[(i + 3) % 6656] == header[3]\r
+ && trackBase[(i + 4) % 6656] == header[4])\r
+ {\r
+//Could also check the track # at +5,6...\r
+ uint8 foundSector = ((trackBase[(i + 7) % 6656] & 0x55) << 1)\r
+ | (trackBase[(i + 8) % 6656] & 0x55);\r
+\r
+ if (foundSector == sector)\r
+ {\r
+ sectorStart = (i + 21) % 6656;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ // Sanity check...\r
+ if (sectorStart == (uint16)-1)\r
+ {\r
+ WriteLog("FLOPPY: Failed to find sector %u (track %u) in nybble image!\n",\r
+ sector, trk);\r
+ return;\r
+ }\r
+\r
+ // Using a lookup table, convert the disk bytes into 6-bit bytes.\r
+\r
+ for(uint16 i=0; i<343; i++)\r
+ buffer[i] = decodeNybble[trackBase[(sectorStart + i) % 6656] & 0x7F];\r
+\r
+ // XOR the data block with itself, offset by one byte.\r
+\r
+ for(uint16 i=1; i<342; i++)\r
+ buffer[i] = buffer[i] ^ buffer[i - 1];\r
+\r
+ // Convert the 342 6-bit bytes into 256 8-bit bytes (at buffer + $56).\r
+\r
+ for(uint16 i=0; i<0x56; i++)\r
+ {\r
+ buffer[0x056 + i] |= ((buffer[i] >> 3) & 0x01) | ((buffer[i] >> 1) & 0x02);\r
+ buffer[0x0AC + i] |= ((buffer[i] >> 5) & 0x01) | ((buffer[i] >> 3) & 0x02);\r
+ buffer[0x102 + i] |= ((buffer[i] >> 7) & 0x01) | ((buffer[i] >> 5) & 0x02);\r
+ }\r
+\r
+ uint8 * bytes = dstImg;\r
+\r
+ if (diskType[driveNum] == DT_DOS33)\r
+ bytes += (doSector[sector] * 256) + (trk * 256 * 16);\r
+ else if (diskType[driveNum] == DT_PRODOS)\r
+ bytes += (poSector[sector] * 256) + (trk * 256 * 16);\r
+ else\r
+ bytes += (sector * 256) + (trk * 256 * 16);//*/\r
+\r
+ memcpy(bytes, buffer + 0x56, 256);\r
+ }\r
+ }\r
+}\r
+\r
+// Memory mapped I/O functions\r
+\r
+/*\r
+The DSK format is a byte-for-byte image of a 16-sector Apple II floppy disk: 35 tracks of 16\r
+sectors of 256 bytes each, making 143,360 bytes in total. The PO format is exactly the same\r
+size as DSK and is also organized as 35 sequential tracks, but the sectors within each track\r
+are in a different sequence. The NIB format is a nybblized format: a more direct representation\r
+of the disk's data as encoded by the Apple II floppy drive hardware. NIB contains 35 tracks of\r
+6656 bytes each, for a total size of 232,960 bytes. Although this format is much larger, it is\r
+also more versatile and can represent the older 13-sector disks, many copy-protected disks, and\r
+other unusual encodings.\r
+*/\r
+\r
+void FloppyDrive::ControlStepper(uint8 addr)\r
+{\r
+ // $C0E0 - 7\r
+/*\r
+What I can gather here:\r
+bits 1-2 are the "phase" of the track (which is 1/4 of a full track (?))\r
+bit 0 is the "do something" bit.\r
+*/\r
+ if (addr & 0x01)\r
+ {\r
+ uint8 newPhase = (addr >> 1) & 0x03;\r
+//WriteLog("*** Stepper change [%u]: track = %u, phase = %u, newPhase = %u\n", addr, track, phase, newPhase);\r
+\r
+ if (((phase + 1) & 0x03) == newPhase)\r
+ phase += (phase < 79 ? 1 : 0);\r
+\r
+ if (((phase - 1) & 0x03) == newPhase)\r
+ phase -= (phase > 0 ? 1 : 0);\r
+\r
+ if (!(phase & 0x01))\r
+ {\r
+ track = ((phase >> 1) < 35 ? phase >> 1 : 34);\r
+ currentPos = 0;\r
+ }\r
+//WriteLog(" track = %u, phase = %u, newPhase = %u\n", track, phase, newPhase);\r
+SpawnMessage("Stepping to track %u...", track);\r
+ }\r
+\r
+// return something if read mode... \r
+}\r
+\r
+void FloppyDrive::ControlMotor(uint8 addr)\r
+{\r
+ // $C0E8 - 9\r
+ motorOn = addr;\r
+}\r
+\r
+void FloppyDrive::DriveEnable(uint8 addr)\r
+{\r
+ // $C0EA - B\r
+ activeDrive = addr;\r
+}\r
+\r
+uint8 FloppyDrive::ReadWrite(void)\r
+{\r
+SpawnMessage("%sing %s track %u, sector %u...", (ioMode == IO_MODE_READ ? "Read" : "Write"),\r
+ (ioMode == IO_MODE_READ ? "from" : "to"), track, currentPos / 396);\r
+ // $C0EC\r
+/*\r
+I think what happens here is that once a track is read its nybblized form\r
+is fed through here, one byte at a time--which means for DO disks, we have\r
+to convert the actual 256 byte sector to a 416 byte nybblized data "sector".\r
+Which we now do. :-)\r
+*/\r
+ if (ioMode == IO_MODE_WRITE && (latchValue & 0x80))\r
+ {\r
+ nybblizedImage[activeDrive][(track * 6656) + currentPos] = latchValue;\r
+ imageDirty[activeDrive] = true;\r
+ }\r
+\r
+ uint8 diskByte = nybblizedImage[activeDrive][(track * 6656) + currentPos];\r
+ currentPos = (currentPos + 1) % 6656;\r
+\r
+ return diskByte;\r
+}\r
+\r
+uint8 FloppyDrive::GetLatchValue(void)\r
+{\r
+ // $C0ED\r
+ return latchValue;\r
+}\r
+\r
+void FloppyDrive::SetLatchValue(uint8 value)\r
+{\r
+ // $C0ED\r
+ latchValue = value;\r
+}\r
+\r
+void FloppyDrive::SetReadMode(void)\r
+{\r
+ // $C0EE\r
+ ioMode = IO_MODE_READ;\r
+}\r
+\r
+void FloppyDrive::SetWriteMode(void)\r
+{\r
+ // $C0EF\r
+ ioMode = IO_MODE_WRITE;\r
+}\r
--- /dev/null
+//\r
+// Apple 2 floppy disk support\r
+//\r
+\r
+#ifndef __FLOPPY_H__\r
+#define __FLOPPY_H__\r
+\r
+// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...\r
+#ifdef __GCCUNIX__\r
+#include <limits.h>\r
+#define MAX_PATH _POSIX_PATH_MAX\r
+#else\r
+#include <stdlib.h> // for MAX_PATH on MinGW/Darwin\r
+#endif\r
+#include "types.h"\r
+\r
+enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };\r
+\r
+class FloppyDrive\r
+{\r
+ public:\r
+ FloppyDrive();\r
+ ~FloppyDrive();\r
+\r
+ bool LoadImage(const char * filename, uint8 driveNum = 0);\r
+ bool SaveImage(uint8 driveNum = 0);\r
+ bool SaveImageAs(const char * filename, uint8 driveNum = 0);\r
+ void CreateBlankImage(uint8 driveNum = 0);\r
+ void SwapImages(void);\r
+\r
+ // I/O functions ($C0Ex accesses)\r
+\r
+ void ControlStepper(uint8 addr);\r
+ void ControlMotor(uint8 addr);\r
+ void DriveEnable(uint8 addr);\r
+ uint8 ReadWrite(void);\r
+ uint8 GetLatchValue(void);\r
+ void SetLatchValue(uint8 value);\r
+ void SetReadMode(void);\r
+ void SetWriteMode(void);\r
+\r
+ protected:\r
+ void DetectImageType(const char * filename, uint8 driveNum);\r
+ void NybblizeImage(uint8 driveNum);\r
+ void DenybblizeImage(uint8 driveNum);\r
+\r
+ private:\r
+ char imageName[2][MAX_PATH];\r
+ uint8 * disk[2];\r
+ uint32 diskSize[2];\r
+ uint8 diskType[2];\r
+ bool imageDirty[2];\r
+ uint8 motorOn;\r
+ uint8 activeDrive;\r
+ uint8 ioMode;\r
+ uint8 latchValue;\r
+ uint8 phase;\r
+ uint8 track;\r
+\r
+ uint8 nybblizedImage[2][232960];\r
+ uint32 currentPos;\r
+\r
+ // And here are some private class variables (to reduce function redundancy):\r
+ static uint8 header[21];\r
+ static uint8 doSector[16];\r
+ static uint8 poSector[16];\r
+};\r
+\r
+#endif // __FLOPPY_H__\r
--- /dev/null
+#define FONT_WIDTH 8
+#define FONT_HEIGHT 16
+
+//
+// This file was automagically generated by rawfont2c (by James L. Hammons)
+//
+
+char font1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 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
+};
--- /dev/null
+//
+// BUTTON.CPP
+//
+// Graphical User Interface button class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/02/2006 Created this file
+//
+
+#include "button.h"
+#include "guimisc.h" // Various support functions
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+using namespace std; // For STL stuff
+
+//
+// Button class implementation
+//
+
+/*
+Some notes about this class:
+
+- Button colors are hardwired
+*/
+
+Button::Button(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ Element * parent/*= NULL*/):
+ Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(false),
+ activatedSave(false), clickedSave(false), insideSave(false)
+{
+ // Should we make a local button bitmap here?
+}
+
+Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, SDL_Surface * upImg, Element * parent/*= NULL*/):
+ Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ buttonUp(upImg), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(false),
+ activatedSave(false), clickedSave(false), insideSave(false)
+{
+// if (upImg == NULL)
+// return;
+//
+// uint32 width = ((Bitmap *)upImg)->width, height = ((Bitmap *)upImg)->height;
+//
+// buttonUp = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height,
+// 32, MASK_R, MASK_G, MASK_B, MASK_A);
+// memcpy(buttonUp->pixels, ((Bitmap *)upImg)->pixelData, width * height * 4);
+
+ // Should we make a local button bitmap here? NO--it's passed in!
+}
+
+Button::Button(uint32 x, uint32 y, SDL_Surface * bU, SDL_Surface * bH/*= NULL*/,
+ SDL_Surface * bD/*= NULL*/, Element * parent/*= NULL*/):
+ Element(x, y, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ buttonUp(bU), buttonDown(bD), buttonHover(bH), surfacesAreLocal(false),
+ activatedSave(false), clickedSave(false), insideSave(false)
+{
+ if (buttonUp)
+ extents.w = buttonUp->w,
+ extents.h = buttonUp->h;
+}
+
+Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, string s, Element * parent/*= NULL*/):
+ Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(true),
+ activatedSave(false), clickedSave(false), insideSave(false)
+{
+ // Create the button surfaces here...
+}
+
+Button::Button(uint32 x, uint32 y, string s, Element * parent/*= NULL*/):
+ Element(x, y, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(true),
+ activatedSave(false), clickedSave(false), insideSave(false)
+{
+ extents.w = (s.length() + 2) * GetFontWidth();
+ extents.h = GetFontHeight();
+
+ // Create the button surfaces here...
+
+ buttonUp = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+ buttonDown = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+ buttonHover = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+
+ // Need to create backgrounds before we do this stuff...
+ SDL_FillRect(buttonUp, NULL, bgColor);
+ SDL_FillRect(buttonDown, NULL, fgColor);
+ SDL_FillRect(buttonHover, NULL, bgColor);
+
+ DrawStringTrans(buttonUp, GetFontWidth(), 0, fgColor, s.c_str());
+ DrawStringTrans(buttonDown, GetFontWidth(), 0, fgColor, s.c_str());
+ DrawStringTrans(buttonHover, GetFontWidth(), 0, fgColor, s.c_str());
+}
+
+Button::~Button()
+{
+ if (surfacesAreLocal)
+ {
+ if (buttonUp)
+ SDL_FreeSurface(buttonUp);
+
+ if (buttonDown)
+ SDL_FreeSurface(buttonDown);
+
+ if (buttonHover)
+ SDL_FreeSurface(buttonHover);
+ }
+}
+
+void Button::HandleKey(SDLKey key)
+{
+}
+
+void Button::HandleMouseMove(uint32 x, uint32 y)
+{
+ SaveStateVariables();
+ inside = Inside(x, y);
+ CheckStateAndRedrawIfNeeded();
+}
+
+void Button::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+ SaveStateVariables();
+
+ if (inside)
+ {
+ if (mouseDown)
+ clicked = true;
+
+ if (clicked && !mouseDown)
+ {
+ clicked = false, activated = true;
+
+ // Send a message to our parent widget (if any) that we're activated
+ if (parent)
+ parent->Notify(this);
+ }
+ }
+ else
+ clicked = activated = false;
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void Button::Draw(void)
+{
+ if (buttonUp == NULL)
+ return; // Bail out if no surface was created...
+
+ SDL_Rect rect = GetScreenCoords();
+
+ // Now, draw the appropriate button state!
+
+ SDL_Surface * picToShow = buttonUp;
+
+ if (buttonHover != NULL && inside && !clicked)
+ picToShow = buttonHover;
+
+ if (buttonDown != NULL && inside && clicked)
+ picToShow = buttonDown;
+
+ SDL_BlitSurface(picToShow, NULL, screen, &rect); // This handles alpha blending too! :-D
+
+ needToRefreshScreen = true;
+}
+
+void Button::Notify(Element *)
+{
+}
+
+bool Button::ButtonClicked(void)
+{
+ return activated;
+}
+
+void Button::SaveStateVariables(void)
+{
+ activatedSave = activated;
+ clickedSave = clicked;
+ insideSave = inside;
+}
+
+void Button::CheckStateAndRedrawIfNeeded(void)
+{
+ // Check to see if any of our state variables changed since we last saved them...
+ if (activated != activatedSave || clicked != clickedSave || inside != insideSave)
+ Draw();
+}
--- /dev/null
+//
+// BUTTON.H
+//
+// Graphical User Interface button class
+//
+
+#ifndef __BUTTON_H__
+#define __BUTTON_H__
+
+#include <string>
+#include "element.h"
+
+//Apparently this approach doesn't work for inheritance... D'oh!
+//class Element; // Forward declaration
+
+class Button: public Element
+{
+ public:
+ Button(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0, Element * parent = NULL);
+ Button(uint32 x, uint32 y, uint32 w, uint32 h, SDL_Surface * upImg, Element * parent = NULL);
+ Button(uint32 x, uint32 y, SDL_Surface * bU, SDL_Surface * bH = NULL, SDL_Surface * bD = NULL, Element * parent = NULL);
+ Button(uint32 x, uint32 y, uint32 w, uint32 h, std::string s, Element * parent = NULL);
+ Button(uint32 x, uint32 y, std::string s, Element * parent = NULL);
+ ~Button();
+ virtual void HandleKey(SDLKey key);
+ virtual void HandleMouseMove(uint32 x, uint32 y);
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+ virtual void Draw(void);
+ virtual void Notify(Element *);
+ bool ButtonClicked(void);
+ void SaveStateVariables(void);
+ void CheckStateAndRedrawIfNeeded(void);
+
+ protected:
+ bool activated, clicked, inside;
+ SDL_Surface * buttonUp, * buttonDown, * buttonHover;
+
+ private:
+ bool surfacesAreLocal;
+ bool activatedSave, clickedSave, insideSave;
+};
+
+#endif // __BUTTON_H__
--- /dev/null
+//
+// DRAGGABLEWINDOW.CPP
+//
+// Graphical User Interface draggable window class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 03/01/2006 Created this file
+//
+// STILL TO DO:
+//
+// - Check for parent's extents and clip movement against those extents
+//
+
+#include "draggablewindow.h"
+#include "button.h"
+#include "guimisc.h" // Various support functions
+#include <algorithm>
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+using namespace std; // For STL stuff
+
+#define BACKGROUND_IMG_TEST
+
+//
+// DraggableWindow class implementation
+//
+// NOTE: FG/BG colors are hard-wired
+//
+
+DraggableWindow::DraggableWindow(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ void (* f)(Element *)/*= NULL*/):
+ Element(x, y, w, h, 0x4D, 0xFF, 0x84, 0xFF, 0x1F, 0x84, 0x84, 0xFF), handler(f),
+ clicked(false),
+ cbWidth((closeBox[0] << 8) | closeBox[1]), cbHeight((closeBox[2] << 8) | closeBox[3]),
+ cbUp(SDL_CreateRGBSurfaceFrom(&closeBox[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A)),
+ cbDown(SDL_CreateRGBSurfaceFrom(&closeBoxDown[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A)),
+ cbHover(SDL_CreateRGBSurfaceFrom(&closeBoxHover[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A))
+{
+//Could probably move this into the initializer list as well...
+ closeButton = new Button(w - (cbWidth + 1), 1, cbUp, cbHover, cbDown, this);
+ list.push_back(closeButton);
+
+#ifdef BACKGROUND_IMG_TEST
+uint16 imgWidth = (floppyDiskImg[0] << 8) | floppyDiskImg[1];
+uint16 imgHeight = (floppyDiskImg[2] << 8) | floppyDiskImg[3];
+img = SDL_CreateRGBSurfaceFrom(&floppyDiskImg[4], imgWidth, imgHeight, 32, imgWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+#endif
+
+ CreateBackstore();
+ Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+DraggableWindow::~DraggableWindow()
+{
+ for(uint32 i=0; i<list.size(); i++)
+ if (list[i])
+ delete list[i];
+
+#ifdef BACKGROUND_IMG_TEST
+SDL_FreeSurface(img);
+#endif
+
+ SDL_FreeSurface(cbUp);
+ SDL_FreeSurface(cbDown);
+ SDL_FreeSurface(cbHover);
+}
+
+void DraggableWindow::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++)
+ list[i]->HandleKey(key);
+}
+
+void DraggableWindow::HandleMouseMove(uint32 x, uint32 y)
+{
+ if (clicked)
+ {
+//Need to check whether or not we've run into the extents of the screen... !!! FIX !!!
+ RestoreScreenFromBackstore();
+ extents.x = x - offset.x;
+ extents.y = y - offset.y;
+ SDL_BlitSurface(screen, &extents, backstore, NULL);
+ Draw();
+
+ return;
+ }
+
+ // 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 DraggableWindow::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+ clicked = false;
+
+ if (mouseDown && Inside(x, y))
+ {
+ clicked = true;
+ offset.x = x - extents.x;
+ offset.y = y - extents.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]->HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+
+ if (list[i]->Inside(x - extents.x, y - extents.y))
+ clicked = false;
+ }
+}
+
+void DraggableWindow::Draw(void)
+{
+ // These are *always* top level and parentless, so no need to traverse up through
+ // the parent chain...
+//Perhaps we can make these parentable, put the parent traversal in the base class?
+//Prolly.
+#ifdef BACKGROUND_IMG_TEST
+ SDL_Rect src, dst;
+ src.x = 0, src.y = 0, src.w = extents.w, src.h = extents.h;
+ dst.x = extents.x, dst.y = extents.y;
+ SDL_BlitSurface(img, &src, screen, &dst);
+
+ extern char textChar2e[];
+ uint8 * fontAddr = (uint8 *)textChar2e + ((128 + 32) * 7 * 8);
+ SetNewFont(Font(fontAddr, 7, 8));
+ DrawStringOpaque(screen, extents.x + 8, extents.y + 6, 0xFF000000, 0xFFFFFFFF, "Ultima III - Boo");
+ DrawStringOpaque(screen, extents.x + 8, extents.y + 14, 0xFF000000, 0xFFFFFFFF, "0123456789012345");
+ DrawStringOpaque(screen, extents.x + 8, extents.y + 22, 0xFF000000, 0xFFFFFFFF, "1234567890123456");
+ DrawStringOpaque(screen, extents.x + 8, extents.y + 30, 0xFF000000, 0xFFFFFFFF, "2345678901234567");
+ RestoreOldFont();
+#else
+ SDL_FillRect(screen, &extents, bgColor);
+#endif
+
+ // Handle the items this window contains...
+ for(uint32 i=0; i<list.size(); i++)
+ list[i]->Draw();
+
+//Prolly don't need this since the close button will do this for us...
+ needToRefreshScreen = true;
+}
+
+void DraggableWindow::Notify(Element * e)
+{
+ if (e == closeButton)
+ {
+ SDL_Event event;
+ event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+ SDL_PushEvent(&event);
+ }
+}
+
+void DraggableWindow::AddElement(Element * e)
+{
+ list.push_back(e);
+}
--- /dev/null
+//
+// DRAGGABLEWINDOW.H
+//
+// Graphical User Interface window class
+//
+
+#ifndef __DRAGGABLEWINDOW_H__
+#define __DRAGGABLEWINDOW_H__
+
+#include "element.h"
+#include <vector>
+
+class Button; // Forward declaration
+
+class DraggableWindow: public Element
+{
+ public:
+ DraggableWindow(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+ void (* f)(Element *) = NULL);
+ ~DraggableWindow(); //Does this destructor need to be virtual? Not sure... Check!
+ virtual void HandleKey(SDLKey key);
+ virtual void HandleMouseMove(uint32 x, uint32 y);
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+ virtual void Draw(void);
+ virtual void Notify(Element *);
+ void AddElement(Element * e);
+
+ protected:
+ void (* handler)(Element *);
+ Button * closeButton;
+ std::vector<Element *> list;
+ bool clicked;
+ SDL_Rect offset;
+
+ private:
+ uint16 cbWidth, cbHeight;
+ SDL_Surface * cbUp, * cbDown, * cbHover;
+ SDL_Surface * img;
+};
+
+#endif // __DRAGGABLEWINDOW_H__
--- /dev/null
+//
+// ELEMENT.CPP
+//
+// Graphical User Interface base class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/02/2006 Created this file
+// JLH 02/13/2006 Added backbuffer and rendering functions
+// JLH 03/02/2006 Moved backbuffer destruction to destructor, added parent
+// corner discovery
+//
+
+#include "element.h"
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//#define DEBUG_ELEMENT
+
+#ifdef DEBUG_ELEMENT
+#include "log.h"
+#endif
+
+// Initialize class variables
+
+SDL_Surface * Element::screen = NULL;
+bool Element::needToRefreshScreen = false;
+
+Element::Element(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ Element * parentElement/*= NULL*/): parent(parentElement), backstore(NULL)
+{
+ extents.x = x,
+ extents.y = y,
+ extents.w = w,
+ extents.h = h;
+}
+
+Element::Element(uint32 x, uint32 y, uint32 w, uint32 h,
+ uint8 fgR/*= 0xFF*/, uint8 fgG/*= 0xFF*/, uint8 fgB/*= 0xFF*/, uint8 fgA/*= 0xFF*/,
+ uint8 bgR/*= 0x00*/, uint8 bgG/*= 0x00*/, uint8 bgB/*= 0x00*/, uint8 bgA/*= 0xFF*/,
+ Element * parentElement/*= NULL*/): parent(parentElement), backstore(NULL)
+{
+ extents.x = x,
+ extents.y = y,
+ extents.w = w,
+ extents.h = h;
+
+ // This *should* allow us to store our colors in an endian safe way... :-/
+ uint8 * c = (uint8 *)&fgColor;
+ c[0] = fgR, c[1] = fgG, c[2] = fgB, c[3] = fgA;
+ c = (uint8 *)&bgColor;
+ c[0] = bgR, c[1] = bgG, c[2] = bgB, c[3] = bgA;
+}
+
+Element::~Element()
+{
+ if (backstore)
+ {
+ RestoreScreenFromBackstore();
+ SDL_FreeSurface(backstore);
+ needToRefreshScreen = true;
+ }
+}
+
+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);
+}
+
+//Badly named--!!! FIX !!!
+//SDL_Rect Element::GetParentCorner(void)
+SDL_Rect Element::GetScreenCoords(void)
+{
+ SDL_Rect rect;
+ rect.x = extents.x, rect.y = extents.y;
+
+ // First, traverse the parent tree to get the absolute screen address...
+
+ Element * currentParent = parent;
+
+ while (currentParent)
+ {
+ rect.x += currentParent->extents.x;
+ rect.y += currentParent->extents.y;
+ currentParent = currentParent->parent;
+ }
+
+ return rect;
+}
+
+#if 0
+//May use this in the future...
+SDL_Rect Element::GetParentRect(void)
+{
+ // If there is no parent, then return the entire screen as the parent's
+ // rectangle.
+
+ SDL_Rect rect;
+ rect.x = 0, rect.y = 0, rect.w = screen->w, rect.h = screen->h;
+
+ if (parent)
+ {
+ rect.x = parent->extents.x;
+ rect.y = parent->extents.y;
+ rect.w = parent->extents.w;
+ rect.h = parent->extents.h;
+ }
+
+ return rect;
+}
+#endif
+
+void Element::CreateBackstore(void)
+{
+ backstore = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+ MASK_R, MASK_G, MASK_B, 0x00);
+ SDL_BlitSurface(screen, &extents, backstore, NULL);
+}
+
+void Element::RestoreScreenFromBackstore(void)
+{
+ SDL_Rect r;
+
+ r.x = extents.x;
+ r.y = extents.y;
+ SDL_BlitSurface(backstore, NULL, screen, &r);
+}
+
+//
+// Class methods
+//
+
+void Element::SetScreen(SDL_Surface * s)
+{
+ screen = s;
+}
+
+bool Element::ScreenNeedsRefreshing(void)
+{
+ return needToRefreshScreen;
+}
+
+void Element::ScreenWasRefreshed(void)
+{
+ needToRefreshScreen = false;
+}
--- /dev/null
+//
+// ELEMENT.H
+//
+// Graphical User Interface base class
+// All GUI elements are derived from this base class.
+//
+
+#ifndef __ELEMENT_H__
+#define __ELEMENT_H__
+
+// These are various GUI messages that can be sent to the SDL event handler
+
+enum { WINDOW_CLOSE, MENU_ITEM_CHOSEN, SCREEN_REFRESH_NEEDED };
+
+#include <SDL.h>
+#include "types.h"
+
+class Element
+{
+ public:
+ Element(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+ Element * parentElement = NULL);
+ Element(uint32 x, uint32 y, uint32 w, uint32 h,
+ uint8 fgR = 0xFF, uint8 fgG = 0xFF, uint8 fgB = 0xFF, uint8 fgA = 0xFF,
+ uint8 bgR = 0x00, uint8 bgG = 0x00, uint8 bgB = 0x00, uint8 bgA = 0xFF,
+ Element * parentElement = NULL);
+ virtual ~Element(); // Destructor cannot be pure virtual...
+ virtual void HandleKey(SDLKey key) = 0; // These are "pure" virtual functions...
+ virtual void HandleMouseMove(uint32 x, uint32 y) = 0;
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) = 0;
+ virtual void Draw(void) = 0;
+ virtual void Notify(Element *) = 0;
+ bool Inside(uint32 x, uint32 y);
+//Badly named, though we may code something that does this...
+// SDL_Rect GetParentCorner(void);
+ SDL_Rect GetScreenCoords(void);
+#if 0
+//May use this in the future...
+ SDL_Rect GetParentRect(void);
+#endif
+ void CreateBackstore(void);
+ void RestoreScreenFromBackstore(void);
+ // Class methods...
+ static void SetScreen(SDL_Surface *);
+ static bool ScreenNeedsRefreshing(void);
+ static void ScreenWasRefreshed(void);
+
+ protected:
+ SDL_Rect extents;
+ uint32 state;
+ Element * parent;
+ uint32 fgColor;
+ uint32 bgColor;
+ SDL_Surface * backstore;
+
+ // Class variables...
+ static SDL_Surface * screen;
+ static bool needToRefreshScreen;
+};
+
+#endif // __ELEMENT_H__
--- /dev/null
+//
+// 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
+};
--- /dev/null
+#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
+};
--- /dev/null
+//
+// GUI.CPP
+//
+// Graphical User Interface support
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/03/2006 Created this file
+// JLH 03/13/2006 Added functions to allow shutting down GUI externally
+//
+
+// STILL TO FIX:
+//
+// - Memory leak on quitting with a window active
+// - Multiple window handling
+//
+
+#include "gui.h"
+#include "menu.h" // Element class methods are pulled in here...
+#include "window.h"
+#include "video.h"
+
+// Debug support
+
+//#define DEBUG_MAIN_LOOP
+
+#ifdef DEBUG_MAIN_LOOP
+#include "log.h"
+#endif
+
+
+GUI::GUI(SDL_Surface * mainSurface): mainMenu(new Menu()), menuItem(new MenuItems())
+{
+ Element::SetScreen(mainSurface);
+}
+
+GUI::~GUI()
+{
+ if (mainMenu)
+ delete mainMenu;
+
+ if (menuItem)
+ delete menuItem;
+}
+
+void GUI::AddMenuTitle(const char * title)
+{
+ menuItem->title = title;
+ menuItem->item.clear();
+}
+
+void GUI::AddMenuItem(const char * item, Element * (* a)(void)/*= NULL*/, SDLKey k/*= SDLK_UNKNOWN*/)
+{
+ menuItem->item.push_back(NameAction(item, a, k));
+}
+
+void GUI::CommitItemsToMenu(void)
+{
+ mainMenu->Add(*menuItem);
+}
+
+
+void GUI::Run(void)
+{
+ exitGUI = false;
+
+ bool showMouse = true;
+ int mouseX = 0, mouseY = 0;
+ int oldMouseX = 0, oldMouseY = 0;
+ Element * mainWindow = NULL;
+ SDL_Event event;
+
+ SDL_EnableKeyRepeat(150, 75);
+ // Initial update...
+//Shouldn't we save the state of the GUI instead of doing things this way?
+//We have a memory leak whenever a mainWindow is active and we quit... !!! FIX !!!
+ mainMenu->Draw();
+ RenderScreenBuffer();
+
+ // Main loop
+ while (!exitGUI)
+ {
+ if (SDL_PollEvent(&event))
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog("An event was found!");
+#endif
+ if (event.type == SDL_USEREVENT)
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_USEREVENT\n");
+#endif
+//Mebbe add another user event for screen refresh? Why not!
+ if (event.user.code == WINDOW_CLOSE)
+ {
+ delete mainWindow;
+ mainWindow = NULL;
+ }
+ else if (event.user.code == MENU_ITEM_CHOSEN)
+ {
+ // 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 = (*(Element *(*)(void))event.user.data1)();
+
+ 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...!
+
+ oldMouseX = mouseX, oldMouseY = mouseY;
+ mouseX = mx, mouseY = my; // This prevents "mouse flash"...
+ }
+//There's a *small* problem with this approach--if a window and a bunch of child
+//widgets send this message, we'll get a bunch of unnecessary refresh events...
+//This could be controlled by having the main window refresh itself intelligently...
+
+//What we could do instead is set a variable in Element and check it after the fact
+//to see whether or not a refresh is needed.
+
+//Dirty rectangle is also possible...
+ else if (event.user.code == SCREEN_REFRESH_NEEDED)
+ RenderScreenBuffer();
+ }
+ else if (event.type == SDL_ACTIVEEVENT)
+ {
+ if (event.active.state == SDL_APPMOUSEFOCUS)
+ showMouse = (event.active.gain ? true : false);
+ }
+ else if (event.type == SDL_KEYDOWN)
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_KEYDOWN\n");
+#endif
+ if (event.key.keysym.sym == SDLK_F5)
+ exitGUI = true;
+
+ if (mainWindow)
+ mainWindow->HandleKey(event.key.keysym.sym);
+ else
+ mainMenu->HandleKey(event.key.keysym.sym);
+ }
+ else if (event.type == SDL_MOUSEMOTION)
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOUSEMOTION\n");
+#endif
+ oldMouseX = mouseX, oldMouseY = mouseY;
+ mouseX = event.motion.x, mouseY = event.motion.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseMove(mouseX, mouseY);
+ else
+ mainMenu->HandleMouseMove(mouseX, mouseY);
+ }
+ else if (event.type == SDL_MOUSEBUTTONDOWN)
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOSEBUTTONDOWN\n");
+#endif
+ uint32 mx = event.button.x, my = event.button.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseButton(mx, my, true);
+ else
+ mainMenu->HandleMouseButton(mx, my, true);
+ }
+ else if (event.type == SDL_MOUSEBUTTONUP)
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOUSEBUTTONUP\n");
+#endif
+ uint32 mx = event.button.x, my = event.button.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseButton(mx, my, false);
+ else
+ mainMenu->HandleMouseButton(mx, my, false);
+ }
+#ifdef DEBUG_MAIN_LOOP
+else
+ WriteLog(" -- Unknown event\n");
+#endif
+
+ if (Element::ScreenNeedsRefreshing())
+ {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog("Screen refresh called!\n");
+#endif
+ RenderScreenBuffer();
+ Element::ScreenWasRefreshed();
+ }
+ }
+ }
+
+ SDL_EnableKeyRepeat(0, 0);
+// return false;
+}
+
+void GUI::Stop(void)
+{
+ exitGUI = true;
+}
--- /dev/null
+//
+// GUI.H
+//
+// Graphical User Interface support
+//
+
+#ifndef __GUI_H__
+#define __GUI_H__
+
+#include <SDL.h>
+#include <vector>
+
+class Menu; // Now *this* should work, since we've got pointers...
+class MenuItems;
+class Element;
+
+class GUI
+{
+ public:
+ GUI(SDL_Surface *);
+ ~GUI();
+ void AddMenuTitle(const char *);
+ void AddMenuItem(const char *, Element * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN);
+ void CommitItemsToMenu(void);
+ void Run(void);
+ void Stop(void);
+
+ private:
+ Menu * mainMenu;
+ MenuItems * menuItem;
+ std::vector<Element *> windowList;
+ bool exitGUI;
+};
+
+#endif // __GUI_H__
--- /dev/null
+//
+// GUIMISC.CPP
+//
+// Graphical User Interface support functions
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/02/2006 Created this file
+// JLH 03/13/2006 Abstracted out font to allow external fonts
+//
+
+#include "guimisc.h"
+#include "font14pt.h"
+//Can't do this...!
+//#include "charset.h" // For Apple II font (small)
+#include <string>
+#include <vector>
+
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+// Local variables
+// This will enable us to set up any font without having it embedded here...
+
+static Font font((uint8 *)font2, FONT_WIDTH, FONT_HEIGHT);
+static std::vector<Font> oldFontList;
+
+
+void SetNewFont(Font newFont)
+{
+ oldFontList.push_back(font);
+ font.data = newFont.data, font.width = newFont.width, font.height = newFont.height;
+}
+
+void RestoreOldFont(void)
+{
+ if (oldFontList.size() == 0)
+ return;
+
+ font = oldFontList.back();
+ oldFontList.pop_back();
+}
+
+uint32 GetFontWidth(void)
+{
+ return font.width;
+}
+
+uint32 GetFontHeight(void)
+{
+ return font.height;
+}
+
+//
+// Draw text at the given x/y coordinates with transparency (255 is fully opaque, 0 is fully transparent).
+//
+void DrawStringTrans(SDL_Surface * screen, uint32 x, uint32 y, uint32 color, const char * text, ...)
+{
+ char string[4096];
+ va_list arg;
+
+ va_start(arg, text);
+ vsprintf(string, text, arg);
+ va_end(arg);
+
+ uint8 * esColor = (uint8 *)&color; // Do things endian safe...!
+ uint8 trans = esColor[3];
+ uint32 length = strlen(string);
+
+ // Make a "stamp" surface (with built in alpha!) for constructing our font chars...
+ SDL_Surface * chr = SDL_CreateRGBSurface(SDL_SWSURFACE, font.width, font.height, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+ SDL_Rect rect;
+ rect.x = x, rect.y = y;
+
+ 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++)
+ {
+ esColor[3] = (font.data[fontAddr++] * trans) / 255;
+ ((uint32 *)chr->pixels)[xx + (yy * (chr->pitch / 4))] = color;
+ }
+ }
+
+ SDL_BlitSurface(chr, NULL, screen, &rect);
+ rect.x += font.width;
+ }
+
+ SDL_FreeSurface(chr);
+}
+
+//
+// Draw text at given x/y coords using foreground/background color combination
+//
+void DrawStringOpaque(SDL_Surface * screen, uint32 x, uint32 y, uint32 fg, uint32 bg, const char * text, ...)
+{
+ char string[4096];
+ va_list arg;
+
+ va_start(arg, text);
+ vsprintf(string, text, arg);
+ va_end(arg);
+
+ uint8 * esColor = (uint8 *)&fg; // Do things endian safe...!
+ uint32 length = strlen(string);
+
+ SDL_Rect destRect;
+
+ destRect.x = x, destRect.y = y;
+ destRect.w = length * font.width, destRect.h = font.height;
+
+ SDL_FillRect(screen, &destRect, bg);
+
+ // Make a "stamp" surface (with built in alpha!) for constructing our font chars...
+ SDL_Surface * chr = SDL_CreateRGBSurface(SDL_SWSURFACE, font.width, font.height, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+ SDL_Rect rect;
+ rect.x = x, rect.y = y;
+
+ 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++)
+ {
+ esColor[3] = font.data[fontAddr++];
+ ((uint32 *)chr->pixels)[xx + (yy * (chr->pitch / 4))] = fg;
+ }
+ }
+
+ SDL_BlitSurface(chr, NULL, screen, &rect);
+ rect.x += font.width;
+ }
+
+ SDL_FreeSurface(chr);
+}
+
+
+//
+// Various GUI bitmaps
+//
+
+// These representations *should* be endian safe.
+
+uint8 closeBox[] = {
+ 15 / 256, 15 % 256, // width (HI byte, LO byte)
+ 15 / 256, 15 % 256, // height (HI byte, LO byte)
+
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+uint8 closeBoxHover[] = {
+ 15 / 256, 15 % 256, // width (HI byte, LO byte)
+ 15 / 256, 15 % 256, // height (HI byte, LO byte)
+
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+uint8 closeBoxDown[] = {
+ 15 / 256, 15 % 256, // width (HI byte, LO byte)
+ 15 / 256, 15 % 256, // height (HI byte, LO byte)
+
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xED, 0x38, 0x38, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+#include "fd-img-128x128.c"
+
+
+#if 0
+#include <stdarg.h>
+#include <sys/types.h> // For MacOS <dirent.h> dependency
+#include <dirent.h>
+#include <SDL.h>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <ctype.h> // For toupper()
+#include "settings.h"
+#include "tom.h"
+#include "video.h"
+#include "clock.h"
+#include "font1.h"
+#include "font14pt.h" // Also 15, 16, 17, 18
+#include "guielements.h"
+#include "crc32.h"
+#include "zlib.h"
+#include "unzip.h"
+#include "sdlemu_opengl.h"
+#include "gui.h"
+
+using namespace std; // For STL stuff
+
+// Private function prototypes
+
+class Window; // Forward declaration...
+
+//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, ...);
+Window * LoadROM(void);
+Window * ResetJaguar(void);
+Window * ResetJaguarCD(void);
+Window * RunEmu(void);
+Window * Quit(void);
+Window * About(void);
+Window * MiscOptions(void);
+
+int gzfilelength(gzFile gd);
+
+// External variables
+
+extern uint8 * jaguar_mainRam;
+extern uint8 * jaguar_mainRom;
+extern uint8 * jaguar_bootRom;
+extern uint8 * jaguar_CDBootROM;
+extern bool BIOSLoaded;
+extern bool CDBIOSLoaded;
+
+// Local global variables
+
+bool exitGUI = false; // GUI (emulator) done variable
+int mouseX = 0, mouseY = 0;
+uint32 background[1280 * 256]; // GUI background buffer
+
+char separator[] = "--------------------------------------------------------";
+
+//
+// Case insensitive string compare function
+// Taken straight out of Thinking In C++ by Bruce Eckel. Thanks Bruce!
+//
+
+int stringCmpi(const string &s1, const string &s2)
+{
+ // Select the first element of each string:
+ string::const_iterator p1 = s1.begin(), p2 = s2.begin();
+
+ while (p1 != s1.end() && p2 != s2.end()) // Don\92t 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();
+}
+
+//
+// Local GUI classes
+//
+
+enum { WINDOW_CLOSE, MENU_ITEM_CHOSEN };
+
+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; }
+ virtual void HandleKey(SDLKey key) = 0; // These are "pure" virtual functions...
+ 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(int16 * s, uint32 p) { screenBuffer = s, pitch = p; }
+ static void SetScreenAndPitch(uint32 * s, uint32 p) { screenBuffer = s, pitch = p; }
+
+ protected:
+ SDL_Rect extents;
+ uint32 state;
+ // Class variables...
+// static int16 * screenBuffer;
+ static uint32 * screenBuffer;
+ static uint32 pitch;
+};
+
+// Initialize class variables (Element)
+//int16 * Element::screenBuffer = NULL;
+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);
+}
+
+
+//
+// Button class
+//
+
+class Button: public Element
+{
+ public:
+ 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(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(uint32 x, uint32 y, uint32 * p): Element(x, y, 0, 0),
+ 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(uint32 x, uint32 y, uint32 w, uint32 h, string s): Element(x, y, w, h),
+ activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+ bgColor(0xFF00FF00), pic(NULL), text(s), elementToTell(NULL) {}
+ Button(uint32 x, uint32 y, 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; }
+ 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) { return activated; }
+ void SetNotificationElement(Element * e) { elementToTell = e; }
+
+ protected:
+ bool activated, clicked, inside;
+ uint32 fgColor, bgColor;
+ uint32 * pic, * picHover, * picDown;
+ string text;
+ Element * elementToTell;
+};
+
+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);
+ }
+}
+
+
+//
+// PushButton class
+//
+
+class PushButton: public Element
+{
+// 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 !!!
+
+ public:
+// PushButton(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+// activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+// bgColor(0x03E0), pic(NULL), elementToTell(NULL) {}
+// PushButton(uint32 x, uint32 y, bool * st, string s): Element(x, y, 8, 8), state(st),
+// inside(false), text(s) { if (st == NULL) state = &internalState; }
+ PushButton(uint32 x, uint32 y, bool * st, string s): Element(x, y, 16, 16), state(st),
+ inside(false), text(s) { if (st == NULL) state = &internalState; }
+/* Button(uint32 x, uint32 y, uint32 w, uint32 h, uint32 * p): Element(x, y, w, h),
+ activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+ bgColor(0x03E0), pic(p), elementToTell(NULL) {}
+ Button(uint32 x, uint32 y, uint32 * p): Element(x, y, 0, 0),
+ activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+ bgColor(0x03E0), pic(p), elementToTell(NULL)
+ { if (pic) extents.w = pic[0], extents.h = pic[1]; }
+ Button(uint32 x, uint32 y, uint32 w, uint32 h, string s): Element(x, y, w, h),
+ activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+ bgColor(0x03E0), pic(NULL), text(s), elementToTell(NULL) {}
+ PushButton(uint32 x, uint32 y, string s): Element(x, y, 0, 8),
+ activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+ bgColor(0x03E0), pic(NULL), text(s), elementToTell(NULL)
+ { extents.w = s.length() * 8; }*/
+ 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) { return activated; }
+// void SetNotificationElement(Element * e) { elementToTell = e; }
+
+ protected:
+ bool * state;
+ bool inside;
+// bool activated, clicked, inside;
+// uint16 fgColor, bgColor;
+// uint32 * pic;
+ string text;
+// Element * elementToTell;
+ bool internalState;
+};
+
+void PushButton::HandleMouseMove(uint32 x, uint32 y)
+{
+ inside = Inside(x, y);
+}
+
+void PushButton::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+ if (inside && mouseDown)
+ {
+/* 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);
+ }*/
+ *state = !(*state);
+ }
+// else
+// clicked = activated = false;
+}
+
+void PushButton::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)]
+ = (clicked && inside ? fgColor : (inside ? 0x43F0 : bgColor));
+ }
+ }*/
+
+ 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());
+}
+
+
+//
+// SlideSwitch class
+//
+
+class SlideSwitch: public Element
+{
+// How to handle?
+// Save state externally?
+//Seems to be handled the same as PushButton, but without sanity checks. !!! FIX !!!
+
+ public:
+ SlideSwitch(uint32 x, uint32 y, bool * st, string s1, string s2): Element(x, y, 16, 32), state(st),
+ inside(false), text1(s1), text2(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 *) {}
+// bool ButtonClicked(void) { return activated; }
+// void SetNotificationElement(Element * e) { elementToTell = e; }
+
+ protected:
+ bool * state;
+ bool inside;
+// bool activated, clicked, inside;
+// uint16 fgColor, bgColor;
+// uint32 * pic;
+ string text1, text2;
+// Element * elementToTell;
+};
+
+void SlideSwitch::HandleMouseMove(uint32 x, uint32 y)
+{
+ inside = Inside(x, y);
+}
+
+void SlideSwitch::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+ if (inside && mouseDown)
+ {
+/* 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);
+ }*/
+ *state = !(*state);
+ }
+// else
+// clicked = activated = false;
+}
+
+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());
+}
+
+
+//
+// Window class
+//
+
+class Window: public Element
+{
+ public:
+/* Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+ fgColor(0x4FF0), bgColor(0xFE10)
+ { close = new Button(w - 8, 1, closeBox); list.push_back(close); }*/
+ 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); }
+ 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);
+// bool WindowActive(void) { return true; }//return !close->ButtonClicked(); }
+
+ protected:
+// bool clicked, inside;
+ 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...
+ vector<Element *> list;
+};
+
+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);
+ }
+}
+
+
+//
+// Static text class
+//
+
+class Text: public Element
+{
+ public:
+// Text(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+// fgColor(0x4FF0), bgColor(0xFE10) {}
+// Text(uint32 x, uint32 y, string s, uint16 fg = 0x4FF0, uint16 bg = 0xFE10): Element(x, y, 0, 0),
+// fgColor(fg), bgColor(bg), text(s) {}
+//4FF0 -> 010011 11111 10000 -> 0100 1101 1111 1111 1000 0100 -> 4D FF 84
+//FE10 -> 111111 10000 10000 -> 1111 1111 1000 0100 1000 0100 -> FF 84 84
+ Text(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+ fgColor(0xFF8484FF), bgColor(0xFF84FF4D) {}
+ Text(uint32 x, uint32 y, string s, uint32 fg = 0xFF8484FF, uint32 bg = 0xFF84FF4D):
+ Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(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:
+ uint32 fgColor, bgColor;
+ string text;
+};
+
+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());
+}
+
+
+//
+// Static image class
+//
+
+class Image: public Element
+{
+ public:
+ Image(uint32 x, uint32 y, const void * img): Element(x, y, 0, 0), image(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;
+};
+
+void Image::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+ if (image != NULL)
+ DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, image);
+}
+
+
+//
+// TextEdit class
+//
+
+class TextEdit: public Element
+{
+ public:
+ 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(uint32 x, uint32 y, 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) {}
+ 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;
+ string text;
+ uint32 caretPos;
+ uint32 maxScreenSize;
+};
+
+//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?)
+}
+
+
+//
+// ListBox class
+//
+
+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) { elementToTell = e; }
+ void AddItem(string s);
+ string GetSelectedItem(void);
+
+ protected:
+ bool thumbClicked;
+ uint32 windowPtr, cursor, limit;
+ uint32 charWidth, charHeight; // Box width/height in characters
+ Element * elementToTell;
+ Button upArrow, downArrow, upArrow2;
+ vector<string> item;
+
+ private:
+ uint32 yRelativePoint;
+};
+
+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!)
+ 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::AddItem(string s)
+{
+ // Do a simple insertion sort
+ bool inserted = false;
+
+ for(vector<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());
+}
+
+string ListBox::GetSelectedItem(void)
+{
+ return item[windowPtr + cursor];
+}
+
+
+//
+// FileList class
+//
+
+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) { Window::HandleMouseMove(x, y); }
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) { Window::HandleMouseButton(x, y, mouseDown); }
+ virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0) { Window::Draw(offsetX, offsetY); }
+ virtual void Notify(Element * e);
+
+ protected:
+ ListBox * files;
+ Button * load;
+};
+
+//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);
+
+//!!! 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(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::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);
+}
+
+
+//
+// Menu class & supporting structs/classes
+//
+
+struct NameAction
+{
+ string name;
+ Window * (* action)(void);
+ SDLKey hotKey;
+
+ NameAction(string n, Window * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN): name(n),
+ action(a), hotKey(k) {}
+};
+
+class MenuItems
+{
+ public:
+ MenuItems(): charLength(0) {}
+ 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); }
+
+ string title;
+ 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,
+/* uint16 fgc = 0x1CFF, uint16 bgc = 0x000F, uint16 fgch = 0x421F,
+ uint16 bgch = 0x1CFF): Element(x, y, w, h), activated(false), clicked(false),*/
+/* uint32 fgc = 0xFF3F3F00, uint32 bgc = 0x7F000000, uint32 fgch = 0xFF878700,
+ uint32 bgch = 0xFF3F3F00): Element(x, y, w, h), activated(false), clicked(false),*/
+/* uint32 fgc = 0xFFFF3F3F, uint32 bgc = 0xFF7F0000, uint32 fgch = 0xFFFF8787,
+ uint32 bgch = 0xFFFF3F3F): Element(x, y, w, h), activated(false), clicked(false),*/
+ 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) {}
+ 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;
+// uint16 fgColor, bgColor, fgColorHL, bgColorHL;
+ uint32 fgColor, bgColor, fgColorHL, bgColorHL;
+ int menuChosen, menuItemChosen;
+
+ private:
+ vector<MenuItems> itemList;
+};
+
+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;
+}
+
+
+//Do we even *need* this?
+//Doesn't seem like it...
+/*class RootWindow: public Window
+{
+ public:
+ RootWindow(Menu * m, Window * w = NULL): menu(m), window(w) {}
+//Do we even need to care about this crap?
+// { extents.x = extents.y = 0, extents.w = 320, extents.h = 240; }
+ 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 *) {}
+
+ private:
+ Menu * menu;
+ Window * window;
+ int16 * rootImage[1280 * 240 * 2];
+};//*/
+
+
+//
+// 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;
+}
+
+
+//
+// GUI stuff--it's not crunchy, it's GUI! ;-)
+//
+
+void InitGUI(void)
+{
+ SDL_ShowCursor(SDL_DISABLE);
+ SDL_GetMouseState(&mouseX, &mouseY);
+}
+
+void GUIDone(void)
+{
+}
+
+//
+// GUI main loop
+//
+//bool GUIMain(void)
+bool GUIMain(char * filename)
+{
+WriteLog("GUI: Inside GUIMain...\n");
+
+ uint32 pointerBGSave[6 * 8 + 2];
+ pointerBGSave[0] = 6;
+ pointerBGSave[1] = 8;
+
+// Need to set things up so that it loads and runs a file if given on the command line. !!! FIX !!! [DONE]
+ extern uint32 * backbuffer;
+// bool done = false;
+ SDL_Event event;
+ Window * mainWindow = NULL;
+
+ // Set up the GUI classes...
+// Element::SetScreenAndPitch(backbuffer, GetSDLScreenWidthInPixels());
+ Element::SetScreenAndPitch((uint32 *)sdlemuGetOverlayPixels(), sdlemuGetOverlayWidthInPixels());
+ sdlemuEnableOverlay();
+
+ Menu mainMenu;
+ MenuItems mi;
+ mi.title = "Jaguar";
+ mi.item.push_back(NameAction("Load...", LoadROM, SDLK_l));
+ mi.item.push_back(NameAction("Reset", ResetJaguar, SDLK_r));
+ if (CDBIOSLoaded)
+ mi.item.push_back(NameAction("Reset CD", ResetJaguarCD, SDLK_c));
+ mi.item.push_back(NameAction("Run", RunEmu, SDLK_ESCAPE));
+ mi.item.push_back(NameAction(""));
+ mi.item.push_back(NameAction("Quit", Quit, SDLK_q));
+ mainMenu.Add(mi);
+ mi.title = "Settings";
+ mi.item.clear();
+ mi.item.push_back(NameAction("Video..."));
+ mi.item.push_back(NameAction("Audio..."));
+ mi.item.push_back(NameAction("Misc...", MiscOptions, SDLK_m));
+ mainMenu.Add(mi);
+ mi.title = "Info";
+ mi.item.clear();
+ mi.item.push_back(NameAction("About...", About));
+ mainMenu.Add(mi);
+
+ bool showMouse = true;
+
+ // Grab the BG where the mouse will be painted (prime the backstore)
+
+/*
+DISNOWOK
+Bitmap ptr = { 6, 8, 4,
+""//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+};//*/
+ uint32 * overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+ uint32 count = 2;
+
+ for(uint32 y=0; y<pointerBGSave[1]; y++)
+ for(uint32 x=0; x<pointerBGSave[0]; x++)
+ pointerBGSave[count++] = overlayPixels[((mouseY + y) * sdlemuGetOverlayWidthInPixels()) + (mouseX + x)];
+
+ uint32 oldMouseX = mouseX, oldMouseY = mouseY;
+
+//This is crappy!!! !!! FIX !!!
+//Is this even needed any more? Hmm. Maybe. Dunno.
+WriteLog("GUI: Resetting Jaguar...\n");
+ jaguar_reset();
+
+WriteLog("GUI: Clearing BG save...\n");
+ // Set up our background save...
+// memset(background, 0x11, tom_getVideoModeWidth() * 240 * 2);
+//1111 -> 000100 01000 10001 -> 0001 0000 0100 0010 1000 1100 -> 10 42 8C
+ for(uint32 i=0; i<tom_getVideoModeWidth()*240; i++)
+// background[i] = 0xFF8C4210;
+ backbuffer[i] = 0xFF8C4210;
+
+/* uint32 * overlayPix = (uint32 *)sdlemuGetOverlayPixels();
+ for(uint32 i=0; i<sdlemuGetOverlayWidthInPixels()*480; i++)
+ overlayPix[i] = 0x00000000;*/
+
+ // Handle loading file passed in on the command line...! [DONE]
+
+ if (filename)
+ {
+ if (JaguarLoadFile(filename))
+ {
+// event.type = SDL_USEREVENT, event.user.code = MENU_ITEM_CHOSEN;
+// event.user.data1 = (void *)ResetJaguar;
+// SDL_PushEvent(&event);
+ // Make it so that if passed in on the command line, we quit right
+ // away when pressing ESC
+WriteLog("GUI: Bypassing GUI since ROM passed in on command line...\n");
+ ResetJaguar();
+ return true;
+ }
+ else
+ {
+ // Create error dialog...
+ char errText[1024];
+ sprintf(errText, "The file %40s could not be loaded.", filename);
+
+ mainWindow = new Window(8, 16, 304, 160);
+ mainWindow->AddElement(new Text(8, 8, "Error!"));
+ mainWindow->AddElement(new Text(8, 24, errText));
+ }
+ }
+
+WriteLog("GUI: Entering main loop...\n");
+ while (!exitGUI)
+ {
+ if (SDL_PollEvent(&event))
+ {
+ if (event.type == SDL_USEREVENT)
+ {
+ if (event.user.code == WINDOW_CLOSE)
+ {
+ delete mainWindow;
+ mainWindow = NULL;
+ }
+ else if (event.user.code == MENU_ITEM_CHOSEN)
+ {
+ // 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)();
+
+ 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...!
+
+ oldMouseX = mouseX, oldMouseY = mouseY;
+ mouseX = mx, mouseY = my; // This prevents "mouse flash"...
+ }
+ }
+ else if (event.type == SDL_ACTIVEEVENT)
+ {
+ if (event.active.state == SDL_APPMOUSEFOCUS)
+ showMouse = (event.active.gain ? true : false);
+ }
+ else if (event.type == SDL_KEYDOWN)
+ {
+ if (mainWindow)
+ mainWindow->HandleKey(event.key.keysym.sym);
+ else
+ mainMenu.HandleKey(event.key.keysym.sym);
+ }
+ else if (event.type == SDL_MOUSEMOTION)
+ {
+ oldMouseX = mouseX, oldMouseY = mouseY;
+ mouseX = event.motion.x, mouseY = event.motion.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseMove(mouseX, mouseY);
+ else
+ mainMenu.HandleMouseMove(mouseX, mouseY);
+ }
+ else if (event.type == SDL_MOUSEBUTTONDOWN)
+ {
+ uint32 mx = event.button.x, my = event.button.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseButton(mx, my, true);
+ else
+ mainMenu.HandleMouseButton(mx, my, true);
+ }
+ else if (event.type == SDL_MOUSEBUTTONUP)
+ {
+ uint32 mx = event.button.x, my = event.button.y;
+
+ if (mainWindow)
+ mainWindow->HandleMouseButton(mx, my, false);
+ else
+ mainMenu.HandleMouseButton(mx, my, false);
+ }
+
+//PROBLEM: In order to use the dirty rectangle approach here, we need some way of
+// handling it in mainMenu.Draw() and mainWindow->Draw(). !!! FIX !!!
+//POSSIBLE SOLUTION:
+// When mouse is moving and not on menu or window, can do straight dirty rect.
+// When mouse is on menu, need to update screen. Same for buttons on windows...
+// What the menu & windows should do is only redraw on a state change. IOW, they
+// should call their own/child window's Draw() function instead of doing it top
+// level.
+//#define NEW_BACKSTORE_METHOD
+
+ // Draw the GUI...
+// The way we do things here is kinda stupid (redrawing the screen every frame), but
+// it's simple. Perhaps there may be a reason down the road to be more selective with
+// our clearing, but for now, this will suffice.
+// memset(backbuffer, 0x11, tom_getVideoModeWidth() * 240 * 2);
+// memcpy(backbuffer, background, tom_getVideoModeWidth() * 256 * 2);
+// memcpy(backbuffer, background, tom_getVideoModeWidth() * 256 * 4);
+#ifndef NEW_BACKSTORE_METHOD
+ memset(sdlemuGetOverlayPixels(), 0, sdlemuGetOverlayWidthInPixels() * 480 * 4);
+
+ mainMenu.Draw();
+//Could do multiple windows here by using a vector + priority info...
+//Though the way ZSNES does it seems to be by a bool (i.e., they're always active, just not shown)
+ if (mainWindow)
+ mainWindow->Draw();
+#endif
+
+/*uint32 pBGS[6 * 8 + 3] = { 6, 8, 4,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0
+};*/
+//This isn't working... Why????
+//It's because DrawTransparentBitmap does alpha blending if it detects zero in the alpha channel.
+//So why do it that way? Hm.
+ overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+
+#ifdef NEW_BACKSTORE_METHOD
+// DrawTransparentBitmapDeprecated(overlayPixels, oldMouseX, oldMouseY, pointerBGSave);
+// DrawTransparentBitmap(overlayPixels, oldMouseX, oldMouseY, pBGS);
+ for(uint32 y=0; y<pointerBGSave[1]; y++)
+ for(uint32 x=0; x<pointerBGSave[0]; x++)
+ overlayPixels[((oldMouseY + y) * sdlemuGetOverlayWidthInPixels()) + (oldMouseX + x)] = 0x00000000;
+
+ count = 2;
+
+ for(uint32 y=0; y<pointerBGSave[1]; y++)
+ for(uint32 x=0; x<pointerBGSave[0]; x++)
+ pointerBGSave[count++] = overlayPixels[((mouseY + y) * sdlemuGetOverlayWidthInPixels()) + (mouseX + x)];
+#endif
+
+ if (showMouse)
+// DrawTransparentBitmapDeprecated(backbuffer, mouseX, mouseY, mousePic);
+ DrawTransparentBitmapDeprecated(overlayPixels, mouseX, mouseY, mousePic);
+
+ RenderBackbuffer();
+ }
+ }
+
+ return true;
+}
+
+//
+// GUI "action" functions
+//
+
+Window * LoadROM(void)
+{
+ FileList * fileList = new FileList(20, 20, 600, 440);
+
+ return (Window *)fileList;
+}
+
+Window * ResetJaguar(void)
+{
+ jaguar_reset();
+
+ return RunEmu();
+}
+
+Window * ResetJaguarCD(void)
+{
+ memcpy(jaguar_mainRom, jaguar_CDBootROM, 0x40000);
+ jaguarRunAddress = 0x802000;
+ jaguar_mainRom_crc32 = crc32_calcCheckSum(jaguar_mainRom, 0x40000);
+ jaguar_reset();
+//This is a quick kludge to get the CDBIOS to boot properly...
+//Wild speculation: It could be that this memory location is wired into the CD unit
+//somehow, which lets it know whether or not a cart is present in the unit...
+ jaguar_mainRom[0x0040B] = 0x03;
+
+ return RunEmu();
+}
+
+
+#if 0
+
+bool debounceRunKey = true;
+Window * RunEmu(void)
+{
+ extern uint32 * backbuffer;
+//Temporary, to test the new timer based code...
+sdlemuDisableOverlay();
+JaguarExecuteNew();
+sdlemuEnableOverlay();
+ // Save the background for the GUI...
+ // In this case, we squash the color to monochrome, then force it to blue + green...
+ for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+ {
+ uint32 pixel = backbuffer[i];
+ uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+ pixel = ((r + g + b) / 3) & 0x00FF;
+ backbuffer[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+ }
+return NULL;//*/
+
+//This is crappy... !!! FIX !!!
+ extern bool finished, showGUI;
+
+// uint32 nFrame = 0, nFrameskip = 0;
+ uint32 totalFrames = 0;
+ finished = false;
+ bool showMessage = true;
+ uint32 showMsgFrames = 120;
+ uint8 transparency = 0;
+ // Pass a message to the "joystick" code to debounce the ESC key...
+ debounceRunKey = true;
+
+ uint32 cartType = 4;
+ if (jaguarRomSize == 0x200000)
+ cartType = 0;
+ else if (jaguarRomSize == 0x400000)
+ cartType = 1;
+ else if (jaguar_mainRom_crc32 == 0x687068D5)
+ cartType = 2;
+ else if (jaguar_mainRom_crc32 == 0x55A0669C)
+ cartType = 3;
+
+ char * cartTypeName[5] = { "2M Cartridge", "4M Cartridge", "CD BIOS", "CD Dev BIOS", "Homebrew" };
+ uint32 elapsedTicks = SDL_GetTicks(), frameCount = 0, framesPerSecond = 0;
+
+ while (true)
+ {
+ // Set up new backbuffer with new pixels and data
+ JaguarExecute(backbuffer, true);
+// JaguarExecuteNew();
+ totalFrames++;
+//WriteLog("Frame #%u...\n", totalFrames);
+//extern bool doDSPDis;
+//if (totalFrames == 373)
+// doDSPDis = true;
+
+//This sucks... !!! FIX !!!
+ joystick_exec();
+//This is done here so that the crud below doesn't get on our GUI background...
+ if (finished)
+ break;
+
+ // Some QnD GUI stuff here...
+ if (showGUI)
+ {
+ extern uint32 gpu_pc, dsp_pc;
+ DrawString(backbuffer, 8, 8, false, "GPU PC: %08X", gpu_pc);
+ DrawString(backbuffer, 8, 16, false, "DSP PC: %08X", dsp_pc);
+ DrawString(backbuffer, 8, 32, false, "%u FPS", framesPerSecond);
+ }
+
+ if (showMessage)
+ {
+// FF0F -> 1111 11 11 000 0 1111 -> 3F 18 0F
+// 3FE3 -> 0011 11 11 111 0 0011 -> 0F 3F 03
+/* DrawStringTrans((uint32 *)backbuffer, 8, 24*8, 0xFF0F, transparency, "Running...");
+ DrawStringTrans((uint32 *)backbuffer, 8, 26*8, 0x3FE3, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+ DrawStringTrans((uint32 *)backbuffer, 8, 27*8, 0x3FE3, transparency, "CRC: %08X", jaguar_mainRom_crc32);//*/
+//first has wrong color. !!! FIX !!!
+ DrawStringTrans(backbuffer, 8, 24*8, 0xFF7F63FF, transparency, "Running...");
+ DrawStringTrans(backbuffer, 8, 26*8, 0xFF1FFF3F, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+ DrawStringTrans(backbuffer, 8, 27*8, 0xFF1FFF3F, transparency, "CRC: %08X", jaguar_mainRom_crc32);
+
+ if (showMsgFrames == 0)
+ {
+ transparency++;
+
+ if (transparency == 33)
+{
+ showMessage = false;
+/*extern bool doGPUDis;
+doGPUDis = true;//*/
+}
+
+ }
+ else
+ showMsgFrames--;
+ }
+
+ RenderBackbuffer();
+ frameCount++;
+
+ if (SDL_GetTicks() - elapsedTicks > 250)
+ elapsedTicks += 250, framesPerSecond = frameCount * 4, frameCount = 0;
+ }
+
+ // Reset the pitch, since it may have been changed in-game...
+ Element::SetScreenAndPitch((uint32 *)backbuffer, GetSDLScreenWidthInPixels());
+
+ // Save the background for the GUI...
+// memcpy(background, backbuffer, tom_getVideoModeWidth() * 240 * 2);
+ // In this case, we squash the color to monochrome, then force it to blue + green...
+ for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+ {
+ uint32 pixel = backbuffer[i];
+ uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+ pixel = ((r + g + b) / 3) & 0x00FF;
+ background[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+ }
+
+ return NULL;
+}
+
+#else
+
+bool debounceRunKey = true;
+Window * RunEmu(void)
+{
+ extern uint32 * backbuffer;
+ uint32 * overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+ memset(overlayPixels, 0x00, 640 * 480 * 4); // Clear out overlay...
+
+//This is crappy... !!! FIX !!!
+ extern bool finished, showGUI;
+
+ sdlemuDisableOverlay();
+
+// uint32 nFrame = 0, nFrameskip = 0;
+ uint32 totalFrames = 0;
+ finished = false;
+ bool showMessage = true;
+ uint32 showMsgFrames = 120;
+ uint8 transparency = 0xFF;
+ // Pass a message to the "joystick" code to debounce the ESC key...
+ debounceRunKey = true;
+
+ uint32 cartType = 4;
+ if (jaguarRomSize == 0x200000)
+ cartType = 0;
+ else if (jaguarRomSize == 0x400000)
+ cartType = 1;
+ else if (jaguar_mainRom_crc32 == 0x687068D5)
+ cartType = 2;
+ else if (jaguar_mainRom_crc32 == 0x55A0669C)
+ cartType = 3;
+
+ char * cartTypeName[5] = { "2M Cartridge", "4M Cartridge", "CD BIOS", "CD Dev BIOS", "Homebrew" };
+ uint32 elapsedTicks = SDL_GetTicks(), frameCount = 0, framesPerSecond = 0;
+
+ while (!finished)
+ {
+ // Set up new backbuffer with new pixels and data
+ JaguarExecuteNew();
+ totalFrames++;
+//WriteLog("Frame #%u...\n", totalFrames);
+//extern bool doDSPDis;
+//if (totalFrames == 373)
+// doDSPDis = true;
+
+//Problem: Need to do this *only* when the state changes from visible to not...
+//Also, need to clear out the GUI when not on (when showMessage is active...)
+if (showGUI || showMessage)
+ sdlemuEnableOverlay();
+else
+ sdlemuDisableOverlay();
+
+//Add in a new function for clearing patches of screen (ClearOverlayRect)
+
+ // Some QnD GUI stuff here...
+ if (showGUI)
+ {
+ FillScreenRectangle(overlayPixels, 8, 1*FONT_HEIGHT, 128, 4*FONT_HEIGHT, 0x00000000);
+ extern uint32 gpu_pc, dsp_pc;
+ DrawString(overlayPixels, 8, 1*FONT_HEIGHT, false, "GPU PC: %08X", gpu_pc);
+ DrawString(overlayPixels, 8, 2*FONT_HEIGHT, false, "DSP PC: %08X", dsp_pc);
+ DrawString(overlayPixels, 8, 4*FONT_HEIGHT, false, "%u FPS", framesPerSecond);
+ }
+
+ if (showMessage)
+ {
+ DrawString2(overlayPixels, 8, 24*FONT_HEIGHT, 0x007F63FF, transparency, "Running...");
+ DrawString2(overlayPixels, 8, 26*FONT_HEIGHT, 0x001FFF3F, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+ DrawString2(overlayPixels, 8, 27*FONT_HEIGHT, 0x001FFF3F, transparency, "CRC: %08X", jaguar_mainRom_crc32);
+
+ if (showMsgFrames == 0)
+ {
+ transparency--;
+
+ if (transparency == 0)
+{
+ showMessage = false;
+/*extern bool doGPUDis;
+doGPUDis = true;//*/
+}
+
+ }
+ else
+ showMsgFrames--;
+ }
+
+ frameCount++;
+
+ if (SDL_GetTicks() - elapsedTicks > 250)
+ elapsedTicks += 250, framesPerSecond = frameCount * 4, frameCount = 0;
+ }
+
+ // Save the background for the GUI...
+ // In this case, we squash the color to monochrome, then force it to blue + green...
+ for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+ {
+ uint32 pixel = backbuffer[i];
+ uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+ pixel = ((r + g + b) / 3) & 0x00FF;
+ backbuffer[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+ }
+
+ sdlemuEnableOverlay();
+
+ return NULL;
+}
+
+#endif
+
+
+Window * Quit(void)
+{
+ WriteLog("GUI: Quitting due to user request.\n");
+ exitGUI = true;
+
+ return NULL;
+}
+
+Window * About(void)
+{
+ char buf[512];
+// sprintf(buf, "Virtual Jaguar CVS %s", __DATE__);
+ sprintf(buf, "CVS %s", __DATE__);
+//fprintf(fp, "VirtualJaguar v1.0.8 (Last full build was on %s %s)\n", __DATE__, __TIME__);
+//VirtualJaguar v1.0.8 (Last full build was on Dec 30 2004 20:01:31)
+//Hardwired, bleh... !!! FIX !!!
+uint32 width = 55 * FONT_WIDTH, height = 18 * FONT_HEIGHT;
+uint32 xpos = (640 - width) / 2, ypos = (480 - height) / 2;
+// Window * window = new Window(8, 16, 50 * FONT_WIDTH, 21 * FONT_HEIGHT);
+ Window * window = new Window(xpos, ypos, width, height);
+// window->AddElement(new Text(8, 8, "Virtual Jaguar 1.0.8"));
+// window->AddElement(new Text(8, 8, "Virtual Jaguar CVS 20050110", 0xFF3030FF, 0xFF000000));
+// window->AddElement(new Text(208, 8+0*FONT_HEIGHT, buf, 0xFF3030FF, 0xFF000000));
+ window->AddElement(new Text(248, 8+4*FONT_HEIGHT+5, buf, 0xFF3030FF, 0xFF000000));
+ window->AddElement(new Text(8, 8+0*FONT_HEIGHT, "Coders:"));
+ window->AddElement(new Text(16, 8+1*FONT_HEIGHT, "James L. Hammons (shamus)"));
+ window->AddElement(new Text(16, 8+2*FONT_HEIGHT, "Niels Wagenaar (nwagenaar)"));
+ window->AddElement(new Text(16, 8+3*FONT_HEIGHT, "Carwin Jones (Caz)"));
+ window->AddElement(new Text(16, 8+4*FONT_HEIGHT, "Adam Green"));
+ window->AddElement(new Text(8, 8+6*FONT_HEIGHT, "Testers:"));
+ window->AddElement(new Text(16, 8+7*FONT_HEIGHT, "Guruma"));
+ window->AddElement(new Text(8, 8+9*FONT_HEIGHT, "Thanks go out to:"));
+ window->AddElement(new Text(16, 8+10*FONT_HEIGHT, "Aaron Giles for the original CoJag"));
+ window->AddElement(new Text(16, 8+11*FONT_HEIGHT, "David Raingeard for the original VJ"));
+ window->AddElement(new Text(16, 8+12*FONT_HEIGHT, "Karl Stenerud for his Musashi 68K emu"));
+ window->AddElement(new Text(16, 8+13*FONT_HEIGHT, "Sam Lantinga for his amazing SDL libs"));
+ window->AddElement(new Text(16, 8+14*FONT_HEIGHT, "Ryan C. Gordon for VJ's web presence"));
+ window->AddElement(new Text(16, 8+15*FONT_HEIGHT, "Curt Vendel for various Jaguar goodies"));
+ window->AddElement(new Text(16, 8+16*FONT_HEIGHT, "The guys over at Atari Age ;-)"));
+// window->AddElement(new Image(8, 8, &vj_title_small));
+ window->AddElement(new Image(width - (vj_title_small.width + 8), 8, &vj_title_small));
+
+ return window;
+}
+
+Window * MiscOptions(void)
+{
+ Window * window = new Window(8, 16, 304, 192);
+ window->AddElement(new PushButton(8, 8, &vjs.useJaguarBIOS, "BIOS"));
+ window->AddElement(new SlideSwitch(8, 32, &vjs.hardwareTypeNTSC, "PAL", "NTSC"));
+ window->AddElement(new PushButton(8, 64, &vjs.DSPEnabled, "DSP"));
+ window->AddElement(new SlideSwitch(24, 88, &vjs.usePipelinedDSP, "Original", "Pipelined"));
+ window->AddElement(new SlideSwitch(8, 120, (bool *)&vjs.glFilter, "Sharp", "Blurry"));
+ window->AddElement(new SlideSwitch(8, 152, (bool *)&vjs.renderType, "Normal render", "TV style"));
+
+ window->AddElement(new TextEdit(88, 8, vjs.ROMPath, 20, 0xFF8484FF, 0xFF000000));
+
+/*TextEdit(uint32 x, uint32 y, 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) {}*/
+// Missing:
+// * BIOS path
+// * ROM path
+// * EEPROM path
+// * joystick
+// * joystick port
+// * OpenGL?
+// * GL Filter type
+// * Window/fullscreen
+// * Key definitions
+
+ return window;
+}
+
+
+//
+// Generic ROM loading
+//
+uint32 JaguarLoadROM(uint8 * rom, char * path)
+{
+// We really should have some kind of sanity checking for the ROM size here to prevent
+// a buffer overflow... !!! FIX !!!
+ uint32 romSize = 0;
+
+WriteLog("JaguarLoadROM: Attempting to load file '%s'...", path);
+ char * ext = strrchr(path, '.');
+if (ext == NULL)
+ WriteLog("FAILED!\n");
+else
+ WriteLog("Succeeded in finding extension (%s)!\n", ext);
+
+ if (ext != NULL)
+ {
+ WriteLog("VJ: Loading \"%s\"...", path);
+
+ if (strcasecmp(ext, ".zip") == 0)
+ {
+ // Handle ZIP file loading here...
+ WriteLog("(ZIPped)...");
+
+ if (load_zipped_file(0, 0, path, NULL, &rom, &romSize) == -1)
+ {
+ WriteLog("Failed!\n");
+ return 0;
+ }
+ }
+ else
+ {
+/* FILE * fp = fopen(path, "rb");
+
+ if (fp == NULL)
+ {
+ WriteLog("Failed!\n");
+ return 0;
+ }
+
+ fseek(fp, 0, SEEK_END);
+ romSize = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+ fread(rom, 1, romSize, fp);
+ fclose(fp);*/
+
+ // Handle gzipped files transparently [Adam Green]...
+
+ gzFile fp = gzopen(path, "rb");
+
+ if (fp == NULL)
+ {
+ WriteLog("Failed!\n");
+ return 0;
+ }
+
+ romSize = gzfilelength(fp);
+ gzseek(fp, 0, SEEK_SET);
+ gzread(fp, rom, romSize);
+ gzclose(fp);
+ }
+
+ WriteLog("OK (%i bytes)\n", romSize);
+ }
+
+ return romSize;
+}
+
+//
+// Jaguar file loading
+//
+bool JaguarLoadFile(char * path)
+{
+// jaguarRomSize = JaguarLoadROM(mem, path);
+ jaguarRomSize = JaguarLoadROM(jaguar_mainRom, path);
+
+/*//This is not *nix friendly for some reason...
+// if (!UserSelectFile(path, newPath))
+ if (!UserSelectFile((strlen(path) == 0 ? (char *)"." : path), newPath))
+ {
+ WriteLog("VJ: Could not find valid ROM in directory \"%s\"...\nAborting!\n", path);
+ log_done();
+ exit(0);
+ }*/
+
+ if (jaguarRomSize == 0)
+ {
+// WriteLog("VJ: Could not load ROM from file \"%s\"...\nAborting!\n", newPath);
+ WriteLog("GUI: Could not load ROM from file \"%s\"...\nAborting load!\n", path);
+// Need to do something else here, like throw up an error dialog instead of aborting. !!! FIX !!!
+// log_done();
+// exit(0);
+ return false; // This is a start...
+ }
+
+ jaguar_mainRom_crc32 = crc32_calcCheckSum(jaguar_mainRom, jaguarRomSize);
+ WriteLog("CRC: %08X\n", (unsigned int)jaguar_mainRom_crc32);
+ eeprom_init();
+
+ jaguarRunAddress = 0x802000;
+
+ char * ext = strrchr(path, '.'); // Get the file's extension for non-cartridge checking
+
+//NOTE: Should fix JaguarLoadROM() to replace .zip with what's *in* the zip (.abs, .j64, etc.)
+ if (strcasecmp(ext, ".rom") == 0)
+ {
+ // File extension ".ROM": Alpine image that loads/runs at $802000
+ WriteLog("GUI: Setting up homebrew (ROM)... Run address: 00802000, length: %08X\n", jaguarRomSize);
+
+ for(int i=jaguarRomSize-1; i>=0; i--)
+ jaguar_mainRom[0x2000 + i] = jaguar_mainRom[i];
+
+ memset(jaguar_mainRom, 0xFF, 0x2000);
+/* memcpy(jaguar_mainRam, jaguar_mainRom, jaguarRomSize);
+ memset(jaguar_mainRom, 0xFF, 0x600000);
+ memcpy(jaguar_mainRom + 0x2000, jaguar_mainRam, jaguarRomSize);
+ memset(jaguar_mainRam, 0x00, 0x400000);*/
+
+/*
+Stubulator ROM vectors...
+handler 001 at $00E00008
+handler 002 at $00E008DE
+handler 003 at $00E008E2
+handler 004 at $00E008E6
+handler 005 at $00E008EA
+handler 006 at $00E008EE
+handler 007 at $00E008F2
+handler 008 at $00E0054A
+handler 009 at $00E008FA
+handler 010 at $00000000
+handler 011 at $00000000
+handler 012 at $00E008FE
+handler 013 at $00E00902
+handler 014 at $00E00906
+handler 015 at $00E0090A
+handler 016 at $00E0090E
+handler 017 at $00E00912
+handler 018 at $00E00916
+handler 019 at $00E0091A
+handler 020 at $00E0091E
+handler 021 at $00E00922
+handler 022 at $00E00926
+handler 023 at $00E0092A
+handler 024 at $00E0092E
+handler 025 at $00E0107A
+handler 026 at $00E0107A
+handler 027 at $00E0107A
+handler 028 at $00E008DA
+handler 029 at $00E0107A
+handler 030 at $00E0107A
+handler 031 at $00E0107A
+handler 032 at $00000000
+
+Let's try setting up the illegal instruction vector for a stubulated jaguar...
+*/
+/* SET32(jaguar_mainRam, 0x08, 0x00E008DE);
+ SET32(jaguar_mainRam, 0x0C, 0x00E008E2);
+ SET32(jaguar_mainRam, 0x10, 0x00E008E6); // <-- Should be here (it is)...
+ SET32(jaguar_mainRam, 0x14, 0x00E008EA);//*/
+
+ // Try setting the vector to say, $1000 and putting an instruction there that loops forever:
+ // This kludge works! Yeah!
+ SET32(jaguar_mainRam, 0x10, 0x00001000);
+ SET16(jaguar_mainRam, 0x1000, 0x60FE); // Here: bra Here
+ }
+ else if (strcasecmp(ext, ".abs") == 0)
+ {
+ // File extension ".ABS": Atari linker output file with header (w/o is useless to us here)
+
+/*
+ABS Format sleuthing (LBUGDEMO.ABS):
+
+000000 60 1B 00 00 05 0C 00 04 62 C0 00 00 04 28 00 00
+000010 12 A6 00 00 00 00 00 80 20 00 FF FF 00 80 25 0C
+000020 00 00 40 00
+
+DRI-format file detected...
+Text segment size = 0x0000050c bytes
+Data segment size = 0x000462c0 bytes
+BSS Segment size = 0x00000428 bytes
+Symbol Table size = 0x000012a6 bytes
+Absolute Address for text segment = 0x00802000
+Absolute Address for data segment = 0x0080250c
+Absolute Address for BSS segment = 0x00004000
+
+(CRZDEMO.ABS):
+000000 01 50 00 03 00 00 00 00 00 03 83 10 00 00 05 3b
+000010 00 1c 00 03 00 00 01 07 00 00 1d d0 00 03 64 98
+000020 00 06 8b 80 00 80 20 00 00 80 20 00 00 80 3d d0
+
+000030 2e 74 78 74 00 00 00 00 00 80 20 00 00 80 20 00 .txt (+36 bytes)
+000040 00 00 1d d0 00 00 00 a8 00 00 00 00 00 00 00 00
+000050 00 00 00 00 00 00 00 20
+000058 2e 64 74 61 00 00 00 00 00 80 3d d0 00 80 3d d0 .dta (+36 bytes)
+000068 00 03 64 98 00 00 1e 78 00 00 00 00 00 00 00 00
+000078 00 00 00 00 00 00 00 40
+000080 2e 62 73 73 00 00 00 00 00 00 50 00 00 00 50 00 .bss (+36 bytes)
+000090 00 06 8b 80 00 03 83 10 00 00 00 00 00 00 00 00
+0000a0 00 00 00 00 00 00 00 80
+
+Header size is $A8 bytes...
+
+BSD/COFF format file detected...
+3 sections specified
+Symbol Table offset = 230160 ($00038310)
+Symbol Table contains 1339 symbol entries ($0000053B)
+The additional header size is 28 bytes ($001C)
+Magic Number for RUN_HDR = 0x00000107
+Text Segment Size = 7632 ($00001DD0)
+Data Segment Size = 222360 ($00036498)
+BSS Segment Size = 428928 ($00068B80)
+Starting Address for executable = 0x00802000
+Start of Text Segment = 0x00802000
+Start of Data Segment = 0x00803dd0
+*/
+ if (jaguar_mainRom[0] == 0x60 && jaguar_mainRom[1] == 0x1B)
+ {
+ uint32 loadAddress = GET32(jaguar_mainRom, 0x16), //runAddress = GET32(jaguar_mainRom, 0x2A),
+ codeSize = GET32(jaguar_mainRom, 0x02) + GET32(jaguar_mainRom, 0x06);
+ WriteLog("GUI: Setting up homebrew (ABS-1)... Run address: %08X, length: %08X\n", loadAddress, codeSize);
+
+ if (loadAddress < 0x800000)
+ memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x24, codeSize);
+ else
+ {
+ for(int i=codeSize-1; i>=0; i--)
+ jaguar_mainRom[(loadAddress - 0x800000) + i] = jaguar_mainRom[i + 0x24];
+/* memcpy(jaguar_mainRam, jaguar_mainRom + 0x24, codeSize);
+ memset(jaguar_mainRom, 0xFF, 0x600000);
+ memcpy(jaguar_mainRom + (loadAddress - 0x800000), jaguar_mainRam, codeSize);
+ memset(jaguar_mainRam, 0x00, 0x400000);*/
+ }
+
+ jaguarRunAddress = loadAddress;
+ }
+ else if (jaguar_mainRom[0] == 0x01 && jaguar_mainRom[1] == 0x50)
+ {
+ uint32 loadAddress = GET32(jaguar_mainRom, 0x28), runAddress = GET32(jaguar_mainRom, 0x24),
+ codeSize = GET32(jaguar_mainRom, 0x18) + GET32(jaguar_mainRom, 0x1C);
+ WriteLog("GUI: Setting up homebrew (ABS-2)... Run address: %08X, length: %08X\n", runAddress, codeSize);
+
+ if (loadAddress < 0x800000)
+ memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0xA8, codeSize);
+ else
+ {
+ for(int i=codeSize-1; i>=0; i--)
+ jaguar_mainRom[(loadAddress - 0x800000) + i] = jaguar_mainRom[i + 0xA8];
+/* memcpy(jaguar_mainRam, jaguar_mainRom + 0xA8, codeSize);
+ memset(jaguar_mainRom, 0xFF, 0x600000);
+ memcpy(jaguar_mainRom + (loadAddress - 0x800000), jaguar_mainRam, codeSize);
+ memset(jaguar_mainRam, 0x00, 0x400000);*/
+ }
+
+ jaguarRunAddress = runAddress;
+ }
+ else
+ {
+ WriteLog("GUI: Couldn't find correct ABS format: %02X %02X\n", jaguar_mainRom[0], jaguar_mainRom[1]);
+ return false;
+ }
+ }
+ else if (strcasecmp(ext, ".jag") == 0)
+ {
+ // File extension ".JAG": Atari server file with header
+//NOTE: The bytes 'JAGR' should also be at position $1C...
+// Also, there's *always* a $601A header at position $00...
+ if (jaguar_mainRom[0] == 0x60 && jaguar_mainRom[1] == 0x1A)
+ {
+ uint32 loadAddress = GET32(jaguar_mainRom, 0x22), runAddress = GET32(jaguar_mainRom, 0x2A);
+//This is not always right! Especially when converted via bin2jag1!!!
+//We should have access to the length of the furshlumiger file that was loaded anyway!
+//Now, we do! ;-)
+// uint32 progLength = GET32(jaguar_mainRom, 0x02);
+//jaguarRomSize
+//jaguarRunAddress
+// WriteLog("Jaguar: Setting up PD ROM... Run address: %08X, length: %08X\n", runAddress, progLength);
+// memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x2E, progLength);
+ WriteLog("GUI: Setting up homebrew (JAG)... Run address: %08X, length: %08X\n", runAddress, jaguarRomSize - 0x2E);
+ memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x2E, jaguarRomSize - 0x2E);
+// SET32(jaguar_mainRam, 4, runAddress);
+ jaguarRunAddress = runAddress;
+ }
+ else
+ return false;
+ }
+ // .J64 (Jaguar cartridge ROM image) is implied by the FileList object...
+
+ return true;
+}
+
+//
+// Get the length of a (possibly) gzipped file
+//
+int gzfilelength(gzFile gd)
+{
+ int size = 0, length = 0;
+ unsigned char buffer[0x10000];
+
+ gzrewind(gd);
+
+ do
+ {
+ // Read in chunks until EOF
+ size = gzread(gd, buffer, 0x10000);
+
+ if (size <= 0)
+ break;
+
+ length += size;
+ }
+ while (!gzeof(gd));
+
+ gzrewind(gd);
+ return length;
+}
+#endif
--- /dev/null
+//
+// GUIMISC.H
+//
+// Graphical User Interface support functions
+//
+
+#ifndef __GUIMISC_H__
+#define __GUIMISC_H__
+
+#include <SDL.h>
+#include <stdarg.h>
+#include "types.h"
+
+// Useful structs
+
+struct Font
+{
+ Font(uint8 * d = NULL, uint32 w = 0, uint32 h = 0): data(d), width(w), height(h) {}
+
+ uint8 * data;
+ uint32 width, height;
+};
+
+// 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[];
+};*/
+
+// A better way is just to use the following format:
+// bytes 0-1: width (HI/LO)
+// bytes 2-3: height (HI/LO)
+// bytes 4-n: pixel data in RGBA format
+
+// Global functions
+
+//void SetFont(uint8 *, uint32, uint32);
+void SetNewFont(Font);
+void RestoreOldFont(void);
+uint32 GetFontWidth(void);
+uint32 GetFontHeight(void);
+void DrawStringTrans(SDL_Surface * screen, uint32 x, uint32 y, uint32 color, const char * text, ...);
+void DrawStringOpaque(SDL_Surface * screen, uint32 x, uint32 y, uint32 fg, uint32 bg, const char * text, ...);
+
+void DrawStringOpaqueSmall(SDL_Surface * screen, uint32 x, uint32 y, uint32 fg, uint32 bg, const char * text, ...);
+
+// GUI bitmaps (exported)
+
+extern uint8 closeBox[];
+extern uint8 closeBoxDown[];
+extern uint8 closeBoxHover[];
+extern uint8 floppyDiskImg[];
+
+#endif // __GUIMISC_H__
--- /dev/null
+//
+// MENU.CPP
+//
+// Graphical User Interface menu support
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/09/2006 Created this file
+// JLH 02/13/2006 Added rendering support
+//
+
+#include "menu.h"
+#include "guimisc.h"
+
+//#define DEBUG_MENU
+
+#ifdef DEBUG_MENU
+#include "log.h"
+#endif
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//
+// MenuItems class implementation
+//
+
+MenuItems::MenuItems(): charLength(0), popupBackstore(NULL)
+{
+}
+
+bool MenuItems::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);
+}
+
+//
+// Menu class implementation
+//
+
+Menu::Menu(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ uint8 fgcR/*= 0x00*/, uint8 fgcG/*= 0x00*/, uint8 fgcB/*= 0x7F*/, uint8 fgcA/*= 0xFF*/,
+ uint8 bgcR/*= 0x3F*/, uint8 bgcG/*= 0x3F*/, uint8 bgcB/*= 0xFF*/, uint8 bgcA/*= 0xFF*/,
+ uint8 fgchR/*= 0x3F*/, uint8 fgchG/*= 0x3F*/, uint8 fgchB/*= 0xFF*/, uint8 fgchA/*= 0xFF*/,
+ uint8 bgchR/*= 0x87*/, uint8 bgchG/*= 0x87*/, uint8 bgchB/*= 0xFF*/, uint8 bgchA/*= 0xFF*/):
+ Element(x, y, w, GetFontHeight(), fgcR, fgcG, fgcB, fgcA, bgcR, bgcG, bgcB, bgcA),
+ activated(false), clicked(false),
+ inside(0), insidePopup(0), menuChosen(-1), menuItemChosen(-1),
+ activatedSave(false), clickedSave(false),
+ insideSave(0), insidePopupSave(0), menuChosenSave(-1), menuItemChosenSave(-1)
+{
+ // This *should* allow us to store our colors in an endian safe way... :-/
+ uint8 * c = (uint8 *)&fgColorHL;
+ c[0] = fgchR, c[1] = fgchG, c[2] = fgchB, c[3] = fgchA;
+ c = (uint8 *)&bgColorHL;
+ c[0] = bgchR, c[1] = bgchG, c[2] = bgchB, c[3] = bgchA;
+}
+
+Menu::~Menu()
+{
+ for(uint32 i=0; i<itemList.size(); i++)
+ {
+ if (itemList[i].popupBackstore)
+ SDL_FreeSurface(itemList[i].popupBackstore);
+ }
+}
+
+void Menu::HandleKey(SDLKey key)
+{
+ SaveStateVariables();
+
+ 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;
+ }
+ }
+ }
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::HandleMouseMove(uint32 x, uint32 y)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::HandleMouseMove()...\n");
+#endif
+ SaveStateVariables();
+
+ 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) * GetFontWidth();
+
+ 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) / GetFontHeight()) + 1;
+ menuItemChosen = insidePopup - 1;
+ }
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::HandleMouseButton()...\n");
+#endif
+ SaveStateVariables();
+
+ 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)
+ {
+ 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;
+ }
+
+ if (!inside && !insidePopup && mouseDown)
+ clicked = false, menuChosen = menuItemChosen = -1;
+ }
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::Draw(void)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::Draw()...\n");
+#endif
+ char separator[] = "--------------------------------------------------------";
+
+ uint32 xpos = extents.x;
+
+ for(uint32 i=0; i<itemList.size(); i++)
+ {
+ uint32 color1 = fgColor, color2 = bgColor;
+
+ if (inside == (i + 1) || (menuChosen != -1 && (uint32)menuChosen == i))
+ color1 = fgColorHL, color2 = bgColorHL;
+
+ DrawStringOpaque(screen, xpos, extents.y, color1, color2,
+ " %s ", itemList[i].title.c_str());
+ xpos += (itemList[i].title.length() + 2) * GetFontWidth();
+ }
+
+ // Prime the backstore if we're about to draw a popup...
+ if (!clickedSave && clicked) // If we transitioned from no popup to popup
+#ifdef DEBUG_MENU
+ {
+WriteLog("--> Attempting to prime pubs...\n pubs x/y/w/h = %u/%u/%u/%u\n surface = %08X\n",
+ itemList[menuChosen].extents.x,
+ itemList[menuChosen].extents.y,
+ itemList[menuChosen].extents.w,
+ itemList[menuChosen].extents.h,
+ itemList[menuChosen].popupBackstore);
+#endif
+ SDL_BlitSurface(screen, &itemList[menuChosen].extents, itemList[menuChosen].popupBackstore, NULL);
+#ifdef DEBUG_MENU
+ }
+#endif
+
+ // Draw sub menu (but only if active)
+ if (clicked)
+ {
+ uint32 ypos = extents.y + GetFontHeight() + 1;
+
+ for(uint32 i=0; i<itemList[menuChosen].item.size(); i++)
+ {
+ uint32 color1 = fgColor, color2 = bgColor;
+
+ if (insidePopup == i + 1)
+ color1 = fgColorHL, color2 = bgColorHL, menuItemChosen = i;
+
+ if (itemList[menuChosen].item[i].name.length() > 0)
+ DrawStringOpaque(screen, itemList[menuChosen].extents.x, ypos,
+ color1, color2, " %-*.*s ", itemList[menuChosen].charLength,
+ itemList[menuChosen].charLength, itemList[menuChosen].item[i].name.c_str());
+ else
+ DrawStringOpaque(screen, itemList[menuChosen].extents.x, ypos,
+ fgColor, bgColor, "%.*s", itemList[menuChosen].charLength + 2, separator);
+
+ ypos += GetFontHeight();
+ }
+ }
+
+ // Do cleanup if we're done with the popup menu
+ if (clickedSave && !clicked) // If we transitioned from popup to no popup
+ {
+ SDL_Rect r;
+
+ r.x = itemList[menuChosenSave].extents.x;
+ r.y = itemList[menuChosenSave].extents.y;
+ SDL_BlitSurface(itemList[menuChosenSave].popupBackstore, NULL, screen, &r);
+ }
+
+ needToRefreshScreen = true;
+}
+
+void Menu::Notify(Element *)
+{
+}
+
+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 + GetFontHeight() + 1;
+ mi.extents.w = (mi.charLength + 2) * GetFontWidth();
+ mi.extents.h = mi.item.size() * GetFontHeight();
+
+ mi.popupBackstore = SDL_CreateRGBSurface(SDL_SWSURFACE, mi.extents.w, mi.extents.h, 32,
+ MASK_R, MASK_G, MASK_B, 0x00);
+
+ itemList.push_back(mi);
+ extents.w += (mi.title.length() + 2) * GetFontWidth();
+
+//This is incorrect--this should be sampled just *before* we draw the popup! !!! FIX !!! [DONE]
+// SDL_BlitSurface(screen, &mi.extents, mi.popupBackstore, NULL);
+#ifdef DEBUG_MENU
+WriteLog("--> Added menu item...\n pubs x/y/w/h = %u/%u/%u/%u\n surface = %08X\n",
+ mi.extents.x,
+ mi.extents.y,
+ mi.popupBackstore->w,
+ mi.popupBackstore->h,
+ mi.popupBackstore);
+#endif
+}
+
+void Menu::SaveStateVariables(void)
+{
+ activatedSave = activated;
+ clickedSave = clicked;
+ insideSave = inside;
+ insidePopupSave = insidePopup;
+ menuChosenSave = menuChosen;
+ menuItemChosenSave = menuItemChosen;
+}
+
+void Menu::CheckStateAndRedrawIfNeeded(void)
+{
+ // Check to see if any of our state variables changed since we last saved them...
+ if (activated != activatedSave || clicked != clickedSave
+ || inside != insideSave || insidePopup != insidePopupSave
+ || menuChosen != menuChosenSave || menuItemChosen != menuItemChosenSave)
+ Draw();
+}
--- /dev/null
+//
+// MENU.H
+//
+// Graphical User Interface menu support
+//
+
+#ifndef __MENU_H__
+#define __MENU_H__
+
+#include <string>
+#include <vector>
+#include "window.h"
+
+struct NameAction
+{
+ std::string name;
+ Element * (* action)(void);
+ SDLKey hotKey;
+
+ NameAction(std::string n, Element * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN): name(n),
+ action(a), hotKey(k) {}
+};
+
+class MenuItems
+{
+ public:
+ MenuItems();
+ bool Inside(uint32 x, uint32 y);
+
+ std::string title;
+ std::vector<NameAction> item;
+ uint32 charLength;
+ SDL_Rect extents;
+ SDL_Surface * popupBackstore;
+};
+
+class Menu: public Element
+{
+ public:
+ Menu(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+ uint8 fgcR = 0x00, uint8 fgcG = 0x00, uint8 fgcB = 0x7F, uint8 fgcA = 0xFF,
+ uint8 bgcR = 0x3F, uint8 bgcG = 0x3F, uint8 bgcB = 0xFF, uint8 bgcA = 0xFF,
+ uint8 fgchR = 0x3F, uint8 fgchG = 0x3F, uint8 fgchB = 0xFF, uint8 fgchA = 0xFF,
+ uint8 bgchR = 0x87, uint8 bgchG = 0x87, uint8 bgchB = 0xFF, uint8 bgchA = 0xFF);
+ ~Menu();
+ virtual void HandleKey(SDLKey key);
+ virtual void HandleMouseMove(uint32 x, uint32 y);
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+ virtual void Draw(void);
+ virtual void Notify(Element *);
+ void Add(MenuItems mi);
+ void SaveStateVariables(void);
+ void CheckStateAndRedrawIfNeeded(void);
+
+ protected:
+ bool activated, clicked;
+ uint32 inside, insidePopup;
+ int menuChosen, menuItemChosen;
+ uint32 fgColorHL, bgColorHL;
+
+ private:
+ std::vector<MenuItems> itemList;
+ bool activatedSave, clickedSave;
+ uint32 insideSave, insidePopupSave;
+ int menuChosenSave, menuItemChosenSave;
+};
+
+#endif // __MENU_H__
--- /dev/null
+//
+// TEXTEDIT.CPP
+//
+// Graphical User Interface button class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/17/2006 Created this file
+// JLH 03/01/2006 Added basic editing functionality
+//
+
+#include "textedit.h"
+#include "guimisc.h" // Various support functions
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+using namespace std; // For STL stuff
+
+//
+// Text edit class implementation
+//
+
+TextEdit::TextEdit(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ string s/*= ""*/, Element * parent/*= NULL*/):
+ Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x40, 0x40, 0xFF, parent),
+ activated(false), clicked(false), inside(false),
+ img(NULL), text(s), caretPos(0), scrollPos(0),
+ activatedSave(false), clickedSave(false), insideSave(false),
+ caretPosSave(0), scrollPosSave(0)
+{
+ if (extents.h == 0)
+ extents.h = GetFontHeight();
+
+ // Setup hardwired colors...
+
+ uint8 * c = (uint8 *)&hiliteColor;
+ c[0] = 0xFF, c[1] = 0x80, c[2] = 0x00, c[3] = 0xFF;
+ c = (uint8 *)&cursorColor;
+ c[0] = 0x40, c[1] = 0xFF, c[2] = 0x60, c[3] = 0xFF;
+
+ // Create the text edit surface here...
+
+ img = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+ MASK_R, MASK_G, MASK_B, MASK_A);
+
+ Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+TextEdit::~TextEdit()
+{
+ if (img)
+ SDL_FreeSurface(img);
+}
+
+//Set different filters depending on type passed in on construction, e.g., filename, amount, etc...?
+void TextEdit::HandleKey(SDLKey key)
+{
+ if (!activated)
+ return;
+
+ SaveStateVariables();
+ SDLMod keyMod = SDL_GetModState();
+
+ if ((key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_0 && key <= SDLK_9)
+ || key == SDLK_PERIOD || key == SDLK_SLASH || key == SDLK_SPACE)
+ {
+ uint8 chr = (uint8)key;
+
+ // Handle shift key as well...
+ if (keyMod & KMOD_SHIFT)
+ {
+ if (key >= SDLK_a && key <= SDLK_z)
+ chr &= 0xDF; // Set to upper case
+ }
+
+ text.insert(scrollPos + caretPos, 1, chr);
+
+ // If we hit the edge, then scroll; else advance the caret
+ if ((GetFontWidth() * caretPos) > (extents.w - GetFontWidth()))
+ scrollPos++;
+ else
+ caretPos++;
+ }
+ else if (key == SDLK_BACKSPACE)
+ {
+ // If there's something to delete, go ahead and delete it
+ if ((scrollPos + caretPos) > 0)
+ {
+ text.erase(scrollPos + caretPos - 1, 1);
+
+ // Scroll the cursor to the left if possible, otherwise move the scroll position
+ if (caretPos > 0)
+ caretPos--;
+ else
+ scrollPos--;
+ }
+ }
+ else if (key == SDLK_DELETE)
+ {
+ if ((scrollPos + caretPos) < text.length())
+ text.erase(scrollPos + caretPos, 1);
+ }
+ else if (key == SDLK_LEFT)
+ {
+ if (caretPos > 0)
+ caretPos--;
+ else if (scrollPos > 0)
+ scrollPos--;
+ }
+ else if (key == SDLK_RIGHT)
+ {
+ if ((scrollPos + caretPos) < text.length())
+ {
+ if ((GetFontWidth() * caretPos) > (extents.w - GetFontWidth()))
+ scrollPos++;
+ else
+ caretPos++;
+ }
+ }
+ else if (key == SDLK_RETURN)
+ {
+ clicked = activated = false;
+ }
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::HandleMouseMove(uint32 x, uint32 y)
+{
+ SaveStateVariables();
+ inside = Inside(x, y);
+ CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+ SaveStateVariables();
+
+//Not sure that this is right way to handle this...
+//Should set the cursor position based on where in the text box it was clicked...
+ if (inside)
+ {
+ if (mouseDown)
+ clicked = true;
+
+ if (clicked && !mouseDown)
+ {
+ clicked = false, activated = true;
+
+ // Send a message to our parent widget (if any) that we're activated
+ if (parent)
+ parent->Notify(this);
+ }
+ }
+ else
+ clicked = activated = false;
+
+ CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::Draw(void)
+{
+ if (img == NULL)
+ return; // Bail out if no surface was created...
+
+ SDL_Rect rect = GetScreenCoords();
+
+ // Now, draw the appropriate text state!
+
+ if (!activated)
+ {
+ if (inside)
+ {
+ SDL_Rect rect2;
+ rect2.x = 1;
+ rect2.y = 1;
+ rect2.w = extents.w - 2;
+ rect2.h = extents.h - 2;
+
+ SDL_FillRect(img, NULL, hiliteColor);
+ SDL_FillRect(img, &rect2, bgColor);
+ }
+ else
+ SDL_FillRect(img, NULL, bgColor);
+ }
+ else
+ SDL_FillRect(img, NULL, bgColor);//Make a different color here, so we're clear we're editing...
+
+//Should also draw different text color depending on whether or not we're activated...
+ if (activated)
+ DrawStringTrans(img, 0, 0, fgColor, text.c_str() + scrollPos);
+ else
+ DrawStringTrans(img, 0, 0, fgColor, text.c_str());
+
+ // Draw the cursor, if any
+
+ if (activated)
+ {
+ SDL_Rect rectCursor;
+ rectCursor.x = caretPos * GetFontWidth();
+ rectCursor.y = 0;
+ rectCursor.w = 2;
+ rectCursor.h = GetFontHeight();
+
+ SDL_FillRect(img, &rectCursor, cursorColor);
+ }
+
+ SDL_BlitSurface(img, NULL, screen, &rect); // This handles alpha blending too! :-D
+
+ needToRefreshScreen = true;
+}
+
+void TextEdit::Notify(Element *)
+{
+}
+
+string TextEdit::GetText(void)
+{
+ return text;
+}
+
+void TextEdit::SaveStateVariables(void)
+{
+ activatedSave = activated;
+ clickedSave = clicked;
+ insideSave = inside;
+ caretPosSave = caretPos;
+ scrollPosSave = scrollPos;
+ lengthSave = text.length();
+}
+
+void TextEdit::CheckStateAndRedrawIfNeeded(void)
+{
+ // Check to see if any of our state variables changed since we last saved them...
+ if (activated != activatedSave || clicked != clickedSave || inside != insideSave
+ || caretPos != caretPosSave || scrollPos != scrollPosSave
+ || text.length() != lengthSave)
+ Draw();
+}
--- /dev/null
+//
+// TEXTEDIT.H
+//
+// Graphical User Interface text edit class
+//
+
+#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, std::string s = "", Element * parent = NULL);
+ ~TextEdit();
+ virtual void HandleKey(SDLKey key);
+ virtual void HandleMouseMove(uint32 x, uint32 y);
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+ virtual void Draw(void);
+ virtual void Notify(Element *);
+ std::string GetText(void);
+ void SaveStateVariables(void);
+ void CheckStateAndRedrawIfNeeded(void);
+
+ protected:
+ bool activated, clicked, inside;
+ SDL_Surface * img;
+ std::string text;
+ uint32 caretPos, scrollPos;
+
+ private:
+ bool activatedSave, clickedSave, insideSave;
+ uint32 caretPosSave, scrollPosSave, lengthSave;
+ uint32 hiliteColor, cursorColor;
+};
+
+#endif // __TEXTEDIT_H__
--- /dev/null
+//
+// WINDOW.CPP
+//
+// Graphical User Interface window class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 02/03/2006 Created this file
+// JLH 02/09/2006 Fixed various problems with the class implementation
+// JLH 02/14/2006 Added window rendering
+//
+
+#include "window.h"
+#include "button.h"
+#include "guimisc.h" // Various support functions
+#include <algorithm>
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+using namespace std; // For STL stuff
+
+//
+// Window class implementation
+//
+// NOTE: FG/BG colors are hard-wired
+//
+
+Window::Window(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+ void (* f)(Element *)/*= NULL*/):
+ Element(x, y, w, h, 0x4D, 0xFF, 0x84, 0xFF, 0x1F, 0x84, 0x84, 0xFF), handler(f),
+ cbWidth((closeBox[0] << 8) | closeBox[1]), cbHeight((closeBox[2] << 8) | closeBox[3]),
+ cbUp(SDL_CreateRGBSurfaceFrom(&closeBox[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A)),
+ cbDown(SDL_CreateRGBSurfaceFrom(&closeBoxDown[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A)),
+ cbHover(SDL_CreateRGBSurfaceFrom(&closeBoxHover[4], cbWidth, cbHeight, 32, cbWidth * 4,
+ MASK_R, MASK_G, MASK_B, MASK_A))
+{
+//Could probably move this into the initializer list as well...
+ closeButton = new Button(w - (cbWidth + 1), 1, cbUp, cbHover, cbDown, this);
+ list.push_back(closeButton);
+
+ CreateBackstore();
+ Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+Window::~Window()
+{
+ for(uint32 i=0; i<list.size(); i++)
+ if (list[i])
+ delete list[i];
+
+ SDL_FreeSurface(cbUp);
+ SDL_FreeSurface(cbDown);
+ SDL_FreeSurface(cbHover);
+}
+
+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++)
+ 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(void)
+{
+ // These are *always* top level and parentless, so no need to traverse up through
+ // the parent chain...
+ SDL_FillRect(screen, &extents, bgColor);
+
+ // Handle the items this window contains...
+ for(uint32 i=0; i<list.size(); i++)
+ list[i]->Draw();
+
+//Prolly don't need this since the close button will do this for us...
+ needToRefreshScreen = true;
+}
+
+void Window::Notify(Element * e)
+{
+ if (e == closeButton)
+ {
+ SDL_Event event;
+ event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+ SDL_PushEvent(&event);
+ }
+}
+
+void Window::AddElement(Element * e)
+{
+ list.push_back(e);
+}
--- /dev/null
+//
+// WINDOW.H
+//
+// Graphical User Interface window class
+//
+
+#ifndef __WINDOW_H__
+#define __WINDOW_H__
+
+#include "element.h"
+#include <vector>
+
+class Button; // Forward declaration
+
+class Window: public Element
+{
+ public:
+ Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+ void (* f)(Element *) = NULL);
+ ~Window(); //Does this destructor need to be virtual? Not sure... Check!
+ virtual void HandleKey(SDLKey key);
+ virtual void HandleMouseMove(uint32 x, uint32 y);
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+ virtual void Draw(void);
+ virtual void Notify(Element *);
+ void AddElement(Element * e);
+
+ protected:
+ void (* handler)(Element *);
+ Button * closeButton;
+ std::vector<Element *> list;
+
+ private:
+ uint16 cbWidth, cbHeight;
+ SDL_Surface * cbUp, * cbDown, * cbHover;
+};
+
+#endif // __WINDOW_H__
--- /dev/null
+//\r
+// This file was automagically generated by raw2c (by James L. Hammons)\r
+//\r
+\r
+char icon[0x1000] = {\r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0x00, 0x00, 0x00, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 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, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 0xFF, 0x86, 0x86, 0x86, 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, \r
+};\r
--- /dev/null
+//\r
+// Log handler\r
+//\r
+// by James L. Hammons\r
+// (C) 2006 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 01/03/2006 Moved includes out of header file for faster compilation\r
+//\r
+\r
+#include "log.h"\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <stdarg.h>\r
+#include "types.h"\r
+\r
+#define MAX_LOG_SIZE 10000000 // Maximum size of log file (10 MB)\r
+\r
+static FILE * log_stream = NULL;\r
+static uint32 logSize = 0;\r
+\r
+bool InitLog(char * path)\r
+{\r
+ log_stream = fopen(path, "wrt");\r
+\r
+ if (log_stream == NULL)\r
+ return false;\r
+\r
+ return true;\r
+}\r
+\r
+void LogDone(void)\r
+{\r
+ if (log_stream)\r
+ fclose(log_stream);\r
+}\r
+\r
+//\r
+// This logger is used mainly to ensure that text gets written to the log file\r
+// even if the program crashes. The performance hit is acceptable in this case!\r
+//\r
+void WriteLog(const char * text, ...)\r
+{\r
+ if (!log_stream)\r
+ return;\r
+\r
+ va_list arg;\r
+\r
+ va_start(arg, text);\r
+ logSize += vfprintf(log_stream, text, arg);\r
+\r
+ if (logSize > MAX_LOG_SIZE)\r
+ {\r
+ fflush(log_stream);\r
+ fclose(log_stream);\r
+ exit(1);\r
+ }//*/\r
+\r
+ va_end(arg);\r
+ fflush(log_stream); // Make sure that text is written!\r
+}\r
--- /dev/null
+//\r
+// LOG.H\r
+//\r
+\r
+#ifndef __LOG_H__\r
+#define __LOG_H__\r
+\r
+// Make this header work with either C or C++\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+bool InitLog(char *);\r
+void LogDone(void);\r
+void WriteLog(const char * text, ...);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // __LOG_H__\r
--- /dev/null
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2002 sdlemu development crew
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdio.h>
+#include <string>
+#include <list>
+#include "sdlemu_config.h"
+
+using namespace std;
+
+class token_list
+{
+public:
+ token_list(const string &name) : m_name(name), m_value(""), m_token("") {}
+ void add_token_variable(const string &var) { m_token = var; }
+ void add_token_value(const string &value) { m_value = value; }
+ const string &LineName() const { return m_name; }
+ const string &Token() const { return m_token; }
+ const string &Value() const { return m_value; }
+private:
+ std::string m_name;
+ std::string m_value;
+ std::string m_token;
+};
+
+std::list<token_list> vec;
+
+void string_tokenize_variable()
+{
+ list<token_list>::iterator p;
+ const string delim = " ";
+ for(p = vec.begin(); p != vec.end(); p++) {
+ string::size_type lastPos = (*p).LineName().find_first_not_of(delim, 0);
+ string::size_type pos = (*p).LineName().find_first_of(delim, lastPos);
+
+ if(string::npos != pos && string::npos != lastPos) {
+ string s = (*p).LineName().substr(lastPos, pos - lastPos);
+ (*p).add_token_variable(s);
+ }
+ }
+}
+
+void string_tokenize_value()
+{
+ list<token_list>::iterator p;
+ const string delim = " =\n\t\r"; // "\r" needed for Win32 compatibility...
+
+ for(p = vec.begin(); p != vec.end(); p++) {
+ string::size_type lastPos = (*p).LineName().find_first_of(delim, 0);
+ string::size_type pos = (*p).LineName().find_first_not_of(delim, lastPos);
+
+ if(string::npos != pos && string::npos != lastPos) {
+ string s = (*p).LineName().substr(pos);
+ (*p).add_token_value(s);
+ }
+ }
+}
+
+int sdlemu_init_config(const char *filename)
+{
+ FILE *f = fopen(filename, "r");
+ if(!f) return 0;
+
+ fseek(f, 0, SEEK_END);
+ int len = ftell(f);
+ fseek(f, 0, SEEK_SET);
+
+ char *s = new char[len];
+ fread(s, 1, len, f);
+ string str(s);
+
+ const string delim = "\n\r"; // "\r" needed for Win32 compatibility...
+ string::size_type lastPos = str.find_first_not_of(delim, 0);
+ string::size_type pos = str.find_first_of(delim, lastPos);
+
+ while (string::npos != pos || string::npos != lastPos) {
+ string string = str.substr(lastPos, pos - lastPos);
+ if(string[0] == '#')
+ {
+ }
+ else if(string[0] == '[')
+ {
+ }
+ else
+ {
+ vec.push_back(string);
+ }
+ lastPos = str.find_first_not_of(delim, pos);
+ pos = str.find_first_of(delim, lastPos);
+ }
+ string_tokenize_variable();
+ string_tokenize_value();
+ delete [] s;
+ fclose(f);
+ return 1;
+}
+
+const char *sdlemu_getval_string(const char *key_string, const char *default_string)
+{
+ list<token_list>::iterator p;
+ for(p = vec.begin(); p != vec.end(); p++) {
+
+ if(strcmp((*p).Token().c_str(), key_string) == 0)
+ return (*p).Value().c_str();
+ }
+ return default_string;
+}
+
+int sdlemu_getval_int(const char *key_string, int default_int)
+{
+ list<token_list>::iterator p;
+ for(p = vec.begin(); p != vec.end(); p++) {
+
+ if(strcmp((*p).Token().c_str(), key_string) == 0) {
+ const char *ret = (*p).Value().c_str();
+ if(ret) return atoi(ret);
+ }
+ }
+ return default_int;
+}
+
+int sdlemu_getval_bool(const char *key_string, int default_int)
+{
+ list<token_list>::iterator p;
+ for(p = vec.begin(); p != vec.end(); p++) {
+
+ if(strcmp((*p).Token().c_str(), key_string) == 0) {
+ const char *ret = (*p).Value().c_str();
+ if(ret) return atoi(ret)>0;
+ }
+ }
+ return default_int;
+}
--- /dev/null
+#ifndef __SDL_CONFIG_H__
+#define __SDL_CONFIG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int sdlemu_init_config(const char * filename);
+const char * sdlemu_getval_string(const char * key_string, const char * default_string);
+int sdlemu_getval_int(const char * key_string, int default_int);
+int sdlemu_getval_bool(const char * key_string, int default_int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2004 sdlemu development crew
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* SDLEMU_OPENGL.C
+ SDLEMU related sources for using OpenGL with SDL.
+ By Niels Wagenaar | http://sdlemu.ngemu.com | shalafi@xs4all.nl
+
+ Version 1.0.001 - 4-10-2004
+
+ - Added support for 16, 24 and 32 bit textures;
+ - Added support for 16, 24 and 32 bit texture rendering;
+
+ Version 1.0.002 - 6-10-2004
+
+ - Cleaned up a lot of code and removed non functional and obsolete code;
+ - Removed sdlemu_resize_texture function because of double code;
+ - Removed the texture creation from the sdlemu_init_opengl;
+ - Added sdlemu_create_texture function to replace the sdlemu_resize_texture function
+ and the texture creation in sdlemu_init_opengl;
+ - Added the usage of OPENGL_16BPP_CORRECT_RGBA for activating the correct 16bpp RGBA masks;
+ - Added the usage of WANT_OPENGL_ALPHA for using ALPHA blending with 32bpp textures;
+ - Added automatic and override texture bpp depth setting (based upon the src surface);
+
+*/
+
+#include "sdlemu_opengl.h"
+
+static SDL_Surface *texture = 0;
+static GLuint texid = 0;
+static GLfloat texcoord[4];
+static unsigned int glFilter;
+static unsigned int texturebpp = 0; // 16, 24 or 32 bpp
+
+static SDL_Surface * overlay = 0;
+static GLuint overlayID = 0;
+static GLfloat overlayCoord[4];
+void sdlemu_create_overlay(SDL_Surface * dst, int src_bpp);
+
+static int showOverlay = 0;
+
+static inline int power_of_two(int input)
+{
+ int value = 1;
+
+ while (value < input)
+ value <<= 1;
+
+ return value;
+}
+
+void sdlemu_init_opengl(SDL_Surface * src, SDL_Surface * dst, int texturetype, int filter, int src_bpp)
+{
+ printf("\nOpenGL driver information :\n");
+ printf("\n");
+ printf("Vendor: %s\n", glGetString(GL_VENDOR));
+ printf("Renderer: %s\n", glGetString(GL_RENDERER));
+ printf("Version: %s\n", glGetString(GL_VERSION));
+ printf("OpenGL drawmethod: ");
+
+ switch (texturetype)
+ {
+ case 1:
+ printf("GL_QUAD rendering\n\n");
+ break;
+ default:
+ printf("GL_TRIANGLE rendering\n\n");
+ break;
+ }
+
+ glFilter = filter;
+
+ // Let us create the texture information :
+ sdlemu_create_texture(src, dst, filter, src_bpp);
+ sdlemu_create_overlay(dst, src_bpp);
+}
+
+void sdlemu_draw_texture(SDL_Surface * dst, SDL_Surface * src, int texturetype)
+{
+/*
+ This is needed when we want to render OpenGL textures with the Alpha mask set.
+ Be warned! This only works with the bpp of texture en *src set to 32.
+*/
+#ifdef WANT_OPENGL_ALPHA
+ Uint32 saved_flags;
+ Uint8 saved_alpha;
+
+ /* Save the alpha blending attributes */
+ saved_flags = src->flags&(SDL_SRCALPHA|SDL_RLEACCELOK);
+ saved_alpha = src->format->alpha;
+ if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
+ SDL_SetAlpha(src, 0, 0);
+ }
+
+ // Blit the src display to the texture.
+ SDL_BlitSurface(src, NULL, texture, NULL);
+
+ /* Restore the alpha blending attributes */
+ if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
+ SDL_SetAlpha(src, saved_flags, saved_alpha);
+ }
+#else
+ SDL_BlitSurface(src, NULL, texture, NULL);
+#endif
+// SDL_BlitSurface(src, NULL, overlay, NULL);
+/*Uint32 * pix = (Uint32 *)overlay->pixels;
+Uint32 y,x;
+for(y=10; y<200; y++)
+for(x=30; x<250; x++)
+pix[x+(y*1024)] = 0x800000FF;//*/
+
+glBlendFunc(GL_ONE, GL_ZERO);
+glBindTexture(GL_TEXTURE_2D, texid);
+ // Texturemap complete texture to surface so we have free scaling
+ // and antialiasing
+ switch (texturebpp)
+ {
+ case 16:
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+ GL_RGB, GL_UNSIGNED_SHORT_5_6_5, texture->pixels);
+ break;
+ case 24:
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+ GL_RGB, GL_UNSIGNED_BYTE, texture->pixels);
+ break;
+ case 32:
+ default:
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+ GL_RGBA, GL_UNSIGNED_BYTE, texture->pixels);
+ break;
+ }
+
+ // Render the texture to the screen using OpenGL!
+ switch (texturetype)
+ {
+ case 1:
+ glBegin(GL_QUADS);
+ glTexCoord2f(texcoord[0], texcoord[1]);
+ glVertex2f(0, 0);
+ glTexCoord2f(texcoord[2], texcoord[1]);
+ glVertex2f(dst->w, 0);
+ glTexCoord2f(texcoord[2], texcoord[3]);
+ glVertex2f(dst->w, dst->h);
+ glTexCoord2f(texcoord[0], texcoord[3]);
+ glVertex2f(0, dst->h);
+ glEnd();
+
+ default:
+ glBegin(GL_TRIANGLE_STRIP);
+ glTexCoord2f(texcoord[0], texcoord[1]); glVertex3i(0, 0, 0);
+ glTexCoord2f(texcoord[2], texcoord[1]); glVertex3i(dst->w, 0, 0);
+ glTexCoord2f(texcoord[0], texcoord[3]); glVertex3i(0, dst->h, 0);
+ glTexCoord2f(texcoord[2], texcoord[3]); glVertex3i(dst->w, dst->h, 0);
+ glEnd();
+ }//*/
+
+ if (showOverlay)
+ {
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBindTexture(GL_TEXTURE_2D, overlayID);
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, overlay->w, overlay->h, GL_RGBA, GL_UNSIGNED_BYTE, overlay->pixels);
+ glBegin(GL_QUADS);
+ glTexCoord2f(overlayCoord[0], overlayCoord[1]);
+ glVertex2f(0, 0);
+ glTexCoord2f(overlayCoord[2], overlayCoord[1]);
+ glVertex2f(dst->w, 0);
+ glTexCoord2f(overlayCoord[2], overlayCoord[3]);
+ glVertex2f(dst->w, dst->h);
+ glTexCoord2f(overlayCoord[0], overlayCoord[3]);
+ glVertex2f(0, dst->h);
+ glEnd();
+ }
+
+//Do some OpenGL stuff here...
+//Doesn't work...
+/*unsigned long int map[25] = {
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+};
+glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+glRasterPos2i(10, 10);
+glDrawPixels(5, 5, GL_RGBA, GL_UNSIGNED_INT, map);//*/
+
+// glFlush();
+ SDL_GL_SwapBuffers();
+// glFinish();
+
+}
+
+void sdlemu_close_opengl(void)
+{
+ if (texture)
+ SDL_FreeSurface(texture);
+
+ if (overlay)
+ SDL_FreeSurface(overlay);
+}
+
+void sdlemu_create_overlay(SDL_Surface * dst, int src_bpp)
+{
+ // Local variables.
+ Uint32 rmask, gmask, bmask, amask; // Needed for creating RGBA masks.
+
+ // Delete old texture (if allocated). Useful when there is a screen resize.
+ if (overlay)
+ SDL_FreeSurface(overlay);
+
+ // Texture width/height should be power of 2 of the SDL_Surface *src when using OpenGL.
+ // So, find the largest power of two that will contain both the width and height
+ int w = power_of_two(dst->w);
+ int h = power_of_two(dst->h);
+
+ printf("OpenGL - Overlay size : %d x %d\n", w, h);
+
+ // Setting bpp based upon src_bpp.
+ int bpp = src_bpp;
+
+ // We allow the developer to set its own texture bpp. But if the value is NULL or
+ // not equal to 16, 24 or 32, we make the texturebpp the same as the BPP from src.
+ if (bpp == 16 || bpp == 24 || bpp == 32)
+ texturebpp = bpp;
+ else
+ texturebpp = dst->format->BitsPerPixel;
+
+ printf("OpenGL - Overlay depth : %d bpp\n", texturebpp);
+
+ // Now were are going to create a SDL_Surface named texture. This will be our surface
+ // which will function as a buffer between the SDL_Surface *src and SDL_Surface *dst.
+ // This buffer is needed because we need to convert the SDL_Surface *src to an OpenGL
+ // texture with a depth of 16, 24 or 32 bpp, before we can blit the pixels to *dst
+ // using OpenGL.
+ //
+ // NOTE: Seems the byte order here *is* important!
+ switch (texturebpp)
+ {
+ case 16: // *src has depth of 16 bpp
+/*
+ According to information on the SDL mailinglist and on internet, the following
+ rgba masks should be the ones to use. But somehow the screen gets f*cked up and
+ the RGB colours are incorrect (at least in Virtual Jaguar/SDL).
+
+ Compile with -DOPENGL_16BPP_CORRECT_RGBA to use this RGBA values.
+*/
+#ifdef OPENGL_16BPP_CORRECT_RGBA
+ rmask = 0x7C00;
+ gmask = 0x03E0;
+ bmask = 0x001F;
+ amask = 0x0000;
+#else
+ rmask = 0x0000;
+ gmask = 0x0000;
+ bmask = 0x0000;
+ amask = 0x0000;
+#endif
+ break;
+ case 24: // *src has depth of 24 bpp
+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ rmask = 0x00FF0000;
+ gmask = 0x0000FF00;
+ bmask = 0x000000FF;
+ amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+ #else
+ rmask = 0x000000FF;
+ gmask = 0x0000FF00;
+ bmask = 0x00FF0000;
+ amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+ #endif
+ break;
+ case 32: //*src has depth of 32 bpp
+ default: //which is also the default.
+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ rmask = 0xFF000000;
+ gmask = 0x00FF0000;
+ bmask = 0x0000FF00;
+ amask = 0x000000FF;
+ #else
+ rmask = 0x000000FF;
+ gmask = 0x0000FF00;
+ bmask = 0x00FF0000;
+ amask = 0xFF000000;
+ #endif
+ break;
+ }
+
+ // Creating SDL_Surface texture based upon the above settings.
+ overlay = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, texturebpp, rmask, gmask, bmask, amask);
+
+ // Setting up the texture coordinates.
+ overlayCoord[0] = 0.0f;
+ overlayCoord[1] = 0.0f;
+ overlayCoord[2] = (GLfloat)(dst->w) / overlay->w;
+ overlayCoord[3] = (GLfloat)(dst->h) / overlay->h;
+
+ // create a RGB(A) texture for the texture surface
+ glGenTextures(1, &overlayID);
+ glBindTexture(GL_TEXTURE_2D, overlayID);
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+ // Setting texture mode.
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+
+ // Generate the texture using the above information.
+ switch (texturebpp)
+ {
+ case 16:
+ // Normal 16bpp depth based textures consist out of GL_RGB5 and doesn't have support for Alpha channels.
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, overlay->w, overlay->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+ break;
+ case 24:
+ // The 24bpp depth based textures consist out of GL_RGB8 and doesn't have support for Alpha channels.
+ //
+ // IMPORTANT : If you don't use Alpha. Use textures with a depth of 16bpp.
+ // If you use Alpha. Use textures with a depth of 32bpp.
+ // 24bpp textures are SLOW and avoid them at all costs!
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, overlay->w, overlay->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+ break;
+ case 32:
+ default:
+ // The 32bpp depth based textures consist out of GL_RGBA8 and has support for Alpha channels.
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, overlay->w, overlay->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ break;
+ }
+}
+
+void * sdlemuGetOverlayPixels(void)
+{
+ return overlay->pixels;
+}
+
+Uint32 sdlemuGetOverlayWidthInPixels(void)
+{
+ return overlay->pitch / 4;
+}
+
+void sdlemuEnableOverlay(void)
+{
+ showOverlay = 1;
+}
+
+void sdlemuDisableOverlay(void)
+{
+ showOverlay = 0;
+}
+
+void sdlemu_create_texture(SDL_Surface * src, SDL_Surface * dst, int filter, int src_bpp)
+{
+ // Local variables.
+ int w , h; // w and h contain the width and height of the OpenGL texture.
+ Uint32 rmask, gmask, bmask, amask; // Needed for creating RGBA masks.
+ int bpp;
+
+ // Delete old texture (if allocated). Useful when there is a screen resize.
+ if (texture)
+ SDL_FreeSurface(texture);
+
+ // Texture width/height should be power of 2 of the SDL_Surface *src when using OpenGL.
+ // So, find the largest power of two that will contain both the width and height
+ w = power_of_two(src->w);
+ h = power_of_two(src->h);
+
+ printf("OpenGL - Texture size : %d x %d\n", w, h);
+
+ // Setting bpp based upon src_bpp.
+ bpp = src_bpp;
+
+ // We allow the developer to set its own texture bpp. But if the value is NULL or
+ // not equal to 16, 24 or 32, we make the texturebpp the same as the BPP from src.
+ if (bpp == 16 || bpp == 24 || bpp == 32)
+ texturebpp = bpp;
+ else
+ texturebpp = src->format->BitsPerPixel;
+
+ printf("OpenGL - Texture depth : %d bpp\n", texturebpp);
+
+ // Now were are going to create a SDL_Surface named texture. This will be our surface
+ // which will function as a buffer between the SDL_Surface *src and SDL_Surface *dst.
+ // This buffer is needed because we need to convert the SDL_Surface *src to an OpenGL
+ // texture with a depth of 16, 24 or 32 bpp, before we can blit the pixels to *dst
+ // using OpenGL.
+ //
+ // NOTE: Seems the byte order here *is* important!
+ switch (texturebpp)
+ {
+ case 16: // *src has depth of 16 bpp
+/*
+ According to information on the SDL mailinglist and on internet, the following
+ rgba masks should be the ones to use. But somehow the screen gets f*cked up and
+ the RGB colours are incorrect (at least in Virtual Jaguar/SDL).
+
+ Compile with -DOPENGL_16BPP_CORRECT_RGBA to use this RGBA values.
+*/
+#ifdef OPENGL_16BPP_CORRECT_RGBA
+ rmask = 0x7C00;
+ gmask = 0x03E0;
+ bmask = 0x001F;
+ amask = 0x0000;
+#else
+ rmask = 0x0000;
+ gmask = 0x0000;
+ bmask = 0x0000;
+ amask = 0x0000;
+#endif
+ break;
+ case 24: // *src has depth of 24 bpp
+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ rmask = 0x00FF0000;
+ gmask = 0x0000FF00;
+ bmask = 0x000000FF;
+ amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+ #else
+ rmask = 0x000000FF;
+ gmask = 0x0000FF00;
+ bmask = 0x00FF0000;
+ amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+ #endif
+ break;
+ case 32: //*src has depth of 32 bpp
+ default: //which is also the default.
+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ rmask = 0xFF000000;
+ gmask = 0x00FF0000;
+ bmask = 0x0000FF00;
+ amask = 0x000000FF;
+ #else
+ rmask = 0x000000FF;
+ gmask = 0x0000FF00;
+ bmask = 0x00FF0000;
+ amask = 0xFF000000;
+ #endif
+ break;
+ }
+
+ // Creating SDL_Surface texture based upon the above settings.
+ texture = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, texturebpp, rmask, gmask, bmask, amask);
+
+ // Setting up OpenGL
+ glDisable(GL_FOG);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_DEPTH_TEST);
+// glDisable(GL_BLEND);
+ glEnable(GL_BLEND);
+ glDisable(GL_NORMALIZE);
+ glDisable(GL_ALPHA_TEST);
+ glEnable(GL_TEXTURE_2D);
+// glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+// glBlendFunc(GL_ONE, GL_SRC_ALPHA);
+//This works, but in a wrong way...
+// glBlendFunc(GL_ONE, GL_ONE);
+
+ // Definitely needed for screen resolution larger then the *src.
+ // This way we can have automatic scaling functionality.
+ glViewport(0, 0, dst->w, dst->h);
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ glLoadIdentity();
+ glOrtho(0.0, (GLdouble)dst->w, (GLdouble)dst->h, 0.0, 0.0, 1.0);
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ // Setting up the texture coordinates.
+ texcoord[0] = 0.0f;
+ texcoord[1] = 0.0f;
+ texcoord[2] = (GLfloat)(src->w) / texture->w;
+ texcoord[3] = (GLfloat)(src->h) / texture->h;
+
+ // create a RGB(A) texture for the texture surface
+ glGenTextures(1, &texid);
+ glBindTexture(GL_TEXTURE_2D, texid);
+
+ // Setting up the OpenGL Filters. These filters are important when we/you
+ // want to scale the texture.
+ if (filter)
+ {
+ // Textures are rendered in best quality.
+ printf("OpenGL filters: enabled\n");
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ }
+ else
+ {
+ // Textures are rendered in normal quality.
+ printf("OpenGL filters: disabled\n");
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ }
+
+ // Setting texture mode.
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+
+ // Generate the texture using the above information.
+ switch (texturebpp)
+ {
+ case 16:
+ // Normal 16bpp depth based textures consist out of GL_RGB5 and doesn't have support for Alpha channels.
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, texture->w, texture->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+ break;
+ case 24:
+ // The 24bpp depth based textures consist out of GL_RGB8 and doesn't have support for Alpha channels.
+ //
+ // IMPORTANT : If you don't use Alpha. Use textures with a depth of 16bpp.
+ // If you use Alpha. Use textures with a depth of 32bpp.
+ // 24bpp textures are SLOW and avoid them at all costs!
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, texture->w, texture->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+ break;
+ case 32:
+ default:
+ // The 32bpp depth based textures consist out of GL_RGBA8 and has support for Alpha channels.
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ break;
+ }
+}
--- /dev/null
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2002 sdlemu development crew
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __SDLEMU_OPENGL_H__
+#define __SDLEMU_OPENGL_H__
+
+#include "SDL.h"
+#include "SDL_opengl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void sdlemu_init_opengl(SDL_Surface * src, SDL_Surface * dst, int texturetype, int filter, int src_bpp);
+void sdlemu_draw_texture(SDL_Surface * dst, SDL_Surface * src, int texturetype);
+void sdlemu_close_opengl(void);
+void sdlemu_create_texture(SDL_Surface * src, SDL_Surface * dst, int filter, int src_bpp);
+void * sdlemuGetOverlayPixels(void);
+Uint32 sdlemuGetOverlayWidthInPixels(void);
+void sdlemuEnableOverlay(void);
+void sdlemuDisableOverlay(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+//
+// SETTINGS.CPP: Game configuration loading/saving support
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 01/04/2006 Added changelog ;-)
+//
+
+#include "settings.h"
+
+#include <stdlib.h>
+#include <string>
+#include "SDL.h"
+#include "sdlemu_config.h"
+#include "log.h"
+
+using namespace std;
+
+// Global variables
+
+Settings settings;
+
+// Private function prototypes
+
+static void CheckForTrailingSlash(char * path);
+
+//
+// Load Apple2's settings
+//
+void LoadSettings(void)
+{
+ if (sdlemu_init_config("./apple2.cfg") == 0 // CWD
+ && sdlemu_init_config("~/apple2.cfg") == 0 // Home
+ && sdlemu_init_config("~/.apple2/apple2.cfg") == 0 // Home under .apple2 directory
+ && sdlemu_init_config("apple2.cfg") == 0) // Somewhere in the path
+ WriteLog("Settings: Couldn't find configuration file. Using defaults...\n");
+
+ settings.useJoystick = sdlemu_getval_bool("useJoystick", false);
+ settings.joyport = sdlemu_getval_int("joyport", 0);
+ settings.hardwareTypeNTSC = sdlemu_getval_bool("hardwareTypeNTSC", true);
+ settings.frameSkip = sdlemu_getval_int("frameSkip", 0);
+ settings.fullscreen = sdlemu_getval_bool("fullscreen", false);
+ settings.useOpenGL = sdlemu_getval_bool("useOpenGL", true);
+ settings.glFilter = sdlemu_getval_int("glFilterType", 0);
+ settings.renderType = sdlemu_getval_int("renderType", 0);
+ settings.autoStateSaving = sdlemu_getval_bool("autoSaveState", true);
+
+ // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
+ settings.p1KeyBindings[0] = sdlemu_getval_int("p1k_up", SDLK_UP);
+ settings.p1KeyBindings[1] = sdlemu_getval_int("p1k_down", SDLK_DOWN);
+ settings.p1KeyBindings[2] = sdlemu_getval_int("p1k_left", SDLK_LEFT);
+ settings.p1KeyBindings[3] = sdlemu_getval_int("p1k_right", SDLK_RIGHT);
+ settings.p1KeyBindings[4] = sdlemu_getval_int("p1k_c", SDLK_z);
+ settings.p1KeyBindings[5] = sdlemu_getval_int("p1k_b", SDLK_x);
+ settings.p1KeyBindings[6] = sdlemu_getval_int("p1k_a", SDLK_c);
+ settings.p1KeyBindings[7] = sdlemu_getval_int("p1k_option", SDLK_QUOTE);
+ settings.p1KeyBindings[8] = sdlemu_getval_int("p1k_pause", SDLK_RETURN);
+ settings.p1KeyBindings[9] = sdlemu_getval_int("p1k_0", SDLK_KP0);
+ settings.p1KeyBindings[10] = sdlemu_getval_int("p1k_1", SDLK_KP1);
+ settings.p1KeyBindings[11] = sdlemu_getval_int("p1k_2", SDLK_KP2);
+ settings.p1KeyBindings[12] = sdlemu_getval_int("p1k_3", SDLK_KP3);
+ settings.p1KeyBindings[13] = sdlemu_getval_int("p1k_4", SDLK_KP4);
+ settings.p1KeyBindings[14] = sdlemu_getval_int("p1k_5", SDLK_KP5);
+ settings.p1KeyBindings[15] = sdlemu_getval_int("p1k_6", SDLK_KP6);
+ settings.p1KeyBindings[16] = sdlemu_getval_int("p1k_7", SDLK_KP7);
+ settings.p1KeyBindings[17] = sdlemu_getval_int("p1k_8", SDLK_KP8);
+ settings.p1KeyBindings[18] = sdlemu_getval_int("p1k_9", SDLK_KP9);
+ settings.p1KeyBindings[19] = sdlemu_getval_int("p1k_pound", SDLK_KP_DIVIDE);
+ settings.p1KeyBindings[20] = sdlemu_getval_int("p1k_star", SDLK_KP_MULTIPLY);
+
+ settings.p2KeyBindings[0] = sdlemu_getval_int("p2k_up", SDLK_UP);
+ settings.p2KeyBindings[1] = sdlemu_getval_int("p2k_down", SDLK_DOWN);
+ settings.p2KeyBindings[2] = sdlemu_getval_int("p2k_left", SDLK_LEFT);
+ settings.p2KeyBindings[3] = sdlemu_getval_int("p2k_right", SDLK_RIGHT);
+ settings.p2KeyBindings[4] = sdlemu_getval_int("p2k_c", SDLK_z);
+ settings.p2KeyBindings[5] = sdlemu_getval_int("p2k_b", SDLK_x);
+ settings.p2KeyBindings[6] = sdlemu_getval_int("p2k_a", SDLK_c);
+ settings.p2KeyBindings[7] = sdlemu_getval_int("p2k_option", SDLK_QUOTE);
+ settings.p2KeyBindings[8] = sdlemu_getval_int("p2k_pause", SDLK_RETURN);
+ settings.p2KeyBindings[9] = sdlemu_getval_int("p2k_0", SDLK_KP0);
+ settings.p2KeyBindings[10] = sdlemu_getval_int("p2k_1", SDLK_KP1);
+ settings.p2KeyBindings[11] = sdlemu_getval_int("p2k_2", SDLK_KP2);
+ settings.p2KeyBindings[12] = sdlemu_getval_int("p2k_3", SDLK_KP3);
+ settings.p2KeyBindings[13] = sdlemu_getval_int("p2k_4", SDLK_KP4);
+ settings.p2KeyBindings[14] = sdlemu_getval_int("p2k_5", SDLK_KP5);
+ settings.p2KeyBindings[15] = sdlemu_getval_int("p2k_6", SDLK_KP6);
+ settings.p2KeyBindings[16] = sdlemu_getval_int("p2k_7", SDLK_KP7);
+ settings.p2KeyBindings[17] = sdlemu_getval_int("p2k_8", SDLK_KP8);
+ settings.p2KeyBindings[18] = sdlemu_getval_int("p2k_9", SDLK_KP9);
+ settings.p2KeyBindings[19] = sdlemu_getval_int("p2k_pound", SDLK_KP_DIVIDE);
+ settings.p2KeyBindings[20] = sdlemu_getval_int("p2k_star", SDLK_KP_MULTIPLY);
+
+ strcpy(settings.BIOSPath, sdlemu_getval_string("BIOSROM", "./ROMs/apple2.rom"));
+ strcpy(settings.disksPath, sdlemu_getval_string("disks", "./disks"));
+ strcpy(settings.diskImagePath1, sdlemu_getval_string("floppyImage1", "./disks/bt1_boot.dsk"));
+ strcpy(settings.diskImagePath2, sdlemu_getval_string("floppyImage2", "./disks/bt1_char.dsk"));
+ strcpy(settings.autoStatePath, sdlemu_getval_string("autoStateFilename", "./apple2auto.state"));
+ CheckForTrailingSlash(settings.disksPath);
+}
+
+//
+// Save Apple2's settings
+//
+void SaveSettings(void)
+{
+}
+
+//
+// Check path for a trailing slash, and append if not present
+//
+static void CheckForTrailingSlash(char * path)
+{
+ if (strlen(path) > 0)
+ if (path[strlen(path) - 1] != '/')
+ strcat(path, "/"); // NOTE: Possible buffer overflow
+}
--- /dev/null
+//
+// SETTINGS.H: Header file
+//
+
+#ifndef __SETTINGS_H__
+#define __SETTINGS_H__
+
+// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...
+#ifdef __GCCUNIX__
+#include <limits.h>
+#define MAX_PATH _POSIX_PATH_MAX
+#else
+#include <stdlib.h> // for MAX_PATH on MinGW/Darwin
+#endif
+#include "types.h"
+
+// Settings struct
+
+struct Settings
+{
+ bool useJoystick;
+ int32 joyport; // Joystick port
+ bool hardwareTypeNTSC; // Set to false for PAL
+ bool fullscreen;
+ bool useOpenGL;
+ uint32 glFilter;
+ uint32 frameSkip;
+ uint32 renderType;
+ bool autoStateSaving; // Auto-state loading/saving on entry/exit
+
+ // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
+
+ uint16 p1KeyBindings[21];
+ uint16 p2KeyBindings[21];
+
+ // Paths
+
+ char BIOSPath[MAX_PATH];
+ char disksPath[MAX_PATH];
+ char diskImagePath1[MAX_PATH];
+ char diskImagePath2[MAX_PATH];
+ char autoStatePath[MAX_PATH];
+// char CDBootPath[MAX_PATH];
+// char EEPROMPath[MAX_PATH];
+};
+
+// Render types
+
+//enum { RT_NORMAL = 0, RT_TV = 1 };
+
+// Exported functions
+
+void LoadSettings(void);
+void SaveSettings(void);
+
+// Exported variables
+
+extern Settings settings;
+
+#endif // __SETTINGS_H__
--- /dev/null
+//\r
+// Sound Interface\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 12/02/2005 Fixed a problem with sound callback thread signaling the\r
+// main thread\r
+// JLH 12/03/2005 Fixed sound callback dropping samples when the sample buffer\r
+// is shorter than the callback sample buffer\r
+//\r
+\r
+// STILL TO DO:\r
+//\r
+// - Figure out why it's losing samples (Bard's Tale) [DONE]\r
+//\r
+\r
+#include "sound.h"\r
+\r
+#include <string.h> // For memset, memcpy\r
+#include <SDL.h>\r
+#include "log.h"\r
+\r
+using namespace std;\r
+\r
+// Global variables\r
+\r
+\r
+// Local variables\r
+\r
+static SDL_AudioSpec desired;\r
+static bool soundInitialized = false;\r
+static uint8 amplitude = 0x88; // $78 - $88 seems to be plenty loud!\r
+//static uint8 lastValue;\r
+\r
+static bool speakerState;\r
+static uint8 soundBuffer[4096];\r
+static uint32 soundBufferPos;\r
+static uint32 sampleBase;\r
+static SDL_cond * conditional = NULL;\r
+static SDL_mutex * mutex = NULL;\r
+\r
+// Private function prototypes\r
+\r
+static void SDLSoundCallback(void * userdata, Uint8 * buffer, int length);\r
+\r
+//\r
+// Initialize the SDL sound system\r
+//\r
+void SoundInit(void)\r
+{\r
+// To weed out problems for now...\r
+#if 0\r
+return;\r
+#endif\r
+\r
+ desired.freq = 44100; // SDL will do conversion on the fly, if it can't get the exact rate. Nice!\r
+ desired.format = AUDIO_U8; // This uses the native endian (for portability)...\r
+ desired.channels = 1;\r
+// desired.samples = 4096; // Let's try a 4K buffer (can always go lower)\r
+ desired.samples = 2048; // Let's try a 2K buffer (can always go lower)\r
+ desired.callback = SDLSoundCallback;\r
+\r
+ if (SDL_OpenAudio(&desired, NULL) < 0) // NULL means SDL guarantees what we want\r
+ {\r
+ WriteLog("Sound: Failed to initialize SDL sound.\n");\r
+// exit(1);\r
+ return;\r
+ }\r
+\r
+ conditional = SDL_CreateCond();\r
+ mutex = SDL_CreateMutex();\r
+ SDL_mutexP(mutex); // Must lock the mutex for the cond to work properly...\r
+// lastValue = (speakerState ? amplitude : 0xFF - amplitude);\r
+ soundBufferPos = 0;\r
+ sampleBase = 0;\r
+\r
+ SDL_PauseAudio(false); // Start playback!\r
+ soundInitialized = true;\r
+ WriteLog("Sound: Successfully initialized.\n");\r
+}\r
+\r
+//\r
+// Close down the SDL sound subsystem\r
+//\r
+void SoundDone(void)\r
+{\r
+ if (soundInitialized)\r
+ {\r
+ SDL_PauseAudio(true);\r
+ SDL_CloseAudio();\r
+ SDL_DestroyCond(conditional);\r
+ SDL_DestroyMutex(mutex);\r
+ WriteLog("Sound: Done.\n");\r
+ }\r
+}\r
+\r
+//\r
+// Sound card callback handler\r
+//\r
+static void SDLSoundCallback(void * userdata, Uint8 * buffer, int length)\r
+{\r
+ // The sound buffer should only starve when starting which will cause it to\r
+ // lag behind the emulation at most by around 1 frame...\r
+\r
+ if (soundBufferPos < (uint32)length) // The sound buffer is starved...\r
+ {\r
+//printf("Sound buffer starved!\n");\r
+//fflush(stdout);\r
+ for(uint32 i=0; i<soundBufferPos; i++)\r
+ buffer[i] = soundBuffer[i];\r
+ // Fill buffer with last value\r
+ uint8 lastValue = (speakerState ? amplitude : 0xFF - amplitude);\r
+// uint8 lastValue = (speakerState ? amplitude : amplitude ^ 0xFF);\r
+// memset(buffer, lastValue, length); // Fill buffer with last value\r
+ memset(buffer + soundBufferPos, lastValue, length - soundBufferPos);\r
+ soundBufferPos = 0; // Reset soundBufferPos to start of buffer...\r
+ sampleBase = 0; // & sampleBase...\r
+//Ick. This should never happen!\r
+SDL_CondSignal(conditional); // Wake up any threads waiting for the buffer to drain...\r
+ return; // & bail!\r
+ }\r
+\r
+ memcpy(buffer, soundBuffer, length); // Fill sound buffer with frame buffered sound\r
+ soundBufferPos -= length;\r
+ sampleBase -= length;\r
+\r
+// if (soundBufferPos > 0)\r
+// memcpy(soundBuffer, soundBuffer + length, soundBufferPos); // Move current buffer down to start\r
+// memcpy(soundBuffer, soundBuffer + length, length);\r
+ // Move current buffer down to start\r
+ for(uint32 i=0; i<soundBufferPos; i++)\r
+ soundBuffer[i] = soundBuffer[length + i];\r
+\r
+// lastValue = buffer[length - 1];\r
+ SDL_CondSignal(conditional); // Wake up any threads waiting for the buffer to drain...\r
+}\r
+\r
+// Need some interface functions here to take care of flipping the\r
+// waveform at the correct time in the sound stream...\r
+\r
+/*\r
+Maybe set up a buffer 1 frame long (44100 / 60 = 735 bytes per frame)\r
+\r
+Hmm. That's smaller than the sound buffer 2048 bytes... (About 2.75 frames needed to fill)\r
+\r
+So... I guess what we could do is this:\r
+\r
+-- Execute V65C02 for one frame. The read/writes at I/O address $C030 fill up the buffer\r
+ to the current time position.\r
+-- The sound callback function copies the pertinent area out of the buffer, resets\r
+ the time position back (or copies data down from what it took out)\r
+*/\r
+\r
+void ToggleSpeaker(uint32 time)\r
+{\r
+ if (!soundInitialized)\r
+ return;\r
+\r
+#if 0\r
+if (time > 95085)//(time & 0x80000000)\r
+{\r
+ WriteLog("ToggleSpeaker() given bad time value: %08X (%u)!\n", time, time);\r
+// fflush(stdout);\r
+}\r
+#endif\r
+\r
+// 1.024 MHz / 60 = 17066.6... cycles (23.2199 cycles per sample)\r
+// Need the last frame position in order to calculate correctly...\r
+\r
+ SDL_LockAudio();\r
+ uint8 sample = (speakerState ? amplitude : 0xFF - amplitude);\r
+// uint8 sample = (speakerState ? amplitude : amplitude ^ 0xFF);\r
+ uint32 currentPos = sampleBase + (uint32)((double)time / 23.2199);\r
+\r
+ if (currentPos > 4095)\r
+ {\r
+#if 0\r
+WriteLog("ToggleSpeaker() about to go into spinlock at time: %08X (%u) (sampleBase=%u)!\n", time, time, sampleBase);\r
+#endif\r
+// Still hanging on this spinlock...\r
+// That could be because the "time" value is too high and so the buffer will NEVER be\r
+// empty enough...\r
+// Now that we're using a conditional, it seems to be working OK--though not perfectly...\r
+/*\r
+ToggleSpeaker() about to go into spinlock at time: 00004011 (16401) (sampleBase=3504)!\r
+16401 -> 706 samples, 3504 + 706 = 4210\r
+\r
+And it still thrashed the sound even though it didn't run into a spinlock...\r
+\r
+Seems like it's OK now that I've fixed the buffer-less-than-length bug...\r
+*/\r
+ SDL_UnlockAudio();\r
+ SDL_CondWait(conditional, mutex);\r
+\r
+// while (currentPos > 4095) // Spin until buffer empties a bit...\r
+ currentPos = sampleBase + (uint32)((double)time / 23.2199);\r
+ SDL_LockAudio();\r
+#if 0\r
+WriteLog("--> after spinlock (sampleBase=%u)...\n", sampleBase);\r
+#endif\r
+ }\r
+\r
+ while (soundBufferPos < currentPos)\r
+ soundBuffer[soundBufferPos++] = sample;\r
+\r
+ speakerState = !speakerState;\r
+ SDL_UnlockAudio();\r
+}\r
+\r
+void HandleSoundAtFrameEdge(void)\r
+{\r
+ if (!soundInitialized)\r
+ return;\r
+\r
+ SDL_LockAudio();\r
+ sampleBase += 735;\r
+ SDL_UnlockAudio();\r
+/* uint8 sample = (speakerState ? amplitude : 0xFF - amplitude);\r
+\r
+//This shouldn't happen (buffer overflow), but it seems like it *is* happening...\r
+ if (sampleBase >= 4096)\r
+// sampleBase = 4095;\r
+//Kludge, for now... Until I can figure out why it's still stomping on the buffer...\r
+ sampleBase = 0;\r
+\r
+ while (soundBufferPos < sampleBase)\r
+ soundBuffer[soundBufferPos++] = sample;//*/\r
+}\r
--- /dev/null
+//\r
+// SOUND.H\r
+//\r
+// by James L. Hammons\r
+// (C) 2004 Underground Software\r
+//\r
+\r
+#ifndef __SOUND_H__\r
+#define __SOUND_H__\r
+\r
+#include "types.h"\r
+\r
+// Global variables (exported)\r
+\r
+\r
+// Functions\r
+\r
+void SoundInit(void);\r
+void SoundDone(void);\r
+void ToggleSpeaker(uint32 time);\r
+void HandleSoundAtFrameEdge(void);\r
+\r
+#endif // __SOUND_H__\r
--- /dev/null
+//
+// System time handlers
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO WHEN WHAT
+// --- ---------- ------------------------------------------------------------
+// JLH 01/04/2006 Cosmetic changes (like this one ;-)
+//
+
+// STILL TO DO:
+//
+// - Handling for an event that occurs NOW
+//
+
+#include "timing.h"
+
+#include "log.h"
+
+#define EVENT_LIST_SIZE 512
+
+// NOTE ABOUT TIMING SYSTEM DATA STRUCTURES:
+
+// A queue won't work for this system because we can't guarantee that an event will go
+// in with a time that is later than the ones already queued up. So we just use a simple
+// list.
+
+// Although if we used an insertion sort we could, but it wouldn't work for adjusting
+// times...
+
+struct Event
+{
+ bool valid;
+ double eventTime;
+ void (* timerCallback)(void);
+};
+
+static Event eventList[EVENT_LIST_SIZE];
+static uint32 nextEvent;
+
+void InitializeEventList(void)
+{
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ eventList[i].valid = false;
+}
+
+//We just slap the next event into the list, no checking, no nada...
+void SetCallbackTime(void (* callback)(void), double time)
+{
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ {
+ if (!eventList[i].valid)
+ {
+//WriteLog("SCT: Found callback slot #%u...\n", i);
+ eventList[i].timerCallback = callback;
+ eventList[i].eventTime = time;
+ eventList[i].valid = true;
+
+ return;
+ }
+ }
+
+ WriteLog("SetCallbackTime() failed to find an empty slot in the list!\n");
+}
+
+void RemoveCallback(void (* callback)(void))
+{
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ {
+ if (eventList[i].valid && eventList[i].timerCallback == callback)
+ {
+ eventList[i].valid = false;
+
+ return;
+ }
+ }
+}
+
+void AdjustCallbackTime(void (* callback)(void), double time)
+{
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ {
+ if (eventList[i].valid && eventList[i].timerCallback == callback)
+ {
+ eventList[i].eventTime = time;
+
+ return;
+ }
+ }
+}
+
+double GetTimeToNextEvent(void)
+{
+ double time = 0;
+ bool firstTime = true;
+
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ {
+ if (eventList[i].valid)
+ {
+ if (firstTime)
+ time = eventList[i].eventTime, nextEvent = i, firstTime = false;
+ else
+ {
+ if (eventList[i].eventTime < time)
+ time = eventList[i].eventTime, nextEvent = i;
+ }
+ }
+ }
+
+ return time;
+}
+
+void HandleNextEvent(void)
+{
+ double elapsedTime = eventList[nextEvent].eventTime;
+ void (* event)(void) = eventList[nextEvent].timerCallback;
+
+ for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+ if (eventList[i].valid)
+ eventList[i].eventTime -= elapsedTime;
+
+ eventList[nextEvent].valid = false; // Remove event from list...
+
+ (*event)();
+}
--- /dev/null
+//
+// TIMING.H: System timing support functionality
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+
+#ifndef __TIMING_H__
+#define __TIMING_H__
+
+#include "types.h"
+
+// Note that these are NTSC timings:
+
+//#define RISC_CYCLE_IN_USEC 0.03760684198
+//#define M68K_CYCLE_IN_USEC (RISC_CYCLE_IN_USEC * 2)
+//#define HORIZ_PERIOD_IN_USEC 63.5555
+#define M6502_CYCLE_IN_USEC 0.9765625
+
+//#define USEC_TO_RISC_CYCLES(u) (uint32)(((u) / RISC_CYCLE_IN_USEC) + 0.5)
+//#define USEC_TO_M68K_CYCLES(u) (uint32)(((u) / M68K_CYCLE_IN_USEC) + 0.5)
+#define USEC_TO_M6502_CYCLES(u) (uint32)(((u) / M6502_CYCLE_IN_USEC) + 0.5)
+
+void InitializeEventList(void);
+void SetCallbackTime(void (* callback)(void), double time);
+void RemoveCallback(void (* callback)(void));
+void AdjustCallbackTime(void (* callback)(void), double time);
+double GetTimeToNextEvent(void);
+void HandleNextEvent(void);
+
+#endif // __TIMING_H__
--- /dev/null
+//
+// Fundamental variable types
+// by James L. Hammons
+//
+// Why these aren't a part of the C/C++ standard is beyond me. It seems to me that
+// basic types where you know the width should be a no-brainer.
+//
+
+#ifndef __TYPES_H__
+#define __TYPES_H__
+
+// This is only good on certain intel 32-bit platforms...
+// You may need to tweak to suit your specific platform.
+
+typedef unsigned char uint8;
+typedef signed char int8;
+typedef unsigned short uint16;
+typedef signed short int16;
+typedef unsigned uint32;
+typedef signed int32;
+typedef unsigned long long uint64;
+typedef signed long long int64;
+
+typedef uint8 UINT8;
+typedef int8 INT8;
+typedef uint16 UINT16;
+typedef int16 INT16;
+typedef uint32 UINT32;
+typedef int32 INT32;
+typedef uint64 UINT64;
+typedef int64 INT64;
+
+#endif // __TYPES_H__
--- /dev/null
+//\r
+// Virtual 65C02 Emulator v1.0\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 01/04/2006 Added changelog ;-)\r
+//\r
+\r
+//OK, the wraparound bug exists in both the Apple and Atari versions of Ultima II.\r
+//However, the Atari version *does* occassionally pick strength while the Apple\r
+//versions do not--which would seem to indicate a bug either in the RNG algorithm,\r
+//the 65C02 core, or the Apple hardware. Need to investigate all three!\r
+\r
+#define __DEBUG__\r
+//#define __DEBUGMON__\r
+\r
+#include "v65c02.h"\r
+\r
+#ifdef __DEBUG__\r
+#include "dis65c02.h"\r
+#include "log.h"\r
+#endif\r
+\r
+// Various macros\r
+\r
+#define CLR_Z (regs.cc &= ~FLAG_Z)\r
+#define CLR_ZN (regs.cc &= ~(FLAG_Z | FLAG_N))\r
+#define CLR_ZNC (regs.cc &= ~(FLAG_Z | FLAG_N | FLAG_C))\r
+#define CLR_V (regs.cc &= ~FLAG_V)\r
+#define CLR_N (regs.cc &= ~FLAG_N)\r
+#define SET_Z(r) (regs.cc = ((r) == 0 ? regs.cc | FLAG_Z : regs.cc & ~FLAG_Z))\r
+#define SET_N(r) (regs.cc = ((r) & 0x80 ? regs.cc | FLAG_N : regs.cc & ~FLAG_N))\r
+\r
+//Not sure that this code is computing the carry correctly... Investigate! [Seems to be]\r
+#define SET_C_ADD(a,b) (regs.cc = ((uint8)(b) > (uint8)(~(a)) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+//#define SET_C_SUB(a,b) (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+#define SET_C_CMP(a,b) (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+#define SET_ZN(r) SET_N(r); SET_Z(r)\r
+#define SET_ZNC_ADD(a,b,r) SET_N(r); SET_Z(r); SET_C_ADD(a,b)\r
+//#define SET_ZNC_SUB(a,b,r) SET_N(r); SET_Z(r); SET_C_SUB(a,b)\r
+#define SET_ZNC_CMP(a,b,r) SET_N(r); SET_Z(r); SET_C_CMP(a,b)\r
+\r
+//Small problem with the EA_ macros: ABS macros don't increment the PC!!! !!! FIX !!!\r
+#define EA_IMM regs.pc++\r
+#define EA_ZP regs.RdMem(regs.pc++)\r
+#define EA_ZP_X (regs.RdMem(regs.pc++) + regs.x) & 0xFF\r
+#define EA_ZP_Y (regs.RdMem(regs.pc++) + regs.y) & 0xFF\r
+#define EA_ABS RdMemW(regs.pc)\r
+#define EA_ABS_X RdMemW(regs.pc) + regs.x\r
+#define EA_ABS_Y RdMemW(regs.pc) + regs.y\r
+#define EA_IND_ZP_X RdMemW((regs.RdMem(regs.pc++) + regs.x) & 0xFF)\r
+#define EA_IND_ZP_Y RdMemW(regs.RdMem(regs.pc++)) + regs.y\r
+#define EA_IND_ZP RdMemW(regs.RdMem(regs.pc++))\r
+\r
+#define READ_IMM regs.RdMem(EA_IMM)\r
+#define READ_ZP regs.RdMem(EA_ZP)\r
+#define READ_ZP_X regs.RdMem(EA_ZP_X)\r
+#define READ_ZP_Y regs.RdMem(EA_ZP_Y)\r
+#define READ_ABS regs.RdMem(EA_ABS); regs.pc += 2\r
+#define READ_ABS_X regs.RdMem(EA_ABS_X); regs.pc += 2\r
+#define READ_ABS_Y regs.RdMem(EA_ABS_Y); regs.pc += 2\r
+#define READ_IND_ZP_X regs.RdMem(EA_IND_ZP_X)\r
+#define READ_IND_ZP_Y regs.RdMem(EA_IND_ZP_Y)\r
+#define READ_IND_ZP regs.RdMem(EA_IND_ZP)\r
+\r
+#define READ_IMM_WB(v) uint16 addr = EA_IMM; v = regs.RdMem(addr)\r
+#define READ_ZP_WB(v) uint16 addr = EA_ZP; v = regs.RdMem(addr)\r
+#define READ_ZP_X_WB(v) uint16 addr = EA_ZP_X; v = regs.RdMem(addr)\r
+#define READ_ABS_WB(v) uint16 addr = EA_ABS; v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_ABS_X_WB(v) uint16 addr = EA_ABS_X; v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_ABS_Y_WB(v) uint16 addr = EA_ABS_Y; v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_IND_ZP_X_WB(v) uint16 addr = EA_IND_ZP_X; v = regs.RdMem(addr)\r
+#define READ_IND_ZP_Y_WB(v) uint16 addr = EA_IND_ZP_Y; v = regs.RdMem(addr)\r
+#define READ_IND_ZP_WB(v) uint16 addr = EA_IND_ZP; v = regs.RdMem(addr)\r
+\r
+#define WRITE_BACK(d) regs.WrMem(addr, (d))\r
+\r
+// Private global variables\r
+\r
+static V65C02REGS regs;\r
+\r
+//This is probably incorrect, at least WRT to the $x7 and $xF opcodes... !!! FIX !!!\r
+//Also this doesn't take into account the extra cycle it takes when an indirect fetch\r
+//(ABS, ABS X/Y, ZP) crosses a page boundary, or extra cycle for BCD add/subtract...\r
+#warning Cycle counts are not accurate--!!! FIX !!!\r
+static uint8 CPUCycles[256] = {\r
+ 7, 6, 1, 1, 5, 3, 5, 1, 3, 2, 2, 1, 6, 4, 6, 1,\r
+ 2, 5, 5, 1, 5, 4, 6, 1, 2, 4, 2, 1, 6, 4, 6, 1,\r
+ 6, 6, 1, 1, 3, 3, 5, 1, 4, 2, 2, 1, 4, 4, 6, 1,\r
+ 2, 5, 5, 1, 4, 4, 6, 1, 2, 4, 2, 1, 4, 4, 6, 1,\r
+ 6, 6, 1, 1, 1, 3, 5, 1, 3, 2, 2, 1, 3, 4, 6, 1,\r
+ 2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 3, 1, 1, 4, 6, 1,\r
+ 6, 6, 1, 1, 3, 3, 5, 1, 4, 2, 2, 1, 6, 4, 6, 1,\r
+ 2, 5, 5, 1, 4, 4, 6, 1, 2, 4, 4, 1, 6, 4, 6, 1,\r
+ 2, 6, 1, 1, 3, 3, 3, 1, 2, 2, 2, 1, 4, 4, 4, 1,\r
+ 2, 6, 5, 1, 4, 4, 4, 1, 2, 5, 2, 1, 4, 5, 5, 1,\r
+ 2, 6, 2, 1, 3, 3, 3, 1, 2, 2, 2, 1, 4, 4, 4, 1,\r
+ 2, 5, 5, 1, 4, 4, 4, 1, 2, 4, 2, 1, 4, 4, 4, 1,\r
+ 2, 6, 1, 1, 3, 3, 5, 1, 2, 2, 2, 1, 4, 4, 6, 1,\r
+ 2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 3, 1, 1, 4, 6, 1,\r
+ 2, 6, 1, 1, 3, 3, 5, 1, 2, 2, 2, 1, 4, 4, 6, 1,\r
+ 2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 4, 1, 1, 4, 6, 1 };\r
+\r
+// Private function prototypes\r
+\r
+static uint16 RdMemW(uint16);\r
+\r
+//\r
+// Read a uint16 out of 65C02 memory (big endian format)\r
+//\r
+static uint16 RdMemW(uint16 address)\r
+{\r
+ return (uint16)(regs.RdMem(address + 1) << 8) | regs.RdMem(address + 0);\r
+}\r
+\r
+\r
+//\r
+// 65C02 OPCODE IMPLEMENTATION\r
+//\r
+// NOTE: Lots of macros are used here to save a LOT of typing. Also\r
+// helps speed the debugging process. :-) Because of this, combining\r
+// certain lines may look like a good idea but would end in disaster.\r
+// You have been warned! ;-)\r
+//\r
+\r
+/*\r
+Mnemonic Addressing mode Form Opcode Size Timing\r
+\r
+ADC Immediate ADC #Oper 69 2 2\r
+ Zero Page ADC Zpg 65 2 3\r
+ Zero Page,X ADC Zpg,X 75 2 4\r
+ Absolute ADC Abs 6D 3 4\r
+ Absolute,X ADC Abs,X 7D 3 4\r
+ Absolute,Y ADC Abs,Y 79 3 4\r
+ (Zero Page,X) ADC (Zpg,X) 61 2 6\r
+ (Zero Page),Y ADC (Zpg),Y 71 2 5\r
+ (Zero Page) ADC (Zpg) 72 2 5\r
+*/\r
+\r
+// ADC opcodes\r
+\r
+//This is non-optimal, but it works--optimize later. :-)\r
+#define OP_ADC_HANDLER(m) \\r
+ uint16 sum = (uint16)regs.a + (m) + (uint16)(regs.cc & FLAG_C); \\r
+\\r
+ if (regs.cc & FLAG_D) \\r
+ { \\r
+ if ((sum & 0x0F) > 0x09) \\r
+ sum += 0x06; \\r
+\\r
+ if ((sum & 0xF0) > 0x90) \\r
+ sum += 0x60; \\r
+ } \\r
+\\r
+ regs.cc = (regs.cc & ~FLAG_C) | (sum >> 8); \\r
+ regs.cc = (~(regs.a ^ (m)) & (regs.a ^ sum) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V); \\r
+ regs.a = sum & 0xFF; \\r
+ SET_ZN(regs.a)\r
+\r
+//OLD V detection: regs.cc = ((regs.a ^ (m) ^ sum ^ (regs.cc << 7)) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V);\r
+\r
+static void Op69(void) // ADC #\r
+{\r
+ uint16 m = READ_IMM;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op65(void) // ADC ZP\r
+{\r
+ uint16 m = READ_ZP;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op75(void) // ADC ZP, X\r
+{\r
+ uint16 m = READ_ZP_X;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op6D(void) // ADC ABS\r
+{\r
+ uint16 m = READ_ABS;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op7D(void) // ADC ABS, X\r
+{\r
+ uint16 m = READ_ABS_X;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op79(void) // ADC ABS, Y\r
+{\r
+ uint16 m = READ_ABS_Y;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op61(void) // ADC (ZP, X)\r
+{\r
+ uint16 m = READ_IND_ZP_X;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op71(void) // ADC (ZP), Y\r
+{\r
+ uint16 m = READ_IND_ZP_Y;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op72(void) // ADC (ZP)\r
+{\r
+ uint16 m = READ_IND_ZP;\r
+ OP_ADC_HANDLER(m);\r
+}\r
+\r
+/*\r
+AND Immediate AND #Oper 29 2 2\r
+Zero Page AND Zpg 25 2 3\r
+Zero Page,X AND Zpg,X 35 2 4\r
+Absolute AND Abs 2D 3 4\r
+Absolute,X AND Abs,X 3D 3 4\r
+Absolute,Y AND Abs,Y 39 3 4\r
+(Zero Page,X) AND (Zpg,X) 21 2 6\r
+(Zero Page),Y AND (Zpg),Y 31 2 5\r
+(Zero Page) AND (Zpg) 32 2 5\r
+*/\r
+\r
+// AND opcodes\r
+\r
+#define OP_AND_HANDLER(m) \\r
+ regs.a &= m; \\r
+ SET_ZN(regs.a)\r
+\r
+static void Op29(void) // AND #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op25(void) // AND ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op35(void) // AND ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op2D(void) // AND ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op3D(void) // AND ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op39(void) // AND ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op21(void) // AND (ZP, X)\r
+{\r
+ uint8 m = READ_IND_ZP_X;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op31(void) // AND (ZP), Y\r
+{\r
+ uint8 m = READ_IND_ZP_Y;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op32(void) // AND (ZP)\r
+{\r
+ uint8 m = READ_IND_ZP;\r
+ OP_AND_HANDLER(m);\r
+}\r
+\r
+/*\r
+ASL Accumulator ASL A 0A 1 2\r
+Zero Page ASL Zpg 06 2 5\r
+Zero Page,X ASL Zpg,X 16 2 6\r
+Absolute ASL Abs 0E 3 6\r
+Absolute,X ASL Abs,X 1E 3 7\r
+*/\r
+\r
+/*static void Op78(void) // LSL ABS\r
+{\r
+ uint8 tmp; uint16 addr;\r
+ addr = FetchW();\r
+ tmp = regs.RdMem(addr);\r
+ (tmp&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into Carry\r
+ tmp <<= 1;\r
+ regs.WrMem(addr, tmp);\r
+ (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB); // Adjust Zero flag\r
+ (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7); // Adjust Negative flag\r
+}*/\r
+\r
+// ASL opcodes\r
+\r
+#define OP_ASL_HANDLER(m) \\r
+ regs.cc = ((m) & 0x80 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+ (m) <<= 1; \\r
+ SET_ZN((m))\r
+\r
+static void Op0A(void) // ASL A\r
+{\r
+ OP_ASL_HANDLER(regs.a);\r
+}\r
+\r
+static void Op06(void) // ASL ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_ASL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op16(void) // ASL ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_ASL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op0E(void) // ASL ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_ASL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op1E(void) // ASL ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_ASL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+BBR0 Relative BBR0 Oper 0F 2 2\r
+BBR1 Relative BBR1 Oper 1F 2 2\r
+BBR2 Relative BBR2 Oper 2F 2 2\r
+BBR3 Relative BBR3 Oper 3F 2 2\r
+BBR4 Relative BBR4 Oper 4F 2 2\r
+BBR5 Relative BBR5 Oper 5F 2 2\r
+BBR6 Relative BBR6 Oper 6F 2 2\r
+BBR7 Relative BBR7 Oper 7F 2 2\r
+BBS0 Relative BBS0 Oper 8F 2 2\r
+BBS1 Relative BBS1 Oper 9F 2 2\r
+BBS2 Relative BBS2 Oper AF 2 2\r
+BBS3 Relative BBS3 Oper BF 2 2\r
+BBS4 Relative BBS4 Oper CF 2 2\r
+BBS5 Relative BBS5 Oper DF 2 2\r
+BBS6 Relative BBS6 Oper EF 2 2\r
+BBS7 Relative BBS7 Oper FF 2 2\r
+*/\r
+\r
+// BBR/Sn opcodes\r
+\r
+static void Op0F(void) // BBR0\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x01))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op1F(void) // BBR1\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x02))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op2F(void) // BBR2\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x04))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op3F(void) // BBR3\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x08))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op4F(void) // BBR4\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x10))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op5F(void) // BBR5\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x20))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op6F(void) // BBR6\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x40))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op7F(void) // BBR7\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.a & 0x80))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op8F(void) // BBS0\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x01)\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op9F(void) // BBS1\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x02)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpAF(void) // BBS2\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x04)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpBF(void) // BBS3\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x08)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpCF(void) // BBS4\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x10)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpDF(void) // BBS5\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x20)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpEF(void) // BBS6\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x40)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpFF(void) // BBS7\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.a & 0x80)\r
+ regs.pc += m;\r
+}\r
+\r
+/*\r
+BCC Relative BCC Oper 90 2 2\r
+BCS Relative BCS Oper B0 2 2\r
+BEQ Relative BEQ Oper F0 2 2\r
+*/\r
+\r
+// Branch opcodes\r
+\r
+static void Op90(void) // BCC\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.cc & FLAG_C))\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpB0(void) // BCS\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.cc & FLAG_C)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpF0(void) // BEQ\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.cc & FLAG_Z)\r
+ regs.pc += m;\r
+}\r
+\r
+/*\r
+BIT Immediate BIT #Oper 89 2 2\r
+Zero Page BIT Zpg 24 2 3\r
+Zero Page,X BIT Zpg,X 34 2 4\r
+Absolute BIT Abs 2C 3 4\r
+Absolute,X BIT Abs,X 3C 3 4\r
+*/\r
+\r
+// BIT opcodes\r
+\r
+/* 1. The BIT instruction copies bit 6 to the V flag, and bit 7 to the N flag (except in immediate\r
+ addressing mode where V & N are untouched.) The accumulator and the operand are ANDed and the\r
+ Z flag is set appropriately. */\r
+\r
+#define OP_BIT_HANDLER(m) \\r
+ int8 result = regs.a & (m); \\r
+ regs.cc &= ~(FLAG_N | FLAG_V); \\r
+ regs.cc |= ((m) & 0xC0); \\r
+ SET_Z(result)\r
+\r
+static void Op89(void) // BIT #\r
+{\r
+ int8 m = READ_IMM;\r
+ int8 result = regs.a & m;\r
+ SET_Z(result);\r
+}\r
+\r
+static void Op24(void) // BIT ZP\r
+{\r
+ int8 m = READ_ZP;\r
+ OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op34(void) // BIT ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op2C(void) // BIT ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op3C(void) // BIT ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_BIT_HANDLER(m);\r
+}\r
+\r
+/*\r
+BMI Relative BMI Oper 30 2 2\r
+BNE Relative BNE Oper D0 2 2\r
+BPL Relative BPL Oper 10 2 2\r
+BRA Relative BRA Oper 80 2 3\r
+*/\r
+\r
+// More branch opcodes\r
+\r
+static void Op30(void) // BMI\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.cc & FLAG_N)\r
+ regs.pc += m;\r
+}\r
+\r
+static void OpD0(void) // BNE\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.cc & FLAG_Z))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op10(void) // BPL\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.cc & FLAG_N))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op80(void) // BRA\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+ regs.pc += m;\r
+}\r
+\r
+/*\r
+BRK Implied BRK 00 1 7\r
+*/\r
+\r
+static void Op00(void) // BRK\r
+{\r
+ regs.cc |= FLAG_B; // Set B\r
+ regs.pc++; // RTI comes back to the instruction one byte after the BRK\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8); // Save PC and CC\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+ regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+ regs.cc |= FLAG_I; // Set I\r
+ regs.cc &= ~FLAG_D; // & clear D\r
+ regs.pc = RdMemW(0xFFFE); // Grab the IRQ vector & go...\r
+}\r
+\r
+/*\r
+BVC Relative BVC Oper 50 2 2\r
+BVS Relative BVS Oper 70 2 2\r
+*/\r
+\r
+// Even more branch opcodes\r
+\r
+static void Op50(void) // BVC\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (!(regs.cc & FLAG_V))\r
+ regs.pc += m;\r
+}\r
+\r
+static void Op70(void) // BVS\r
+{\r
+ int16 m = (int16)(int8)READ_IMM;\r
+\r
+ if (regs.cc & FLAG_V)\r
+ regs.pc += m;\r
+}\r
+\r
+/*\r
+CLC Implied CLC 18 1 2\r
+*/\r
+\r
+static void Op18(void) // CLC\r
+{\r
+ regs.cc &= ~FLAG_C;\r
+}\r
+\r
+/*\r
+CLD Implied CLD D8 1 2\r
+*/\r
+\r
+static void OpD8(void) // CLD\r
+{\r
+ regs.cc &= ~FLAG_D;\r
+}\r
+\r
+/*\r
+CLI Implied CLI 58 1 2\r
+*/\r
+\r
+static void Op58(void) // CLI\r
+{\r
+ regs.cc &= ~FLAG_I;\r
+}\r
+\r
+/*\r
+CLV Implied CLV B8 1 2\r
+*/\r
+\r
+static void OpB8(void) // CLV\r
+{\r
+ regs.cc &= ~FLAG_V;\r
+}\r
+\r
+/*\r
+CMP Immediate CMP #Oper C9 2 2\r
+Zero Page CMP Zpg C5 2 3\r
+Zero Page,X CMP Zpg D5 2 4\r
+Absolute CMP Abs CD 3 4\r
+Absolute,X CMP Abs,X DD 3 4\r
+Absolute,Y CMP Abs,Y D9 3 4\r
+(Zero Page,X) CMP (Zpg,X) C1 2 6\r
+(Zero Page),Y CMP (Zpg),Y D1 2 5\r
+(Zero Page) CMP (Zpg) D2 2 5\r
+*/\r
+\r
+// CMP opcodes\r
+\r
+/*\r
+Here's the latest: The CMP is NOT generating the Z flag when A=$C0!\r
+\r
+FABA: A0 07 LDY #$07 [PC=FABC, SP=01FF, CC=---B-IZ-, A=00, X=00, Y=07]\r
+FABC: C6 01 DEC $01 [PC=FABE, SP=01FF, CC=N--B-I--, A=00, X=00, Y=07]\r
+FABE: A5 01 LDA $01 [PC=FAC0, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC0: C9 C0 CMP #$C0 [PC=FAC2, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC2: F0 D7 BEQ $FA9B [PC=FAC4, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC4: 8D F8 07 STA $07F8 [PC=FAC7, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC7: B1 00 LDA ($00),Y\r
+*** Read at I/O address C007\r
+ [PC=FAC9, SP=01FF, CC=---B-IZ-, A=00, X=00, Y=07]\r
+FAC9: D9 01 FB CMP $FB01,Y [PC=FACC, SP=01FF, CC=---B-I--, A=00, X=00, Y=07]\r
+FACC: D0 EC BNE $FABA [PC=FABA, SP=01FF, CC=---B-I--, A=00, X=00, Y=07]\r
+\r
+Should be fixed now... (was adding instead of subtracting!)\r
+\r
+Small problem here... First two should set the carry while the last one should clear it. !!! FIX !!! [DONE]\r
+\r
+FDF0: C9 A0 CMP #$A0 [PC=FDF2, SP=01F1, CC=---B-IZ-, A=A0, X=02, Y=03]\r
+FD7E: C9 E0 CMP #$E0 [PC=FD80, SP=01F4, CC=N--B-I--, A=A0, X=02, Y=03]\r
+FD38: C9 9B CMP #$9B [PC=FD3A, SP=01F2, CC=---B-I-C, A=A0, X=02, Y=03]\r
+\r
+Compare sets flags as if a subtraction had been carried out. If the value in the accumulator is equal or greater than the compared value, the Carry will be set. The equal (Z) and sign (S) flags will be set based on equality or lack thereof and the sign (i.e. A>=$80) of the accumulator.\r
+*/\r
+\r
+#define OP_CMP_HANDLER(m) \\r
+ uint8 result = regs.a - (m); \\r
+ SET_ZNC_CMP(m, regs.a, result)\r
+\r
+static void OpC9(void) // CMP #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpC5(void) // CMP ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD5(void) // CMP ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpCD(void) // CMP ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpDD(void) // CMP ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD9(void) // CMP ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpC1(void) // CMP (ZP, X)\r
+{\r
+ uint8 m = READ_IND_ZP_X;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD1(void) // CMP (ZP), Y\r
+{\r
+ uint8 m = READ_IND_ZP_Y;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD2(void) // CMP (ZP)\r
+{\r
+ uint8 m = READ_IND_ZP;\r
+ OP_CMP_HANDLER(m);\r
+}\r
+\r
+/*\r
+CPX Immediate CPX #Oper E0 2 2\r
+Zero Page CPX Zpg E4 2 3\r
+Absolute CPX Abs EC 3 4\r
+*/\r
+\r
+// CPX opcodes\r
+\r
+#define OP_CPX_HANDLER(m) \\r
+ uint8 result = regs.x - (m); \\r
+ SET_ZNC_CMP(m, regs.x, result)\r
+\r
+static void OpE0(void) // CPX #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_CPX_HANDLER(m);\r
+}\r
+\r
+static void OpE4(void) // CPX ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_CPX_HANDLER(m);\r
+}\r
+\r
+static void OpEC(void) // CPX ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_CPX_HANDLER(m);\r
+}\r
+\r
+/*\r
+CPY Immediate CPY #Oper C0 2 2\r
+Zero Page CPY Zpg C4 2 3\r
+Absolute CPY Abs CC 3 4\r
+*/\r
+\r
+// CPY opcodes\r
+\r
+#define OP_CPY_HANDLER(m) \\r
+ uint8 result = regs.y - (m); \\r
+ SET_ZNC_CMP(m, regs.y, result)\r
+\r
+static void OpC0(void) // CPY #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_CPY_HANDLER(m);\r
+}\r
+\r
+static void OpC4(void) // CPY ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_CPY_HANDLER(m);\r
+}\r
+\r
+static void OpCC(void) // CPY ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_CPY_HANDLER(m);\r
+}\r
+\r
+/*\r
+DEA Accumulator DEA 3A 1 2\r
+*/\r
+\r
+static void Op3A(void) // DEA\r
+{\r
+ regs.a--;\r
+ SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+DEC Zero Page DEC Zpg C6 2 5\r
+Zero Page,X DEC Zpg,X D6 2 6\r
+Absolute DEC Abs CE 3 6\r
+Absolute,X DEC Abs,X DE 3 7\r
+*/\r
+\r
+// DEC opcodes\r
+\r
+#define OP_DEC_HANDLER(m) \\r
+ m--; \\r
+ SET_ZN(m)\r
+\r
+static void OpC6(void) // DEC ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_DEC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpD6(void) // DEC ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_DEC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpCE(void) // DEC ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_DEC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpDE(void) // DEC ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_DEC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+Here's one problem: DEX is setting the N flag!\r
+\r
+D3EE: A2 09 LDX #$09 [PC=D3F0, SP=01F7, CC=---B-I-C, A=01, X=09, Y=08]\r
+D3F0: 98 TYA [PC=D3F1, SP=01F7, CC=N--B-I-C, A=08, X=09, Y=08]\r
+D3F1: 48 PHA [PC=D3F2, SP=01F6, CC=N--B-I-C, A=08, X=09, Y=08]\r
+D3F2: B5 93 LDA $93,X [PC=D3F4, SP=01F6, CC=---B-IZC, A=00, X=09, Y=08]\r
+D3F4: CA DEX [PC=D3F5, SP=01F6, CC=N--B-I-C, A=00, X=08, Y=08]\r
+D3F5: 10 FA BPL $D3F1 [PC=D3F7, SP=01F6, CC=N--B-I-C, A=00, X=08, Y=08]\r
+D3F7: 20 84 E4 JSR $E484 [PC=E484, SP=01F4, CC=N--B-I-C, A=00, X=08, Y=08]\r
+\r
+should be fixed now...\r
+*/\r
+\r
+/*\r
+DEX Implied DEX CA 1 2\r
+*/\r
+\r
+static void OpCA(void) // DEX\r
+{\r
+ regs.x--;\r
+ SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+DEY Implied DEY 88 1 2\r
+*/\r
+\r
+static void Op88(void) // DEY\r
+{\r
+ regs.y--;\r
+ SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+EOR Immediate EOR #Oper 49 2 2\r
+Zero Page EOR Zpg 45 2 3\r
+Zero Page,X EOR Zpg,X 55 2 4\r
+Absolute EOR Abs 4D 3 4\r
+Absolute,X EOR Abs,X 5D 3 4\r
+Absolute,Y EOR Abs,Y 59 3 4\r
+(Zero Page,X) EOR (Zpg,X) 41 2 6\r
+(Zero Page),Y EOR (Zpg),Y 51 2 5\r
+(Zero Page) EOR (Zpg) 52 2 5\r
+*/\r
+\r
+// EOR opcodes\r
+\r
+#define OP_EOR_HANDLER(m) \\r
+ regs.a ^= m; \\r
+ SET_ZN(regs.a)\r
+\r
+static void Op49(void) // EOR #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op45(void) // EOR ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op55(void) // EOR ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op4D(void) // EOR ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op5D(void) // EOR ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op59(void) // EOR ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op41(void) // EOR (ZP, X)\r
+{\r
+ uint8 m = READ_IND_ZP_X;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op51(void) // EOR (ZP), Y\r
+{\r
+ uint8 m = READ_IND_ZP_Y;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op52(void) // EOR (ZP)\r
+{\r
+ uint8 m = READ_IND_ZP;\r
+ OP_EOR_HANDLER(m);\r
+}\r
+\r
+/*\r
+INA Accumulator INA 1A 1 2\r
+*/\r
+\r
+static void Op1A(void) // INA\r
+{\r
+ regs.a++;\r
+ SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+INC Zero Page INC Zpg E6 2 5\r
+Zero Page,X INC Zpg,X F6 2 6\r
+Absolute INC Abs EE 3 6\r
+Absolute,X INC Abs,X FE 3 7\r
+*/\r
+\r
+// INC opcodes\r
+\r
+#define OP_INC_HANDLER(m) \\r
+ m++; \\r
+ SET_ZN(m)\r
+\r
+static void OpE6(void) // INC ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_INC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpF6(void) // INC ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_INC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpEE(void) // INC ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_INC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpFE(void) // INC ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_INC_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+INX Implied INX E8 1 2\r
+*/\r
+\r
+static void OpE8(void) // INX\r
+{\r
+ regs.x++;\r
+ SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+INY Implied INY C8 1 2\r
+*/\r
+\r
+static void OpC8(void) // INY\r
+{\r
+ regs.y++;\r
+ SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+JMP Absolute JMP Abs 4C 3 3\r
+(Absolute) JMP (Abs) 6C 3 5\r
+(Absolute,X) JMP (Abs,X) 7C 3 6\r
+*/\r
+\r
+// JMP opcodes\r
+\r
+static void Op4C(void) // JMP ABS\r
+{\r
+ regs.pc = RdMemW(regs.pc);\r
+}\r
+\r
+static void Op6C(void) // JMP (ABS)\r
+{\r
+// uint16 addr = RdMemW(regs.pc);\r
+//#ifdef __DEBUG__\r
+//WriteLog("\n[JMP ABS]: addr fetched = %04X, bytes at %04X = %02X %02X (RdMemw=%04X)\n",\r
+// addr, addr, regs.RdMem(addr), regs.RdMem(addr+1), RdMemW(addr));\r
+//#endif\r
+// addr = RdMemW(addr);\r
+ regs.pc = RdMemW(RdMemW(regs.pc));\r
+}\r
+\r
+static void Op7C(void) // JMP (ABS, X)\r
+{\r
+ regs.pc = RdMemW(RdMemW(regs.pc) + regs.x);\r
+}\r
+\r
+/*\r
+JSR Absolute JSR Abs 20 3 6\r
+*/\r
+\r
+//This is not jumping to the correct address... !!! FIX !!! [DONE]\r
+static void Op20(void) // JSR\r
+{\r
+ uint16 addr = RdMemW(regs.pc);\r
+ regs.pc++; // Since it pushes return address - 1...\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8);\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+ regs.pc = addr;\r
+}\r
+\r
+/*\r
+LDA Immediate LDA #Oper A9 2 2\r
+Zero Page LDA Zpg A5 2 3\r
+Zero Page,X LDA Zpg,X B5 2 4\r
+Absolute LDA Abs AD 3 4\r
+Absolute,X LDA Abs,X BD 3 4\r
+Absolute,Y LDA Abs,Y B9 3 4\r
+(Zero Page,X) LDA (Zpg,X) A1 2 6\r
+(Zero Page),Y LDA (Zpg),Y B1 2 5\r
+(Zero Page) LDA (Zpg) B2 2 5\r
+*/\r
+\r
+// LDA opcodes\r
+\r
+#define OP_LDA_HANDLER(m) \\r
+ regs.a = m; \\r
+ SET_ZN(regs.a)\r
+\r
+static void OpA9(void) // LDA #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpA5(void) // LDA ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB5(void) // LDA ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpAD(void) // LDA ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpBD(void) // LDA ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB9(void) // LDA ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpA1(void) // LDA (ZP, X)\r
+{\r
+ uint8 m = READ_IND_ZP_X;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB1(void) // LDA (ZP), Y\r
+{\r
+ uint8 m = READ_IND_ZP_Y;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB2(void) // LDA (ZP)\r
+{\r
+ uint8 m = READ_IND_ZP;\r
+ OP_LDA_HANDLER(m);\r
+}\r
+\r
+/*\r
+LDX Immediate LDX #Oper A2 2 2\r
+Zero Page LDX Zpg A6 2 3\r
+Zero Page,Y LDX Zpg,Y B6 2 4\r
+Absolute LDX Abs AE 3 4\r
+Absolute,Y LDX Abs,Y BE 3 4\r
+*/\r
+\r
+// LDX opcodes\r
+\r
+#define OP_LDX_HANDLER(m) \\r
+ regs.x = m; \\r
+ SET_ZN(regs.x)\r
+\r
+static void OpA2(void) // LDX #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpA6(void) // LDX ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpB6(void) // LDX ZP, Y\r
+{\r
+ uint8 m = READ_ZP_Y;\r
+ OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpAE(void) // LDX ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpBE(void) // LDX ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_LDX_HANDLER(m);\r
+}\r
+\r
+/*\r
+LDY Immediate LDY #Oper A0 2 2\r
+Zero Page LDY Zpg A4 2 3\r
+Zero Page,Y LDY Zpg,X B4 2 4\r
+Absolute LDY Abs AC 3 4\r
+Absolute,Y LDY Abs,X BC 3 4\r
+*/\r
+\r
+// LDY opcodes\r
+\r
+#define OP_LDY_HANDLER(m) \\r
+ regs.y = m; \\r
+ SET_ZN(regs.y)\r
+\r
+static void OpA0(void) // LDY #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpA4(void) // LDY ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpB4(void) // LDY ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpAC(void) // LDY ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpBC(void) // LDY ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_LDY_HANDLER(m);\r
+}\r
+\r
+/*\r
+LSR Accumulator LSR A 4A 1 2\r
+Zero Page LSR Zpg 46 2 5\r
+Zero Page,X LSR Zpg,X 56 2 6\r
+Absolute LSR Abs 4E 3 6\r
+Absolute,X LSR Abs,X 5E 3 7\r
+*/\r
+\r
+// LSR opcodes\r
+\r
+#define OP_LSR_HANDLER(m) \\r
+ regs.cc = ((m) & 0x01 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+ (m) >>= 1; \\r
+ CLR_N; SET_Z((m))\r
+\r
+static void Op4A(void) // LSR A\r
+{\r
+ OP_LSR_HANDLER(regs.a);\r
+}\r
+\r
+static void Op46(void) // LSR ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_LSR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op56(void) // LSR ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_LSR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op4E(void) // LSR ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_LSR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op5E(void) // LSR ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_LSR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+NOP Implied NOP EA 1 2\r
+*/\r
+\r
+static void OpEA(void) // NOP\r
+{\r
+}\r
+\r
+/*\r
+ORA Immediate ORA #Oper 09 2 2\r
+Zero Page ORA Zpg 05 2 3\r
+Zero Page,X ORA Zpg,X 15 2 4\r
+Absolute ORA Abs 0D 3 4\r
+Absolute,X ORA Abs,X 1D 3 4\r
+Absolute,Y ORA Abs,Y 19 3 4\r
+(Zero Page,X) ORA (Zpg,X) 01 2 6\r
+(Zero Page),Y ORA (Zpg),Y 11 2 5\r
+(Zero Page) ORA (Zpg) 12 2 5\r
+*/\r
+\r
+// ORA opcodes\r
+\r
+#define OP_ORA_HANDLER(m) \\r
+ regs.a |= m; \\r
+ SET_ZN(regs.a)\r
+\r
+static void Op09(void) // ORA #\r
+{\r
+ uint8 m = READ_IMM;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op05(void) // ORA ZP\r
+{\r
+ uint8 m = READ_ZP;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op15(void) // ORA ZP, X\r
+{\r
+ uint8 m = READ_ZP_X;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op0D(void) // ORA ABS\r
+{\r
+ uint8 m = READ_ABS;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op1D(void) // ORA ABS, X\r
+{\r
+ uint8 m = READ_ABS_X;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op19(void) // ORA ABS, Y\r
+{\r
+ uint8 m = READ_ABS_Y;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op01(void) // ORA (ZP, X)\r
+{\r
+ uint8 m = READ_IND_ZP_X;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op11(void) // ORA (ZP), Y\r
+{\r
+ uint8 m = READ_IND_ZP_Y;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op12(void) // ORA (ZP)\r
+{\r
+ uint8 m = READ_IND_ZP;\r
+ OP_ORA_HANDLER(m);\r
+}\r
+\r
+/*\r
+PHA Implied PHA 48 1 3\r
+*/\r
+\r
+static void Op48(void) // PHA\r
+{\r
+ regs.WrMem(0x0100 + regs.sp--, regs.a);\r
+}\r
+\r
+static void Op08(void) // PHP\r
+{\r
+ regs.cc |= FLAG_UNK; // Make sure that the unused bit is always set\r
+ regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+}\r
+\r
+/*\r
+PHX Implied PHX DA 1 3\r
+*/\r
+\r
+static void OpDA(void) // PHX\r
+{\r
+ regs.WrMem(0x0100 + regs.sp--, regs.x);\r
+}\r
+\r
+/*\r
+PHY Implied PHY 5A 1 3\r
+*/\r
+\r
+static void Op5A(void) // PHY\r
+{\r
+ regs.WrMem(0x0100 + regs.sp--, regs.y);\r
+}\r
+\r
+/*\r
+PLA Implied PLA 68 1 4\r
+*/\r
+\r
+static void Op68(void) // PLA\r
+{\r
+ regs.a = regs.RdMem(0x0100 + ++regs.sp);\r
+ SET_ZN(regs.a);\r
+}\r
+\r
+static void Op28(void) // PLP\r
+{\r
+ regs.cc = regs.RdMem(0x0100 + ++regs.sp);\r
+}\r
+\r
+/*\r
+PLX Implied PLX FA 1 4\r
+*/\r
+\r
+static void OpFA(void) // PLX\r
+{\r
+ regs.x = regs.RdMem(0x0100 + ++regs.sp);\r
+ SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+PLY Implied PLY 7A 1 4\r
+*/\r
+\r
+static void Op7A(void) // PLY\r
+{\r
+ regs.y = regs.RdMem(0x0100 + ++regs.sp);\r
+ SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+The bit set and clear instructions have the form xyyy0111, where x is 0 to clear a bit or 1 to set it, and yyy is which bit at the memory location to set or clear. \r
+ RMB0 RMB1 RMB2 RMB3 RMB4 RMB5 RMB6 RMB7\r
+ zp 07 17 27 37 47 57 67 77\r
+ SMB0 SMB1 SMB2 SMB3 SMB4 SMB5 SMB6 SMB7\r
+ zp 87 97 A7 B7 C7 D7 E7 F7\r
+*/\r
+\r
+// RMB opcodes\r
+\r
+static void Op07(void) // RMB0 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xFE;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op17(void) // RMB1 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xFD;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op27(void) // RMB2 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xFB;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op37(void) // RMB3 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xF7;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op47(void) // RMB4 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xEF;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op57(void) // RMB5 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xDF;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op67(void) // RMB6 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0xBF;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op77(void) // RMB7 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m &= 0x7F;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+ROL Accumulator ROL A 2A 1 2\r
+Zero Page ROL Zpg 26 2 5\r
+Zero Page,X ROL Zpg,X 36 2 6\r
+Absolute ROL Abs 2E 3 6\r
+Absolute,X ROL Abs,X 3E 3 7\r
+*/\r
+\r
+// ROL opcodes\r
+\r
+#define OP_ROL_HANDLER(m) \\r
+ uint8 tmp = regs.cc & 0x01; \\r
+ regs.cc = ((m) & 0x80 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+ (m) = ((m) << 1) | tmp; \\r
+ SET_ZN((m))\r
+\r
+static void Op2A(void) // ROL A\r
+{\r
+ OP_ROL_HANDLER(regs.a);\r
+}\r
+\r
+static void Op26(void) // ROL ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_ROL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op36(void) // ROL ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_ROL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op2E(void) // ROL ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_ROL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op3E(void) // ROL ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_ROL_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+ROR Accumulator ROR A 6A 1 2\r
+Zero Page ROR Zpg 66 2 5\r
+Zero Page,X ROR Zpg,X 76 2 6\r
+Absolute ROR Abs 6E 3 6\r
+Absolute,X ROR Abs,X 7E 3 7\r
+*/\r
+\r
+// ROR opcodes\r
+\r
+#define OP_ROR_HANDLER(m) \\r
+ uint8 tmp = (regs.cc & 0x01) << 7; \\r
+ regs.cc = ((m) & 0x01 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+ (m) = ((m) >> 1) | tmp; \\r
+ SET_ZN((m))\r
+\r
+static void Op6A(void) // ROR A\r
+{\r
+ OP_ROR_HANDLER(regs.a);\r
+}\r
+\r
+static void Op66(void) // ROR ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_ROR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op76(void) // ROR ZP, X\r
+{\r
+ uint8 m;\r
+ READ_ZP_X_WB(m);\r
+ OP_ROR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op6E(void) // ROR ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_ROR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op7E(void) // ROR ABS, X\r
+{\r
+ uint8 m;\r
+ READ_ABS_X_WB(m);\r
+ OP_ROR_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+RTI Implied RTI 40 1 6\r
+*/\r
+\r
+static void Op40(void) // RTI\r
+{\r
+ regs.cc = regs.RdMem(0x0100 + ++regs.sp);\r
+ regs.pc = regs.RdMem(0x0100 + ++regs.sp);\r
+ regs.pc |= (uint16)(regs.RdMem(0x0100 + ++regs.sp)) << 8;\r
+}\r
+\r
+/*\r
+RTS Implied RTS 60 1 6\r
+*/\r
+\r
+static void Op60(void) // RTS\r
+{\r
+ regs.pc = regs.RdMem(0x0100 + ++regs.sp);\r
+ regs.pc |= (uint16)(regs.RdMem(0x0100 + ++regs.sp)) << 8;\r
+ regs.pc++; // Since it pushes return address - 1...\r
+//printf("*** RTS: PC = $%04X, SP= $1%02X\n", regs.pc, regs.sp);\r
+//fflush(stdout);\r
+}\r
+\r
+/*\r
+SBC Immediate SBC #Oper E9 2 2\r
+Zero Page SBC Zpg E5 2 3\r
+Zero Page,X SBC Zpg,X F5 2 4\r
+Absolute SBC Abs ED 3 4\r
+Absolute,X SBC Abs,X FD 3 4\r
+Absolute,Y SBC Abs,Y F9 3 4\r
+(Zero Page,X) SBC (Zpg,X) E1 2 6\r
+(Zero Page),Y SBC (Zpg),Y F1 2 5\r
+(Zero Page) SBC (Zpg) F2 2 5\r
+*/\r
+\r
+// SBC opcodes\r
+\r
+//This is non-optimal, but it works--optimize later. :-)\r
+//This is correct except for the BCD handling... !!! FIX !!! [Possibly DONE]\r
+#define OP_SBC_HANDLER(m) \\r
+ uint16 sum = (uint16)regs.a - (m) - (uint16)((regs.cc & FLAG_C) ^ 0x01); \\r
+\\r
+ if (regs.cc & FLAG_D) \\r
+ { \\r
+ if ((sum & 0x0F) > 0x09) \\r
+ sum -= 0x06; \\r
+\\r
+ if ((sum & 0xF0) > 0x90) \\r
+ sum -= 0x60; \\r
+ } \\r
+\\r
+ regs.cc = (regs.cc & ~FLAG_C) | (((sum >> 8) ^ 0x01) & FLAG_C); \\r
+ regs.cc = ((regs.a ^ (m)) & (regs.a ^ sum) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V); \\r
+ regs.a = sum & 0xFF; \\r
+ SET_ZN(regs.a)\r
+\r
+/*\r
+D5AF: 38 SEC [PC=D5B0, SP=01F6, CC=---B-I-C, A=4C, X=00, Y=06]\r
+\r
+*** HERE'S where it sets the D flag on a subtract... Arg!\r
+\r
+D5B0: F1 9D SBC ($9D),Y [PC=D5B2, SP=01F6, CC=N--BDI--, A=FE, X=00, Y=06]\r
+\r
+Fixed. :-)\r
+*/\r
+\r
+//OLD V detection: regs.cc = ((regs.a ^ (m) ^ sum ^ (regs.cc << 7)) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V);\r
+\r
+static void OpE9(void) // SBC #\r
+{\r
+ uint16 m = READ_IMM;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpE5(void) // SBC ZP\r
+{\r
+ uint16 m = READ_ZP;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF5(void) // SBC ZP, X\r
+{\r
+ uint16 m = READ_ZP_X;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpED(void) // SBC ABS\r
+{\r
+ uint16 m = READ_ABS;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpFD(void) // SBC ABS, X\r
+{\r
+ uint16 m = READ_ABS_X;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF9(void) // SBC ABS, Y\r
+{\r
+ uint16 m = READ_ABS_Y;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpE1(void) // SBC (ZP, X)\r
+{\r
+ uint16 m = READ_IND_ZP_X;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF1(void) // SBC (ZP), Y\r
+{\r
+ uint16 m = READ_IND_ZP_Y;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF2(void) // SBC (ZP)\r
+{\r
+ uint16 m = READ_IND_ZP;\r
+ OP_SBC_HANDLER(m);\r
+}\r
+\r
+/*\r
+SEC Implied SEC 38 1 2\r
+*/\r
+\r
+static void Op38(void) // SEC\r
+{\r
+ regs.cc |= FLAG_C;\r
+}\r
+\r
+/*\r
+SED Implied SED F8 1 2\r
+*/\r
+\r
+static void OpF8(void) // SED\r
+{\r
+ regs.cc |= FLAG_D;\r
+}\r
+\r
+/*\r
+SEI Implied SEI 78 1 2\r
+*/\r
+\r
+static void Op78(void) // SEI\r
+{\r
+ regs.cc |= FLAG_I;\r
+}\r
+\r
+/*\r
+The bit set and clear instructions have the form xyyy0111, where x is 0 to clear a bit or 1 to set it, and yyy is which bit at the memory location to set or clear. \r
+ RMB0 RMB1 RMB2 RMB3 RMB4 RMB5 RMB6 RMB7\r
+ zp 07 17 27 37 47 57 67 77\r
+ SMB0 SMB1 SMB2 SMB3 SMB4 SMB5 SMB6 SMB7\r
+ zp 87 97 A7 B7 C7 D7 E7 F7\r
+*/\r
+\r
+// SMB opcodes\r
+\r
+static void Op87(void) // SMB0 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x01;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op97(void) // SMB1 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x02;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpA7(void) // SMB2 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x04;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpB7(void) // SMB3 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x08;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpC7(void) // SMB4 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x10;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpD7(void) // SMB5 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x20;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpE7(void) // SMB6 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x40;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void OpF7(void) // SMB7 ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ m |= 0x80;\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+STA Zero Page STA Zpg 85 2 3\r
+Zero Page,X STA Zpg,X 95 2 4\r
+Absolute STA Abs 8D 3 4\r
+Absolute,X STA Abs,X 9D 3 5\r
+Absolute,Y STA Abs,Y 99 3 5\r
+(Zero Page,X) STA (Zpg,X) 81 2 6\r
+(Zero Page),Y STA (Zpg),Y 91 2 6\r
+(Zero Page) STA (Zpg) 92 2 5\r
+*/\r
+\r
+// STA opcodes\r
+\r
+static void Op85(void)\r
+{\r
+ regs.WrMem(EA_ZP, regs.a);\r
+}\r
+\r
+static void Op95(void)\r
+{\r
+ regs.WrMem(EA_ZP_X, regs.a);\r
+}\r
+\r
+static void Op8D(void)\r
+{\r
+ regs.WrMem(EA_ABS, regs.a);\r
+ regs.pc += 2;\r
+}\r
+\r
+static void Op9D(void)\r
+{\r
+ regs.WrMem(EA_ABS_X, regs.a);\r
+ regs.pc += 2;\r
+}\r
+\r
+static void Op99(void)\r
+{\r
+ regs.WrMem(EA_ABS_Y, regs.a);\r
+ regs.pc += 2;\r
+}\r
+\r
+static void Op81(void)\r
+{\r
+ regs.WrMem(EA_IND_ZP_X, regs.a);\r
+}\r
+\r
+static void Op91(void)\r
+{\r
+ regs.WrMem(EA_IND_ZP_Y, regs.a);\r
+}\r
+\r
+static void Op92(void)\r
+{\r
+ regs.WrMem(EA_IND_ZP, regs.a);\r
+}\r
+\r
+/*\r
+STX Zero Page STX Zpg 86 2 3\r
+Zero Page,Y STX Zpg,Y 96 2 4\r
+Absolute STX Abs 8E 3 4\r
+*/\r
+\r
+// STX opcodes\r
+\r
+static void Op86(void)\r
+{\r
+ regs.WrMem(EA_ZP, regs.x);\r
+}\r
+\r
+static void Op96(void)\r
+{\r
+ regs.WrMem(EA_ZP_X, regs.x);\r
+}\r
+\r
+static void Op8E(void)\r
+{\r
+ regs.WrMem(EA_ABS, regs.x);\r
+ regs.pc += 2;\r
+}\r
+\r
+/*\r
+STY Zero Page STY Zpg 84 2 3\r
+Zero Page,X STY Zpg,X 94 2 4\r
+Absolute STY Abs 8C 3 4\r
+*/\r
+\r
+// STY opcodes\r
+\r
+static void Op84(void)\r
+{\r
+ regs.WrMem(EA_ZP, regs.y);\r
+}\r
+\r
+static void Op94(void)\r
+{\r
+ regs.WrMem(EA_ZP_X, regs.y);\r
+}\r
+\r
+static void Op8C(void)\r
+{\r
+ regs.WrMem(EA_ABS, regs.y);\r
+ regs.pc += 2;\r
+}\r
+\r
+/*\r
+STZ Zero Page STZ Zpg 64 2 3\r
+Zero Page,X STZ Zpg,X 74 2 4\r
+Absolute STZ Abs 9C 3 4\r
+Absolute,X STZ Abs,X 9E 3 5\r
+*/\r
+\r
+// STZ opcodes\r
+\r
+static void Op64(void)\r
+{\r
+ regs.WrMem(EA_ZP, 0x00);\r
+}\r
+\r
+static void Op74(void)\r
+{\r
+ regs.WrMem(EA_ZP_X, 0x00);\r
+}\r
+\r
+static void Op9C(void)\r
+{\r
+ regs.WrMem(EA_ABS, 0x00);\r
+ regs.pc += 2;\r
+}\r
+\r
+static void Op9E(void)\r
+{\r
+ regs.WrMem(EA_ABS_X, 0x00);\r
+ regs.pc += 2;\r
+}\r
+\r
+/*\r
+TAX Implied TAX AA 1 2\r
+*/\r
+\r
+static void OpAA(void) // TAX\r
+{\r
+ regs.x = regs.a;\r
+ SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+TAY Implied TAY A8 1 2\r
+*/\r
+\r
+static void OpA8(void) // TAY\r
+{\r
+ regs.y = regs.a;\r
+ SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+TRB Zero Page TRB Zpg 14 2 5\r
+Absolute TRB Abs 1C 3 6\r
+*/\r
+\r
+// TRB opcodes\r
+\r
+#define OP_TRB_HANDLER(m) \\r
+ SET_Z(m & regs.a); \\r
+ m &= ~regs.a\r
+\r
+static void Op14(void) // TRB ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_TRB_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op1C(void) // TRB ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_TRB_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+TSB Zero Page TSB Zpg 04 2 5\r
+Absolute TSB Abs 0C 3 6\r
+*/\r
+\r
+// TSB opcodes\r
+\r
+#define OP_TSB_HANDLER(m) \\r
+ SET_Z(m & regs.a); \\r
+ m |= regs.a\r
+\r
+static void Op04(void) // TSB ZP\r
+{\r
+ uint8 m;\r
+ READ_ZP_WB(m);\r
+ OP_TSB_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+static void Op0C(void) // TSB ABS\r
+{\r
+ uint8 m;\r
+ READ_ABS_WB(m);\r
+ OP_TSB_HANDLER(m);\r
+ WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+TSX Implied TSX BA 1 2\r
+*/\r
+\r
+static void OpBA(void) // TSX\r
+{\r
+ regs.x = regs.sp;\r
+ SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+TXA Implied TXA 8A 1 2\r
+*/\r
+\r
+static void Op8A(void) // TXA\r
+{\r
+ regs.a = regs.x;\r
+ SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+TXS Implied TXS 9A 1 2\r
+*/\r
+\r
+static void Op9A(void) // TXS\r
+{\r
+ regs.sp = regs.x;\r
+}\r
+\r
+/*\r
+TYA Implied TYA 98 1 2\r
+*/\r
+static void Op98(void) // TYA\r
+{\r
+ regs.a = regs.y;\r
+ SET_ZN(regs.a);\r
+}\r
+\r
+static void Op__(void)\r
+{\r
+ regs.cpuFlags |= V65C02_STATE_ILLEGAL_INST;\r
+}\r
+\r
+\r
+//\r
+// Ok, the exec_op[] array is globally defined here basically to save\r
+// a LOT of unnecessary typing. Sure it's ugly, but hey, it works!\r
+//\r
+void (* exec_op[256])() = {\r
+ Op00, Op01, Op__, Op__, Op04, Op05, Op06, Op07, Op08, Op09, Op0A, Op__, Op0C, Op0D, Op0E, Op0F,\r
+ Op10, Op11, Op12, Op__, Op14, Op15, Op16, Op17, Op18, Op19, Op1A, Op__, Op1C, Op1D, Op1E, Op1F,\r
+ Op20, Op21, Op__, Op__, Op24, Op25, Op26, Op27, Op28, Op29, Op2A, Op__, Op2C, Op2D, Op2E, Op2F,\r
+ Op30, Op31, Op32, Op__, Op34, Op35, Op36, Op37, Op38, Op39, Op3A, Op__, Op3C, Op3D, Op3E, Op3F,\r
+ Op40, Op41, Op__, Op__, Op__, Op45, Op46, Op47, Op48, Op49, Op4A, Op__, Op4C, Op4D, Op4E, Op4F,\r
+ Op50, Op51, Op52, Op__, Op__, Op55, Op56, Op57, Op58, Op59, Op5A, Op__, Op__, Op5D, Op5E, Op5F,\r
+ Op60, Op61, Op__, Op__, Op64, Op65, Op66, Op67, Op68, Op69, Op6A, Op__, Op6C, Op6D, Op6E, Op6F,\r
+ Op70, Op71, Op72, Op__, Op74, Op75, Op76, Op77, Op78, Op79, Op7A, Op__, Op7C, Op7D, Op7E, Op7F,\r
+ Op80, Op81, Op__, Op__, Op84, Op85, Op86, Op87, Op88, Op89, Op8A, Op__, Op8C, Op8D, Op8E, Op8F,\r
+ Op90, Op91, Op92, Op__, Op94, Op95, Op96, Op97, Op98, Op99, Op9A, Op__, Op9C, Op9D, Op9E, Op9F,\r
+ OpA0, OpA1, OpA2, Op__, OpA4, OpA5, OpA6, OpA7, OpA8, OpA9, OpAA, Op__, OpAC, OpAD, OpAE, OpAF,\r
+ OpB0, OpB1, OpB2, Op__, OpB4, OpB5, OpB6, OpB7, OpB8, OpB9, OpBA, Op__, OpBC, OpBD, OpBE, OpBF,\r
+ OpC0, OpC1, Op__, Op__, OpC4, OpC5, OpC6, OpC7, OpC8, OpC9, OpCA, Op__, OpCC, OpCD, OpCE, OpCF,\r
+ OpD0, OpD1, OpD2, Op__, Op__, OpD5, OpD6, OpD7, OpD8, OpD9, OpDA, Op__, Op__, OpDD, OpDE, OpDF,\r
+ OpE0, OpE1, Op__, Op__, OpE4, OpE5, OpE6, OpE7, OpE8, OpE9, OpEA, Op__, OpEC, OpED, OpEE, OpEF,\r
+ OpF0, OpF1, OpF2, Op__, Op__, OpF5, OpF6, OpF7, OpF8, OpF9, OpFA, Op__, Op__, OpFD, OpFE, OpFF\r
+};\r
+\r
+//\r
+// Internal "memcpy" (so we don't have to link with any external libraries!)\r
+//\r
+static void myMemcpy(void * dst, void * src, uint32 size)\r
+{\r
+ uint8 * d = (uint8 *)dst, * s = (uint8 *)src;\r
+\r
+ for(uint32 i=0; i<size; i++)\r
+ d[i] = s[i];\r
+}\r
+\r
+/*\r
+FCA8: 38 698 WAIT SEC\r
+FCA9: 48 699 WAIT2 PHA\r
+FCAA: E9 01 700 WAIT3 SBC #$01\r
+FCAC: D0 FC 701 BNE WAIT3 ;1.0204 USEC\r
+FCAE: 68 702 PLA ;(13+27/2*A+5/2*A*A)\r
+FCAF: E9 01 703 SBC #$01\r
+FCB1: D0 F6 704 BNE WAIT2\r
+FCB3: 60 705 RTS\r
+\r
+FBD9: C9 87 592 BELL1 CMP #$87 ;BELL CHAR? (CNTRL-G)\r
+FBDB: D0 12 593 BNE RTS2B ; NO, RETURN\r
+FBDD: A9 40 594 LDA #$40 ;DELAY .01 SECONDS\r
+FBDF: 20 A8 FC 595 JSR WAIT\r
+FBE2: A0 C0 596 LDY #$C0\r
+FBE4: A9 0C 597 BELL2 LDA #$0C ;TOGGLE SPEAKER AT\r
+FBE6: 20 A8 FC 598 JSR WAIT ; 1 KHZ FOR .1 SEC.\r
+FBE9: AD 30 C0 599 LDA SPKR\r
+FBEC: 88 600 DEY\r
+FBED: D0 F5 601 BNE BELL2\r
+FBEF: 60 602 RTS2B RTS\r
+*/\r
+//int instCount[256];\r
+#ifdef __DEBUG__\r
+bool dumpDis = false;\r
+#endif\r
+//\r
+// Function to execute 6808 for "cycles" cycles\r
+//\r
+void Execute65C02(V65C02REGS * context, uint32 cycles)\r
+{\r
+ myMemcpy(®s, context, sizeof(V65C02REGS));\r
+\r
+ // Execute here...\r
+ while (regs.clock < cycles)\r
+ {\r
+#if 0\r
+/*if (regs.pc == 0x4007)\r
+{\r
+ dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0x444B)\r
+{\r
+ WriteLog("\n*** End of wait...\n\n");\r
+ dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0x444E)\r
+{\r
+ WriteLog("\n*** Start of wait...\n\n");\r
+ dumpDis = false;\r
+}//*/\r
+#endif\r
+\r
+#ifdef __DEBUGMON__\r
+//WAIT is commented out here because it's called by BELL1...\r
+if (regs.pc == 0xFCA8)\r
+{\r
+ WriteLog("\n*** WAIT subroutine...\n\n");\r
+ dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFBD9)\r
+{\r
+ WriteLog("\n*** BELL1 subroutine...\n\n");\r
+// dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFC58)\r
+{\r
+ WriteLog("\n*** HOME subroutine...\n\n");\r
+// dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFDED)\r
+{\r
+ WriteLog("\n*** COUT subroutine...\n\n");\r
+ dumpDis = false;\r
+}\r
+#endif\r
+\r
+#ifdef __DEBUG__\r
+if (dumpDis)\r
+ Decode65C02(regs.pc);\r
+#endif\r
+ uint8 opcode = regs.RdMem(regs.pc++);\r
+\r
+//if (!(regs.cpuFlags & V65C02_STATE_ILLEGAL_INST))\r
+//instCount[opcode]++;\r
+\r
+ exec_op[opcode](); // Execute that opcode...\r
+ regs.clock += CPUCycles[opcode];\r
+#ifdef __DEBUG__\r
+if (dumpDis)\r
+ WriteLog(" [PC=%04X, SP=%04X, CC=%s%s-%s%s%s%s%s, A=%02X, X=%02X, Y=%02X]\n",\r
+ regs.pc, 0x0100 + regs.sp,\r
+ (regs.cc & FLAG_N ? "N" : "-"), (regs.cc & FLAG_V ? "V" : "-"),\r
+ (regs.cc & FLAG_B ? "B" : "-"), (regs.cc & FLAG_D ? "D" : "-"),\r
+ (regs.cc & FLAG_I ? "I" : "-"), (regs.cc & FLAG_Z ? "Z" : "-"),\r
+ (regs.cc & FLAG_C ? "C" : "-"), regs.a, regs.x, regs.y);\r
+#endif\r
+\r
+#ifdef __DEBUGMON__\r
+if (regs.pc == 0xFCB3) // WAIT exit point\r
+{\r
+ dumpDis = true;\r
+}//*/\r
+/*if (regs.pc == 0xFBEF) // BELL1 exit point\r
+{\r
+ dumpDis = true;\r
+}//*/\r
+/*if (regs.pc == 0xFC22) // HOME exit point\r
+{\r
+ dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0xFDFF) // COUT exit point\r
+{\r
+ dumpDis = true;\r
+}\r
+if (regs.pc == 0xFBD8)\r
+{\r
+ WriteLog("\n*** BASCALC set BASL/H = $%04X\n\n", RdMemW(0x0028));\r
+}//*/\r
+#endif\r
+\r
+//These should be correct now...\r
+ if (regs.cpuFlags & V65C02_ASSERT_LINE_RESET)\r
+ {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** RESET ***\n\n");\r
+#endif\r
+ // Not sure about this...\r
+ regs.sp = 0xFF;\r
+ regs.cc = FLAG_B | FLAG_I; // Reset the CC register\r
+ regs.pc = RdMemW(0xFFFC); // And load PC with the RESET vector\r
+\r
+ context->cpuFlags &= ~V65C02_ASSERT_LINE_RESET;\r
+ regs.cpuFlags &= ~V65C02_ASSERT_LINE_RESET;\r
+ }\r
+ else if (regs.cpuFlags & V65C02_ASSERT_LINE_NMI)\r
+ {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** NMI ***\n\n");\r
+#endif\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8); // Save PC and CC\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+ regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+ regs.cc |= FLAG_I; // Set I\r
+ regs.cc &= ~FLAG_D; // & clear D\r
+ regs.pc = RdMemW(0xFFFA); // And do it!\r
+\r
+ regs.clock += 7;\r
+ context->cpuFlags &= ~V65C02_ASSERT_LINE_NMI;// Reset the asserted line (NMI)...\r
+ regs.cpuFlags &= ~V65C02_ASSERT_LINE_NMI; // Reset the asserted line (NMI)...\r
+ }\r
+ else if (regs.cpuFlags & V65C02_ASSERT_LINE_IRQ)\r
+ {\r
+ if (!(regs.cc & FLAG_I)) // Process an interrupt (I=0)?\r
+ {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** IRQ ***\n\n");\r
+#endif\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8); // Save PC and CC\r
+ regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+ regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+ regs.cc |= FLAG_I; // Set I\r
+ regs.cc &= ~FLAG_D; // & clear D\r
+ regs.pc = RdMemW(0xFFFE); // And do it!\r
+\r
+ regs.clock += 7;\r
+ context->cpuFlags &= ~V65C02_ASSERT_LINE_IRQ; // Reset the asserted line (IRQ)...\r
+ regs.cpuFlags &= ~V65C02_ASSERT_LINE_IRQ; // Reset the asserted line (IRQ)...\r
+ }\r
+ }\r
+ }\r
+\r
+ myMemcpy(context, ®s, sizeof(V65C02REGS));\r
+}\r
+\r
+//\r
+// Get the clock of the currently executing CPU\r
+//\r
+uint32 GetCurrentV65C02Clock(void)\r
+{\r
+ return regs.clock;\r
+}\r
--- /dev/null
+//\r
+// Virtual 65C02 Header file\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+\r
+#ifndef __V65C02_H__\r
+#define __V65C02_H__\r
+\r
+#include "types.h"\r
+\r
+// Useful defines\r
+\r
+#define FLAG_N 0x80 // Negative\r
+#define FLAG_V 0x40 // oVerflow\r
+#define FLAG_UNK 0x20 // ??? (always set when read?)\r
+#define FLAG_B 0x10 // Break\r
+#define FLAG_D 0x08 // Decimal\r
+#define FLAG_I 0x04 // Interrupt\r
+#define FLAG_Z 0x02 // Zero\r
+#define FLAG_C 0x01 // Carry\r
+\r
+#define V65C02_ASSERT_LINE_RESET 0x0001 // v65C02 RESET line\r
+#define V65C02_ASSERT_LINE_IRQ 0x0002 // v65C02 IRQ line\r
+#define V65C02_ASSERT_LINE_NMI 0x0004 // v65C02 NMI line\r
+#define V65C02_STATE_ILLEGAL_INST 0x0008 // Illegal instruction executed flag\r
+//#define V65C02_START_DEBUG_LOG 0x0020 // Debug log go (temporary!)\r
+\r
+// Useful structs\r
+\r
+struct V65C02REGS\r
+{\r
+ uint16 pc; // 65C02 PC register\r
+ uint8 cc; // 65C02 Condition Code register\r
+ uint8 sp; // 65C02 System stack pointer (bound to $01xx)\r
+ uint8 a; // 65C02 A register\r
+ uint8 x; // 65C02 X index register\r
+ uint8 y; // 65C02 Y register\r
+ uint32 clock; // 65C02 clock\r
+ uint8 (* RdMem)(uint16); // Address of BYTE read routine\r
+ void (* WrMem)(uint16, uint8); // Address of BYTE write routine\r
+ uint16 cpuFlags; // v65C02 IRQ/RESET flags\r
+};\r
+\r
+// Global variables (exported)\r
+\r
+extern bool dumpDis;\r
+\r
+// Function prototypes\r
+\r
+void Execute65C02(V65C02REGS *, uint32); // Function to execute 65C02 instructions\r
+uint32 GetCurrentV65C02Clock(void); // Get the clock of the currently executing CPU\r
+\r
+#endif // __V65C02_H__\r
--- /dev/null
+//\r
+// VIDEO.CPP: SDL/local hardware specific video routines\r
+//\r
+// by James L. Hammons\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO WHEN WHAT\r
+// --- ---------- ------------------------------------------------------------\r
+// JLH 01/04/2006 Added changelog ;-)\r
+// JLH 01/20/2006 Cut out unnecessary buffering\r
+//\r
+\r
+#include "video.h"\r
+\r
+//#include <SDL.h>\r
+#include <string.h> // Why??? (for memset, etc... Lazy!) Dunno why, but this just strikes me as wrong...\r
+#include <malloc.h>\r
+#include "sdlemu_opengl.h"\r
+#include "log.h"\r
+#include "settings.h"\r
+#include "icon.h"\r
+\r
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN\r
+#define MASK_R 0xFF000000\r
+#define MASK_G 0x00FF0000\r
+#define MASK_B 0x0000FF00\r
+#define MASK_A 0x000000FF\r
+#else\r
+#define MASK_R 0x000000FF\r
+#define MASK_G 0x0000FF00\r
+#define MASK_B 0x00FF0000\r
+#define MASK_A 0xFF000000\r
+#endif\r
+\r
+//#define TEST_ALPHA_BLENDING\r
+\r
+// Exported global variables (actually, these are LOCAL global variables, EXPORTED...)\r
+\r
+SDL_Surface * surface, * mainSurface, * someAlphaSurface;\r
+Uint32 mainSurfaceFlags;\r
+//uint32 scrBuffer[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT];\r
+uint32 * scrBuffer = NULL;\r
+SDL_Joystick * joystick;\r
+\r
+//\r
+// Prime SDL and create surfaces\r
+//\r
+bool InitVideo(void)\r
+{\r
+ // Set up SDL library\r
+ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_NOPARACHUTE) < 0)\r
+ {\r
+ WriteLog("Video: Could not initialize the SDL library: %s\n", SDL_GetError());\r
+ return false;\r
+ }\r
+\r
+ //Set icon (mainly for Win32 target--though seems to work under KDE as well...!)\r
+ SDL_Surface * iconSurf = SDL_CreateRGBSurfaceFrom(icon, 32, 32, 32, 128, \r
+ MASK_R, MASK_G, MASK_B, MASK_A);\r
+ SDL_WM_SetIcon(iconSurf, NULL);\r
+ SDL_FreeSurface(iconSurf);\r
+\r
+ // Get proper info about the platform we're running on...\r
+ const SDL_VideoInfo * info = SDL_GetVideoInfo();\r
+\r
+ if (!info)\r
+ {\r
+ WriteLog("Video: SDL is unable to get the video info: %s\n", SDL_GetError());\r
+ return false;\r
+ }\r
+\r
+ if (settings.useOpenGL)\r
+ {\r
+ mainSurfaceFlags = SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF | SDL_OPENGL;\r
+ SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);\r
+ }\r
+ else\r
+ {\r
+ mainSurfaceFlags = SDL_DOUBLEBUF;\r
+\r
+ if (info->hw_available)\r
+ {\r
+ mainSurfaceFlags = SDL_HWSURFACE | SDL_HWPALETTE;\r
+ WriteLog("Video: Hardware available...\n");\r
+ }\r
+\r
+ if (info->blit_hw)\r
+ {\r
+ mainSurfaceFlags |= SDL_HWACCEL;\r
+ WriteLog("Video: Hardware blit available...\n");\r
+ }\r
+ }\r
+\r
+ if (settings.fullscreen)\r
+ mainSurfaceFlags |= SDL_FULLSCREEN;\r
+\r
+ // Create the primary SDL display (32 BPP)\r
+ if (!settings.useOpenGL)\r
+ mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+ else\r
+// mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH * 2, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+// mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+ mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+\r
+ if (mainSurface == NULL)\r
+ {\r
+ WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+ return false;\r
+ }\r
+\r
+ SDL_WM_SetCaption("Apple 2 SDL", "Apple 2 SDL");\r
+\r
+ // Create the secondary SDL display (32 BPP) that we use directly\r
+ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32,\r
+ MASK_R, MASK_G, MASK_B, MASK_A);\r
+/*WriteLog("Video: Created secondary surface with attributes:\n\n");\r
+WriteLog("\tWidth, height: %u x %u\n", surface->w, surface->h);\r
+WriteLog("\t Pitch: %u\n", surface->pitch);\r
+WriteLog("\t Palette: %08X\n", surface->format->palette);\r
+WriteLog("\t BPP: %u\n", surface->format->BitsPerPixel);\r
+WriteLog("\t BytesPP: %u\n", surface->format->BytesPerPixel);\r
+WriteLog("\t RMask: %08X\n", surface->format->Rmask);\r
+WriteLog("\t GMask: %08X\n", surface->format->Gmask);\r
+WriteLog("\t BMask: %08X\n", surface->format->Bmask);\r
+WriteLog("\t AMask: %08X\n", surface->format->Amask);\r
+WriteLog("\n");//*/\r
+\r
+ if (surface == NULL)\r
+ {\r
+ WriteLog("Video: Could not create secondary SDL surface: %s\n", SDL_GetError());\r
+ return false;\r
+ }\r
+\r
+ if (settings.useOpenGL)\r
+ sdlemu_init_opengl(surface, mainSurface, 1 /*method*/, settings.glFilter /*texture type (linear, nearest)*/,\r
+ 0 /* Automatic bpp selection based upon src */);\r
+\r
+ // Initialize Joystick support under SDL\r
+/* if (settings.useJoystick)\r
+ {\r
+ if (SDL_NumJoysticks() <= 0)\r
+ {\r
+ settings.useJoystick = false;\r
+ WriteLog("Video: No joystick(s) or joypad(s) detected on your system. Using keyboard...\n");\r
+ }\r
+ else\r
+ {\r
+ if ((joystick = SDL_JoystickOpen(settings.joyport)) == 0)\r
+ {\r
+ settings.useJoystick = false;\r
+ WriteLog("Video: Unable to open a Joystick on port: %d\n", (int)settings.joyport);\r
+ }\r
+ else\r
+ WriteLog("Video: Using: %s\n", SDL_JoystickName(settings.joyport));\r
+ }\r
+ }//*/\r
+\r
+ // Set up the scrBuffer\r
+ scrBuffer = (uint32 *)surface->pixels; // Kludge--And shouldn't have to lock since it's a software surface...\r
+//needed? Dunno. Mebbe an SDL function instead?\r
+// memset(scrBuffer, 0x00, VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT * sizeof(uint32));\r
+\r
+#ifdef TEST_ALPHA_BLENDING\r
+//Here's some code to test alpha blending...\r
+//Well whaddya know, it works. :-)\r
+ someAlphaSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, 30, 30, 32,\r
+ MASK_R, MASK_G, MASK_B, MASK_A);\r
+\r
+ for(int i=0; i<30; i++)\r
+ {\r
+ for(int j=0; j<30; j++)\r
+ {\r
+ uint32 color = (uint32)(((double)(i * j) / (29.0 * 29.0)) * 255.0);\r
+ color = (color << 24) | 0x00FF00FF;\r
+ ((uint32 *)someAlphaSurface->pixels)[(j * 30) + i] = color;\r
+ }\r
+ }\r
+//End test code\r
+#endif\r
+\r
+ WriteLog("Video: Successfully initialized.\n");\r
+ return true;\r
+}\r
+\r
+//\r
+// Free various SDL components\r
+//\r
+void VideoDone(void)\r
+{\r
+ if (settings.useOpenGL)\r
+ sdlemu_close_opengl();\r
+\r
+ SDL_JoystickClose(joystick);\r
+ SDL_FreeSurface(surface);\r
+ SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER);\r
+ SDL_Quit();\r
+}\r
+\r
+//\r
+// Render the screen buffer to the primary screen surface\r
+//\r
+//void RenderBackbuffer(void)\r
+void RenderScreenBuffer(void)\r
+{\r
+//WriteLog("Video: Blitting a %u x %u surface to the main surface...\n", surface->w, surface->h);\r
+//Don't need this crapola--why have a separate buffer just to copy it to THIS\r
+//buffer in order to copy it to the main screen? That's what *I* thought!\r
+/* if (SDL_MUSTLOCK(surface))\r
+ while (SDL_LockSurface(surface) < 0)\r
+ SDL_Delay(10);\r
+\r
+ memcpy(surface->pixels, scrBuffer, VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT * sizeof(uint32));\r
+\r
+ if (SDL_MUSTLOCK(surface))\r
+ SDL_UnlockSurface(surface);//*/\r
+#ifdef TEST_ALPHA_BLENDING\r
+SDL_Rect dstRect = { 100, 100, 30, 30 };\r
+SDL_BlitSurface(someAlphaSurface, NULL, surface, &dstRect);\r
+#endif\r
+\r
+ if (settings.useOpenGL)\r
+ sdlemu_draw_texture(mainSurface, surface, 1/*1=GL_QUADS*/);\r
+ else\r
+ {\r
+// SDL_Rect rect = { 0, 0, surface->w, surface->h };\r
+// SDL_BlitSurface(surface, &rect, mainSurface, &rect);\r
+ SDL_BlitSurface(surface, NULL, mainSurface, NULL);\r
+ SDL_Flip(mainSurface);\r
+ }\r
+}\r
+\r
+/*\r
+//\r
+// Resize the main SDL screen & scrBuffer\r
+//\r
+void ResizeScreen(uint32 width, uint32 height)\r
+{\r
+ char window_title[256];\r
+\r
+ SDL_FreeSurface(surface);\r
+ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 16,\r
+ 0x7C00, 0x03E0, 0x001F, 0);\r
+\r
+ if (surface == NULL)\r
+ {\r
+ WriteLog("Video: Could not create primary SDL surface: %s", SDL_GetError());\r
+ exit(1);\r
+ }\r
+\r
+ if (settings.useOpenGL)\r
+ // This seems to work well for resizing (i.e., changes in the pixel width)...\r
+ sdlemu_resize_texture(surface, mainSurface, settings.glFilter);\r
+ else\r
+ {\r
+ mainSurface = SDL_SetVideoMode(width, height, 16, mainSurfaceFlags);\r
+\r
+ if (mainSurface == NULL)\r
+ {\r
+ WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+ exit(1);\r
+ }\r
+ }\r
+\r
+ sWriteLog(window_title, "Virtual Jaguar (%i x %i)", (int)width, (int)height);\r
+ SDL_WM_SetCaption(window_title, window_title);\r
+\r
+ // This seems to work well for resizing (i.e., changes in the pixel width)...\r
+// if (settings.useOpenGL)\r
+// sdlemu_resize_texture(surface, mainSurface);\r
+}*/\r
+\r
+/*\r
+//\r
+// Fullscreen <-> window switching\r
+//\r
+//NOTE: This does *NOT* work with OpenGL rendering! !!! FIX !!!\r
+void ToggleFullscreen(void)\r
+{\r
+ settings.fullscreen = !settings.fullscreen;\r
+ mainSurfaceFlags &= ~SDL_FULLSCREEN;\r
+\r
+ if (settings.fullscreen)\r
+ mainSurfaceFlags |= SDL_FULLSCREEN;\r
+\r
+ if (!settings.useOpenGL)\r
+ mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+ else\r
+// mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH * 2, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+// mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+ mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+// mainSurface = SDL_SetVideoMode(tom_width, tom_height, 16, mainSurfaceFlags);\r
+\r
+ if (mainSurface == NULL)\r
+ {\r
+ WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+ exit(1);\r
+ }\r
+\r
+ SDL_WM_SetCaption("Apple 2 SDL", "Apple 2 SDL");\r
+}\r
+//*/\r
--- /dev/null
+//\r
+// VIDEO.H: Header file\r
+//\r
+\r
+#ifndef __VIDEO_H__\r
+#define __VIDEO_H__\r
+\r
+#include <SDL.h> // For SDL_Surface\r
+#include "types.h" // For uint32\r
+\r
+//#define VIRTUAL_SCREEN_WIDTH 280\r
+#define VIRTUAL_SCREEN_WIDTH 560\r
+//#define VIRTUAL_SCREEN_HEIGHT 192\r
+#define VIRTUAL_SCREEN_HEIGHT 384\r
+\r
+bool InitVideo(void);\r
+void VideoDone(void);\r
+//void RenderBackbuffer(void);\r
+void RenderScreenBuffer(void);\r
+//void ResizeScreen(uint32 width, uint32 height);\r
+//uint32 GetSDLScreenPitch(void);\r
+//void ToggleFullscreen(void);\r
+\r
+// Exported crap\r
+\r
+//extern uint32 scrBuffer[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT];\r
+extern uint32 * scrBuffer;\r
+extern SDL_Surface * surface;\r
+\r
+#endif // __VIDEO_H__\r