mensis-080507/aclocal.m40100664000076500007650000034577607742401532013216 0ustar gwwgww# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ## Copyright 1996, 1997, 1998, 1999, 2000, 2001 ## Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl _LT_AC_PROG_ECHO_BACKSLASH # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_SAVE AC_LANG_C AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_RESTORE]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, [AC_TRY_LINK([], [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); DllMain (0, 0, 0);], [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) case $host/$CC in *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) # old mingw systems require "-dll" to link a DLL, while more recent ones # require "-mdll" SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) CFLAGS="$SAVE_CFLAGS" ;; *-*-cygwin* | *-*-pw32*) # cygwin systems need to pass --dll to the linker, and not link # crt.o which will require a WinMain@16 definition. lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; esac ;; ]) esac _LT_AC_LTCONFIG_HACK ]) # AC_LIBTOOL_HEADER_ASSERT # ------------------------ AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], [AC_CACHE_CHECK([whether $CC supports assert without backlinking], [lt_cv_func_assert_works], [case $host in *-*-solaris*) if test "$GCC" = yes && test "$with_gnu_ld" != yes; then case `$CC --version 2>/dev/null` in [[12]].*) lt_cv_func_assert_works=no ;; *) lt_cv_func_assert_works=yes ;; esac fi ;; esac]) if test "x$lt_cv_func_assert_works" = xyes; then AC_CHECK_HEADERS(assert.h) fi ])# AC_LIBTOOL_HEADER_ASSERT # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h) ])# _LT_AC_CHECK_DLFCN # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix*) symcode='[[BCDEGRST]]' ;; solaris* | sysv5*) symcode='[[BDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[[ABCDGISTW]]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[[]] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if AC_TRY_EVAL(ac_link) && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AC_FD_CC fi else echo "cannot find nm_test_var in $nlist" >&AC_FD_CC fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC fi else echo "$progname: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # --------------------------------- AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], [# Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi ])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) AC_DIVERT_POP ])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [if test "$cross_compiling" = yes; then : [$4] else AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF AC_DEFUN([_LT_AC_LTCONFIG_HACK], [AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="[$]2" ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([for objdir]) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null AC_MSG_RESULT($objdir) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. AC_MSG_CHECKING([for $compiler option to produce PIC]) AC_CACHE_VAL(lt_cv_prog_cc_pic, [ lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi ]) if test -z "$lt_cv_prog_cc_pic"; then AC_MSG_RESULT([none]) else AC_MSG_RESULT([$lt_cv_prog_cc_pic]) # Check to make sure the pic_flag actually works. AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" AC_TRY_COMPILE([], [], [dnl case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac ], [dnl lt_cv_prog_cc_pic_works=no ]) CFLAGS="$save_CFLAGS" ]) if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : else AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) LDFLAGS="$save_LDFLAGS" ]) # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) AC_CACHE_VAL([lt_cv_compiler_c_o], [ $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&AC_FD_CC lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null ]) compiler_c_o=$lt_cv_compiler_c_o AC_MSG_RESULT([$compiler_c_o]) if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) AC_CACHE_VAL([lt_cv_compiler_o_lo], [ lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi ]) ac_objext="$save_objext" CFLAGS="$save_CFLAGS" ]) compiler_o_lo=$lt_cv_compiler_o_lo AC_MSG_RESULT([$compiler_o_lo]) else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi ]) CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$compiler_rtti_exceptions]) if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \[$]# in 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [[12]].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi AC_MSG_RESULT([$ld_shlibs]) test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. AC_MSG_CHECKING([how to hardcode library paths into programs]) hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi AC_MSG_RESULT([$hardcode_action]) ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi AC_LIBTOOL_DLOPEN_SELF ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], [$rm conftest* echo 'static int dummy;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public 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 /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME ])# _LT_AC_LTCONFIG_HACK # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_LIBTOOL_PICMODE - implement the --with-pic flag # Usage: AC_LIBTOOL_PICMODE[(MODE)] # Where MODE is either `yes' or `no'. If omitted, it defaults to # `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default)]) # AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) # AC_PATH_MAGIC - find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) else MAGIC_CMD=: fi fi ]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | [[A-Za-z]]:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) # AC_PROG_LD_GNU - AC_DEFUN([AC_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi]) with_gnu_ld=$lt_cv_prog_gnu_ld ]) # AC_PROG_LD_RELOAD_FLAG - find reload flag for linker # -- PORTME Some linkers may need a different reload flag. AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], [AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, [lt_cv_ld_reload_flag='-r']) reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ]) # AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], [AC_CACHE_CHECK([how to recognise dependant libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[[012]]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[[78]]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and INCLTDL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and INCLTDL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and INCLTDL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) mensis-080507/AUTHORS0100664000076500007650000000000007742401532012366 0ustar gwwgwwmensis-080507/autom4te.cache/0040775000076500007650000000000011010401707014122 5ustar gwwgwwmensis-080507/autom4te.cache/requests0100664000076500007650000001203011010401712015705 0ustar gwwgww# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, 'AC_FUNC_WAIT3' => 1, 'AC_HEADER_TIME' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_STRUCT_TM' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_FUNC_GETMNTENT' => 1, 'AC_TYPE_MODE_T' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_FUNC_STRNLEN' => 1, 'm4_sinclude' => 1, 'AC_PROG_CXX' => 1, 'AC_PATH_X' => 1, 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, 'AC_PROG_AWK' => 1, '_m4_warn' => 1, 'AC_HEADER_STDC' => 1, 'AC_HEADER_MAJOR' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_LIBSOURCE' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_TYPE_UID_T' => 1, 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'm4_pattern_allow' => 1, 'sinclude' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, 'AC_FUNC_FORK' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_FUNC_GETPGRP' => 1, 'AC_PROG_RANLIB' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_FUNC_SETPGRP' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_CHECK_TYPES' => 1, 'AC_CHECK_MEMBERS' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, 'AC_HEADER_STAT' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_PROG_CPP' => 1, 'AC_C_INLINE' => 1, 'AC_TYPE_PID_T' => 1, 'AC_PROG_LEX' => 1, 'AC_C_CONST' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, 'AC_FUNC_MKTIME' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_CONDITIONAL' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 } ], 'Autom4te::Request' ) ); mensis-080507/autom4te.cache/output.00100664000076500007650000122266411010401707015555 0ustar gwwgww@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.59. @%:@ @%:@ Copyright (C) 2003 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="mensis.h" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CPP EGREP LIBTOOL X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS X_11LIB GLIBS LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared=PKGS build shared libraries default=yes --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both --with-x use the X Window System Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------- @%:@@%:@ @%:@@%:@ Output files. @%:@@%:@ @%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' #AC_DISABLE_SHARED #AC_DISABLE_STATIC # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:$LINENO: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:$LINENO: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:$LINENO: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [12].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public 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 /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion echo "$as_me:$LINENO: checking for library containing dlopen" >&5 echo $ECHO_N "checking for library containing dlopen... $ECHO_C" >&6 if test "${ac_cv_search_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_dlopen=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_dlopen="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_dlopen" = no; then for ac_lib in dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_dlopen="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_dlopen" >&5 echo "${ECHO_T}$ac_cv_search_dlopen" >&6 if test "$ac_cv_search_dlopen" != no; then test "$ac_cv_search_dlopen" = "none required" || LIBS="$ac_cv_search_dlopen $LIBS" fi echo "$as_me:$LINENO: checking for library containing inet_aton" >&5 echo $ECHO_N "checking for library containing inet_aton... $ECHO_C" >&6 if test "${ac_cv_search_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_inet_aton=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_inet_aton="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_inet_aton" = no; then for ac_lib in resolv; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_inet_aton="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5 echo "${ECHO_T}$ac_cv_search_inet_aton" >&6 if test "$ac_cv_search_inet_aton" != no; then test "$ac_cv_search_inet_aton" = "none required" || LIBS="$ac_cv_search_inet_aton $LIBS" fi echo "$as_me:$LINENO: checking for library containing libiconv" >&5 echo $ECHO_N "checking for library containing libiconv... $ECHO_C" >&6 if test "${ac_cv_search_libiconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_libiconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char libiconv (); int main () { libiconv (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_libiconv="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_libiconv" = no; then for ac_lib in iconv; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char libiconv (); int main () { libiconv (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_libiconv="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_libiconv" >&5 echo "${ECHO_T}$ac_cv_search_libiconv" >&6 if test "$ac_cv_search_libiconv" != no; then test "$ac_cv_search_libiconv" = "none required" || LIBS="$ac_cv_search_libiconv $LIBS" fi FreeType2_IncRoot= if sh -c "freetype-config --prefix" >/dev/null 2>&1 ; then FreeType2_IncRoot=`freetype-config --prefix` as_ac_File=`echo "ac_cv_file_$FreeType2_IncRoot/include/freetype2" | $as_tr_sh` echo "$as_me:$LINENO: checking for $FreeType2_IncRoot/include/freetype2" >&5 echo $ECHO_N "checking for $FreeType2_IncRoot/include/freetype2... $ECHO_C" >&6 if eval "test \"\${$as_ac_File+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$FreeType2_IncRoot/include/freetype2"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 if test `eval echo '${'$as_ac_File'}'` = yes; then CPPFLAGS="$CPPFLAGS -I$FreeType2_IncRoot/include/freetype2/" else FreeType2_IncRoot= fi fi if test "FreeType2_IncRoot" = "" >/dev/null 2>&1 ; then echo "$as_me:$LINENO: checking for /usr/include/freetype2" >&5 echo $ECHO_N "checking for /usr/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/freetype2"; then ac_cv_file__usr_include_freetype2=yes else ac_cv_file__usr_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_include_freetype2" >&6 if test $ac_cv_file__usr_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/include/freetype2/" FreeType2_IncRoot="/usr" else echo "$as_me:$LINENO: checking for /usr/local/include/freetype2" >&5 echo $ECHO_N "checking for /usr/local/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_local_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/local/include/freetype2"; then ac_cv_file__usr_local_include_freetype2=yes else ac_cv_file__usr_local_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_local_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_local_include_freetype2" >&6 if test $ac_cv_file__usr_local_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/local/include -I/usr/local/include/freetype2/" FreeType2_IncRoot="/usr/local/" else echo "$as_me:$LINENO: checking for /usr/X11R6/include/freetype2" >&5 echo $ECHO_N "checking for /usr/X11R6/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_X11R6_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/X11R6/include/freetype2"; then ac_cv_file__usr_X11R6_include_freetype2=yes else ac_cv_file__usr_X11R6_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_X11R6_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_X11R6_include_freetype2" >&6 if test $ac_cv_file__usr_X11R6_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/X11R6/include -I/usr/X11R6/include/freetype2/" FreeType2_IncRoot="/usr/X11R6/" else cat >>confdefs.h <<\_ACEOF @%:@define _NO_FREETYPE 1 _ACEOF fi fi fi fi gww_hasbytecode=no echo "$as_me:$LINENO: checking for FT_New_Face in -lfreetype" >&5 echo $ECHO_N "checking for FT_New_Face in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_FT_New_Face+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char FT_New_Face (); int main () { FT_New_Face (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_FT_New_Face=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_FT_New_Face=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_New_Face" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_FT_New_Face" >&6 if test $ac_cv_lib_freetype_FT_New_Face = yes; then echo -n checking if bytecode interpreter is on in freetype.h... echo "$as_me:$LINENO: checking for TT_RunIns in -lfreetype" >&5 echo $ECHO_N "checking for TT_RunIns in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_TT_RunIns+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char TT_RunIns (); int main () { TT_RunIns (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_TT_RunIns=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_TT_RunIns=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_TT_RunIns" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_TT_RunIns" >&6 if test $ac_cv_lib_freetype_TT_RunIns = yes; then gww_hasbytecode="yes" else : fi else cat >>confdefs.h <<\_ACEOF @%:@define _NO_LIBFREETYPE 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define TT_RASTERIZE_FONTVIEW 0 _ACEOF fi echo "$as_me:$LINENO: checking for snprintf" >&5 echo $ECHO_N "checking for snprintf... $ECHO_C" >&6 if test "${ac_cv_func_snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define snprintf to an innocuous variant, in case declares snprintf. For example, HP-UX 11i declares gettimeofday. */ #define snprintf innocuous_snprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char snprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef snprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char snprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_snprintf) || defined (__stub___snprintf) choke me #else char (*f) () = snprintf; #endif #ifdef __cplusplus } #endif int main () { return f != snprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_snprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_snprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_snprintf" >&5 echo "${ECHO_T}$ac_cv_func_snprintf" >&6 if test $ac_cv_func_snprintf = yes; then : else cat >>confdefs.h <<\_ACEOF @%:@define _NO_SNPRINTF 1 _ACEOF fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const _ACEOF fi echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF @%:@define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi X_11LIB=-lX11 if test "$no_x" = "yes"; then X_11LIB= else echo "$as_me:$LINENO: checking for XOpenDevice in -lXi" >&5 echo $ECHO_N "checking for XOpenDevice in -lXi... $ECHO_C" >&6 if test "${ac_cv_lib_Xi_XOpenDevice+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXi $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDevice (); int main () { XOpenDevice (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xi_XOpenDevice=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xi_XOpenDevice=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xi_XOpenDevice" >&5 echo "${ECHO_T}$ac_cv_lib_Xi_XOpenDevice" >&6 if test $ac_cv_lib_Xi_XOpenDevice = yes; then X_11LIB="-lXi -lX11" else cat >>confdefs.h <<\_ACEOF @%:@define _NO_XINPUT 1 _ACEOF fi echo "$as_me:$LINENO: checking for XkbQueryExtension in -lxkbui" >&5 echo $ECHO_N "checking for XkbQueryExtension in -lxkbui... $ECHO_C" >&6 if test "${ac_cv_lib_xkbui_XkbQueryExtension+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lxkbui $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XkbQueryExtension (); int main () { XkbQueryExtension (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_xkbui_XkbQueryExtension=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_xkbui_XkbQueryExtension=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_xkbui_XkbQueryExtension" >&5 echo "${ECHO_T}$ac_cv_lib_xkbui_XkbQueryExtension" >&6 if test $ac_cv_lib_xkbui_XkbQueryExtension = yes; then X_11LIB="$X_11LIB -lxkbui" else cat >>confdefs.h <<\_ACEOF @%:@define _NO_XKB 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_create (); int main () { pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pthread_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread_pthread_create=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 if test $ac_cv_lib_pthread_pthread_create = yes; then : else : fi GLIBS= echo "$as_me:$LINENO: checking for u_strcpy in -lgdraw" >&5 echo $ECHO_N "checking for u_strcpy in -lgdraw... $ECHO_C" >&6 if test "${ac_cv_lib_gdraw_u_strcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgdraw -lgutils -lgunicode $X_LIBS $X_PRE_LIBS $X_11LIB -lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char u_strcpy (); int main () { u_strcpy (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gdraw_u_strcpy=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gdraw_u_strcpy=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gdraw_u_strcpy" >&5 echo "${ECHO_T}$ac_cv_lib_gdraw_u_strcpy" >&6 if test $ac_cv_lib_gdraw_u_strcpy = yes; then GLIBS="-lgdraw -lgutils -lgunicode" else : fi if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo "$as_me:$LINENO: checking for fontforge/basics.h" >&5 echo $ECHO_N "checking for fontforge/basics.h... $ECHO_C" >&6 if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_fontforge_basics_h" >&5 echo "${ECHO_T}$ac_cv_header_fontforge_basics_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking fontforge/basics.h usability" >&5 echo $ECHO_N "checking fontforge/basics.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking fontforge/basics.h presence" >&5 echo $ECHO_N "checking fontforge/basics.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: fontforge/basics.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: fontforge/basics.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: fontforge/basics.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: fontforge/basics.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: fontforge/basics.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: fontforge/basics.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: fontforge/basics.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: fontforge/basics.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for fontforge/basics.h" >&5 echo $ECHO_N "checking for fontforge/basics.h... $ECHO_C" >&6 if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_fontforge_basics_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_fontforge_basics_h" >&5 echo "${ECHO_T}$ac_cv_header_fontforge_basics_h" >&6 fi if test $ac_cv_header_fontforge_basics_h = yes; then : else echo "You must install the include files for fontforge" echo "before building mensis." exit 1 fi if test "$GLIBS" "=" "" >/dev/null 2>&1 ; then GLIBS="-L.. -lgdraw -lgutils -lgunicode" if test \! -e ../.libs/libgunicode.la >/dev/null 2>&1 ; then echo "warning: You must build fontforge (or at least its libaries)" echo "before building mensis." fi fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. cat >confdef2opt.sed <<\_ACEOF t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g s,\$,$$,g p _ACEOF # We use echo to avoid assuming a particular line-breaking character. # The extra dot is to prevent the shell from consuming trailing # line-breaks from the sub-command output. A line-break within # single-quotes doesn't work because, if this script is created in a # platform that uses two characters for line-breaks (e.g., DOS), tr # would break. ac_LF_and_DOT=`echo; echo .` DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` rm -f confdef2opt.sed ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@X_11LIB@,$X_11LIB,;t t s,@GLIBS@,$GLIBS,;t t s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test "$gww_hasbytecode" = "no" >/dev/null 2>&1 ; then echo " ******************************************************************" echo " * mensis can do a lot more if you build it on a system that has *" echo " * the byte code interpretter enabled in freetype. See the free *" echo " * type patent page (http://freetype.sf.net/patents.html), to see *" echo " * if you can legally do this, and if so read the freetype docs *" echo " * on how to set TT_CONFIG_OPTION_BYTECODE_INTERPRETER *" echo " ******************************************************************" fi echo Configuration defines: $DEFS if test "$FreeType2_TT_SRC_DIR" \!= "" >/dev/null 2>&1 ; then echo FreeType sources: $FreeType2_TT_SRC_DIR fi mensis-080507/autom4te.cache/traces.00100664000076500007650000005701211010401707015466 0ustar gwwgwwm4trace:configure.in:3: -1- AC_INIT([mensis.h]) m4trace:configure.in:3: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:3: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:3: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:3: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:3: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:3: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:3: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:3: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:3: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:3: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:3: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:3: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:3: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:3: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:3: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:3: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.in:3: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:3: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:3: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:3: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:3: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:3: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:3: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.in:3: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:3: -1- AC_SUBST([build_alias]) m4trace:configure.in:3: -1- AC_SUBST([host_alias]) m4trace:configure.in:3: -1- AC_SUBST([target_alias]) m4trace:configure.in:3: -1- AC_SUBST([DEFS]) m4trace:configure.in:3: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:3: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:3: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:3: -1- AC_SUBST([LIBS]) m4trace:configure.in:4: -1- AC_PROG_CC m4trace:configure.in:4: -1- AC_SUBST([CC]) m4trace:configure.in:4: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:4: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:4: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:4: -1- AC_SUBST([CC]) m4trace:configure.in:4: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:4: -1- AC_SUBST([CC]) m4trace:configure.in:4: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:4: -1- AC_SUBST([CC]) m4trace:configure.in:4: -1- AC_SUBST([CC]) m4trace:configure.in:4: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:4: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:4: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:5: -1- AC_PROG_INSTALL m4trace:configure.in:5: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:8: -1- AC_PROG_LIBTOOL m4trace:configure.in:8: -1- AC_CANONICAL_HOST m4trace:configure.in:8: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.in:8: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.in:8: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.in:8: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:8: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.in:8: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.in:8: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.in:8: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:8: -1- AC_PROG_LN_S m4trace:configure.in:8: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.in:8: -1- AC_SUBST([ECHO]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_CHECK_TOOL_PREFIX' is obsolete. You should run autoupdate.], [autoconf/programs.m4:188: AC_CHECK_TOOL_PREFIX is expanded from... configure.in:8: AC_CHECK_TOOL_PREFIX is required by... aclocal.m4:3173: AC_PATH_MAGIC is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- AC_SUBST([RANLIB]) m4trace:configure.in:8: -1- AC_SUBST([ac_ct_RANLIB]) m4trace:configure.in:8: -1- AC_SUBST([STRIP]) m4trace:configure.in:8: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. You should run autoupdate.], [autoconf/c.m4:71: AC_LANG_C is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:360: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from... configure.in:8: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:360: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from... configure.in:8: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:360: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from... configure.in:8: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:360: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from... configure.in:8: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe], [aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... aclocal.m4:2980: _LT_AC_LTCONFIG_HACK is expanded from... aclocal.m4:150: AC_LIBTOOL_SETUP is expanded from... configure.in:8: AC_LIBTOOL_SETUP is required by... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.in:8: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.in:8: -1- AC_CHECK_HEADERS([dlfcn.h]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.in:8: -1- AC_HEADER_STDC m4trace:configure.in:8: -1- AC_PROG_CPP m4trace:configure.in:8: -1- AC_SUBST([CPP]) m4trace:configure.in:8: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:8: -1- AC_SUBST([CPP]) m4trace:configure.in:8: -1- AC_SUBST([EGREP]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:8: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:8: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:8: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:8: -1- AC_SUBST([LIBTOOL]) m4trace:configure.in:19: -1- _m4_warn([cross], [cannot check for file existence when cross compiling], [autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... configure.in:19: the top level]) m4trace:configure.in:31: -1- _m4_warn([cross], [cannot check for file existence when cross compiling], [autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... configure.in:31: the top level]) m4trace:configure.in:31: -1- _m4_warn([cross], [cannot check for file existence when cross compiling], [autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... configure.in:31: the top level]) m4trace:configure.in:31: -2- AC_DEFINE_TRACE_LITERAL([_NO_FREETYPE]) m4trace:configure.in:31: -1- _m4_warn([cross], [cannot check for file existence when cross compiling], [autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... autoconf/general.m4:2315: AC_CHECK_FILE is expanded from... configure.in:31: the top level]) m4trace:configure.in:49: -1- AC_CHECK_LIB([freetype], [FT_New_Face], [ dnl only check for the interp if they've got freetype (ie. they might have dnl the headers, but no library, and that would confuse us mightily echo -n checking if bytecode interpreter is on in freetype.h... AC_CHECK_LIB(freetype, TT_RunIns, gww_hasbytecode="yes", : )], [ AC_DEFINE(_NO_LIBFREETYPE) AC_DEFINE(TT_RASTERIZE_FONTVIEW,0) ]) m4trace:configure.in:49: -1- AC_CHECK_LIB([freetype], [TT_RunIns], [gww_hasbytecode="yes"], [: ]) m4trace:configure.in:49: -1- AC_DEFINE_TRACE_LITERAL([_NO_LIBFREETYPE]) m4trace:configure.in:49: -1- AC_DEFINE_TRACE_LITERAL([TT_RASTERIZE_FONTVIEW]) m4trace:configure.in:53: -2- AC_DEFINE_TRACE_LITERAL([_NO_SNPRINTF]) m4trace:configure.in:55: -1- AC_C_CONST m4trace:configure.in:55: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.in:55: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) m4trace:configure.in:56: -1- AC_PATH_X m4trace:configure.in:56: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) m4trace:configure.in:56: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) m4trace:configure.in:56: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:56: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) m4trace:configure.in:56: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:56: -1- AC_SUBST([X_CFLAGS]) m4trace:configure.in:56: -1- AC_SUBST([X_PRE_LIBS]) m4trace:configure.in:56: -1- AC_SUBST([X_LIBS]) m4trace:configure.in:56: -1- AC_SUBST([X_EXTRA_LIBS]) m4trace:configure.in:57: -1- AC_SUBST([X_11LIB]) m4trace:configure.in:66: -2- AC_DEFINE_TRACE_LITERAL([_NO_XINPUT]) m4trace:configure.in:66: -1- AC_CHECK_LIB([Xi], [XOpenDevice], [X_11LIB="-lXi -lX11" ], [cat >>confdefs.h <<\_ACEOF @%:@define _NO_XINPUT 1 _ACEOF ], [$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 ]) m4trace:configure.in:67: -2- AC_DEFINE_TRACE_LITERAL([_NO_XKB]) m4trace:configure.in:67: -1- AC_CHECK_LIB([xkbui], [XkbQueryExtension], [X_11LIB="$X_11LIB -lxkbui" ], [cat >>confdefs.h <<\_ACEOF @%:@define _NO_XKB 1 _ACEOF ], [$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 ]) m4trace:configure.in:70: -1- AC_CHECK_LIB([pthread], [pthread_create], [:], [: ]) m4trace:configure.in:71: -1- AC_SUBST([GLIBS]) m4trace:configure.in:73: -1- AC_CHECK_LIB([gdraw], [u_strcpy], [GLIBS="-lgdraw -lgutils -lgunicode"], [: ], [-lgutils -lgunicode $X_LIBS $X_PRE_LIBS $X_11LIB -lm ]) m4trace:configure.in:87: -1- AC_CONFIG_FILES([Makefile]) m4trace:configure.in:87: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) m4trace:configure.in:87: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:87: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) mensis-080507/bcdebug.c0100664000076500007650000020401010160562177013065 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include "ttfinstrs.h" #include /*#define TRACEINSTR 1*/ #if TT_CONFIG_OPTION_BYTECODE_DEBUG && (!TT_CONFIG_OPTION_FREETYPE_DEBUG || !TT_CONFIG_OPTION_BYTECODE_INTERPRETER) /* Best to use FreeType's interpretter if it's available */ static int ttrint(double val) { if ( val>=0 ) return( floor(val+.5)); /* This is slightly different from rint which rounds one half either up or down. tt alwas rounds up */ return( -floor(-val+.5)); /* I think... */ } static int doround(struct ttfstate *state, int val) { int wasneg = false; if ( val<0 ) { wasneg = true; val = -val; } switch ( state->rounding ) { case rnd_half: val = (val&~63)+32; break; case rnd_grid: val = (val+32)&~63; break; case rnd_dbl: val = (val+16)&~31; break; case rnd_down: val = val&~63; break; case rnd_up: val = (val+63)&~63; break; case rnd_off: val = val; break; case rnd_sround: case rnd_sround45: { int period = ((state->sround_value)&0xc0)>>6; int phase = (state->sround_value&0x30)>>4; int threshold = (state->sround_value&0xf); /* Docs say it's 3 bits, but they lie */ if ( period==0 ) /* half grid */ period = 64/2; else if ( period==2 ) period = 128; else period = 64; phase = period*phase / 4; if ( threshold==0 ) threshold = period-1; else threshold = (threshold-4) * period/8; if ( val>=0 ) { if ( state->rounding==rnd_sround ) val = (val-phase+threshold) & -period; else val = ((val-phase+threshold) / period) * period; if ( val<0 ) val = 0; val += phase; } else { if ( state->rounding==rnd_sround ) val = -((threshold-phase-val) & -period); else val = -((threshold-phase-val)/ period ) * period; if ( val>0 ) val = 0; val -= phase; } } break; default: fprintf(stderr, "Unknown rounding mode %d\n", state->rounding ); } if ( wasneg ) val = -val; return( val ); } static int pop(struct ttfstate *state,struct ttfargs *args) { int val; if ( state->sp<=0 ) { fprintf( stderr, "Attempt to pop something off the stack when it is empty in %s\n", instrs[*(state->pc-1)]); val = 0; } else val = state->stack[--state->sp]; if ( args!=NULL ) { if ( !(args->used&ttf_sp0) ) { args->spvals[0] = val; args->used |= ttf_sp0; } else if ( !(args->used&ttf_sp1) ) { args->spvals[1] = val; args->used |= ttf_sp1; } else if ( !(args->used&ttf_sp2) ) { args->spvals[2] = val; args->used |= ttf_sp2; } else if ( !(args->used&ttf_sp3) ) { args->spvals[3] = val; args->used |= ttf_sp3; } } # if TRACEINSTR /* DEBUG */ fprintf(stderr, "pop: %d ", val ); #endif return( val ); } static void push(struct ttfstate *state,int val,struct ttfargs *args) { if ( args!=NULL ) { if ( !(args->used&ttf_pushed) ) { args->used |= ttf_pushed; args->pushed = val; } else args->used |= ttf_pushedmore; } if ( state->sp>=state->stack_max ) { fprintf( stderr, "Stack grows bigger than indicated in maxp table\n" ); MaxPSetStack(state->maxp,state->sp+1); state->stack = grealloc(state->stack,(state->sp+1)*sizeof(int32)); state->stack_max = state->sp+1; } state->stack[state->sp++] = val; # if TRACEINSTR /* DEBUG */ /* Don't show pushes, just too much junk if we do (doesn't work, push increments pc as it goes) */ if ( !(state->pc[-1]==ttf_npushb || state->pc[-1]==ttf_npushw || (state->pc[-1]>=ttf_pushb && state->pc[-1]<=ttf_pushw+7)) ) fprintf(stderr, "push: %d ", val ); #endif } static struct ttfactions *AddAction(struct ttfstate *state, int pt,int base, int interp, int offset, int round, int mind, int cvt) { struct ttfactions *act = gcalloc(1,sizeof(struct ttfactions)); struct ttfactions *test, *prev; int c; act->pnum = pt; act->basedon = base; act->interp = interp; act->infunc = -1; act->distance = offset; act->cvt_entry = cvt; act->rounded = round!=0?1:0; act->min = mind!=0?1:0; act->instr = state->pc-1; act->freedom = state->freedom; act->was = state->zones[1].moved[pt]; if ( state->retsp!=0 ) { int i; act->infunc = -2; for ( i=0; ifdefcnt; ++i ) if ( act->instr >= state->fdefs[i].data && act->instrfdefs[i].data+state->fdefs[i].len ) { act->infunc = i; break; } } c = (act->freedom.x!=0?1:0) + (act->freedom.y!=0?2:0); for ( prev=NULL, test=state->acts; test!=NULL && (pt>test->pnum || (pt==test->pnum && c>=(test->freedom.x!=0?1:0) + (test->freedom.y!=0?2:0))); prev = test, test = test->acts ); if ( prev==NULL ) state->acts = act; else prev->acts = act; act->acts = test; return( act ); } static void AdjustPointBy(struct ttfstate *state,int pt,int zone,int32 offset, int round) { /* offset is 26.6 */ double projection; struct ttfactions *act = NULL; if ( pt<0 || pt>= state->zones[zone].point_cnt ) fprintf(stderr, "Point out of range: %d\n", pt ); else if ( (projection=(state->projection.x*state->freedom.x)+(state->projection.y*state->freedom.y))>= -.00001 && projection<.00001 ) fprintf(stderr, "Projection and freedom vectors are orthogonal\n" ); else { if ( zone==1 ) act = AddAction(state,pt,pt,-1,offset,round,false,-1); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* Manipulating a point's position is protected */ # if TRACEINSTR fprintf( stderr, " was: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif offset = ttrint(offset/projection); state->zones[zone].moved[pt].x += offset*state->freedom.x; state->zones[zone].moved[pt].y += offset*state->freedom.y; if ( state->freedom.x!=0 ) state->zones[zone].flags[pt] |= pt_xtouched; if ( state->freedom.y!=0 ) state->zones[zone].flags[pt] |= pt_ytouched; if ( act!=NULL ) act->is = state->zones[zone].moved[pt]; # if TRACEINSTR fprintf( stderr, " is: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif #endif } } static void SetPointRelativeTo(struct ttfstate *state,int pt,int zone, int rpt, int rzone, int32 offset, int round,int mind, int cvt) { /* offset is 26.6 */ double projection; struct ttfactions *act = NULL; if ( pt<0 || pt>= state->zones[zone].point_cnt ) fprintf(stderr, "Point out of range: %d\n", pt ); else if ( (projection=(state->projection.x*state->freedom.x)+(state->projection.y*state->freedom.y))>= -.00001 && projection<.00001 ) fprintf(stderr, "Projection and freedom vectors are orthogonal\n" ); else { if ( zone==1 ) act = AddAction(state,pt,rpt,-1,offset,round,mind,cvt); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* Manipulating a point's position is protected */ # if TRACEINSTR fprintf( stderr, " was: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif offset -= ttrint( (state->zones[zone].moved[pt].x-state->zones[rzone].moved[rpt].x)*state->projection.x+ (state->zones[zone].moved[pt].y-state->zones[rzone].moved[rpt].y)*state->projection.y ); offset = ttrint(offset/projection); state->zones[zone].moved[pt].x += offset*state->freedom.x; state->zones[zone].moved[pt].y += offset*state->freedom.y; if ( state->freedom.x!=0 ) state->zones[zone].flags[pt] |= pt_xtouched; if ( state->freedom.y!=0 ) state->zones[zone].flags[pt] |= pt_ytouched; if ( act!=NULL ) act->is = state->zones[zone].moved[pt]; # if TRACEINSTR fprintf( stderr, " is: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif #endif } } static void InterpolatePointTo(struct ttfstate *state,int pt,int zone,double pos, int round,int cvt,int p1, int p2) { /* pos is 26.6 */ /* Set the point's position so that it's projection on the pv is pos */ double projection; struct ttfactions *act = NULL; if ( pt<0 || pt>= state->zones[zone].point_cnt ) fprintf(stderr, "Point out of range: %d\n", pt ); else if ( (projection=(state->projection.x*state->freedom.x)+(state->projection.y*state->freedom.y))>= -.00001 && projection<.00001 ) fprintf(stderr, "Projection and freedom vectors are orthogonal\n" ); else { if ( zone==1 ) act = AddAction(state,pt,p1,p2,pos,round,false,cvt); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* Manipulating a point's position is protected */ # if TRACEINSTR fprintf( stderr, " was: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif /* I used to try calculating this in a coordinate system with the */ /* freedom vector as one of the axes, but that doesn't work because */ /* are measurements are along the projection vector and things get */ /* all screwed up. */ pos -= ttrint( (state->zones[zone].moved[pt].x*state->projection.x)+ (state->zones[zone].moved[pt].y*state->projection.y) ); pos = ttrint( pos/projection ); state->zones[zone].moved[pt].x += ttrint(pos*state->freedom.x); state->zones[zone].moved[pt].y += ttrint(pos*state->freedom.y); if ( state->freedom.x!=0 ) state->zones[zone].flags[pt] |= pt_xtouched; if ( state->freedom.y!=0 ) state->zones[zone].flags[pt] |= pt_ytouched; if ( act!=NULL ) act->is = state->zones[zone].moved[pt]; # if TRACEINSTR fprintf( stderr, " is: (%d,%d)", state->zones[zone].moved[pt].x, state->zones[zone].moved[pt].y ); # endif #endif } } static void SetPointTo(struct ttfstate *state,int pt,int zone,int32 pos, int round,int cvt) { InterpolatePointTo(state,pt,zone,pos,round,cvt,-1,-1); } static void ShiftContour(struct ttfstate *state,int start,int end,int touched, int instr) { int off = instr==ttf_iup ? state->zones[1].moved[touched].y-state->zones[1].points[touched].y : state->zones[1].moved[touched].x-state->zones[1].points[touched].x; int i; struct ttfactions *act; for ( i=start; i<=end; ++i ) { if ( i==touched ) /* Don't move again */; else { act = AddAction(state,i,touched,touched,off,false,false,-1); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER # if TRACEINSTR fprintf( stderr, " was: (%d,%d)", state->zones[1].moved[i].x, state->zones[1].moved[i].y ); # endif if ( instr==ttf_iup ) state->zones[1].moved[i].y = state->zones[1].points[i].y + off; else state->zones[1].moved[i].x = state->zones[1].points[i].x + off; # if TRACEINSTR fprintf( stderr, " is: (%d,%d)", state->zones[1].moved[i].x, state->zones[1].moved[i].y ); # endif #endif act->is = state->zones[1].moved[i]; } } } static void InterpolateBetween(struct ttfstate *state,int touched1,int touched2, int first,int end,int instr) { int i; IPoint *pre = &state->zones[1].points[touched1], *post = &state->zones[1].points[touched2]; IPoint *mpre = &state->zones[1].moved[touched1], *mpost = &state->zones[1].moved[touched2]; double off; struct ttfactions *act; for ( i=first; i<=end; ++i ) { IPoint *cur = &state->zones[1].points[i], *mcur = &state->zones[1].moved[i]; # if TRACEINSTR fprintf( stderr, " was: (%d,%d)", state->zones[1].moved[i].x, state->zones[1].moved[i].y ); # endif if ( instr==ttf_iup ) { if (( cur->y<=pre->y && pre->y<=post->y ) || (cur->y>=pre->y && pre->y>=post->y )) { off = mpre->y-pre->y; } else if (( cur->y<=post->y && post->y<=pre->y ) || (cur->y>=post->y && post->y>=pre->y )) { off = (mpost->y-post->y); } else if ( post->y!=pre->y ) { double mid = (cur->y-pre->y)/(double) (post->y-pre->y); off = mid*(mpost->y-post->y) + (1-mid)*(mpre->y-pre->y); } else { /* I dunno... average the two? */ off = (mpost->y-post->y + mpre->y-pre->y)/2; } act = AddAction(state,i,touched1,touched2,off,false,false,-1); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER mcur->y = cur->y + off; #endif } else { if (( cur->x<=pre->x && pre->x<=post->x ) || (cur->x>=pre->x && pre->x>=post->x )) { off = mpre->x-pre->x; } else if (( cur->x<=post->x && post->x<=pre->x ) || (cur->x>=post->x && post->x>=pre->x )) { off = mpost->x-post->x; } else if ( post->x!=pre->x ) { double mid = (cur->x-pre->x)/(double) (post->x-pre->x); off = mid*(mpost->x-post->x) + (1-mid)*(mpre->x-pre->x); } else { /* I dunno... average the two? */ off = (mpost->x-post->x + mpre->x-pre->x)/2; } act = AddAction(state,i,touched1,touched2,off,false,false,-1); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER mcur->x = cur->x + off; #endif } act->is = state->zones[1].moved[i]; # if TRACEINSTR fprintf( stderr, " is: (%d,%d)", state->zones[1].moved[i].x, state->zones[1].moved[i].y ); # endif } } static void doiup(struct ttfstate *state,int instr) { /* Ignores freedom & projection vectors, either in y dir(iup) or x(iup+1) */ /* interpolates any untouched points which fall sequentially between */ /* two touched points */ /* I think this means the end points */ /* can't be interpolated */ /* If point is outside segment between two end points (on axis) */ /* then point is shifted by closest point */ /* Undocumented (From FreeType) if only one point on a contour is */ /* touched, then shift the entire thing by the amount it was shifted*/ /* I had assumed from reading the docs that to be moved the points had to */ /* have their immediate neighbors touched, but that is not the case. I */ /* had also assumed that contours were ignored, but that is not the case */ /* I had assumed that there was no wrap around, but that is not the case */ /* I wish someone with better writing skills had written up the docs. */ int mask, i; int start, end, first, last; BasePoint oldfreedom; oldfreedom = state->freedom; if ( instr==ttf_iup ) { state->freedom.x = 0; state->freedom.y = 1; } else { state->freedom.x = 1; state->freedom.y = 0; } if ( state->zp2==0 ) fprintf( stderr, "MS says it is an error to apply IUP to zone 0, but that is done here.\n" ); if ( state->in_fpgm || state->in_prep ) { fprintf( stderr, "Attempt to use IUP when in fpgm or prep\n" ); return; } mask = instr==ttf_iup ? pt_ytouched : pt_xtouched; start = 0; do { for ( end=start; endzones[1].point_cnt-3 && !(state->zones[1].flags[end]&pt_endcontour); ++end ); first = last = -1; for ( i=start; i<=end; ++i ) { if ( state->zones[1].flags[i]&mask ) { if ( last!=-1 ) InterpolateBetween(state,last,i,last+1,i-1,instr); if ( first==-1 ) first = i; last = i; } } if ( first==-1 ) /* No points touched on contour, leave it alone*/; else if ( first==last ) /* One point, shift the entire contour */ ShiftContour(state,start,end,first,instr); else { InterpolateBetween(state,last,first,last+1,end,instr); InterpolateBetween(state,last,first,start,first-1,instr); } start = end+1; } while ( startzones[1].point_cnt-3 ); state->freedom = oldfreedom; } static void skiptoendif(struct ttfstate *state, int elsetoo) { int nest = 0; int elseop = elsetoo? ttf_else : ttf_eif; int op, n; op = *state->pc; while ( state->pcend_pc && (nest>0 || (op!=ttf_eif && op!=elseop ))) { if ( op == ttf_if ) ++nest; else if ( op == ttf_eif ) --nest; else if ( op >= ttf_pushb && op <= ttf_pushb+7 ) state->pc += op-ttf_pushb + 1; else if ( op >= ttf_pushw && op <= ttf_pushw+7 ) state->pc += 2*(op-ttf_pushw + 1); else if ( op == ttf_npushb ) { n = *++state->pc; state->pc += n; } else if ( op == ttf_npushw ) { n = *++state->pc; state->pc += 2*n; } op = *++state->pc; } } static void skiptoendf(struct ttfstate *state) { int op, n; while ( state->pcend_pc && *state->pc!=ttf_endf ) { op = *(state->pc++); if(op==ttf_npushb) { n = *(state->pc++); state->pc += n; } else if(op==ttf_npushw) { n = *(state->pc++); state->pc += 2*n; } else if(op>=ttf_pushb&&op<=ttf_pushb+7) state->pc += op-ttf_pushb+1; else if(op>=ttf_pushw&&op<=ttf_pushw+7) state->pc += 2*(op-ttf_pushw+1); } } static void TtfExecuteInstrs(struct ttfstate *state,uint8 *data,int len) { int instr, n, val, val2, val3, i; struct ttfargs *args; double dval, dval2; state->pc = state->startcall = data; state->end_pc = data+len; while ( true ) { while ( state->pc>=state->end_pc ) { if ( state->retsp==0 ) return; if ( --state->callcnt >= 0 ) state->pc = state->startcall; else { if ( state->startcall==NULL ) state->in_instr = false; --state->retsp; state->pc = state->returns[state->retsp]; state->end_pc = state->ends[state->retsp]; state->callcnt = state->cnts[state->retsp]; state->startcall = state->starts[state->retsp]; # if TRACEINSTR fprintf( stderr, "Return\n" ); # endif } } instr= *state->pc++; if ( state->idefs!=NULL && state->idefs[instr].data!=NULL && !state->in_instr ) { if ( state->retsp>=SUB_MAX ) fprintf( stderr, "Instruction/Function calls nested too deeply, ignored (in instruction %x)\n", instr ); else { state->returns[state->retsp] = state->pc; state->ends[state->retsp] = state->end_pc; state->cnts[state->retsp] = state->callcnt; state->starts[state->retsp] = state->startcall; state->pc = state->idefs[val].data; state->end_pc = state->pc + state->idefs[val].len; state->callcnt = -1; state->startcall = NULL; state->in_instr = true; ++state->retsp; instr= *state->pc++; } } args = NULL; if ( state->retsp==0 && state->args!=NULL ) { args = &state->args[(state->pc-1-data)]; if ( args->loopcnt==0 ) { args->rp0val = state->rp0; args->rp1val = state->rp1; args->rp2val = state->rp2; args->rp2val = state->rp2; if ( state->zp0 ) args->zs |= 1; if ( state->zp1 ) args->zs |= 2; if ( state->zp2 ) args->zs |= 4; } ++args->loopcnt; } # if TRACEINSTR fprintf( stderr, "%04d: %s rp0=%d rp1=%d rp2=%d zs=%x loop=%d ", state->pc-1-state->startcall, instrs[instr], state->rp0, state->rp1, state->rp2, (state->zp0?1:0)|(state->zp1?2:0)|(state->zp2?4:0), state->loop ); #endif switch( instr ) { case ttf_pushb: case ttf_pushb+1: case ttf_pushb+2: case ttf_pushb+3: case ttf_pushb+4: case ttf_pushb+5: case ttf_pushb+6: case ttf_pushb+7: n = instr-ttf_pushb+1; for ( i=0; ipc++),args); break; case ttf_pushw: case ttf_pushw+1: case ttf_pushw+2: case ttf_pushw+3: case ttf_pushw+4: case ttf_pushw+5: case ttf_pushw+6: case ttf_pushw+7: n = instr-ttf_pushw+1; for ( i=0; ipc++)<<8; val |= *(state->pc++); push(state,(short) val,args); } break; case ttf_npushb: n = *(state->pc++); for ( i=0; ipc++),args); break; case ttf_npushw: n = *(state->pc++); for ( i=0; ipc++)<<8; val |= *(state->pc++); push(state,(short) val,args); } break; /* pops. some we don't implement, others obsolete */ case ttf_aa: case ttf_pop: case ttf_sangw: case ttf_debug: pop(state,args); break; /* unary arithmetric */ case ttf_abs: case ttf_ceiling: case ttf_even: case ttf_floor: case ttf_not: case ttf_getinfo: case ttf_neg: case ttf_odd: case ttf_rcvt: case ttf_rs: case ttf_nround: case ttf_nround+1: case ttf_nround+2: case ttf_nround+3: case ttf_round: case ttf_round+1: case ttf_round+2: case ttf_round+3: val = pop(state,args); switch ( instr ) { case ttf_abs: if ( val<0 ) val = -val; break; case ttf_ceiling: val = ceil(val); break; case ttf_even: val = doround(state,val); if ( val&64 ) val = 0; else val = 1; break; case ttf_floor: val = floor(val); break; case ttf_not: val = !val; break; case ttf_nround: case ttf_nround+1: case ttf_nround+2: case ttf_nround+3: break; case ttf_neg: val = -val; break; case ttf_odd: val = doround(state,val); if ( val&64 ) val = 1; else val = 0; break; case ttf_rcvt: if ( state->cvt==NULL || val<0 || val>=state->cvt->newlen/2 ) { fprintf( stderr, "Attempt to read cvt out of bounds %d\n", val ); val = 0; } else val = ttrint(state->cvtvals[val]*state->scale); break; /* the white, black, grey distinctions depend on engine characteristics */ /* so to me they are all the same. */ case ttf_round: case ttf_round+1: case ttf_round+2: case ttf_round+3: val = doround(state,val); break; case ttf_rs: if ( state->storage==NULL || val<0 || val>=state->store_max ) { fprintf( stderr, "Attempt to read storage out of bounds %d\n", val ); val = 0; } else val = state->storage[val]; break; case ttf_getinfo: val2 = 0; if ( val&1 ) val2 = 0; /* Engine (interpretter) version */ if ( val&2 ) /* Never stretched, don't set bit 8 */; if ( val&4 ) /* Never rotated, don't set bit 9 */; val = val2; break; } push(state,val,args); break; /* binary arithmetric */ case ttf_add: case ttf_and: case ttf_div: case ttf_eq: case ttf_gt: case ttf_gteq: case ttf_lt: case ttf_lteq: case ttf_max: case ttf_mul: case ttf_min: case ttf_neq: case ttf_or: case ttf_sub: val2 = pop(state,args); val = pop(state,args); switch ( instr ) { case ttf_add: val += val2; break; case ttf_sub: val -= val2; break; case ttf_div: val = ttrint((val*64.0)/val2); break; case ttf_mul: val = ttrint((val/64.0)*val2); break; case ttf_and: val = val && val2; break; case ttf_or: val = val || val2; break; case ttf_eq: val = (val==val2); break; case ttf_gt: val = (val>val2); break; case ttf_gteq: val = (val>=val2); break; case ttf_lt: val = (valval2 ) val = val2; break; } push(state,val,args); break; /* storing values */ case ttf_wcvtf: case ttf_wcvtp: case ttf_ws: val = pop(state,args); val2 = pop(state,args); if ( instr==ttf_ws ) { if ( val2<0 || val2>65536 ) fprintf( stderr, "Attempt to write storage out of bounds %d\n", val2 ); else { if ( state->storage==NULL || val2>=state->store_max ) { MaxPSetStorage(state->maxp,val2+1); if ( state->storage==NULL ) state->storage = gcalloc((val2+1),sizeof(int32)); else { state->storage = grealloc(state->storage,(val2+1)*sizeof(int32)); for ( i=state->store_max; i<=val2; ++i ) state->storage[i] = 0; } } state->storage[val2] = val; } } else { if ( instr==ttf_wcvtp ) val = (val/state->scale); if ( state->cvt==NULL || val2<0 || val2>=state->cvt->newlen/2 ) { fprintf( stderr, "Attempt to write cvt out of bounds %d\n", val2 ); } else state->cvtvals[val2] = val; } break; /* state setters with no values */ case ttf_flipoff: case ttf_flipon: state->auto_flip = instr==ttf_flipon; break; case ttf_rdtg: state->rounding = rnd_down; break; case ttf_roff: state->rounding = rnd_off; break; case ttf_rtdg: state->rounding = rnd_dbl; break; case ttf_rtg: state->rounding = rnd_grid; break; case ttf_rthg: state->rounding = rnd_half; break; case ttf_rutg: state->rounding = rnd_up; break; case ttf_sfvtca: state->freedom.x = 0; state->freedom.y = 1; break; case ttf_sfvtca+1: state->freedom.x = 1; state->freedom.y = 0; break; case ttf_sfvtpv: state->freedom = state->projection; break; case ttf_spvtca: state->projection.x = 0; state->projection.y = 1; state->dual = state->projection; break; case ttf_spvtca+1: state->projection.x = 1; state->projection.y = 0; state->dual = state->projection; break; case ttf_svtca: state->projection.x = 0; state->projection.y = 1; state->freedom = state->projection; state->dual = state->projection; break; case ttf_svtca+1: state->projection.x = 1; state->projection.y = 0; state->freedom = state->projection; state->dual = state->projection; break; /* state setters with one value */ case ttf_s45round: case ttf_scanctrl: case ttf_scantype: case ttf_scvtci: case ttf_sdb: case ttf_sds: case ttf_sloop: case ttf_smd: case ttf_sround: case ttf_srp0: case ttf_srp1: case ttf_srp2: case ttf_ssw: case ttf_sswci: case ttf_szp0: case ttf_szp1: case ttf_szp2: case ttf_szps: val = pop(state,args); switch ( instr ) { case ttf_s45round: state->rounding = rnd_sround45; state->sround_value = val; break; case ttf_scanctrl: state->scancontrol = val; break; case ttf_scantype: state->scantype = val; break; case ttf_scvtci: state->control_value_cutin = val; break; case ttf_sdb: state->delta_base = val; break; case ttf_sds: state->delta_shift = val; break; case ttf_sloop: if ( val<0 || val>=65536 ) fprintf( stderr, "Attempt to set loop counter out of bounds (%d)\n", val ); else state->loop = val; break; case ttf_smd: state->min_distance = val; break; case ttf_sround: state->rounding = rnd_sround; state->sround_value = val; break; case ttf_srp0: if ( val<0 || val>=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Attempt to put a number into rp0 which doesn't refer to a point (%d)\n", val ); else state->rp0 = val; break; case ttf_srp1: if ( val<0 || val>=state->zones[state->zp1].point_cnt ) fprintf( stderr, "Attempt to put a number into rp1 which doesn't refer to a point (%d)\n", val ); else state->rp1 = val; break; case ttf_srp2: if ( val<0 || val>=state->zones[state->zp2].point_cnt ) fprintf( stderr, "Attempt to put a number into rp2 which doesn't refer to a point (%d)\n", val ); else state->rp2 = val; break; case ttf_ssw: state->single_width = val; break; case ttf_sswci: state->single_width_cutin = val; break; case ttf_szp0: if ( val!=0 && val!=1 ) fprintf( stderr, "Invalid zone pointer (szp0)\n"); else state->zp0 = val; break; case ttf_szp1: if ( val!=0 && val!=1 ) fprintf( stderr, "Invalid zone pointer (szp1)\n"); else state->zp1 = val; break; case ttf_szp2: if ( val!=0 && val!=1 ) fprintf( stderr, "Invalid zone pointer (szp2)\n"); else state->zp2 = val; break; case ttf_szps: if ( val!=0 && val!=1 ) fprintf( stderr, "Invalid zone pointer (szps)\n"); else state->zp0 = state->zp1 = state->zp2 = val; break; } break; /* state setters with more values */ case ttf_instctrl: if ( !state->in_prep ) fprintf( stderr, "Attempt to execute INSTCTRL when not in 'prep' program\n" ); else { val = pop(state,args); val2 = pop(state,args); /* I'm not going to support this. It let's us turn off */ /* grid fitting (which would mean this exercise was useless) */ /* or turn off the cvt */ } break; case ttf_sfvfs: val = pop(state,args); val2 = pop(state,args); dval = val/(double) (1<<14); dval2 = val2/(double) (1<<14); if ( dval*dval+dval2*dval2 < .999 || dval*dval+dval2*dval2>1.001 ) fprintf( stderr, "Attempt to set freedom vector to something which isn't a unit vector\n\t(%g,%g)\n", dval, dval2); else { state->freedom.x = dval2; state->freedom.y = dval; } break; case ttf_spvfs: val = pop(state,args); val2 = pop(state,args); dval = val/(double) (1<<14); dval2 = val2/(double) (1<<14); if ( dval*dval+dval2*dval2 < .999 || dval*dval+dval2*dval2>1.001 ) fprintf( stderr, "Attempt to set projection vector to something which isn't a unit vector\n\t(%g,%g)\n", dval, dval2); else { state->projection.x = dval2; state->projection.y = dval; state->dual = state->projection; } break; case ttf_spvtl: case ttf_spvtl+1: case ttf_sfvtl: case ttf_sfvtl+1: case ttf_sdpvtl: case ttf_sdpvtl+1: val2 = pop(state,args); val = pop(state,args); if ( val2<0 || val2>=state->zones[state->zp2].point_cnt ) fprintf( stderr, "Point 2 out of bounds in set freedom/projection vector %d\n", val2 ); else if ( val<0 || val>=state->zones[state->zp1].point_cnt ) fprintf( stderr, "Point 1 out of bounds in set freedom/projection vector %d\n", val ); else { IPoint *pt1, *pt2; double len; BasePoint unit; /* It doesn't say whether the moved or original points */ /* probably moved */ unit.pnum = -1; pt1 = &state->zones[state->zp1].moved[val]; pt2 = &state->zones[state->zp2].moved[val2]; len = sqrt((pt1->x-pt2->x)*(pt1->x-pt2->x) + (pt1->y-pt2->y)*(pt1->y-pt2->y)); if ( len==0 ) fprintf( stderr, "Attempt to set the freedom or projection vector to a 0 length vector\n" ); else { if ( instr==ttf_spvtl || instr==ttf_sfvtl || instr==ttf_sdpvtl ) { unit.x = (pt1->x-pt2->x)/len; unit.y = (pt1->y-pt2->y)/len; } else { unit.y = (pt1->x-pt2->x)/len; unit.x = -(pt1->y-pt2->y)/len; } if ( instr==ttf_sfvtl || instr==ttf_sfvtl+1 ) state->freedom = unit; else { state->projection = unit; state->dual = unit; } } } /* In the set dual instructions we set the normal projection vector*/ /* using the moved locations, and set an alternate using the old */ if ( instr==ttf_sdpvtl || instr==ttf_sdpvtl+1 ) { IPoint *pt1 = &state->zones[state->zp1].points[val]; IPoint *pt2 = &state->zones[state->zp2].points[val2]; BasePoint unit; double len; unit.pnum = -1; len = sqrt((pt1->x-pt2->x)*(pt1->x-pt2->x) + (pt1->y-pt2->y)*(pt1->y-pt2->y)); if ( len==0 ) fprintf( stderr, "Attempt to set the dual projection vector to a 0 length vector\n" ); else { if ( instr==ttf_sdpvtl ) { unit.x = (pt1->x-pt2->x)/len; unit.y = (pt1->y-pt2->y)/len; } else { unit.y = (pt1->x-pt2->x)/len; unit.x = -(pt1->y-pt2->y)/len; } state->dual = unit; #if TRACEINSTR fprintf(stderr, " dual=(%.4g,%.4g) proj=(%.4g,%.4g)", state->dual.x, state->dual.y, state->projection.x, state->projection.y ); #endif } } break; /* get state values */ case ttf_mppem: case ttf_mps: /* I make pointsize==pixels per em */ push(state,state->cv->show.ppem,args); break; case ttf_gfv: push(state,ttrint(state->freedom.x*(1<<14)),args); /* 2.14 number */ push(state,ttrint(state->freedom.y*(1<<14)),args); break; case ttf_gpv: push(state,ttrint(state->projection.x*(1<<14)),args); push(state,ttrint(state->projection.y*(1<<14)),args); break; /* get info from the points */ case ttf_gc: case ttf_gc+1: val = pop(state,args); if ( val<0 || val>=state->zones[state->zp2].point_cnt ) fprintf( stderr, "Point out of bounds in GC: pt=%d zone=%d\n", val, state->zp2 ); else { IPoint *p; if ( instr==ttf_gc ) { /* current */ p = &state->zones[state->zp2].moved[val]; push(state,state->projection.x*p->x+state->projection.y*p->y,args); } else { /* original */ p = &state->zones[state->zp2].points[val]; push(state,state->dual.x*p->x+state->dual.y*p->y,args); } /* Ok. We should use the dual projection vector if it has been*/ /* set and the pv has not be set since. I avoid the issue by */ /* setting the dual to the pv whenever the pv is set. So I can*/ /* always use the dual */ } break; case ttf_md: case ttf_md+1: val2 = pop(state,args); val = pop(state,args); if ( val<0 || val>=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Point 1 out of bounds in MD: %d zone=%d\n", val, state->zp0 ); else if ( val2<0 || val2>=state->zones[state->zp1].point_cnt ) fprintf( stderr, "Point 2 out of bounds in MD: %d zone=%d\n", val2, state->zp1 ); else { /* Marvelous. Apple's docs are contradictory within the space*/ /* of a few sentences about which measures the grid-fit distance */ IPoint v; if ( instr==ttf_md ) { /* Probably original */ v.x = state->zones[state->zp0].points[val].x - state->zones[state->zp1].points[val2].x; v.y = state->zones[state->zp0].points[val].y - state->zones[state->zp1].points[val2].y; push(state,state->dual.x*v.x+state->dual.y*v.y,args); } else { v.x = state->zones[state->zp0].moved[val].x - state->zones[state->zp1].moved[val2].x; v.y = state->zones[state->zp0].moved[val].y - state->zones[state->zp1].moved[val2].y; push(state,state->projection.x*v.x+state->projection.y*v.y,args); } /* Ok. We should use the dual projection vector if it has been*/ /* set and the pv has not be set since. I avoid the issue by */ /* setting the dual to the pv whenever the pv is set. So I can*/ /* always use the dual */ } break; /* stack manipulators */ case ttf_clear: state->sp = 0; break; case ttf_dup: val = pop(state,args); push(state,val,args); push(state,val,args); break; case ttf_cindex: val = pop(state,args); if ( val<=0 || val>state->sp ) fprintf( stderr, "Value out of bounds in cindex\n" ); else push(state,state->stack[state->sp-val],args); break; case ttf_mindex: val = pop(state,args); if ( val<=0 || val>state->sp ) fprintf( stderr, "Value out of bounds in mindex\n" ); else { int temp = state->stack[state->sp-val]; for ( i=val; i>1 ; --i ) state->stack[state->sp-i] = state->stack[state->sp-i+1]; state->stack[state->sp-1] = temp; } break; case ttf_roll: val = pop(state,args); val2 = pop(state,args); val3 = pop(state,args); push(state,val2,args); push(state,val,args); push(state,val3,args); break; case ttf_swap: val = pop(state,args); val2 = pop(state,args); push(state,val,args); push(state,val2,args); break; case ttf_depth: push(state,state->sp,args); break; /* conditional */ case ttf_if: val = pop(state,args); if ( !val ) { skiptoendif(state,true); if ( state->pcend_pc ) ++state->pc; } break; case ttf_else: skiptoendif(state,false); if ( state->pcend_pc ) ++state->pc; break; case ttf_eif: /* No op */ break; /* instruction/function definition & calls */ case ttf_fdef: val = pop(state,args); if ( state->in_glyf ) fprintf( stderr, "Functions may only be defined in the font or cvt programs (fpgm, prep)\n" ); else if ( val<0 || val>=65536 ) fprintf( stderr, "Attempt to define a function out of bounds: %d\n", val ); else { if ( val>=state->fdefcnt ) { MaxPSetFDef(state->maxp,val+1); if ( state->fdefs==NULL ) state->fdefs = gcalloc((val+1),sizeof(struct ifdef)); else { state->fdefs = grealloc(state->fdefs,(val+1)*sizeof(struct ifdef)); for ( i=state->fdefcnt; i<=val; ++i ) state->fdefs[i].data = NULL; } state->fdefcnt = val+1; } state->fdefs[val].data = state->pc; skiptoendf(state); /* spec doesn't allow for nested function defs */ state->fdefs[val].len = state->pc - state->fdefs[val].data; if ( state->pc==state->end_pc ) fprintf( stderr, "Missing endf in function definition %d\n", val ); } ++state->pc; break; case ttf_idef: val = pop(state,args); if ( state->in_glyf ) fprintf( stderr, "Instructions may only be defined in the font or cvt programs (fpgm, prep)\n" ); else if ( val<0 || val>=0xff ) fprintf( stderr, "Attempt to define an opcode out of bounds: %d\n", val ); else { if ( state->in_prep ) fprintf( stderr, "Instructions should be defined in the font rather than cvt program\n" ); state->idefs[val].data = state->pc; skiptoendf(state); /* spec doesn't allow for nested defs */ state->idefs[val].len = state->pc - state->idefs[val].data; if ( state->pc==state->end_pc ) fprintf( stderr, "Missing endf in instruction definition %d\n", val ); } ++state->pc; break; case ttf_endf: /* We should never see one of these */ /* but if we do, it's a noop */ fprintf( stderr, "We executed an ENDF instruction. That shouldn't happen.\n" ); break; case ttf_call: case ttf_loopcall: if ( state->sp<=0 ) { fprintf(stderr, "Attempt to pop something off the stack when it is empty in CALL\nAborting...\n" ); return; } val = pop(state,args); val2 = 1; if ( instr == ttf_loopcall ) val2 = pop(state,args); if ( val<0 || val>=state->fdefcnt || state->fdefs[val].data==NULL ) fprintf( stderr, "Attempt to call undefined function %d\n", val ); else if ( state->retsp>=SUB_MAX ) fprintf( stderr, "Function calls nested too deeply, ignored (in call of %d)\n", val ); else { state->returns[state->retsp] = state->pc; state->ends[state->retsp] = state->end_pc; state->cnts[state->retsp] = state->callcnt; state->starts[state->retsp] = state->startcall; state->startcall = state->pc = state->fdefs[val].data; state->end_pc = state->pc + state->fdefs[val].len; state->callcnt = val2-1; ++state->retsp; } break; /* Jumps */ case ttf_jmpr: if ( state->sp==0 ) { fprintf(stderr, "Attempt to jump when the stack is empty, giving up\n" ); state->pc = state->end_pc+1; } else { state->pc += pop(state,args)-1; if ( state->pc>state->end_pc+1 || state->pcstartcall ) fprintf( stderr, "Jump beyond end (or before start)\n" ); } break; case ttf_jrof: if ( state->sp<2 ) { fprintf(stderr, "Attempt to jump when the stack is empty, giving up\n" ); state->pc = state->end_pc+1; } else { val = pop(state,args); val2 = pop(state,args); if ( val==0 ) { state->pc += val2-1; if ( state->pc>state->end_pc+1 || state->pcstartcall ) fprintf( stderr, "Jump beyond end (or before start)\n" ); } } break; case ttf_jrot: if ( state->sp<2 ) { fprintf(stderr, "Attempt to jump when the stack is empty, giving up\n" ); state->pc = state->end_pc+1; } else { val = pop(state,args); val2 = pop(state,args); if ( val!=0 ) { state->pc += val2-1; if ( state->pc>state->end_pc+1 || state->pcstartcall ) fprintf( stderr, "Jump beyond end (or before start)\n" ); } } break; /* Flip from on to off curve */ /* (does not touch the points) */ case ttf_flippt: if ( args!=NULL ) { args->loopcnt += state->loop-1; if ( state->loop>1 ) args->used |= ttf_inloop; } while ( --state->loop>=0 ) { val = pop(state,args); if ( val<0 || val>=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Point out of bounds in FLIPPT: %d\n", val ); else state->zones[state->zp0].flags[val] ^= pt_oncurve; } state->loop = 1; /* Always reset to 1 */ break; case ttf_fliprgoff: case ttf_fliprgon: val = pop(state,args); val2 = pop(state,args); if ( val<0 || val>=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Point 1 out of bounds in flip region: %d\n", val ); else if ( val2<0 || val2>=val ) fprintf( stderr, "Point 2 out of bounds in flip region: %d\n", val2 ); else { while ( val2<=val ) { if ( instr==ttf_fliprgoff ) state->zones[state->zp0].flags[val2] &= ~pt_oncurve; else state->zones[state->zp0].flags[val2] |= pt_oncurve; ++val2; } } break; /* deltas */ case ttf_deltac1: case ttf_deltac2: case ttf_deltac3: { /* MS says smallest ppem must be deepest on stack. Apple doesn't mention this */ uint16 arg, c, ppem_base; val = pop(state,args); ppem_base = state->delta_base + (instr==ttf_deltac1?0:instr==ttf_deltac2?16:32); for ( i=0; i255 ) fprintf( stderr, "Arg (%d) out of bounds in DELTAC instruction: %d\n", i, c); else if ( state->cvt==NULL || c>=state->cvt->newlen/2 ) fprintf( stderr, "Cvt index %d out of bounds in DELTAC instruction: %d\n", i, c); else if ( ppem_base + ((arg>>4)&0xf) == state->cv->show.ppem ) { arg&=0xf; if ( arg<=7 ) arg -= 8; else arg-=7; /* convert to 26.6 */ arg <<= 6; arg >>= state->delta_shift; /* Manipulating the cvt does not appear to be protected */ state->cvtvals[c] += arg/state->scale; } } } break; case ttf_deltap1: case ttf_deltap2: case ttf_deltap3: { int32 arg, pt, ppem_base; val = pop(state,args); ppem_base = state->delta_base + (instr==ttf_deltap1?0:instr==ttf_deltap2?16:32); for ( i=0; i=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Point %d (at index %d) out of bounds in DELTAP instruction\n", pt, i); else if ( ppem_base + ((arg>>4)&0xf) == state->cv->show.ppem ) { arg&=0xf; if ( arg<=7 ) arg -= 8; else arg-=7; /* convert to 26.6 */ arg <<= 6; arg >>= state->delta_shift; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* Manipulating a point's position is protected */ AdjustPointBy(state,pt,state->zp0,arg,false); #endif } } } break; /* Point movement instructions */ case ttf_utp: val = pop(state,args); if ( val<0 || val>=state->zones[state->zp0].point_cnt ) fprintf( stderr, "Point out of bounds in UTP: %d\n", val ); else { if ( state->freedom.x!=0 ) state->zones[state->zp0].flags[val] &= ~pt_xtouched; if ( state->freedom.y!=0 ) state->zones[state->zp0].flags[val] &= ~pt_ytouched; } break; case ttf_scfs: val = pop(state,args); val2 = pop(state,args); SetPointTo(state,val2,state->zp2,val,false,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ break; case ttf_shc: case ttf_shc+1: case ttf_shz: case ttf_shz+1: case ttf_shp: case ttf_shp+1: { IPoint *rpm, *rpo; /* freetype says that shc touches points, while shc,shz do not */ if ( instr==ttf_shp ) { if ( args!=NULL ) args->used |= ttf_rp2; rpm = &state->zones[state->zp1].moved[state->rp2]; rpo = &state->zones[state->zp1].points[state->rp2]; } else { if ( args!=NULL ) args->used |= ttf_rp1; rpm = &state->zones[state->zp0].moved[state->rp1]; rpo = &state->zones[state->zp0].points[state->rp1]; } val = (rpm->x-rpo->x)*state->projection.x + (rpm->y-rpo->y)*state->projection.y; if ( instr==ttf_shz || instr==ttf_shz+1 ) { val2 = pop(state,args); /* zone */ if ( val2!=0 && val2!=1 ) { fprintf( stderr, "Bad zone (%d) in SHZ\n", val2 ); } else { for ( i=0; izones[val2].point_cnt; ++i ) { int flag = state->zones[val2].flags[i]; if ( &state->zones[val2].points[i]!=rpo ) /* Don't shift ref pt again */ AdjustPointBy(state,i,val2,val,false); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->zones[val2].flags[i] = flag; } } } else if ( instr==ttf_shp || instr==ttf_shp + 1 ) { if ( args!=NULL ) { args->loopcnt += state->loop-1; if ( state->loop>1 ) args->used |= ttf_inloop; } while ( --state->loop>=0 ) { val2 = pop(state,args); AdjustPointBy(state,val2,state->zp2,val,false); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ } state->loop = 1; /* Always reset to 1 */ } else { int c = pop(state,args), cp; /* contour */ /* I don't see how any contours get defined in zone 0 */ for ( i=cp=0; czones[state->zp2].point_cnt; ++i ) if ( state->zones[state->zp2].flags[i] & pt_endcontour ) ++cp; while ( izones[state->zp2].point_cnt && !(state->zones[state->zp2].flags[i] & pt_endcontour ) ) { int flag = state->zones[state->zp2].flags[i]; if ( &state->zones[state->zp2].points[i]!=rpo ) /* Don't shift ref pt again */ AdjustPointBy(state,i,state->zp2,val,false); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->zones[state->zp2].flags[i] = flag; ++i; } } } break; case ttf_shpix: val = pop(state,args); if ( args!=NULL ) { args->loopcnt += state->loop-1; if ( state->loop>1 ) args->used |= ttf_inloop; } while ( --state->loop>=0 ) { val2 = pop(state,args); AdjustPointBy(state,val2,state->zp2,val,false); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ } state->loop = 1; /* Always reset to 1 */ break; case ttf_alignpts: { double temp1, temp2; val2 = pop(state,args); val = pop(state,args); temp2 = state->projection.x*state->zones[state->zp0].moved[val2].x + state->projection.y*state->zones[state->zp0].moved[val2].y; temp1 = state->projection.x*state->zones[state->zp1].moved[val].x + state->projection.y*state->zones[state->zp1].moved[val].y; temp1 = (temp1+temp2)/2; SetPointTo(state,val2,state->zp0,temp1,false,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ SetPointTo(state,val,state->zp1,temp1,false,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ } break; case ttf_alignrp: if ( args!=NULL ) { args->loopcnt += state->loop-1; args->used |= ttf_rp0; if ( state->loop>1 ) args->used |= ttf_inloop; } if ( state->zp0==1 && (state->in_fpgm || state->in_prep)) { fprintf( stderr, "Attempt to access a point in zone 1 from the fpgm or prep routines\n" ); break; } val = state->projection.x*state->zones[state->zp0].moved[state->rp0].x + state->projection.y*state->zones[state->zp0].moved[state->rp0].y; while ( --state->loop>=0 ) { val2 = pop(state,args); SetPointTo(state,val2,state->zp1,val,false,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ } state->loop = 1; /* Always reset to 1 */ break; case ttf_isect: { int a0, a1, b0, b1, p; /* Intersection of two lines. Ignores freedom vector */ a0 = pop(state,args); a1 = pop(state,args); b0 = pop(state,args); b1 = pop(state,args); p = pop(state,args); if ( a0<0 || a0>= state->zones[state->zp0].point_cnt || a1<0 || a1>= state->zones[state->zp0].point_cnt || b0<0 || b0>= state->zones[state->zp1].point_cnt || b1<0 || b1>= state->zones[state->zp1].point_cnt || p<0 || p>= state->zones[state->zp2].point_cnt ) fprintf(stderr, "At least one point out of range in ISECT: %d,%d,%d,%d,%d\n", a0,a1,b0,b1,p ); else { #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER IPoint *pa0 = &state->zones[state->zp0].moved[a0], *pa1 = &state->zones[state->zp0].moved[a1], *pb0 = &state->zones[state->zp1].moved[b0], *pb1 = &state->zones[state->zp1].moved[b1], *pp = &state->zones[state->zp2].moved[p]; int denom = (pb1->y-pb0->y)*(pa1->x-pa0->x)-(pa1->y-pa0->y)*(pb1->x-pb0->x); if ( denom==0 ) { /* parallel */ pp->x = (pa0->x+pa1->x+pb0->x+pb1->x)/4; pp->y = (pa0->y+pa1->y+pb0->y+pb1->y)/4; } else { pp->x = ttrint( ((pa0->y-pb0->y)*(pa1->x-pa0->x)*(pb1->x-pb0->x) - pa0->x*(pa1->y-pa0->y)*(pb1->x-pb0->x) + pb0->x*(pb1->y-pb0->y)*(pa1->x-pa0->x)) / (double) denom ); if ( pb1->x==pb0->x ) pp->y = (pa1->y-pa0->y)*(pp->x-pa0->x)/(pa1->x-pa0->x) + pa0->y; else pp->y = (pb1->y-pb0->y)*(pp->x-pb0->x)/(pb1->x-pb0->x) + pb0->y; } state->zones[state->zp2].flags[p] |= pt_xtouched|pt_ytouched; #if TRACEINSTR fprintf( stderr, "\n(%d,%d)<->(%d,%d) (%d,%d)<->(%d,%d) = (%d,%d)", pa0->x, pa0->y, pa1->x, pa1->y, pb0->x, pb0->y, pb1->x, pb1->y, pp->x, pp->y ); #endif if ( state->zp0==1 ) { BasePoint freedom; struct ttfactions *act; freedom = state->freedom; state->freedom.x = 1; state->freedom.y = 0; act = AddAction(state,p,-1,-1,pp->x,false,false, -1); act->is = state->zones[1].moved[p]; state->freedom.x = 0; state->freedom.y = 1; act = AddAction(state,p,-1,-1,pp->y,false,false, -1); act->is = state->zones[1].moved[p]; state->freedom=freedom; } #endif } } break; case ttf_mdap: case ttf_mdap+1: val = pop(state,args); if ( val<0 || val>= state->zones[state->zp0].point_cnt ) fprintf(stderr, "Point out of range in MDAP: %d\n", val ); else { int diff; val2 = state->projection.x*state->zones[state->zp0].moved[val].x + state->projection.y*state->zones[state->zp0].moved[val].y; diff = val2; if ( instr==ttf_mdap+1 ) diff = doround(state,val2); diff -= val2; AdjustPointBy(state,val,state->zp0,diff,instr==ttf_mdap+1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->rp0 = state->rp1 = val; } break; case ttf_miap: case ttf_miap+1: val2 = pop(state,args); val = pop(state,args); if ( val<0 || val>= state->zones[state->zp0].point_cnt ) fprintf(stderr, "Point out of range in MIAP: %d\n", val ); else if ( state->cvt==NULL || val2<0 || val2>=state->cvt->newlen/2 ) { fprintf(stderr, "CVT entry out of range in MIAP: %d\n", val2 ); } else { int cvt = val2; val2 = ttrint(state->cvtvals[val2]*state->scale); if ( state->zp0==0 ) { /* From FreeType. MIAPs in the twilight zone do not check */ /* the cvt cutin, and set the original position as well as */ /* the moved position */ state->zones[0].points[val].x = state->freedom.x*val2; state->zones[0].points[val].y = state->freedom.y*val2; state->zones[0].moved[val] = state->zones[0].points[val]; } if ( instr==ttf_miap+1 ) { int pos = state->projection.x*state->zones[state->zp0].points[val].x + state->projection.y*state->zones[state->zp0].points[val].y; if ( (pos<0 && val2>0 && state->auto_flip) || (pos>0 && val2<0 && state->auto_flip)) val2 = -val2; if ( state->zp0==1 && (val2-pos<=-state->control_value_cutin || val2-pos>=state->control_value_cutin )) val2 = doround(state,pos); else val2 = doround(state,val2); } SetPointTo(state,val,state->zp0,val2,instr==ttf_miap,cvt); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->rp0 = state->rp1 = val; } break; case ttf_msirp: case ttf_msirp+1: val2 = pop(state,args); val = pop(state,args); if ( args!=NULL ) args->used |= ttf_rp0; if ( state->zp1==0 ) { /* From FreeType */ state->zones[0].points[val] = state->zones[0].points[state->rp0]; } SetPointRelativeTo(state,val,state->zp1,state->rp0,state->zp0,val2,false,false,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ /* Not in apple docs, but in the ms docs. FreeType does this so it must be right */ state->rp1 = state->rp0; state->rp2 = val; if ( instr==ttf_msirp+1 ) state->rp0 = val; break; case ttf_mdrp: case ttf_mdrp+1: case ttf_mdrp+2: case ttf_mdrp+3: case ttf_mdrp+4: case ttf_mdrp+5: case ttf_mdrp+6: case ttf_mdrp+7: case ttf_mdrp+8: case ttf_mdrp+9: case ttf_mdrp+10: case ttf_mdrp+11: case ttf_mdrp+12: case ttf_mdrp+13: case ttf_mdrp+14: case ttf_mdrp+15: case ttf_mdrp+16: case ttf_mdrp+17: case ttf_mdrp+18: case ttf_mdrp+19: case ttf_mdrp+20: case ttf_mdrp+21: case ttf_mdrp+22: case ttf_mdrp+23: case ttf_mdrp+24: case ttf_mdrp+25: case ttf_mdrp+26: case ttf_mdrp+27: case ttf_mdrp+28: case ttf_mdrp+29: case ttf_mdrp+30: case ttf_mdrp+31: val = pop(state,args); if ( val<0 || val>= state->zones[state->zp1].point_cnt ) fprintf(stderr, "Point out of range in MDRP: %d\n", val ); else { IPoint *rp = &state->zones[state->zp0].points[state->rp0], *pp = &state->zones[state->zp1].points[val]; int dist = (pp->x-rp->x)*state->dual.x + (pp->y-rp->y)*state->dual.y; if ( args!=NULL ) args->used |= ttf_rp0; if ( dist-state->single_width>-state->single_width_cutin && dist-state->single_widthsingle_width_cutin ) dist = state->single_width; if ( (instr-ttf_mdrp)&4 ) dist = doround(state,dist); if ( ((instr-ttf_mdrp)&8) && distmin_distance && dist>-state->min_distance ) { if ( dist>=0 ) dist = state->min_distance; else dist = -state->min_distance; } SetPointRelativeTo(state,val,state->zp1,state->rp0,state->zp0,dist, (instr-ttf_mdrp)&4,(instr-ttf_mdrp)&8,-1); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->rp1 = state->rp0; state->rp2 = val; if ( (instr-ttf_mdrp)&16 ) state->rp0 = val; } break; case ttf_mirp: case ttf_mirp+1: case ttf_mirp+2: case ttf_mirp+3: case ttf_mirp+4: case ttf_mirp+5: case ttf_mirp+6: case ttf_mirp+7: case ttf_mirp+8: case ttf_mirp+9: case ttf_mirp+10: case ttf_mirp+11: case ttf_mirp+12: case ttf_mirp+13: case ttf_mirp+14: case ttf_mirp+15: case ttf_mirp+16: case ttf_mirp+17: case ttf_mirp+18: case ttf_mirp+19: case ttf_mirp+20: case ttf_mirp+21: case ttf_mirp+22: case ttf_mirp+23: case ttf_mirp+24: case ttf_mirp+25: case ttf_mirp+26: case ttf_mirp+27: case ttf_mirp+28: case ttf_mirp+29: case ttf_mirp+30: case ttf_mirp+31: val2 = pop(state,args); val = pop(state,args); if ( val<0 || val>= state->zones[state->zp0].point_cnt ) fprintf(stderr, "Point out of range in MIRP: %d\n", val ); else if ( state->cvt==NULL || val2<0 || val2>=state->cvt->newlen/2 ) { fprintf(stderr, "CVT entry out of range in MIRP: %d\n", val2 ); } else { IPoint *rp = &state->zones[state->zp0].points[state->rp0], *pp = &state->zones[state->zp1].points[val]; int dist = (pp->x-rp->x)*state->dual.x + (pp->y-rp->y)*state->dual.y; int cvt = val2; if ( args!=NULL ) args->used |= ttf_rp0; val2 = ttrint(state->cvtvals[val2]*state->scale); if ( state->zp1==0 ) { /* From FreeType. MIRPs in the twilight zone do not check */ /* the cvt cutin, and set the original position as well as */ /* the moved position */ state->zones[0].points[val].x = state->zones[state->zp0].points[state->rp0].x + state->freedom.x*val2; state->zones[0].points[val].y = state->zones[state->zp0].points[state->rp0].y + state->freedom.y*val2; state->zones[0].moved[val] = state->zones[0].points[val]; } if ( val2-state->single_width>-state->single_width_cutin && val2-state->single_widthsingle_width_cutin ) val2 = state->single_width; if ( (dist<0 && val2>0 && state->auto_flip) || (dist>0 && val2<0 && state->auto_flip)) val2 = -val2; if ( (instr-ttf_mirp)&4 ) { /* FreeType: Only do cutin check if both points in same zone*/ if ( state->zp0==state->zp1 && (dist-val2<-state->control_value_cutin || dist-val2>state->control_value_cutin )) val2 = dist; /* Use orig distance */ val2 = doround(state,val2); } if ( ((instr-ttf_mirp)&8)) { /* Docs don't say this, but we figure out the sign from the original distance */ /* not from val2. val2 may have been rounded down to zero */ if ( dist>= 0 && val2min_distance ) val2 = state->min_distance; else if ( dist<0 && val2>-state->min_distance ) val2 = -state->min_distance; } SetPointRelativeTo(state,val,state->zp1,state->rp0,state->zp0,val2, (instr-ttf_mirp)&4,(instr-ttf_mirp)&8,cvt); /* A noop unless TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ state->rp1 = state->rp0; state->rp2 = val; if ( (instr-ttf_mirp)&16 ) state->rp0 = val; } break; case ttf_iup: case ttf_iup+1: doiup(state,instr); break; case ttf_ip: if ( !state->in_glyf && (state->zp0==1 || state->zp1==1) ) fprintf( stderr, "Attempt to use zone 1 when not in glyf. In IP\n" ); else if ( state->rp1>=state->zones[state->zp0].point_cnt || state->rp2>=state->zones[state->zp1].point_cnt ) fprintf( stderr, "Attempt to access a point that's not in the zone in IP\n" ); else { IPoint *pre = &state->zones[state->zp0].points[state->rp1], *orig, *post = &state->zones[state->zp1].points[state->rp2]; IPoint *mpre = &state->zones[state->zp0].moved[state->rp1], *mpost = &state->zones[state->zp1].moved[state->rp2]; double dist, mdist, base; /* now the above instruction (interpolate untouched points) */ /* has a special case for points whose coordinates lie outside */ /* the range of the two end points. None of the docs say that */ /* this instruction does that. So I guessed it probably didn't */ /* But I was wrong. I can rely on the docs to be wrong. */ /* FreeType has the special case */ if ( args!=NULL ) { args->loopcnt += state->loop-1; args->used |= ttf_rp1|ttf_rp2; if ( state->loop>1 ) args->used |= ttf_inloop; } mdist = (mpre->x-mpost->x)*state->projection.x + (mpre->y-mpost->y)*state->projection.y ; dist = (pre->x-post->x)*state->dual.x + (pre->y-post->y)*state->dual.y ; base = mpost->x*state->projection.x + mpost->y*state->projection.y; if ( dist==0 ) { fprintf(stderr, "Illegal IP instruction, rp1 and rp2 point to the same place on the projection.\n" ); while ( --state->loop>=0 ) { pop(state,args); } } else { while ( --state->loop>=0 ) { val = pop(state,args); if ( val<0 || val>= state->zones[state->zp2].point_cnt ) fprintf(stderr, "Point out of range in IP: %d\n", val ); else { double frac; orig = &state->zones[state->zp2].points[val]; val2 = (orig->x-post->x)*state->dual.x + (orig->y-post->y)*state->dual.y; frac = val2/(double)dist; if ( frac<=0 ) frac = 0; else if ( frac>=1 ) frac = 1; InterpolatePointTo(state,val,state->zp2,mdist*frac + base, false,-1,state->rp1,state->rp2); } } } state->loop = 1; /* Always reset to 1 */ } break; default: fprintf(stderr, "Unknown truetype instruction %x\n", instr ); break; } # if TRACEINSTR fprintf( stderr, "\n"); #endif } } static void NotePoints(struct ttfstate *state,ConicPointList *head) { ConicPointList *cpl; ConicPoint *sp; int last=0; for ( cpl = head; cpl!=NULL ; cpl = cpl->next ) { sp = cpl->first; while ( 1 ) { if ( sp->me.pnum!=-1 ) { last = sp->me.pnum; state->zones[1].points[last].x = ttrint(sp->me.x*state->scale); state->zones[1].points[last].y = ttrint(sp->me.y*state->scale); state->zones[1].flags[last] = pt_oncurve; } if ( sp->nextcp != NULL ) { last = sp->nextcp->pnum; state->zones[1].points[last].x = ttrint(sp->nextcp->x*state->scale); state->zones[1].points[last].y = ttrint(sp->nextcp->y*state->scale); state->zones[1].flags[last] = false; } if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==cpl->first ) break; } state->zones[1].flags[last] |= pt_endcontour; } } static void init_ttfgs(struct ttfstate *state) { /* The graphics state is initialized before each glyph. It is not inherited */ /* from the prep routine. I'm not sure whether prep inherits from fpgm or */ /* not... */ state->loop = 1; /* loop instructions default to being run once*/ state->rounding = rnd_grid; state->zp0 = state->zp1 = state->zp2 = 1; /* Normal zone */ /* the rp? registers default to 0 */ /* the freedom/projection vectors are always unit vectors. defaulting to x-axis */ state->projection.x = 1; state->projection.y = 0; state->projection.pnum = -1; state->freedom = state->projection; state->dual = state->projection; /* Dual has no default, It should be a unit vector though */ state->sp = 0; } static void init_ttfstate(CharView *cv,struct ttfstate *state) { Table *maxp, *fpgm, *prep, *cvt; TtfFont *tfont = cv->cc->parent->tfont; int i; RefChar *r; memset(state,'\0',sizeof(struct ttfstate)); maxp = fpgm = prep = cvt = NULL; for ( i=0; itbl_cnt; ++i ) { if ( tfont->tbls[i]->name==CHR('m','a','x','p')) maxp = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('c','v','t',' ')) cvt = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('f','p','g','m')) fpgm = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('p','r','e','p')) prep = tfont->tbls[i]; } state->cv = cv; state->cc = cv->cc; state->cvt = cvt; state->maxp = maxp; state->tfont = tfont; if ( cvt!=NULL ) { TableFillup(cvt); state->cvtvals = galloc(cvt->newlen); for ( i=0; inewlen/2; ++i ) state->cvtvals[i] = ptgetushort(cvt->data+2*i); } state->scale = 64.0*cv->show.ppem/cv->cc->parent->em; if ( maxp==NULL || maxp->newlen<26 ) { fprintf( stderr, "No maxp table (or too small a table), that's an error\n" ); state->store_max = 100; state->stack_max = 200; state->idefcnt = 100; state->fdefcnt = 100; state->zones[0].point_cnt = 100; } else { TableFillup(maxp); state->store_max = ptgetushort(maxp->data+18)+1; /* maxp gives max but I want number of 'em, they start at 0 */ state->stack_max = ptgetushort(maxp->data+24)+1; state->idefcnt = ptgetushort(maxp->data+22); state->fdefcnt = ptgetushort(maxp->data+20)+1; state->zones[0].point_cnt = ptgetushort(maxp->data+16)+1; } state->idefs = gcalloc(256,sizeof(struct ifdef));/* one for each opcode */ if ( state->fdefcnt!=0 ) state->fdefs = gcalloc(state->fdefcnt,sizeof(struct ifdef)); state->stack = gcalloc(state->stack_max,sizeof(int32)); if ( state->store_max!=0 ) state->storage = gcalloc(state->store_max,sizeof(int32)); if ( state->zones[0].point_cnt!=0 ) { state->zones[0].points = gcalloc(state->zones[0].point_cnt,sizeof(IPoint)); state->zones[0].moved = gcalloc(state->zones[0].point_cnt,sizeof(IPoint)); state->zones[0].flags = gcalloc(state->zones[0].point_cnt,sizeof(uint8)); } state->auto_flip = true; state->min_distance = 64; /* Default value is 1pixel in 26.6 */ state->control_value_cutin = 64+4; /* Default value is 17/16 in 26.6 */ state->single_width_cutin = 0; state->single_width = 0; state->delta_base = 9; state->delta_shift = 3; state->instruction_control = 0; state->scancontrol = false; /* these two execute in a context where there is no character, so no zone1 */ if ( fpgm!=NULL ) { TableFillup(fpgm); init_ttfgs(state); state->in_fpgm = true; # if TRACEINSTR fprintf( stderr, "\nIn fpgm\n" ); # endif TtfExecuteInstrs(state,fpgm->data,fpgm->newlen); state->in_fpgm = false; } if ( prep!=NULL ) { TableFillup(prep); init_ttfgs(state); state->in_prep = true; # if TRACEINSTR fprintf( stderr, "\nIn prep\n" ); # endif TtfExecuteInstrs(state,prep->data,prep->newlen); state->in_prep = false; } init_ttfgs(state); state->zones[1].point_cnt = state->cc->point_cnt+2; /* Include the two virtual points */ state->zones[1].points = gcalloc(state->zones[1].point_cnt,sizeof(IPoint)); state->zones[1].moved = galloc(state->zones[1].point_cnt*sizeof(IPoint)); state->zones[1].flags = gcalloc(state->zones[1].point_cnt,sizeof(uint8)); NotePoints(state,state->cc->conics); for ( r = state->cc->refs; r!=NULL; r = r->next ) NotePoints(state,r->conics); /* point n is the origin */ state->zones[1].points[ state->zones[1].point_cnt-1 ].x = doround(state,state->cc->width*state->scale); memcpy(state->zones[1].moved,state->zones[1].points, state->zones[1].point_cnt*sizeof(IPoint)); state->args = gcalloc(cv->cc->instrdata.instr_cnt,sizeof(struct ttfargs)); state->in_glyf = true; # if TRACEINSTR fprintf( stderr, "\nIn glyph\n" ); # endif if ( state->sp!=0 ) fprintf( stderr, "Junk left on stack by fpgm/prep\n" ); } static void TtfStateFreeContents(struct ttfstate *state) { free(state->idefs); free(state->fdefs); free(state->stack); free(state->storage); free(state->zones[0].points); free(state->zones[0].moved); free(state->zones[0].flags); free(state->zones[1].points); free(state->zones[1].moved); free(state->zones[1].flags); free(state->cvtvals); free(state->args); TtfActionsFree(state->acts); } void CVGenerateGloss(CharView *cv) { struct ttfstate state; struct ttfactions *acts; int cnt, c; free(cv->instrinfo.args); TtfActionsFree(cv->instrinfo.acts); free(cv->cvtvals); # if TT_CONFIG_OPTION_BYTECODE_INTERPRETER free(cv->twilight); # endif init_ttfstate(cv,&state); TtfExecuteInstrs(&state,cv->cc->instrdata.instrs,cv->cc->instrdata.instr_cnt); cv->instrinfo.args = state.args; state.args = NULL; cv->instrinfo.acts = state.acts; state.acts = NULL; # if TRACEINSTR for ( c=0; cinstrinfo.acts; acts!=NULL; acts=acts->acts ) { if ( acts->pnum==c+1 ) { acts->newcontour = true; for ( ++c; ctwilight_cnt = state.zones[0].point_cnt; cv->twilight = galloc(cv->twilight_cnt*sizeof(BasePoint)); for ( c=0; ctwilight_cnt; ++c ) { cv->twilight[c].pnum = c; cv->twilight[c].x = state.zones[0].moved[c].x/state.scale; cv->twilight[c].y = state.zones[0].moved[c].y/state.scale; } # endif cv->cvtvals = state.cvtvals; state.cvtvals = NULL; TtfStateFreeContents(&state); cv->instrinfo.act_cnt = cnt; } #endif void TtfActionsFree(struct ttfactions *acts) { struct ttfactions *next; while ( acts!=NULL ) { next = acts->acts; free(acts); acts=next; } } mensis-080507/binary.c0100664000076500007650000004030211010406101012733 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derbved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include extern int _GScrollBar_Width; #define UNIT_SPACER 2 #define ADDR_SPACER 4 #define HEX_SPACER 4 #define EDGE_SPACER 2 typedef struct binview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* instrs specials */ GGadget *mb, *vsb; int lpos, lheight; int16 as, fh; int16 vheight, vwidth; int16 mbh, sbw; GFont *gfont; int16 chrlen, addrend, hexend, bytes_per_line; } BinView; #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static int binary_processdata(TableView *tv) { /*BinView *bv = (BinView *) tv;*/ /* Do changes!!! */ return( true ); } static int binary_close(TableView *tv) { if ( binary_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs instrfuncs = { binary_close, binary_processdata }; static void binary_resize(BinView *bv,GEvent *event) { GRect pos; int lh, unitlen; /* height must be a multiple of the line height */ /* width must also fit naturally */ unitlen = 4*bv->chrlen+UNIT_SPACER + /* four chars of hex with spacer */ 2*bv->chrlen; /* Plus two chars of ASCII */ if ( (event->u.resize.size.height-bv->mbh-2*EDGE_SPACER)%bv->fh!=0 || (event->u.resize.size.height-bv->mbh-2*EDGE_SPACER-bv->fh)<0 || (event->u.resize.size.width-bv->sbw-bv->addrend-HEX_SPACER+UNIT_SPACER-unitlen-EDGE_SPACER)<0 || (event->u.resize.size.width-bv->sbw-bv->addrend-HEX_SPACER+UNIT_SPACER-EDGE_SPACER)%unitlen!=0 ) { int lc = (event->u.resize.size.height-bv->mbh+bv->fh/2-EDGE_SPACER)/bv->fh; int unitcnt = (event->u.resize.size.width-bv->addrend-HEX_SPACER-2*EDGE_SPACER+UNIT_SPACER)/unitlen; if ( lc<=0 ) lc = 1; if ( unitcnt<=0 ) unitcnt=1; GDrawResize(bv->gw, unitcnt*unitlen-UNIT_SPACER+bv->sbw+bv->addrend+HEX_SPACER+EDGE_SPACER, lc*bv->fh+bv->mbh+2*EDGE_SPACER); return; } pos.width = GDrawPointsToPixels(bv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-bv->mbh; pos.x = event->u.resize.size.width-pos.width; pos.y = bv->mbh; GGadgetResize(bv->vsb,pos.width,pos.height); GGadgetMove(bv->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(bv->v,pos.width,pos.height); bv->bytes_per_line = 2*((pos.width-bv->addrend-HEX_SPACER-EDGE_SPACER)/unitlen); bv->vheight = pos.height; bv->vwidth = pos.width; bv->lheight = lh = (bv->table->newlen+bv->bytes_per_line-1)/bv->bytes_per_line; GScrollBarSetBounds(bv->vsb,0,lh,bv->vheight/bv->fh); if ( bv->lpos + bv->vheight/bv->fh > lh ) bv->lpos = lh-bv->vheight/bv->fh; GScrollBarSetPos(bv->vsb,bv->lpos); GDrawRequestExpose(bv->v,NULL,false); } static void binary_expose(BinView *bv,GWindow pixmap,GRect *rect) { int low, high; int i,x,y; Table *table = bv->table; char chex[8], caddr[8]; unichar_t uhex[8], uaddr[8]; unichar_t *ulist, ubuf[81]; int hex_end; int addr, temp; uint8 *data = table->data; GDrawSetFont(pixmap,bv->gfont); /* I tried displaying unicode rather than ASCII, but half the time the */ /* unicode wasn't aligned properly and I just got junk */ low = ( (rect->y-EDGE_SPACER)/bv->fh ) * bv->fh +2; high = ( (rect->y+rect->height+bv->fh-1-EDGE_SPACER)/bv->fh ) * bv->fh +EDGE_SPACER; if ( high>bv->vheight-EDGE_SPACER ) high = bv->vheight-EDGE_SPACER; GDrawDrawLine(pixmap,bv->addrend-ADDR_SPACER/2,rect->y,bv->addrend-ADDR_SPACER/2,rect->y+rect->height,0x000000); hex_end = bv->addrend + (bv->bytes_per_line/2)*(4*bv->chrlen+UNIT_SPACER)-UNIT_SPACER + HEX_SPACER; GDrawDrawLine(pixmap,hex_end-HEX_SPACER/2,rect->y,hex_end-HEX_SPACER/2,rect->y+rect->height,0x808080); if ( bv->bytes_per_line>=sizeof(ubuf)/sizeof(ubuf[0]) ) ulist = galloc(bv->bytes_per_line*sizeof(unichar_t)); else ulist = ubuf; addr = (bv->lpos+(low-EDGE_SPACER)/bv->fh)*bv->bytes_per_line; y = low; for ( ; y<=high && addrnewlen; addr += bv->bytes_per_line ) { sprintf( caddr, "%04x", addr ); uc_strcpy(uaddr,caddr); x = bv->addrend - ADDR_SPACER - GDrawGetTextWidth(pixmap,uaddr,-1,NULL); GDrawDrawText(pixmap,x,y+bv->as,uaddr,-1,NULL,0x000000); for ( i=0; ibytes_per_line && addr+inewlen; i+=2 ) { temp = (data[addr+i]<<8) | data[addr+i+1]; ulist[i] = temp>>8; ulist[i+1] = temp&0xff; sprintf( chex, "%04x", temp); uc_strcpy(uhex,chex); x = bv->addrend + (i/2)*(4*bv->chrlen+UNIT_SPACER); GDrawDrawText(pixmap,x,y+bv->as,uhex,-1,NULL,0x000000); } for ( i=0; ibytes_per_line && addr+inewlen; ++i ) if ( ulist[i]<' ' || (ulist[i]>=0x7f && ulist[i]<0xa0) ) ulist[i] = '.'; GDrawDrawText(pixmap,hex_end,y+bv->as,ulist,i,NULL,0x000000); y += bv->fh; } if ( ulist!=ubuf ) free(ulist); } static void binary_mousemove(BinView *bv,int pos) { /*GGadgetPreparePopup(bv->gw,msg);*/ } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } static void binary_scroll(BinView *bv,struct sbevent *sb) { int newpos = bv->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= bv->vheight/bv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += bv->vheight/bv->fh; break; case et_sb_bottom: newpos = bv->lheight-bv->vheight/bv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>bv->lheight-bv->vheight/bv->fh ) newpos = bv->lheight-bv->vheight/bv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=bv->lpos ) { int diff = newpos-bv->lpos; bv->lpos = newpos; GScrollBarSetPos(bv->vsb,bv->lpos); GDrawScroll(bv->v,NULL,0,diff*bv->fh); } } static void BinViewFree(BinView *bv) { bv->table->tv = NULL; free(bv); } static int bv_v_e_h(GWindow gw, GEvent *event) { BinView *bv = (BinView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: binary_expose(bv,gw,&event->u.expose.rect); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(bv->table->name); break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) binary_mousemove(bv,event->u.mouse.y); break; case et_timer: break; case et_focus: break; } return( true ); } static int bv_e_h(GWindow gw, GEvent *event) { BinView *bv = (BinView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: break; case et_resize: binary_resize(bv,event); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(bv->table->name); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: binary_scroll(bv,&event->u.control.u.sb); break; } break; case et_close: binary_close((TableView *) bv); break; case et_destroy: BinViewFree(bv); break; } return( true ); } static void IVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { BinView *bv = (BinView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) binary_close, bv); } static void IVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((BinView *) GDrawGetUserData(gw))->owner; _TFVMenuSaveAs(tfv); } static void IVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((BinView *) GDrawGetUserData(gw))->owner; _TFVMenuSave(tfv); } static void IVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((BinView *) GDrawGetUserData(gw))->owner; _TFVMenuRevert(tfv); } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, IVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, IVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, IVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, IVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; /* any table we don't understand... */ void binaryCreateEditor(Table *tab,TtfView *tfv) { BinView *bv = gcalloc(1,sizeof(BinView)); unichar_t title[60]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld, lh; GGadgetData gd; GGadget *sb; static unichar_t num[] = { '0', '\0' }; int numlen, unitlen; bv->table = tab; bv->virtuals = &instrfuncs; bv->owner = tfv; bv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) bv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, bv->font->fontname, sizeof(title)/sizeof(title[0])-6); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,bv_e_h,bv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; bv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(bv->mb,&gsize); bv->mbh = gsize.height; gd.pos.y = bv->mbh; gd.pos.height = pos.height-bv->mbh; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; bv->vsb = sb = GScrollBarCreate(gw,&gd,bv); GGadgetGetSize(bv->vsb,&gsize); bv->sbw = gsize.width; wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = bv->mbh; pos.width = gd.pos.x; pos.height -= bv->mbh; bv->v = GWidgetCreateSubWindow(gw,&pos,bv_v_e_h,bv,&wattrs); GDrawSetVisible(bv->v,true); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; bv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(bv->v,bv->gfont); GDrawFontMetrics(bv->gfont,&as,&ds,&ld); bv->as = as+1; bv->fh = bv->as+ds; bv->chrlen = numlen = GDrawGetTextWidth(bv->v,num,1,NULL); bv->addrend = 6*numlen + ADDR_SPACER + EDGE_SPACER; unitlen = 3*numlen+UNIT_SPACER; /* two chars of hex and one of unicode */ bv->bytes_per_line = 2*((pos.width-bv->addrend-HEX_SPACER-2*EDGE_SPACER)/unitlen); if ( bv->bytes_per_line <= 1 ) bv->bytes_per_line = 1; lh = (bv->table->newlen+bv->bytes_per_line-1)/bv->bytes_per_line; if ( lh>40 ) lh = 40; if ( lh<4 ) lh = 4; GDrawResize(bv->gw,pos.width+gd.pos.width,bv->mbh+lh*bv->fh+2*EDGE_SPACER); GDrawSetVisible(gw,true); } mensis-080507/charview.c0100664000076500007650000020677311010406101013277 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * dercved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include "ttfinstrs.h" #include #include #include #include extern int _GScrollBar_Width; extern const char *instrs[]; extern unichar_t *instrhelppopup[256]; #ifdef TT_CONFIG_OPTION_FREETYPE_DEBUG # undef TT_CONFIG_OPTION_FREETYPE_DEBUG #endif #ifdef TT_CONFIG_OPTION_BYTECODE_DEBUG # undef TT_CONFIG_OPTION_BYTECODE_DEBUG # define TT_CONFIG_OPTION_BYTECODE_DEBUG 0 #endif struct charshows charshows = { true, /* Instruction pane */ TT_CONFIG_OPTION_BYTECODE_DEBUG, /* gloss pane */ false, /* hide instruction addresses */ true, /* show original splines */ true, /* show grid lines */ #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER true, /* show gridfit splines if that'st legal */ true, /* show raster if that's legal */ # if TT_CONFIG_OPTION_BYTECODE_DEBUG true, /* show twilight points if that's legal */ # endif #endif 12 /* ppem for figuring gridlines and doing gridfitting */ }; #define BAR_WIDTH 4 #define EDGE_SPACING 2 #define INSTR_WIDTH (2*EDGE_SPACING+21*cv->numlen) #define GLOSS_WIDTH (2*EDGE_SPACING+28*cv->numlen) #define CHAR_WIDTH 400 #define MIN_CHAR_WIDTH 50 #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 #define MID_Fit 2201 #define MID_ZoomOut 2202 #define MID_ZoomIn 2203 #define MID_Next 2204 #define MID_Prev 2205 #define MID_HideSplines 2210 #define MID_HideInstrs 2211 #define MID_HideGloss 2212 #define MID_HideGrid 2213 #define MID_HideGridFit 2214 #define MID_HideRaster 2215 #define MID_HideTwilight 2216 #define MID_HideAddr 2217 int CVClose(CharView *cv) { if ( cv->destroyed ) return( true ); cv->destroyed = true; GDrawDestroyWindow(cv->gw); return( true ); } static void CVUpdateInfo(CharView *cv, GEvent *event) { GRect pos; cv->mouse.x = event->u.mouse.x; cv->mouse.y = event->u.mouse.y; cv->info.x = (cv->mouse.x-cv->xoff)/cv->scale; cv->info.y = (cv->vheight-cv->yoff - cv->mouse.y)/cv->scale; pos.x = 0; pos.y = cv->mbh; pos.width = 32767; pos.height = cv->infoh; GDrawRequestExpose(cv->gw,&pos,false); } static void CVNewScale(CharView *cv) { GEvent e; GScrollBarSetBounds(cv->vsb,-32768*cv->scale,32768*cv->scale,cv->vheight); GScrollBarSetBounds(cv->hsb,-32768*cv->scale,32768*cv->scale,cv->vwidth); GScrollBarSetPos(cv->vsb,cv->yoff); GScrollBarSetPos(cv->hsb,cv->xoff); GDrawRequestExpose(cv->v,NULL,false); GDrawGetPointerPosition(cv->v,&e); CVUpdateInfo(cv,&e); } static void CVFit(CharView *cv) { DBounds b; real left, right, top, bottom, hsc, wsc; ConicCharFindBounds(cv->cc,&b); bottom = b.miny; top = b.maxy; left = b.minx; right = b.maxx; if ( bottom>0 ) bottom = 0; if ( left>0 ) left = 0; if ( rightcc->width ) right = cv->cc->width; if ( topvwidth / right; hsc = cv->vheight / top; if ( wscscale = hsc/1.2; if ( cv->scale > 1.0 ) { cv->scale = floor(cv->scale); } else { cv->scale = 1/ceil(1/cv->scale); } cv->xoff = (cv->vwidth-right*cv->scale)/3; cv->yoff = (cv->vheight-top*cv->scale)/3; CVNewScale(cv); } static void CVMagnify(CharView *cv, real midx, real midy, int bigger) { static float scales[] = { 1, 2, 3, 4, 6, 8, 11, 16, 23, 32, 45, 64, 90, 128, 181, 256, 512, 1024, 0 }; int i, j; if ( cv->scale>=1 ) { for ( i=0; scales[i]!=0 && cv->scale>scales[i]; ++i ); if ( scales[i]==0 ) i=j= i-1; else if ( RealNear(scales[i],cv->scale) ) j=i; else if ( i!=0 && RealNear(scales[i-1],cv->scale) ) j= --i; /* Round errors! */ else j = i-1; } else { real sinv = 1/cv->scale; int t; for ( i=0; scales[i]!=0 && sinv>scales[i]; ++i ); if ( scales[i]==0 ) i=j= i-1; else if ( RealNear(scales[i],sinv) ) j=i; else if ( i!=0 && RealNear(scales[i-1],sinv) ) j= --i; /* Round errors! */ else j = i-1; t = j; j = -i; i = -t; } if ( bigger==1 ) { if ( i==j ) ++i; if ( i>0 && scales[i]==0 ) --i; if ( i>=0 ) cv->scale = scales[i]; else cv->scale = 1/scales[-i]; } else { if ( i==j ) --j; if ( j<0 && scales[-j]==0 ) ++j; if ( j>=0 ) cv->scale = scales[j]; else cv->scale = 1/scales[-j]; } cv->xoff = -(rint(midx*cv->scale) - cv->vwidth/2); cv->yoff = -(rint(midy*cv->scale) - cv->vheight/2); CVNewScale(cv); } static void CVChangeGlyph(CharView *cv, int glyph) { ConicChar *cc = cv->cc; ConicFont *cf = cc->parent; CharView *prev, *test; ConicChar *new = LoadGlyph(cf,glyph); char buf[100]; unichar_t title[100]; if ( new==NULL ) return; if ( (prev = cc->views)==cv ) cc->views = cv->next; else { for ( test=prev->next; test!=cv && test!=NULL; prev = test, test=test->next ); prev->next = cv->next; } #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER ConicPointListsFree(cv->gridfit); cv->gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; #endif cv->next = new->views; new->views = cv; cv->cc = new; sprintf(buf,"Glyph: %d ", glyph); uc_strcpy(title, buf); if ( cf->tfont->enc!=NULL && glyphtfont->enc->cnt && psunicodenames[cf->tfont->enc->uenc[glyph]]!=NULL ) uc_strncat(title,psunicodenames[cf->tfont->enc->uenc[glyph]],sizeof(buf)-strlen(buf)-1); title[sizeof(title)/sizeof(title[0])-1] = '\0'; GDrawSetWindowTitles(cv->gw,title,NULL); cv->instrinfo.instrdata = &new->instrdata; cv->instrinfo.isel_pos = -1; instr_typify(&cv->instrinfo); GScrollBarSetBounds(cv->instrinfo.vsb,0,cv->instrinfo.lheight,cv->instrinfo.vheight/cv->fh); cv->instrinfo.lpos = 0; GScrollBarSetPos(cv->instrinfo.vsb,cv->instrinfo.lpos); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER FreeType_GridFitChar(cv); #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG CVGenerateGloss(cv); cv->instrinfo.gsel_pos = -1; cv->gvpos = 0; GScrollBarSetBounds(cv->gvsb,0,cv->instrinfo.act_cnt,cv->instrinfo.vheight/cv->fh); GScrollBarSetPos(cv->gvsb,cv->gvpos); #endif GDrawRequestExpose(cv->v,NULL,false); GDrawRequestExpose(cv->instrinfo.v,NULL,false); #if TT_CONFIG_OPTION_BYTECODE_DEBUG GDrawRequestExpose(cv->glossv,NULL,false); #endif } static int CVClearSel(CharView *cv) { ConicPointList *spl; Conic *spline, *first; RefChar *rf; int needsupdate = false; for ( spl = cv->cc->conics; spl!=NULL; spl = spl->next ) { if ( spl->first->selected ) { needsupdate = true; spl->first->selected = false; } first = NULL; for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { if ( spline->to->selected ) { needsupdate = true; spline->to->selected = false; } if ( first==NULL ) first = spline; } } for ( rf=cv->cc->refs; rf!=NULL; rf = rf->next ) { if ( rf->selected ) { needsupdate = true; rf->selected = false; } for ( spl = rf->conics; spl!=NULL; spl = spl->next ) { if ( spl->first->selected ) { needsupdate = true; spl->first->selected = false; } first = NULL; for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { if ( spline->to->selected ) { needsupdate = true; spline->to->selected = false; } if ( first==NULL ) first = spline; } } } return( needsupdate ); } static BasePoint *CVGetTTFPoint(CharView *cv,int pnum,BasePoint **moved) { ConicPointList *spl, *mspl; ConicPoint *sp, *msp; RefChar *rf; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER mspl = cv->gridfit; msp = NULL; #else mspl = NULL; msp = NULL; #endif if ( moved!=NULL ) *moved = NULL; for ( spl = cv->cc->conics; spl!=NULL; spl = spl->next ) { if ( mspl!=NULL ) msp = mspl->first; for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) { if ( moved!=NULL && msp!=NULL ) *moved = &msp->me; return( &sp->me ); } if ( sp->nextcp!=NULL && sp->nextcp->pnum==pnum ) { if ( moved!=NULL && msp!=NULL ) *moved = msp->nextcp; return( sp->nextcp ); } if ( msp==NULL ) /* Do Nothing */; else if ( msp->next==NULL ) msp=NULL; else msp=msp->next->to; if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } if ( mspl!=NULL ) mspl = mspl->next; } for ( rf=cv->cc->refs; rf!=NULL; rf = rf->next ) { if ( mspl!=NULL ) msp = mspl->first; for ( spl = rf->conics; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) { if ( moved!=NULL && msp!=NULL ) *moved = &msp->me; return( &sp->me ); } if ( sp->nextcp!=NULL && sp->nextcp->pnum==pnum ) { if ( moved!=NULL && msp!=NULL ) *moved = msp->nextcp; return( sp->nextcp ); } if ( msp==NULL ); else if ( msp->next==NULL ) msp=NULL; else msp=msp->next->to; if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } if ( mspl!=NULL ) mspl = mspl->next; } } return( NULL ); } static ConicPoint *CVGetPoint(CharView *cv,int pnum) { ConicPointList *spl; ConicPoint *sp; RefChar *rf; for ( spl = cv->cc->conics; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) return( sp ); if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } } for ( rf=cv->cc->refs; rf!=NULL; rf = rf->next ) { for ( spl = rf->conics; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) return( sp ); if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } } } return( NULL ); } static void cv_sizethings(CharView *cv) { GRect pos; int x = 0, lh; pos.width = cv->sbw; pos.height = cv->instrinfo.vheight; pos.x = cv->iwidth; pos.y = cv->mbh+cv->infoh; GGadgetResize(cv->instrinfo.vsb,pos.width,pos.height); GGadgetMove(cv->instrinfo.vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(cv->instrinfo.v,pos.width,pos.height); if ( cv->show.instrpane ) x += cv->iwidth+cv->sbw+BAR_WIDTH; lh = cv->instrinfo.lheight; GScrollBarSetBounds(cv->instrinfo.vsb,0,lh,cv->instrinfo.vheight/cv->fh); if ( cv->instrinfo.lpos + cv->instrinfo.vheight/cv->fh > lh ) cv->instrinfo.lpos = lh-cv->instrinfo.vheight/cv->fh; if ( cv->instrinfo.lpos < 0 ) cv->instrinfo.lpos = 0; GScrollBarSetPos(cv->instrinfo.vsb,cv->instrinfo.lpos); #if TT_CONFIG_OPTION_BYTECODE_DEBUG pos.width = cv->sbw; pos.x = x+cv->gvwidth; GGadgetResize(cv->gvsb,pos.width,pos.height); GGadgetMove(cv->gvsb,pos.x,pos.y); pos.width = pos.x-x; pos.x = x; GDrawMove(cv->glossv,pos.x,pos.y); GDrawResize(cv->glossv,pos.width,pos.height); if ( cv->show.glosspane ) x += cv->gvwidth+cv->sbw+BAR_WIDTH; GScrollBarSetBounds(cv->gvsb,0,cv->instrinfo.act_cnt,cv->instrinfo.vheight/cv->fh); if ( cv->gvpos + cv->instrinfo.vheight/cv->fh > cv->instrinfo.act_cnt ) cv->gvpos = cv->instrinfo.act_cnt-cv->instrinfo.vheight/cv->fh; if ( cv->gvpos < 0 ) cv->gvpos = 0; GScrollBarSetPos(cv->gvsb,cv->gvpos); #endif pos.width = cv->sbw; pos.x = x+cv->vwidth; pos.height -= cv->sbw; GGadgetResize(cv->vsb,pos.width,pos.height); GGadgetMove(cv->vsb,pos.x,pos.y); pos.width = pos.x-x; pos.x = x; GDrawMove(cv->v,pos.x,pos.y); GDrawResize(cv->v,pos.width,pos.height); pos.y += pos.height; pos.height = cv->sbw; /* Without this next line the bottom bar looks funny */ if ( cv->show.glosspane || cv->show.instrpane ) { --pos.x; ++pos.width; } GGadgetResize(cv->hsb,pos.width,pos.height); GGadgetMove(cv->hsb,pos.x,pos.y); GDrawRequestExpose(cv->gw,NULL,false); } static void char_resize(CharView *cv,GEvent *event) { int wid=0; int x = 0; if ( cv->show.instrpane ) wid += cv->iwidth+cv->sbw+BAR_WIDTH; if ( cv->show.glosspane ) wid += cv->gvwidth+cv->sbw+BAR_WIDTH; wid += MIN_CHAR_WIDTH+cv->sbw; /* height must be a multiple of the line height (if we are showing lines) */ if ( (event->u.resize.size.height-cv->mbh-cv->infoh-2*EDGE_SPACING)%cv->fh!=0 || (event->u.resize.size.height-cv->mbh-cv->infoh-cv->fh)<0 || (event->u.resize.size.width-wid)<0 ) { int lc = (event->u.resize.size.height-cv->mbh-cv->infoh-2*EDGE_SPACING+cv->fh/2)/cv->fh; if ( lc<=0 ) lc = 1; if ( event->u.resize.size.width>wid ) wid = event->u.resize.size.width; GDrawResize(cv->gw, wid,cv->mbh+cv->infoh+lc*cv->fh+2*EDGE_SPACING ); return; } if ( cv->show.instrpane ) x += cv->iwidth+cv->sbw+BAR_WIDTH; cv->instrinfo.vheight = event->u.resize.size.height-cv->mbh-cv->infoh; cv->instrinfo.vwidth = cv->iwidth; #if TT_CONFIG_OPTION_BYTECODE_DEBUG cv->gvheight = cv->instrinfo.vheight; if ( cv->show.glosspane ) x += cv->gvwidth+cv->sbw+BAR_WIDTH; #endif cv->vheight = cv->instrinfo.vheight; cv->vwidth = event->u.resize.size.width-cv->sbw-x; cv_sizethings(cv); CVFit(cv); } static void CVDrawBB(CharView *cv, GWindow pixmap, DBounds *bb) { GRect r; r.x = cv->xoff + rint(bb->minx*cv->scale); r.y = -cv->yoff + cv->vheight - rint(bb->maxy*cv->scale); r.width = rint((bb->maxx-bb->minx)*cv->scale); r.height = rint((bb->maxy-bb->miny)*cv->scale); GDrawSetDashedLine(pixmap,1,1,0); GDrawDrawRect(pixmap,&r,0x000000); GDrawSetDashedLine(pixmap,0,0,0); } /* Sigh. I have to do my own clipping because at large magnifications */ /* things can easily exceed 16 bits */ static int CVConicOutside(CharView *cv, Conic *conic) { int x[4], y[4]; x[0] = cv->xoff + rint(conic->from->me.x*cv->scale); y[0] = -cv->yoff + cv->vheight - rint(conic->from->me.y*cv->scale); x[1] = cv->xoff + rint(conic->to->me.x*cv->scale); y[1] = -cv->yoff + cv->vheight - rint(conic->to->me.y*cv->scale); if ( conic->from->nextcp==NULL ) { if ( (x[0]<0 && x[1]<0) || (x[0]>=cv->vwidth && x[1]>=cv->vwidth) || (y[0]<0 && y[1]<0) || (y[0]>=cv->vheight && y[1]>=cv->vheight) ) return( true ); } else { x[2] = cv->xoff + rint(conic->from->nextcp->x*cv->scale); y[2] = -cv->yoff + cv->vheight - rint(conic->from->nextcp->y*cv->scale); if ( (x[0]<0 && x[1]<0 && x[2]<0) || (x[0]>=cv->vwidth && x[1]>=cv->vwidth && x[2]>=cv->vwidth ) || (y[0]<0 && y[1]<0 && y[2]<0 ) || (y[0]>=cv->vheight && y[1]>=cv->vheight && y[2]>=cv->vheight ) ) return( true ); } return( false ); } static int CVLinesIntersectScreen(CharView *cv, LinearApprox *lap) { LineList *l; int any = false; int x,y; int bothout; for ( l=lap->lines; l!=NULL; l=l->next ) { l->asend.x = l->asstart.x = cv->xoff + l->here.x; l->asend.y = l->asstart.y = -cv->yoff + cv->vheight-l->here.y; l->flags = 0; if ( l->asend.x<0 || l->asend.x>=cv->vwidth || l->asend.y<0 || l->asend.y>=cv->vheight ) { l->flags = cvli_clipped; any = true; } } if ( !any ) { for ( l=lap->lines; l!=NULL; l=l->next ) l->flags = cvli_onscreen; lap->any = true; return( true ); } any = false; for ( l=lap->lines; l->next!=NULL; l=l->next ) { if ( !(l->flags&cvli_clipped) && !(l->next->flags&cvli_clipped) ) l->flags = cvli_onscreen; else { bothout = (l->flags&cvli_clipped) && (l->next->flags&cvli_clipped); if (( l->asstart.x<0 && l->next->asend.x>0 ) || ( l->asstart.x>0 && l->next->asend.x<0 )) { y = -(l->next->asend.y-l->asstart.y)*(real)l->asstart.x/(l->next->asend.x-l->asstart.x) + l->asstart.y; if ( l->asstart.x<0 ) { l->asstart.x = 0; l->asstart.y = y; } else { l->next->asend.x = 0; l->next->asend.y = y; } } if (( l->asstart.xvwidth && l->next->asend.x>cv->vwidth ) || ( l->asstart.x>cv->vwidth && l->next->asend.xvwidth )) { y = (l->next->asend.y-l->asstart.y)*(real)(cv->vwidth-l->asstart.x)/(l->next->asend.x-l->asstart.x) + l->asstart.y; if ( l->asstart.x>cv->vwidth ) { l->asstart.x = cv->vwidth; l->asstart.y = y; } else { l->next->asend.x = cv->vwidth; l->next->asend.y = y; } } if (( l->asstart.y<0 && l->next->asend.y>0 ) || ( l->asstart.y>0 && l->next->asend.y<0 )) { x = -(l->next->asend.x-l->asstart.x)*(real)l->asstart.y/(l->next->asend.y-l->asstart.y) + l->asstart.x; if (( x<0 || x>=cv->vwidth ) && bothout ) continue; /* Not on screen */; if ( l->asstart.y<0 ) { l->asstart.y = 0; l->asstart.x = x; } else { l->next->asend.y = 0; l->next->asend.x = x; } } if (( l->asstart.yvheight && l->next->asend.y>cv->vheight ) || ( l->asstart.y>cv->vheight && l->next->asend.yvheight )) { x = (l->next->asend.x-l->asstart.x)*(real)(cv->vheight-l->asstart.y)/(l->next->asend.y-l->asstart.y) + l->asstart.x; if (( x<0 || x>=cv->vwidth ) && bothout ) continue; /* Not on screen */; if ( l->asstart.y>cv->vheight ) { l->asstart.y = cv->vheight; l->asstart.x = x; } else { l->next->asend.y = cv->vheight; l->next->asend.x = x; } } l->flags |= cvli_onscreen; any = true; } } lap->any = any; return( any ); } typedef struct gpl { struct gpl *next; GPoint *gp; int cnt; } GPointList; static void GPLFree(GPointList *gpl) { GPointList *next; while ( gpl!=NULL ) { next = gpl->next; free( gpl->gp ); free( gpl ); gpl = next; } } /* Before we did clipping this was a single polygon. Now it is a set of */ /* sets of line segments. If no clipping is done, then we end up with */ /* one set which is the original polygon, otherwise we get the segments */ /* which are inside the screen. Each set of segments is contiguous */ static GPointList *MakePoly(CharView *cv, ConicPointList *spl) { int i, len; LinearApprox *lap; LineList *line, *prev; Conic *conic, *first; GPointList *head=NULL, *last=NULL, *cur; int closed; for ( i=0; i<2; ++i ) { len = 0; first = NULL; closed = true; cur = NULL; for ( conic = spl->first->next; conic!=NULL && conic!=first; conic=conic->to->next ) { if ( !CVConicOutside(cv,conic) ) { lap = ConicApproximate(conic,cv->scale); if ( i==0 ) CVLinesIntersectScreen(cv,lap); if ( lap->any ) { for ( prev = lap->lines, line=prev->next; line!=NULL; prev=line, line=line->next ) { if ( !(prev->flags&cvli_onscreen) ) { closed = true; continue; } if ( closed || (prev->flags&cvli_clipped) ) { if ( i==0 ) { cur = gcalloc(1,sizeof(GPointList)); if ( head==NULL ) head = cur; else { last->cnt = len; last->next = cur; } last = cur; } else { if ( cur==NULL ) cur = head; else cur = cur->next; cur->gp = galloc(cur->cnt*sizeof(GPoint)); cur->gp[0].x = prev->asstart.x; cur->gp[0].y = prev->asstart.y; } len=1; closed = false; } if ( i!=0 ) { if ( len>=cur->cnt ) fprintf( stderr, "Clipping is screwed up, about to die %d (should be less than %d)\n", len, cur->cnt ); cur->gp[len].x = line->asend.x; cur->gp[len].y = line->asend.y; } ++len; if ( line->flags&cvli_clipped ) closed = true; } } else closed = true; } else closed = true; if ( first==NULL ) first = conic; } if ( i==0 && cur!=NULL ) cur->cnt = len; } return( head ); } /* 0 is up, 1 is right, 2 down, 3 left */ static void TickDir(BasePoint *me,BasePoint *other, char dirs[4]) { if ( other==NULL ) /* No spline -> no interferance, needn't tick anything */ return; if ( other->xx ) { if ( other->yy ) { if ( me->y-other->y > me->x-other->x ) dirs[2] = true; else dirs[3] = true; } else { if ( other->y-me->y > me->x-other->x ) dirs[0] = true; else dirs[3] = true; } } else { if ( other->yy ) { if ( me->y-other->y > other->x-me->x ) dirs[2] = true; else dirs[1] = true; } else { if ( other->y-me->y > other->x-me->x ) dirs[0] = true; else dirs[1] = true; } } } static void NumberPoint(GWindow pixmap, BasePoint *before, BasePoint *me, BasePoint *after, CharView *cv, int x, int y, Color col) { char buf[4]; unichar_t ubuf[4]; int wid; char dirs[4]; memset(dirs,'\0',sizeof(dirs)); TickDir(me,after,dirs); TickDir(me,before,dirs); sprintf(buf,"%d",me->pnum); uc_strcpy(ubuf,buf); wid = GDrawGetTextWidth(pixmap,ubuf,-1,NULL); /* 0 is up, 1 is right, 2 down, 3 left */ if ( !dirs[0] || !dirs[2]) GDrawDrawText(pixmap,x-wid/2,!dirs[2]?y+cv->sfh+cv->sas:y-cv->sfh,ubuf,-1,NULL,col); else GDrawDrawText(pixmap,!dirs[1]?x+cv->sfh:x-cv->sfh-wid,y+cv->sas/2,ubuf,-1,NULL,col); } static void DrawPoint(CharView *cv, GWindow pixmap, ConicPoint *sp, ConicSet *spl) { GRect r; int x, y, cx, cy; Color col = spl==NULL ? 0x0000ff: sp==spl->first ? 0x707000 : 0xff0000; char dirs[4]; if ( sp->me.pnum==-1 ) col = col==0xff0000 ? 0xff4040 : 0x808030; x = cv->xoff + rint(sp->me.x*cv->scale); y = -cv->yoff + cv->vheight - rint(sp->me.y*cv->scale); if ( x<-4000 || y<-4000 || x>cv->vwidth+4000 || y>=cv->vheight+4000 ) return; memset(dirs,'\0',sizeof(dirs)); /* draw the control points if it's selected */ /*if ( sp->selected ) {*/ if ( sp->nextcp!=NULL ) { cx = cv->xoff + rint(sp->nextcp->x*cv->scale); cy = -cv->yoff + cv->vheight - rint(sp->nextcp->y*cv->scale); GDrawDrawLine(pixmap,x,y,cx,cy, 0x0000ff); GDrawDrawLine(pixmap,cx-2,cy-2,cx+2,cy+2,0x0000ff); GDrawDrawLine(pixmap,cx+2,cy-2,cx-2,cy+2,0x0000ff); if ( sp->nextcp->pnum!=-1 ) NumberPoint(pixmap, &sp->me, sp->nextcp, sp->next!=NULL?&sp->next->to->me:NULL, cv,cx,cy,col); } if ( sp->prevcp!=NULL ) { cx = cv->xoff + rint(sp->prevcp->x*cv->scale); cy = -cv->yoff + cv->vheight - rint(sp->prevcp->y*cv->scale); GDrawDrawLine(pixmap,x,y,cx,cy, 0x0000ff); GDrawDrawLine(pixmap,cx-2,cy-2,cx+2,cy+2,0x0000ff); GDrawDrawLine(pixmap,cx+2,cy-2,cx-2,cy+2,0x0000ff); } /*}*/ if ( x<-4 || y<-4 || x>cv->vwidth+4 || y>=cv->vheight+4 ) return; r.x = x-2; r.y = y-2; r.width = r.height = 5; if ( sp->pointtype==pt_curve ) { --r.x; --r.y; r.width +=2; r.height += 2; if ( sp->selected ) GDrawDrawElipse(pixmap,&r,col); else GDrawFillElipse(pixmap,&r,col); } else if ( sp->pointtype==pt_corner ) { if ( sp->selected ) GDrawDrawRect(pixmap,&r,col); else GDrawFillRect(pixmap,&r,col); } else { GPoint gp[5]; int dir; BasePoint *cp=NULL; if ( sp->nextcp ) cp = sp->nextcp; else if ( sp->prevcp ) cp = sp->prevcp; dir = 0; if ( cp!=NULL ) { float dx = cp->x-sp->me.x, dy = cp->y-sp->me.y; if ( dx<0 ) dx= -dx; if ( dy<0 ) dy= -dy; if ( dx>2*dy ) { if ( cp->x>sp->me.x ) dir = 0 /* right */; else dir = 1 /* left */; } else if ( dy>2*dx ) { if ( cp->y>sp->me.y ) dir = 2 /* up */; else dir = 3 /* down */; } else { if ( cp->y>sp->me.y && cp->x>sp->me.x ) dir=4; else if ( cp->x>sp->me.x ) dir=5; else if ( cp->y>sp->me.y ) dir=7; else dir = 6; } } if ( dir==1 /* left */ || dir==0 /* right */) { gp[0].y = y; gp[0].x = (dir==0)?x+4:x-4; gp[1].y = y-4; gp[1].x = x; gp[2].y = y+4; gp[2].x = x; } else if ( dir==2 /* up */ || dir==3 /* down */ ) { gp[0].x = x; gp[0].y = dir==2?y-4:y+4; /* remember screen coordinates are backwards in y from character coords */ gp[1].x = x-4; gp[1].y = y; gp[2].x = x+4; gp[2].y = y; } else { /* at a 45 angle, a value of 4 looks too small. I probably want 4*1.414 */ int xdiff= cp->x>sp->me.x?5:-5, ydiff = cp->y>sp->me.y?-5:5; gp[0].x = x+xdiff/2; gp[0].y = y+ydiff/2; gp[1].x = gp[0].x-xdiff; gp[1].y = gp[0].y; gp[2].x = gp[0].x; gp[2].y = gp[0].y-ydiff; } gp[3] = gp[0]; if ( sp->selected ) GDrawDrawPoly(pixmap,gp,4,col); else GDrawFillPoly(pixmap,gp,4,col); } if ( sp->me.pnum>=0 ) NumberPoint(pixmap, sp->prevcp!=NULL?sp->prevcp:sp->prev!=NULL?&sp->prev->from->me:NULL, &sp->me, sp->nextcp!=NULL?sp->nextcp:sp->next!=NULL?&sp->next->to->me:NULL, cv,x,y,col); } static void DrawBasePoint(CharView *cv,GWindow pixmap,BasePoint *me) { static ConicPoint sp; sp.me = *me; DrawPoint(cv,pixmap,&sp,NULL); } static void DrawLine(CharView *cv, GWindow pixmap, real x1, real y1, real x2, real y2, Color fg) { int ix1 = cv->xoff + rint(x1*cv->scale); int iy1 = -cv->yoff + cv->vheight - rint(y1*cv->scale); int ix2 = cv->xoff + rint(x2*cv->scale); int iy2 = -cv->yoff + cv->vheight - rint(y2*cv->scale); if ( iy1==iy2 ) { if ( iy1<0 || iy1>cv->vheight ) return; if ( ix1<0 ) ix1 = 0; if ( ix2>cv->vwidth ) ix2 = cv->vwidth; } else if ( ix1==ix2 ) { if ( ix1<0 || ix1>cv->vwidth ) return; if ( iy1<0 ) iy1 = 0; if ( iy2<0 ) iy2 = 0; if ( iy1>cv->vheight ) iy1 = cv->vheight; if ( iy2>cv->vheight ) iy2 = cv->vheight; } GDrawDrawLine(pixmap, ix1,iy1, ix2,iy2, fg ); } static void CVDrawConicSet(CharView *cv, GWindow pixmap, ConicPointList *set, Color fg, int dopoints, DRect *clip ) { Conic *conic, *first; ConicPointList *spl; for ( spl = set; spl!=NULL; spl = spl->next ) { GPointList *gpl = MakePoly(cv,spl), *cur; if ( dopoints ) { first = NULL; for ( conic = spl->first->next; conic!=NULL && conic!=first; conic=conic->to->next ) { DrawPoint(cv,pixmap,conic->from,spl); if ( first==NULL ) first = conic; } if ( conic==NULL ) DrawPoint(cv,pixmap,spl->last,spl); } for ( cur=gpl; cur!=NULL; cur=cur->next ) GDrawDrawPoly(pixmap,cur->gp,cur->cnt,fg); GPLFree(gpl); } } static void char_expose(CharView *cv,GWindow pixmap,GRect *rect) { RefChar *rf; GRect old; DRect clip; real grid_spacing = cv->cc->parent->em / (real) cv->show.ppem; int i,j; BasePoint bp; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER GRect pixel; #endif GDrawPushClip(pixmap,rect,&old); GDrawSetFont(pixmap,cv->sfont); clip.width = rect->width/cv->scale; clip.height = rect->height/cv->scale; clip.x = (rect->x-cv->xoff)/cv->scale; clip.y = (cv->vheight-rect->y-rect->height-cv->yoff)/cv->scale; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER if ( cv->show.raster && cv->raster!=NULL && cv->raster!=(void *) -1 ) { pixel.width = pixel.height = grid_spacing*cv->scale+1; for ( i=0; iraster->rows; ++i ) { for ( j=0; jraster->cols; ++j ) { if ( cv->raster->bitmap[i*cv->raster->bytes_per_row+(j>>3)] & (1<<(7-(j&7))) ) { pixel.x = (j+cv->raster->lb)*grid_spacing*cv->scale + cv->xoff; pixel.y = cv->vheight-cv->yoff - rint((cv->raster->as-i)*grid_spacing*cv->scale); GDrawFillRect(pixmap,&pixel,0xa0a0a0); } } } } #endif if ( cv->show.grid && grid_spacing*cv->scale>=2 ) { int max,jmax; for ( i = floor( clip.x/grid_spacing ), max = ceil((clip.x+clip.width)/grid_spacing); i<=max; ++i ) DrawLine(cv,pixmap,i*grid_spacing,-32768,i*grid_spacing,32767,i==0?0x808080:0xb0b0ff); for ( i = floor( clip.y/grid_spacing ), max = ceil((clip.y+clip.height)/grid_spacing); i<=max; ++i ) DrawLine(cv,pixmap,-32768,i*grid_spacing,32767,i*grid_spacing,i==0?0x808080:0xb0b0ff); if ( grid_spacing*cv->scale>=7 ) { for ( i = floor( clip.x/grid_spacing ), max = ceil((clip.x+clip.width)/grid_spacing); i<=max; ++i ) for ( j = floor( clip.y/grid_spacing ), jmax = ceil((clip.y+clip.height)/grid_spacing); j<=jmax; ++j ) { int x = (i+.5)*grid_spacing*cv->scale + cv->xoff; int y = cv->vheight-cv->yoff - rint((j+.5)*grid_spacing*cv->scale); GDrawDrawLine(pixmap,x-2,y,x+2,y,0xb0b0ff); GDrawDrawLine(pixmap,x,y-2,x,y+2,0xb0b0ff); } } } else { /* Just draw main axes */ DrawLine(cv,pixmap,0,-32768,0,32767,0x808080); DrawLine(cv,pixmap,-32768,0,32767,0,0x808080); } DrawLine(cv,pixmap,cv->cc->width,-8096,cv->cc->width,8096,0x404040); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER if ( cv->show.gridspline ) { DrawLine(cv,pixmap,cv->gridwidth,-8096,cv->gridwidth,8096,0x008000); CVDrawConicSet(cv,pixmap,cv->gridfit,0x008000,true,&clip); } #endif #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER && TT_CONFIG_OPTION_BYTECODE_DEBUG if ( cv->show.twilight ) { for ( i=0; itwilight_cnt; ++i ) DrawBasePoint(cv,pixmap,&cv->twilight[i]); } #endif if ( cv->show.fore ) { for ( rf=cv->cc->refs; rf!=NULL; rf = rf->next ) { CVDrawConicSet(cv,pixmap,rf->conics,0,true,&clip); if ( /*rf->selected*/ true ) CVDrawBB(cv,pixmap,&rf->bb); } CVDrawConicSet(cv,pixmap,cv->cc->conics,0x000000,true,&clip); bp.x = cv->cc->ptn; bp.y = 0; bp.pnum = cv->cc->point_cnt; DrawBasePoint(cv,pixmap,&bp); bp.x += cv->cc->width; ++bp.pnum; DrawBasePoint(cv,pixmap,&bp); } GDrawPopClip(pixmap,&old); } static void char_infoexpose(CharView *cv,GWindow pixmap,GRect *rect) { char buf[100], *bpt; unichar_t ubuf[100]; extern char* coord_sep; sprintf( buf, "(%d%s%d) ", (int) cv->info.x, coord_sep, (int) cv->info.y ); bpt = buf + strlen(buf); if ( cv->scale <.01 ) sprintf( bpt, "%.2f%%", cv->scale*100 ); else if ( cv->scale<1 ) sprintf( bpt, "%.2g%%", cv->scale*100 ); else sprintf( bpt, "%.0f%%", rint(cv->scale*100) ); uc_strcpy(ubuf,buf); GDrawSetFont(pixmap,cv->sfont); GDrawDrawText(pixmap,5,cv->mbh+cv->as,ubuf,-1,NULL,0x000000); GDrawDrawLine(pixmap,0,cv->mbh+cv->infoh-1,32767,cv->mbh+cv->infoh-1,0x000000); } #if TT_CONFIG_OPTION_BYTECODE_DEBUG static void char_glossexpose(CharView *cv,GWindow pixmap,GRect *rect) { int i,y; struct ttfactions *act; char buf[100]; unichar_t ubuf[100]; GDrawSetFont(pixmap,cv->gfont); y = EDGE_SPACING+cv->as; for ( i=0, act = cv->instrinfo.acts; igvpos && iinstrinfo.act_cnt && yy+rect->height; ++i ) act = act->acts; while ( iinstrinfo.act_cnt && yy+rect->height+cv->fh ) { if ( i==cv->instrinfo.gsel_pos ) { GRect r; r.y = y-cv->as; r.x = 0; r.height = cv->fh; r.width = cv->gvwidth; GDrawFillRect(pixmap,&r,0xffff00); } if ( act->newcontour ) GDrawDrawLine(pixmap,0,y-cv->as,cv->gvwidth,y-cv->as,0x000000); sprintf( buf,"Pt%4d.%c ", act->pnum, act->freedom.x==1.0?'x': act->freedom.y==1.0?'y':'d' ); if ( act->basedon==-1 ) strcat(buf,"Absolute At "); else if ( act->interp==-2 ) /* don't know interp range with freetype */ sprintf(buf+strlen(buf), "Interpolated "/*, act->basedon, act->interp*/ ); else if ( act->interp!=-1 ) /* Interpolated between */ sprintf(buf+strlen(buf), "<%3d:%-3d>To ", act->basedon, act->interp ); else if ( act->basedon==act->pnum ) strcat(buf,"Shifted By "); else sprintf(buf+strlen(buf), "Base%4d By ", act->basedon ); if ( act->distance!=0 ) { /* my interpreter */ /* I store slightly different info from freetype */ sprintf(buf+strlen(buf), "%.2f %c%c", act->distance/64.0, act->rounded ? 'r' : ' ', act->min ? 'm' : ' '); } else { /* freetype */ if ( act->interp==-2 ) /* leave */; else if ( act->freedom.x==1.0 || act->freedom.y==1.0 ) strcpy(buf+strlen(buf)-3,"To "); else sprintf(buf+strlen(buf)-3,"%.1f,", act->is.x/64.0 ); if ( act->freedom.x==1.0 ) sprintf( buf+strlen(buf), "%.2f ", act->is.x/64.0 ); else if ( act->freedom.y==1.0 ) sprintf( buf+strlen(buf), "%.2f ", act->is.y/64.0 ); else sprintf( buf+strlen(buf), "%.1f ", act->is.y/64.0 ); sprintf( buf+strlen(buf), "%c%c", act->rounded ? 'r' : ' ', act->min ? 'm' : ' '); } uc_strcpy(ubuf,buf); GDrawDrawText(pixmap,EDGE_SPACING,y,ubuf,-1,NULL,0x000000); ++i; y+= cv->fh; act = act->acts; } } #endif static void char_vscroll(CharView *cv,struct sbevent *sb) { int newpos = cv->yoff; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= 9*cv->vheight/10; break; case et_sb_up: newpos -= cv->vheight/15; break; case et_sb_down: newpos += cv->vheight/15; break; case et_sb_downpage: newpos += 9*cv->vheight/10; break; case et_sb_bottom: newpos = 0; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>8000*cv->scale-cv->vheight ) newpos = 8000*cv->scale-cv->vheight; if ( newpos<-8000*cv->scale ) newpos = -8000*cv->scale; if ( newpos!=cv->yoff ) { int diff = newpos-cv->yoff; cv->yoff = newpos; GScrollBarSetPos(cv->vsb,newpos); GDrawScroll(cv->v,NULL,0,diff); } } static void char_hscroll(CharView *cv,struct sbevent *sb) { int newpos = cv->xoff; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos += 9*cv->vwidth/10; break; case et_sb_up: newpos += cv->vwidth/15; break; case et_sb_down: newpos -= cv->vwidth/15; break; case et_sb_downpage: newpos -= 9*cv->vwidth/10; break; case et_sb_bottom: newpos = 0; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = -sb->pos; break; } if ( newpos>8000*cv->scale-cv->vwidth ) newpos = 8000*cv->scale-cv->vwidth; if ( newpos<-8000*cv->scale ) newpos = -8000*cv->scale; if ( newpos!=cv->xoff ) { int diff = newpos-cv->xoff; cv->xoff = newpos; GScrollBarSetPos(cv->hsb,-newpos); GDrawScroll(cv->v,NULL,diff,0); } } #if TT_CONFIG_OPTION_BYTECODE_DEBUG static void gloss_scroll(CharView *cv,struct sbevent *sb) { int newpos = cv->gvpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= cv->vheight/cv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += cv->vheight/cv->fh; break; case et_sb_bottom: newpos = cv->instrinfo.act_cnt-cv->vheight/cv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>cv->instrinfo.act_cnt-cv->vheight/cv->fh ) newpos = cv->instrinfo.act_cnt-cv->vheight/cv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=cv->gvpos ) { GRect r; int diff = newpos-cv->gvpos; cv->gvpos = newpos; GScrollBarSetPos(cv->gvsb,cv->gvpos); r.x=0; r.y = EDGE_SPACING; r.width=cv->gvwidth; r.height=cv->gvheight-2*EDGE_SPACING; GDrawScroll(cv->glossv,&r,0,diff*cv->fh); } } #endif static void CharViewFree(CharView *cv) { ConicChar *cc = cv->cc; CharView *prev, *test; if ( (prev = cc->views)==cv ) cc->views = cv->next; else { for ( test=prev->next; test!=cv && test!=NULL; prev = test, test=test->next ); prev->next = cv->next; } #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER ConicPointListsFree(cv->gridfit); FreeType_FreeRaster(cv->raster); # if TT_CONFIG_OPTION_BYTECODE_DEBUG free(cv->twilight); # endif #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG free(cv->cvtvals); #endif free(cv); } static void CVChar(CharView *cv,GEvent *event) { int i; struct enctab *enc; if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { if ( event->w==cv->v || event->w==cv->gw ) TableHelp(CHR('g','l','y','f')); else system( "netscape http://fonts.apple.com/TTRefMan/RM05/Chap5.html &" ); #if MyMemory } else if ( event->u.chr.keysym==GK_F2 ) { printf( "Memory Check On\n" ); __malloc_debug(5); } else if ( event->u.chr.keysym==GK_F3 ) { __malloc_debug(0); printf( "Memory Check Off\n" ); #endif } else if ( event->u.chr.chars[0]!='\0' && (enc = cv->cc->parent->tfont->enc)!=NULL ) { for ( i = 0; icnt; ++i ) { if ( enc->uenc[i]==event->u.chr.chars[0] ) { CVChangeGlyph(cv,i); break; } } } } static void CVGScrollTo(CharView *cv, int newgpos) { struct instrinfo *ii = &cv->instrinfo; if ( newgpos!=ii->gsel_pos ) { ii->gsel_pos = newgpos; if ( newgposgvpos || newgpos>=cv->gvpos+(ii->vheight-2*EDGE_SPACING)/ii->fh ) { cv->gvpos = newgpos-(ii->vheight-2*EDGE_SPACING)/(3*ii->fh); if ( cv->gvpos>=ii->act_cnt-(ii->vheight-2*EDGE_SPACING)/ii->fh ) cv->gvpos=ii->act_cnt-(ii->vheight-2*EDGE_SPACING)/ii->fh-1; if ( cv->gvpos<0 ) cv->gvpos = 0; GScrollBarSetPos(cv->gvsb,cv->gvpos); } GDrawRequestExpose(cv->glossv,NULL,false); } } static void CVSelectAct(CharView *cv, int pos) { struct instrinfo *ii = &cv->instrinfo; ConicPoint *sp; struct ttfactions *acts; int i, seek, y; CVGScrollTo(cv,pos); for ( i=0, acts=ii->acts; acts!=NULL && igsel_pos; ++i ) acts = acts->acts; sp = NULL; ii->isel_pos = -1; if ( acts!=NULL ) { sp = CVGetPoint(cv,acts->pnum); if ( acts->instr >= ii->instrdata->instrs && acts->instr < ii->instrdata->instrs+ii->instrdata->instr_cnt ) { seek = acts->instr - ii->instrdata->instrs; y = 0; for ( i=0; iinstrdata->instr_cnt; ++i ) if ( ii->instrdata->bts[i]!=bt_wordlo ) ++y; ii->isel_pos = y; if ( ii->isel_poslpos || ii->isel_pos>=ii->lpos + cv->vheight/cv->fh ) { ii->lpos = ii->isel_pos-cv->vheight/(3*cv->fh); if ( ii->lpos >= ii->lheight-cv->vheight/cv->fh ) ii->lpos = ii->lheight-cv->vheight/cv->fh; if ( ii->lpos<0 ) ii->lpos = 0; GScrollBarSetPos(ii->vsb,ii->lpos); } } } else ii->gsel_pos = -1; GDrawRequestExpose(cv->glossv,NULL,false); GDrawRequestExpose(cv->instrinfo.v,NULL,false); if ( CVClearSel(cv) || sp!=NULL ) { if ( sp ) sp->selected = true; GDrawRequestExpose(cv->v,NULL,false); } } static BasePoint *SplFindPoint(CharView *cv,ConicPointList *spl,GEvent *event, real *dist) { BasePoint at; double fudge; ConicPoint *sp; BasePoint *best=NULL; real d, xoff, yoff; *dist = 400; at.x = (event->u.mouse.x - cv->xoff)/cv->scale; at.y = (cv->vheight - cv->yoff - event->u.mouse.y)/cv->scale; fudge = 4/cv->scale; for ( ; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; sp!=NULL; ) { if ( sp->me.x >= at.x - fudge && sp->me.x <= at.x+fudge && sp->me.y >= at.y - fudge && sp->me.y <= at.y+fudge ) { xoff = sp->me.x-at.x; yoff = sp->me.y-at.y; d = xoff*xoff + yoff*yoff; if ( d<*dist ) { best = &sp->me; *dist = d; } } if ( sp->nextcp!=NULL && sp->nextcp->x >= at.x - fudge && sp->nextcp->x <= at.x+fudge && sp->nextcp->y >= at.y - fudge && sp->nextcp->y <= at.y+fudge ) { xoff = sp->nextcp->x-at.x; yoff = sp->nextcp->y-at.y; d = xoff*xoff + yoff*yoff; if ( d<*dist ) { best = sp->nextcp; *dist = d; } } if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } } return( best ); } static BasePoint *CVFindPoint(CharView *cv,GEvent *event, int *orig) { BasePoint *obp=NULL, *mbp=NULL; real odist=400, mdist=400; if ( cv->show.fore ) obp = SplFindPoint(cv,cv->cc->conics,event,&odist); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER if ( cv->show.gridspline ) mbp = SplFindPoint(cv,cv->gridfit,event,&mdist); #endif if ( obp==NULL ) return( mbp ); else if ( mbp==NULL ) return( obp ); else if ( odisttype ) { case et_expose: char_expose(cv,gw,&event->u.expose.rect); break; case et_char: CVChar(cv,event); break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) { CVUpdateInfo(cv,event); bp = CVFindPoint(cv,event,&orig); if ( bp!=NULL ) { char buffer[32]; static unichar_t ubuf[32]; if ( bp->pnum==-1 ) sprintf(buffer,"Implicit %s", orig ? " Original" : " Moved" ); else sprintf(buffer,"%d%s", bp->pnum, orig ? " Original" : " Moved" ); uc_strcpy(ubuf, buffer); GGadgetPreparePopup(cv->gw,ubuf); } } else if ( event->type==et_mousedown && event->u.mouse.button==2 ) { CVMagnify(cv, (event->u.mouse.x - cv->xoff)/cv->scale, (cv->vheight - cv->yoff - event->u.mouse.y)/cv->scale, (event->u.mouse.state&ksm_meta)?-1:1); } else if ( event->type==et_mousedown ) { bp = CVFindPoint(cv,event,&orig); if ( bp!=NULL ) { for ( i=0, acts=cv->instrinfo.acts; acts!=NULL && acts->pnum!=bp->pnum; acts = acts->acts, ++i ); if ( acts!=NULL ) CVSelectAct(cv,i); } } break; case et_timer: break; case et_focus: break; } return( true ); } static int cv_iv_e_h(GWindow gw, GEvent *event) { CharView *cv = (CharView *) GDrawGetUserData(gw); struct instrinfo *ii = &cv->instrinfo; switch ( event->type ) { case et_expose: instr_expose(ii,gw,&event->u.expose.rect); break; case et_char: { if ( !IIChar(ii,event)) CVChar(cv,event); } break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) instr_mousemove(ii,event->u.mouse.y); else if ( event->type==et_mousedown ) { instr_mousedown(ii,event->u.mouse.y); if ( event->u.mouse.clicks==2 ) InstrModCreate(ii); } else { instr_mousemove(ii,event->u.mouse.y); ii->mousedown = false; } break; case et_timer: break; case et_focus: break; } return( true ); } #if TT_CONFIG_OPTION_BYTECODE_DEBUG static void cv_ii_selection_callback(struct instrinfo *ii) { CharView *cv = (CharView *) ( ((int8 *) ii) - (int) (int8 *) &((CharView *) NULL)->instrinfo ); int i, off; int newgpos = -1; uint8 *pc; struct ttfactions *acts; if ( ii->isel_pos == -1 ) newgpos = -1; else { for ( i=off=0; iisel_pos; ++i, ++off ) if ( ii->instrdata->bts[off]==bt_wordlo || ii->instrdata->bts[off]==bt_wordhi ) ++off; pc = ii->instrdata->instrs+off; for ( i=0, acts=ii->acts; acts!=NULL && acts->instr!=pc; ++i ) acts = acts->acts; if ( acts==NULL ) i = -1; newgpos = i; } CVGScrollTo(cv,newgpos); } #else static void cv_ii_selection_callback(struct instrinfo *ii) { } #endif static int cv_gv_e_h(GWindow gw, GEvent *event) { #if TT_CONFIG_OPTION_BYTECODE_DEBUG CharView *cv = (CharView *) GDrawGetUserData(gw); struct ttfactions *acts; int i, seek; BasePoint *bp, *mbp; struct instrinfo *ii; char buf[400]; static unichar_t msg[400]; double scale=0; /* keeps compiler from complaining about uninit variable */ switch ( event->type ) { case et_expose: char_glossexpose(cv,gw,&event->u.expose.rect); break; case et_mousemove: case et_mouseup: GGadgetEndPopup(); ii = &cv->instrinfo; seek = (event->u.mouse.y-2)/cv->fh + cv->gvpos; for ( i=0, acts=ii->acts; acts!=NULL && iacts; if ( acts!=NULL ) { sprintf( buf,"Point %d.%s ", acts->pnum, acts->freedom.x==1.0?"x": acts->freedom.y==1.0?"y":"diagonal" ); if ( acts->basedon==-1 ) strcat(buf,"is positioned to "); else if ( acts->interp!=-1 ) /* Interpolated between */ sprintf(buf+strlen(buf), "interpolated between %d and %d to ", acts->basedon, acts->interp ); else if ( acts->basedon==acts->pnum ) strcat(buf,"Shifted By "); else sprintf(buf+strlen(buf), "offset from base point %d by ", acts->basedon ); sprintf(buf+strlen(buf), "%.2f", acts->distance/64.0 ); if ( acts->rounded || acts->min || acts->cvt_entry!=-1 ) { sprintf(buf+strlen(buf), "\n%s%s", acts->rounded ? "rounded " : "", acts->min ? "minimum distance ": "" ); if ( acts->cvt_entry!=-1 && cv->cvtvals!=NULL ) { int orig = (short) ptgetushort(cv->cvt->data+2*acts->cvt_entry); int val = cv->cvtvals[acts->cvt_entry]; sprintf(buf+strlen(buf), " cvt entry=%d fword=%d pixel=%.2f", acts->cvt_entry, val, val*(double) cv->show.ppem/cv->cc->parent->em ); if ( orig!=val ) sprintf(buf+strlen(buf), " (orig=%d)", orig ); } } bp = CVGetTTFPoint(cv,acts->pnum,&mbp); if ( bp!=NULL ) { scale = cv->show.ppem/(double) (cv->cc->parent->em); sprintf(buf+strlen(buf), "\nPoint originally at: (%g,%g) (%.2f,%.2f)", bp->x,bp->y, bp->x*scale, bp->y*scale); } #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER sprintf(buf+strlen(buf), "\nFrom: (%.2f,%.2f)", acts->was.x/64., acts->was.y/64.); sprintf(buf+strlen(buf), "\nTo: (%.2f,%.2f)", acts->is.x/64., acts->is.y/64.); if ( bp!=NULL && mbp!=NULL ) { sprintf(buf+strlen(buf), "\nFinally at: (%g,%g) (%.2f,%.2f)", mbp->x,mbp->y, mbp->x*scale, mbp->y*scale); } #endif sprintf( buf+strlen(buf), "\n%s", instrs[*acts->instr]); if ( acts->infunc>=0 ) sprintf( buf+strlen(buf), " in function %d", acts->infunc ); uc_strcpy(msg,buf); GGadgetPreparePopup(GDrawGetParentWindow(ii->v),msg); } break; case et_mousedown: GGadgetEndPopup(); CVSelectAct(cv, (event->u.mouse.y-2)/cv->fh + cv->gvpos); break; } #endif return( true ); } static void curse_all(CharView *cv, GCursor ct) { GDrawSetCursor(cv->gw,ct); GDrawSetCursor(cv->v,ct); /*if ( cv->show.instrpane )*/ GDrawSetCursor(cv->instrinfo.v,ct); #if TT_CONFIG_OPTION_BYTECODE_DEBUG /*if ( cv->show.glosspane )*/ GDrawSetCursor(cv->glossv,ct); #endif } static void char_barexpose(CharView *cv,GWindow pixmap,GRect *rect) { int x, y, yend; x = 0; y = cv->mbh+cv->infoh; yend = y+cv->instrinfo.vheight+20; if ( cv->show.instrpane ) { x = cv->iwidth+cv->sbw; GDrawDrawLine(pixmap,x,y,x,yend,0xffffff); x += BAR_WIDTH; GDrawDrawLine(pixmap,x-1,y,x-1,yend,0x000000); } if ( cv->show.glosspane ) { x += cv->gvwidth+cv->sbw; GDrawDrawLine(pixmap,x,y,x,yend,0xffffff); x += BAR_WIDTH; GDrawDrawLine(pixmap,x-1,y,x-1,yend,0x000000); } } static void cv_mousebar(CharView *cv, GEvent *event) { int x,y,yend, inglossbar, ininstrbar; inglossbar = ininstrbar = -1; x = 0; y = cv->mbh+cv->infoh; yend = y+cv->instrinfo.vheight; if ( event->u.mouse.y>=y && event->u.mouse.yshow.instrpane ) { x = cv->iwidth+cv->sbw+BAR_WIDTH; if ( event->u.mouse.x>=x-BAR_WIDTH && event->u.mouse.xu.mouse.x-x; } if ( cv->show.glosspane ) { x += cv->gvwidth+cv->sbw+BAR_WIDTH; if ( event->u.mouse.x>=x-BAR_WIDTH && event->u.mouse.xu.mouse.x-x; } } if ( !cv->pressed && event->type == et_mousemove ) { if ( cv->bar_cursor != (inglossbar!=-1 || ininstrbar!=-1)) { cv->bar_cursor = !cv->bar_cursor; curse_all(cv,cv->bar_cursor?ct_leftright:ct_pointer); } } else if ( event->type==et_mousemove && event->u.mouse.y>=y && event->u.mouse.ytype == et_mousedown && event->u.mouse.y>=y ) { cv->pressed = true; cv->in_gloss_bar = inglossbar; cv->in_instr_bar = ininstrbar; } else if ( event->type == et_mouseup ) { int outside = true; cv->pressed = false; if ( cv->bar_cursor ) { #if TT_CONFIG_OPTION_BYTECODE_DEBUG if ( cv->in_gloss_bar!=-1 ) { int ix = 0; if ( cv->show.instrpane ) ix += cv->iwidth+cv->sbw+BAR_WIDTH; x = event->u.mouse.x-(ix+cv->gvwidth+cv->sbw+BAR_WIDTH+cv->in_gloss_bar); if ( cv->vwidth-xvwidth-MIN_CHAR_WIDTH; if ( cv->gvwidth+x<10 ) { cv->show.glosspane = false; GDrawSetVisible(cv->glossv,false); GGadgetSetVisible(cv->gvsb,false); x = -(cv->gvwidth+cv->sbw+BAR_WIDTH); } else { cv->gvwidth += x; outside = false; } cv->vwidth -= x; } else #endif if ( cv->in_instr_bar!=-1 ) { x = event->u.mouse.x-(cv->iwidth+cv->sbw+BAR_WIDTH+cv->in_instr_bar); if ( cv->vwidth-xvwidth-MIN_CHAR_WIDTH; if ( cv->iwidth+x<10 ) { cv->show.instrpane = false; GDrawSetVisible(cv->instrinfo.v,false); GGadgetSetVisible(cv->instrinfo.vsb,false); x = -(cv->iwidth+cv->sbw+BAR_WIDTH); } else { cv->iwidth += x; outside = false; } cv->vwidth -= x; cv->instrinfo.vwidth = cv->iwidth; } cv_sizethings(cv); } if ( outside ) { curse_all(cv,ct_pointer); cv->bar_cursor = false; } } else if ( cv->bar_cursor ) { curse_all(cv,ct_pointer); cv->bar_cursor = false; } } static int cv_e_h(GWindow gw, GEvent *event) { CharView *cv = (CharView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: char_infoexpose(cv,gw,&event->u.expose.rect); char_barexpose(cv,gw,&event->u.expose.rect); break; case et_resize: if ( event->u.resize.sized ) char_resize(cv,event); break; case et_char: CVChar(cv,event); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: if ( event->u.control.g == cv->vsb ) char_vscroll(cv,&event->u.control.u.sb); else if ( event->u.control.g == cv->hsb ) char_hscroll(cv,&event->u.control.u.sb); else if ( event->u.control.g == cv->instrinfo.vsb ) instr_scroll(&cv->instrinfo,&event->u.control.u.sb); #if TT_CONFIG_OPTION_BYTECODE_DEBUG else if ( event->u.control.g == cv->gvsb ) gloss_scroll(cv,&event->u.control.u.sb); #endif break; } break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); cv_mousebar(cv,event); break; case et_close: CVClose(cv); break; case et_destroy: CharViewFree(cv); break; } return( true ); } static void CVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) CVClose, cv); } static void CVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((CharView *) GDrawGetUserData(gw))->cc->parent->fv->owner; _TFVMenuSaveAs(tfv); } static void CVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((CharView *) GDrawGetUserData(gw))->cc->parent->fv->owner; _TFVMenuSave(tfv); } static void CVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((CharView *) GDrawGetUserData(gw))->cc->parent->fv->owner; DelayEvent((void (*)(void *)) _TFVMenuRevert, tfv); } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } static void CVMenuScale(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); if ( mi->mid == MID_Fit ) { CVFit(cv); } else { real midx = (cv->vwidth/2-cv->xoff)/cv->scale; real midy = (cv->vheight/2-cv->yoff)/cv->scale; CVMagnify(cv,midx,midy,mi->mid==MID_ZoomOut?-1:1); } } static void CVMenuChangeGlyph(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); if ( mi->mid==MID_Next ) CVChangeGlyph(cv,cv->cc->glyph+1); else if ( mi->mid==MID_Prev ) CVChangeGlyph(cv,cv->cc->glyph-1); } static void CVMenuGotoGlyph(GWindow gw,struct gmenuitem *mi,GEvent *e) { GDrawIError("NYI"); /* !!!!! */ } static void CVMenuShowHide(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); GEvent dummy; if ( mi->mid==MID_HideInstrs || mi->mid==MID_HideGloss ) { if ( mi->mid==MID_HideInstrs ) { cv->show.instrpane = charshows.instrpane = !cv->show.instrpane; GDrawSetVisible(cv->instrinfo.v,cv->show.instrpane); GGadgetSetVisible(cv->instrinfo.vsb,cv->show.instrpane); } else { cv->show.glosspane = charshows.glosspane = !cv->show.glosspane; GDrawSetVisible(cv->glossv,cv->show.glosspane); GGadgetSetVisible(cv->gvsb,cv->show.glosspane); } memset(&dummy,'\0',sizeof(dummy)); dummy.type = et_resize; dummy.w = cv->gw; GDrawGetSize(cv->gw,&dummy.u.resize.size); dummy.u.resize.sized = true; GDrawPostEvent(&dummy); } else { switch ( mi->mid ) { case MID_HideSplines: cv->show.fore = charshows.fore = !cv->show.fore; break; case MID_HideGrid: cv->show.grid = charshows.grid = !cv->show.grid; break; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER case MID_HideGridFit: cv->show.gridspline = charshows.gridspline = !cv->show.gridspline; break; case MID_HideRaster: cv->show.raster = charshows.raster = !cv->show.raster; break; # if TT_CONFIG_OPTION_BYTECODE_DEBUG case MID_HideTwilight: cv->show.twilight = charshows.twilight = !cv->show.twilight; break; # endif #endif case MID_HideAddr: cv->show.addr = cv->instrinfo.showaddr = charshows.addr = !cv->show.addr; GDrawRequestExpose(cv->instrinfo.v,NULL,false); return; } GDrawRequestExpose(cv->v,NULL,false); } } static void CVMenuGridSize(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); char buf[20]; unichar_t ubuf[20], *ret, *end; int val; sprintf(buf,"%d", cv->show.ppem ); uc_strcpy(ubuf,buf); ret = GWidgetAskStringR(_STR_GridSize, ubuf,_STR_GridSize); if ( ret==NULL ) return; val = u_strtol(ret,&end,10); if ( *end || val<=1 ) { ProtestR(_STR_GridSize); free(ret); return; } free(ret); if ( val == cv->show.ppem ) return; cv->show.ppem = val; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER ConicPointListsFree(cv->gridfit); cv->gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; FreeType_GridFitChar(cv); #endif GDrawRequestExpose(cv->v,NULL,false); } static void vwlistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { CharView *cv = (CharView *) GDrawGetUserData(gw); for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_HideSplines: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.fore?_STR_HideFore: _STR_ShowFore,NULL)); break; case MID_HideInstrs: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.instrpane?_STR_HideInstrs: _STR_ShowInstrs,NULL)); break; case MID_HideGloss: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.glosspane?_STR_HideGloss: _STR_ShowGloss,NULL)); break; case MID_HideGrid: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.grid?_STR_HideGrid: _STR_ShowGrid,NULL)); break; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER case MID_HideGridFit: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.gridspline?_STR_HideGridFit: _STR_ShowGridFit,NULL)); break; case MID_HideRaster: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.raster?_STR_HideRaster: _STR_ShowRaster,NULL)); break; # if TT_CONFIG_OPTION_BYTECODE_DEBUG case MID_HideTwilight: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.twilight?_STR_HideTwilight: _STR_ShowTwilight,NULL)); break; # endif #endif case MID_HideAddr: free(mi->ti.text); mi->ti.text = u_copy(GStringGetResource(cv->show.addr?_STR_HideAddress: _STR_ShowAddress,NULL)); break; } } } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, CVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, CVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, CVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, CVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; static GMenuItem vwlist[] = { { { (unichar_t *) _STR_Fit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 'F', ksm_control, NULL, NULL, CVMenuScale, MID_Fit }, { { (unichar_t *) _STR_Zoomout, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'o' }, '\0', ksm_control, NULL, NULL, CVMenuScale, MID_ZoomOut }, { { (unichar_t *) _STR_Zoomin, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'i' }, '\0', ksm_control, NULL, NULL, CVMenuScale, MID_ZoomIn }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_NextChar, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, ']', ksm_control, NULL, NULL, CVMenuChangeGlyph, MID_Next }, { { (unichar_t *) _STR_PrevChar, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, '[', ksm_control, NULL, NULL, CVMenuChangeGlyph, MID_Prev }, { { (unichar_t *) _STR_Goto, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'G' }, '>', ksm_shift|ksm_control, NULL, NULL, CVMenuGotoGlyph }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_ShowFore, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideSplines }, { { (unichar_t *) _STR_ShowInstrs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideInstrs }, { { (unichar_t *) _STR_ShowAddress, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideAddr }, #if TT_CONFIG_OPTION_BYTECODE_DEBUG { { (unichar_t *) _STR_ShowGloss, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideGloss }, #endif { { (unichar_t *) _STR_ShowGrid, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideGrid }, #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER { { (unichar_t *) _STR_ShowGridFit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideGridFit }, { { (unichar_t *) _STR_ShowRaster, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideRaster }, # if TT_CONFIG_OPTION_BYTECODE_DEBUG { { (unichar_t *) _STR_ShowTwilight, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuShowHide, MID_HideTwilight }, # endif #endif { { (unichar_t *) _STR_GridSize, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, '\0' }, '\0', ksm_control, NULL, NULL, CVMenuGridSize }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_View, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'V' }, 0, 0, vwlist, vwlistcheck }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; /* single glyphs */ void charCreateEditor(ConicFont *cf,int glyph) { CharView *cv = gcalloc(1,sizeof(CharView)); unichar_t title[100]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; static unichar_t num[] = { '0', '\0' }; int as,ds,ld; GGadgetData gd; char buf[100]; int x; instrhelpsetup(); cv->cc = LoadGlyph(cf,glyph); if ( cv->cc==NULL ) { GWidgetErrorR(_STR_CouldntReadGlyph,_STR_CouldntReadGlyphd,glyph); free(cv); return; } cv->next = cv->cc->views; cv->cc->views = cv; cv->show = charshows; cv->instrinfo.showaddr = charshows.addr; cv->scale = 1.0; sprintf(buf,"Glyph: %d ", glyph); uc_strcpy(title, buf); if ( cf->tfont->enc!=NULL && glyphtfont->enc->cnt && psunicodenames[cf->tfont->enc->uenc[glyph]]!=NULL ) uc_strncat(title,psunicodenames[cf->tfont->enc->uenc[glyph]],sizeof(buf)-strlen(buf)-1); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,cv_e_h,cv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; cv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(cv->mb,&gsize); cv->mbh = gsize.height; memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; cv->instrinfo.gfont = cv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(cv->gw,cv->gfont); GDrawFontMetrics(cv->gfont,&as,&ds,&ld); cv->numlen = GDrawGetTextWidth(cv->gw,num,1,NULL); cv->instrinfo.as = cv->as = as+1; cv->instrinfo.fh = cv->fh = cv->as+ds; cv->infoh = cv->fh + 2; rq.point_size = -10; cv->sfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawFontMetrics(cv->sfont,&as,&ds,&ld); cv->sas = as+1; cv->sfh = cv->sas+ds; cv->iwidth = INSTR_WIDTH; gd.pos.y = cv->mbh+cv->infoh; gd.pos.height = pos.height-gd.pos.y; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = cv->iwidth; gd.flags = gg_enabled|gg_pos_in_pixels|gg_sb_vert; if ( cv->show.instrpane ) gd.flags |= gg_visible; cv->instrinfo.vsb = GScrollBarCreate(gw,&gd,cv); GGadgetGetSize(cv->instrinfo.vsb,&gsize); cv->sbw = cv->instrinfo.sbw = gsize.width; wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = gd.pos.y; pos.width = gd.pos.x; pos.height = gd.pos.height; cv->instrinfo.v = GWidgetCreateSubWindow(gw,&pos,cv_iv_e_h,cv,&wattrs); GDrawSetVisible(cv->instrinfo.v,cv->show.instrpane); x = (cv->show.instrpane? cv->iwidth+cv->sbw+BAR_WIDTH : 0); cv->gvwidth = GLOSS_WIDTH; gd.pos.x = x+cv->gvwidth; gd.flags = gg_enabled|gg_pos_in_pixels|gg_sb_vert; if ( cv->show.glosspane ) gd.flags |= gg_visible; cv->gvsb = GScrollBarCreate(gw,&gd,cv); pos.x = x; pos.width = cv->gvwidth; cv->glossv = GWidgetCreateSubWindow(gw,&pos,cv_gv_e_h,cv,&wattrs); GDrawSetVisible(cv->glossv,cv->show.glosspane); x += (cv->show.glosspane? cv->gvwidth+cv->sbw+BAR_WIDTH : 0); gd.pos.x = x+CHAR_WIDTH; gd.pos.height -= cv->sbw; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; cv->vsb = GScrollBarCreate(gw,&gd,cv); gd.pos.x = x; gd.pos.width = CHAR_WIDTH; gd.pos.y = gd.pos.height; gd.pos.height = cv->sbw; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels; /* always visible */ cv->hsb = GScrollBarCreate(gw,&gd,cv); pos.x = x; pos.width = CHAR_WIDTH; pos.height -= cv->sbw; cv->v = GWidgetCreateSubWindow(gw,&pos,cv_v_e_h,cv,&wattrs); GDrawSetVisible(cv->v,true); x += CHAR_WIDTH+cv->sbw; GDrawResize(cv->gw,x,cv->mbh+cv->infoh+CHAR_WIDTH+cv->sbw); cv->instrinfo.instrdata = &cv->cc->instrdata; cv->instrinfo.isel_pos = -1; instr_typify(&cv->instrinfo); #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER FreeType_GridFitChar(cv); cv->instrinfo.selection_callback = cv_ii_selection_callback; #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG cv->instrinfo.gsel_pos = -1; CVGenerateGloss(cv); cv->cvt = TableFind(cv->cc->parent->tfont,CHR('c','v','t',' ')); TableFillup(cv->cvt); #endif GDrawSetVisible(gw,true); } mensis-080507/config.guess0100775000076500007650000011315007742401532013651 0ustar gwwgww#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. timestamp='2001-09-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Written by Per Bothner . # Please send patches to . # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; for c in cc gcc c89 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $dummy.c $dummy.o $dummy.rel ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # Netbsd (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # Determine the machine/vendor (is the vendor relevant). case "${UNAME_MACHINE}" in amiga) machine=m68k-unknown ;; arm32) machine=arm-unknown ;; atari*) machine=m68k-atari ;; sun3*) machine=m68k-sun ;; mac68k) machine=m68k-apple ;; macppc) machine=powerpc-apple ;; hp3[0-9][05]) machine=m68k-hp ;; ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE}" in i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; arc64:OpenBSD:*:*) echo mips64el-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hkmips:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; sparc*:NetBSD:*) echo `uname -p`-unknown-netbsd${UNAME_RELEASE} exit 0 ;; atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; sun3*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) case "${HPUX_REV}" in 11.[0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; esac ;; esac fi ;; esac if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; hppa*:OpenBSD:*:*) echo hppa-unknown-openbsd exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*X-MP:*:*:*) echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in big) echo mips-unknown-linux-gnu && exit 0 ;; little) echo mipsel-unknown-linux-gnu && exit 0 ;; esac ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. ld_supported_targets=`cd /; ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build cat >$dummy.c < #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 printf ("%s-pc-linux-gnu\n", argv[1]); # else printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif # else printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif #else printf ("%s-pc-linux-gnuaout\n", argv[1]); #endif return 0; } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) if test "${UNAME_MACHINE}" = "x86pc"; then UNAME_MACHINE=pc fi echo `uname -p`-${UNAME_MACHINE}-nto-qnx exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[KW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mensis-080507/config.h0100664000076500007650000001215107743353446012761 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MENSIS_CONFIG_H #define _MENSIS_CONFIG_H /****************************************************************************/ /* USER CONFIGURATION OPTIONS */ /****************************************************************************/ /* If you change any of these, do a "$ make clean" before building */ #ifndef TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* I have two levels of behavior for dealing with Apple's TTF patents */ /* Level 1 => You are not affected by these patents (if you're licensed by */ /* apple, or live somewhere that they don't apply) In this mode */ /* 1) Mensis will show you the splines before and after they are grid fit*/ /* 2) Mensis will show you the generated raster for that grid */ /* To use this mode you MUST also compile freetype with */ /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ /* defined in {include/freetype/config,builds/}/ftoption.h */ /* (Yes, I decided to use the same name to make the connection clear) */ /* Level 0 => You are affected by Apple's patents */ /* Mensis will not show you the grid fit splines or the resultant rasters*/ /* As I read the patents they apply to mensis as much as they do to the freetype */ /* library (which I used to do the gridfitting when allowed). See FreeType's */ /* patent page */ /* http://freetype.sourceforge.ent/patents2.html */ /* or contact Apple's legal department: patents@apple.com */ /* The default behavior is to presume that you are affected by the patents */ /* if you are not, then change the following #defined constant to 1 */ # define TT_CONFIG_OPTION_BYTECODE_INTERPRETER 0 #endif #ifndef TT_CONFIG_OPTION_BYTECODE_DEBUG /* I also have my own byte code interpreter. It has three modes and is */ /* dependent on both TT_CONFIG_OPTION_BYTECODE_INTERPRETER and the above flag*/ /* If the above flag is off then there will be no byte code debugger or */ /* interpreter in the program. If it is on and TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ /* is off then the interpreter will run but will not actually move any points*/ /* (it just figures out what points would be moved). If both are on then it */ /* will be a full interpreter and will (probably) be in violation of the patent */ /* I believe that the intermediate mode is perfectly legal, so I leave it on */ /* by default. */ # define TT_CONFIG_OPTION_BYTECODE_DEBUG 1 #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG && TT_CONFIG_OPTION_BYTECODE_INTERPRETER # ifndef TT_CONFIG_OPTION_FREETYPE_DEBUG /* If you have freetype with the bytecode interpreter enabled, and you have */ /* the freetype sources on your machine then, then you should define this */ /* flag to be 1. You should also add */ /* -I/src/truetype */ /* to your CFLAGS. If set then mensis will use freetype's built-in debugger */ /* as the basis of it's own debugging (it needs access to internal freetype */ /* include files, hence all the complexity). */ /* I leave this off by default because most people don't have the freetype */ /* sources on their machines. */ # define TT_CONFIG_OPTION_FREETYPE_DEBUG 0 # endif #endif #ifndef TT_RASTERIZE_FONTVIEW /* If you do not want to link with FreeType at all then turn this off. When */ /* on the fontview will use FreeType to rasterize bitmaps from the truetype */ /* to display in the fontview. When off the fontview will just pick a bitmap */ /* font already on your system and display glyphs from it. FreeType does not */ /* need the bytecode interpreter for this */ # define TT_RASTERIZE_FONTVIEW 1 #endif /****************************************************************************/ /* END OF USER CONFIGURATION OPTIONS */ /****************************************************************************/ #endif mensis-080507/config.sub0100775000076500007650000006710007742401532013317 0ustar gwwgww#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. timestamp='2001-09-07' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ | fr30 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | m32r | m68000 | m68k | m88k | mcore \ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsisa32 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | s390 | s390x \ | sh | sh[34] | sh[34]eb | shbe | shle \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | stormy16 | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 \ | we32k \ | x86 | xscale \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alphapca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cray2-* | cydra-* \ | d10v-* | d30v-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | m32r-* \ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | s390-* | s390x-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | ymp) basic_machine=ymp-cray os=-unicos ;; cray2) basic_machine=cray2-cray os=-unicos ;; [cjt]90) basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=t3e-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xmp) basic_machine=xmp-cray os=-unicos ;; xps | xps100) basic_machine=xps100-honeywell ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips fi ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mensis-080507/configure0100775000076500007650000122153111010401712013223 0ustar gwwgww#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="mensis.h" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CPP EGREP LIBTOOL X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS X_11LIB GLIBS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared=PKGS build shared libraries default=yes --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both --with-x use the X Window System Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' #AC_DISABLE_SHARED #AC_DISABLE_STATIC # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:$LINENO: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line 4140 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:$LINENO: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:$LINENO: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [12].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public 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 /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion echo "$as_me:$LINENO: checking for library containing dlopen" >&5 echo $ECHO_N "checking for library containing dlopen... $ECHO_C" >&6 if test "${ac_cv_search_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_dlopen=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_dlopen="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_dlopen" = no; then for ac_lib in dl; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_dlopen="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_dlopen" >&5 echo "${ECHO_T}$ac_cv_search_dlopen" >&6 if test "$ac_cv_search_dlopen" != no; then test "$ac_cv_search_dlopen" = "none required" || LIBS="$ac_cv_search_dlopen $LIBS" fi echo "$as_me:$LINENO: checking for library containing inet_aton" >&5 echo $ECHO_N "checking for library containing inet_aton... $ECHO_C" >&6 if test "${ac_cv_search_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_inet_aton=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_inet_aton="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_inet_aton" = no; then for ac_lib in resolv; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); int main () { inet_aton (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_inet_aton="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5 echo "${ECHO_T}$ac_cv_search_inet_aton" >&6 if test "$ac_cv_search_inet_aton" != no; then test "$ac_cv_search_inet_aton" = "none required" || LIBS="$ac_cv_search_inet_aton $LIBS" fi echo "$as_me:$LINENO: checking for library containing libiconv" >&5 echo $ECHO_N "checking for library containing libiconv... $ECHO_C" >&6 if test "${ac_cv_search_libiconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_libiconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char libiconv (); int main () { libiconv (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_libiconv="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_libiconv" = no; then for ac_lib in iconv; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char libiconv (); int main () { libiconv (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_libiconv="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_libiconv" >&5 echo "${ECHO_T}$ac_cv_search_libiconv" >&6 if test "$ac_cv_search_libiconv" != no; then test "$ac_cv_search_libiconv" = "none required" || LIBS="$ac_cv_search_libiconv $LIBS" fi FreeType2_IncRoot= if sh -c "freetype-config --prefix" >/dev/null 2>&1 ; then FreeType2_IncRoot=`freetype-config --prefix` as_ac_File=`echo "ac_cv_file_$FreeType2_IncRoot/include/freetype2" | $as_tr_sh` echo "$as_me:$LINENO: checking for $FreeType2_IncRoot/include/freetype2" >&5 echo $ECHO_N "checking for $FreeType2_IncRoot/include/freetype2... $ECHO_C" >&6 if eval "test \"\${$as_ac_File+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$FreeType2_IncRoot/include/freetype2"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 if test `eval echo '${'$as_ac_File'}'` = yes; then CPPFLAGS="$CPPFLAGS -I$FreeType2_IncRoot/include/freetype2/" else FreeType2_IncRoot= fi fi if test "FreeType2_IncRoot" = "" >/dev/null 2>&1 ; then echo "$as_me:$LINENO: checking for /usr/include/freetype2" >&5 echo $ECHO_N "checking for /usr/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/freetype2"; then ac_cv_file__usr_include_freetype2=yes else ac_cv_file__usr_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_include_freetype2" >&6 if test $ac_cv_file__usr_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/include/freetype2/" FreeType2_IncRoot="/usr" else echo "$as_me:$LINENO: checking for /usr/local/include/freetype2" >&5 echo $ECHO_N "checking for /usr/local/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_local_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/local/include/freetype2"; then ac_cv_file__usr_local_include_freetype2=yes else ac_cv_file__usr_local_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_local_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_local_include_freetype2" >&6 if test $ac_cv_file__usr_local_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/local/include -I/usr/local/include/freetype2/" FreeType2_IncRoot="/usr/local/" else echo "$as_me:$LINENO: checking for /usr/X11R6/include/freetype2" >&5 echo $ECHO_N "checking for /usr/X11R6/include/freetype2... $ECHO_C" >&6 if test "${ac_cv_file__usr_X11R6_include_freetype2+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/X11R6/include/freetype2"; then ac_cv_file__usr_X11R6_include_freetype2=yes else ac_cv_file__usr_X11R6_include_freetype2=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__usr_X11R6_include_freetype2" >&5 echo "${ECHO_T}$ac_cv_file__usr_X11R6_include_freetype2" >&6 if test $ac_cv_file__usr_X11R6_include_freetype2 = yes; then CPPFLAGS="CPPFLAGS -I/usr/X11R6/include -I/usr/X11R6/include/freetype2/" FreeType2_IncRoot="/usr/X11R6/" else cat >>confdefs.h <<\_ACEOF #define _NO_FREETYPE 1 _ACEOF fi fi fi fi gww_hasbytecode=no echo "$as_me:$LINENO: checking for FT_New_Face in -lfreetype" >&5 echo $ECHO_N "checking for FT_New_Face in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_FT_New_Face+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char FT_New_Face (); int main () { FT_New_Face (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_FT_New_Face=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_FT_New_Face=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_New_Face" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_FT_New_Face" >&6 if test $ac_cv_lib_freetype_FT_New_Face = yes; then echo -n checking if bytecode interpreter is on in freetype.h... echo "$as_me:$LINENO: checking for TT_RunIns in -lfreetype" >&5 echo $ECHO_N "checking for TT_RunIns in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_TT_RunIns+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char TT_RunIns (); int main () { TT_RunIns (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_TT_RunIns=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_TT_RunIns=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_TT_RunIns" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_TT_RunIns" >&6 if test $ac_cv_lib_freetype_TT_RunIns = yes; then gww_hasbytecode="yes" else : fi else cat >>confdefs.h <<\_ACEOF #define _NO_LIBFREETYPE 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define TT_RASTERIZE_FONTVIEW 0 _ACEOF fi echo "$as_me:$LINENO: checking for snprintf" >&5 echo $ECHO_N "checking for snprintf... $ECHO_C" >&6 if test "${ac_cv_func_snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define snprintf to an innocuous variant, in case declares snprintf. For example, HP-UX 11i declares gettimeofday. */ #define snprintf innocuous_snprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char snprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef snprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char snprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_snprintf) || defined (__stub___snprintf) choke me #else char (*f) () = snprintf; #endif #ifdef __cplusplus } #endif int main () { return f != snprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_snprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_snprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_snprintf" >&5 echo "${ECHO_T}$ac_cv_func_snprintf" >&6 if test $ac_cv_func_snprintf = yes; then : else cat >>confdefs.h <<\_ACEOF #define _NO_SNPRINTF 1 _ACEOF fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF #define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi X_11LIB=-lX11 if test "$no_x" = "yes"; then X_11LIB= else echo "$as_me:$LINENO: checking for XOpenDevice in -lXi" >&5 echo $ECHO_N "checking for XOpenDevice in -lXi... $ECHO_C" >&6 if test "${ac_cv_lib_Xi_XOpenDevice+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXi $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDevice (); int main () { XOpenDevice (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xi_XOpenDevice=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xi_XOpenDevice=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xi_XOpenDevice" >&5 echo "${ECHO_T}$ac_cv_lib_Xi_XOpenDevice" >&6 if test $ac_cv_lib_Xi_XOpenDevice = yes; then X_11LIB="-lXi -lX11" else cat >>confdefs.h <<\_ACEOF #define _NO_XINPUT 1 _ACEOF fi echo "$as_me:$LINENO: checking for XkbQueryExtension in -lxkbui" >&5 echo $ECHO_N "checking for XkbQueryExtension in -lxkbui... $ECHO_C" >&6 if test "${ac_cv_lib_xkbui_XkbQueryExtension+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lxkbui $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XkbQueryExtension (); int main () { XkbQueryExtension (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_xkbui_XkbQueryExtension=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_xkbui_XkbQueryExtension=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_xkbui_XkbQueryExtension" >&5 echo "${ECHO_T}$ac_cv_lib_xkbui_XkbQueryExtension" >&6 if test $ac_cv_lib_xkbui_XkbQueryExtension = yes; then X_11LIB="$X_11LIB -lxkbui" else cat >>confdefs.h <<\_ACEOF #define _NO_XKB 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pthread_create (); int main () { pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pthread_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread_pthread_create=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 if test $ac_cv_lib_pthread_pthread_create = yes; then : else : fi GLIBS= echo "$as_me:$LINENO: checking for u_strcpy in -lgdraw" >&5 echo $ECHO_N "checking for u_strcpy in -lgdraw... $ECHO_C" >&6 if test "${ac_cv_lib_gdraw_u_strcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgdraw -lgutils -lgunicode $X_LIBS $X_PRE_LIBS $X_11LIB -lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char u_strcpy (); int main () { u_strcpy (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gdraw_u_strcpy=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gdraw_u_strcpy=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gdraw_u_strcpy" >&5 echo "${ECHO_T}$ac_cv_lib_gdraw_u_strcpy" >&6 if test $ac_cv_lib_gdraw_u_strcpy = yes; then GLIBS="-lgdraw -lgutils -lgunicode" else : fi if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo "$as_me:$LINENO: checking for fontforge/basics.h" >&5 echo $ECHO_N "checking for fontforge/basics.h... $ECHO_C" >&6 if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_fontforge_basics_h" >&5 echo "${ECHO_T}$ac_cv_header_fontforge_basics_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking fontforge/basics.h usability" >&5 echo $ECHO_N "checking fontforge/basics.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking fontforge/basics.h presence" >&5 echo $ECHO_N "checking fontforge/basics.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: fontforge/basics.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: fontforge/basics.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: fontforge/basics.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: fontforge/basics.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: fontforge/basics.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: fontforge/basics.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: fontforge/basics.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: fontforge/basics.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: fontforge/basics.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for fontforge/basics.h" >&5 echo $ECHO_N "checking for fontforge/basics.h... $ECHO_C" >&6 if test "${ac_cv_header_fontforge_basics_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_fontforge_basics_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_fontforge_basics_h" >&5 echo "${ECHO_T}$ac_cv_header_fontforge_basics_h" >&6 fi if test $ac_cv_header_fontforge_basics_h = yes; then : else echo "You must install the include files for fontforge" echo "before building mensis." exit 1 fi if test "$GLIBS" "=" "" >/dev/null 2>&1 ; then GLIBS="-L.. -lgdraw -lgutils -lgunicode" if test \! -e ../.libs/libgunicode.la >/dev/null 2>&1 ; then echo "warning: You must build fontforge (or at least its libaries)" echo "before building mensis." fi fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. cat >confdef2opt.sed <<\_ACEOF t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g s,\$,$$,g p _ACEOF # We use echo to avoid assuming a particular line-breaking character. # The extra dot is to prevent the shell from consuming trailing # line-breaks from the sub-command output. A line-break within # single-quotes doesn't work because, if this script is created in a # platform that uses two characters for line-breaks (e.g., DOS), tr # would break. ac_LF_and_DOT=`echo; echo .` DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` rm -f confdef2opt.sed ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@X_11LIB@,$X_11LIB,;t t s,@GLIBS@,$GLIBS,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test "$gww_hasbytecode" = "no" >/dev/null 2>&1 ; then echo " ******************************************************************" echo " * mensis can do a lot more if you build it on a system that has *" echo " * the byte code interpretter enabled in freetype. See the free *" echo " * type patent page (http://freetype.sf.net/patents.html), to see *" echo " * if you can legally do this, and if so read the freetype docs *" echo " * on how to set TT_CONFIG_OPTION_BYTECODE_INTERPRETER *" echo " ******************************************************************" fi echo Configuration defines: $DEFS if test "$FreeType2_TT_SRC_DIR" \!= "" >/dev/null 2>&1 ; then echo FreeType sources: $FreeType2_TT_SRC_DIR fi mensis-080507/configure.in0100664000076500007650000001001711010401671013623 0ustar gwwgwwdnl Process this file with autoconf to produce a configure script. AC_INIT(mensis.h) AC_PROG_CC AC_PROG_INSTALL #AC_DISABLE_SHARED #AC_DISABLE_STATIC AC_PROG_LIBTOOL AC_SEARCH_LIBS(dlopen, dl) dnl some systems have this in libc AC_SEARCH_LIBS(inet_aton, resolv) dnl some systems have this in libc AC_SEARCH_LIBS(libiconv, iconv) dnl linux has iconv in libc, mac,solaris have libiconv in libiconv, and a define to map iconv() to libiconv(), so we can't do the obvious check dnl Is there a better way to add a directory to the include path? FreeType2_IncRoot= if sh -c "freetype-config --prefix" >/dev/null 2>&1 ; then FreeType2_IncRoot=`freetype-config --prefix` AC_CHECK_FILE($FreeType2_IncRoot/include/freetype2,CPPFLAGS="$CPPFLAGS -I$FreeType2_IncRoot/include/freetype2/",FreeType2_IncRoot=) fi if test "FreeType2_IncRoot" = "" >/dev/null 2>&1 ; then AC_CHECK_FILE(/usr/include/freetype2,[CPPFLAGS="CPPFLAGS -I/usr/include/freetype2/" FreeType2_IncRoot="/usr" ],[ AC_CHECK_FILE(/usr/local/include/freetype2,[CPPFLAGS="CPPFLAGS -I/usr/local/include -I/usr/local/include/freetype2/" FreeType2_IncRoot="/usr/local/" ],[ AC_CHECK_FILE(/usr/X11R6/include/freetype2,[CPPFLAGS="CPPFLAGS -I/usr/X11R6/include -I/usr/X11R6/include/freetype2/" FreeType2_IncRoot="/usr/X11R6/" ],AC_DEFINE(_NO_FREETYPE))])]) fi gww_hasbytecode=no dnl check for freetype. If it doesn't exist then turn off dnl rasterization code (which uses it). dnl But if it does exist... dnl We assume they can't use Apple's patents, do default behavior (in config.h) dnl is to turn off the interpreter. But if freetype were compiled with the dnl interpreter on then we can assume we can use it too and turn it on here. AC_CHECK_LIB(freetype, FT_New_Face, [ dnl only check for the interp if they've got freetype (ie. they might have dnl the headers, but no library, and that would confuse us mightily echo -n checking if bytecode interpreter is on in freetype.h... AC_CHECK_LIB(freetype, TT_RunIns, gww_hasbytecode="yes", : )], [ AC_DEFINE(_NO_LIBFREETYPE) AC_DEFINE(TT_RASTERIZE_FONTVIEW,0) ]) dnl older libc's don't have snprintf AC_CHECK_FUNC(snprintf, : , AC_DEFINE(_NO_SNPRINTF)) AC_C_CONST AC_PATH_XTRA AC_SUBST(X_11LIB) X_11LIB=-lX11 if test "$no_x" = "yes"; then X_11LIB= else dnl AC_CHECK_HEADER(X11/extensions/XInput.h, : ,AC_DEFINE(_NO_XINPUT),) dnl AC_CHECK_HEADER(X11/extensions/XI.h, : ,AC_DEFINE(_NO_XINPUT),) dnl /usr/share/doc/XFree86-doc-4.2.0/Xi/lib.PS AC_CHECK_LIB(Xi, XOpenDevice, X_11LIB="-lXi -lX11" ,AC_DEFINE(_NO_XINPUT), $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 ) AC_CHECK_LIB(xkbui, XkbQueryExtension, X_11LIB="$X_11LIB -lxkbui" ,AC_DEFINE(_NO_XKB), $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 ) fi AC_CHECK_LIB(pthread, pthread_create, :, : ) AC_SUBST(GLIBS) GLIBS= AC_CHECK_LIB(gdraw, u_strcpy, GLIBS="-lgdraw -lgutils -lgunicode", : , -lgutils -lgunicode $X_LIBS $X_PRE_LIBS $X_11LIB -lm ) AC_CHECK_HEADER(fontforge/basics.h, : , [ echo "You must install the include files for fontforge" echo "before building mensis." exit 1 ]) if test "$GLIBS" "=" "" >/dev/null 2>&1 ; then GLIBS="-L.. -lgdraw -lgutils -lgunicode" if test \! -e ../.libs/libgunicode.la >/dev/null 2>&1 ; then echo "warning: You must build fontforge (or at least its libaries)" echo "before building mensis." fi fi AC_OUTPUT(Makefile) if test "$gww_hasbytecode" = "no" >/dev/null 2>&1 ; then echo " ******************************************************************" echo " * mensis can do a lot more if you build it on a system that has *" echo " * the byte code interpretter enabled in freetype. See the free *" echo " * type patent page (http://freetype.sf.net/patents.html), to see *" echo " * if you can legally do this, and if so read the freetype docs *" echo " * on how to set TT_CONFIG_OPTION_BYTECODE_INTERPRETER *" echo " ******************************************************************" fi echo Configuration defines: $DEFS if test "$FreeType2_TT_SRC_DIR" \!= "" >/dev/null 2>&1 ; then echo FreeType sources: $FreeType2_TT_SRC_DIR fi dnl EOF mensis-080507/conicfont.h0100664000076500007650000001432507742401532013470 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _CONICFONT_H #define _CONICFONT_H #include "ttffont.h" #include "config.h" typedef struct ipoint { int x; int y; } IPoint; typedef struct basepoint { real x; real y; int pnum; /* TrueType points/control points are numbered. -1 => hidden point */ } BasePoint; typedef struct dbounds { real minx, maxx; real miny, maxy; } DBounds; enum pointtype { pt_curve, pt_corner, pt_tangent }; typedef struct conicpoint { BasePoint me; BasePoint *nextcp; /* control point (NULL for lines) */ BasePoint *prevcp; /* control point, shared with pt at other end of conic spline */ unsigned int selected:1; /* for UI */ unsigned int pointtype:2; unsigned int ishidden:1; /* a point which is at the average of the two control points around it */ struct conic *next; struct conic *prev; } ConicPoint; typedef struct linelist { IPoint here; struct linelist *next; /* The first two fields are constant for the linelist, the next ones */ /* refer to a particular screen. If some portion of the line from */ /* this point to the next one is on the screen then set cvli_onscreen */ /* if this point needs to be clipped then set cvli_clipped */ /* asend and asstart are the actual screen locations where this point */ /* intersects the clip edge. */ enum { cvli_onscreen=0x1, cvli_clipped=0x2 } flags; IPoint asend, asstart; } LineList; typedef struct linearapprox { real scale; unsigned int oneline: 1; unsigned int onepoint: 1; unsigned int any: 1; /* refers to a particular screen */ struct linelist *lines; struct linearapprox *next; } LinearApprox; typedef struct conic1d { real a, b, c; } Conic1D; typedef struct conic { unsigned int islinear: 1; /* No control points */ unsigned int isticked: 1; unsigned int touched: 1; ConicPoint *from, *to; Conic1D conics[2]; /* conics[0] is the x conic, conics[1] is y */ struct linearapprox *approx; } Conic; typedef struct conicpointlist { ConicPoint *first, *last; struct conicpointlist *next; } ConicPointList, ConicSet; typedef struct refchar { unsigned int checked: 1; unsigned int selected: 1; unsigned int use_my_metrics: 1; unsigned int round: 1; unsigned int point_match: 1; unsigned int tiny_output: 1; int glyph; real transform[6]; /* transformation matrix (first 2 rows of a 3x3 matrix, missing row is 0,0,1) */ ConicPointList *conics; struct refchar *next; DBounds bb; struct conicchar *cc; } RefChar; struct instrdata { uint8 *instrs; int instr_cnt; uint8 *bts; unsigned int in_composit: 1; }; typedef struct conicchar { int glyph; int width; int16 lbearing, ptn; ConicPointList *conics; RefChar *refs; int point_cnt; struct instrdata instrdata; struct charview *views; struct conicfont *parent; unsigned int loaded: 1; unsigned int changed: 1; unsigned int ticked: 1; /* For reference character processing */ struct coniccharlist { struct conicchar *cc; struct coniccharlist *next;} *dependents; /* The dependents list is a list of all characters which refenence*/ /* the current character directly */ int32 glyph_offset, glyph_len; int tiny_glyph; /* Used when dumping a tiny ttf font */ } ConicChar; typedef struct conicfont { int glyph_cnt; ConicChar **chars; #if TT_RASTERIZE_FONTVIEW void **raster; void *ttf_handle; #endif unsigned int changed: 1; struct fontview *fv; TtfFont *tfont; TtfFile *tfile; Table *glyphs, *loca; int em; } ConicFont; void *chunkalloc(int size); void chunkfree(void *item,int size); int RealNear(real a,real b); int RealNearish(real a,real b); int RealApprox(real a,real b); void LineListFree(LineList *ll); void LinearApproxFree(LinearApprox *la); void ConicFree(Conic *conic); void ConicPointFree(ConicPoint *sp); void ConicPointListFree(ConicPointList *spl); void ConicPointListsFree(ConicPointList *head); void RefCharFree(RefChar *ref); void RefCharsFree(RefChar *ref); void ConicCharFree(ConicChar *cc); void ConicRefigure(Conic *conic); Conic *ConicMake(ConicPoint *from, ConicPoint *to); ConicPointList *ConicPointListCopy(ConicPointList *base); ConicPointList *ConicPointListTransform(ConicPointList *base, real transform[6]); void RefCharRefigure(RefChar *ref); void RefCharAddDependant(RefChar *ref,ConicChar *referer); ConicChar *LoadGlyph(ConicFont *cf, int glyph); ConicFont *LoadConicFont(TtfFont *tfont); LinearApprox *ConicApproximate(Conic *conic, real scale); void ConicSetFindBounds(ConicPointList *spl, DBounds *bounds); void ConicCharFindBounds(ConicChar *cc,DBounds *bounds); void ConicFontFindBounds(ConicFont *sf,DBounds *bounds); void ConicPointCatagorize(ConicPoint *sp); int ConicPointIsACorner(ConicPoint *sp); void CCCatagorizePoints(ConicChar *cc); #endif mensis-080507/conicutil.c0100664000076500007650000011234307742401532013471 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensis.h" #include #include static int default_to_Apple = 0; /* Normally we assume the MS interpretation */ /* At the moment this only controls composit offsets */ #define _On_Curve 1 #define _X_Short 2 #define _Y_Short 4 #define _Repeat 8 #define _X_Same 0x10 #define _Y_Same 0x20 #ifndef chunkalloc #define ALLOC_CHUNK 100 #define CHUNK_MAX 120 #if ALLOC_CHUNK>1 struct chunk { struct chunk *next; }; static struct chunk *chunklists[CHUNK_MAX/4] = { 0 }; #endif void *chunkalloc(int size) { # if ALLOC_CHUNK<=1 return( gcalloc(1,size)); # else struct chunk *item; int index; if ( (size&0x3) || size>=CHUNK_MAX || size<=sizeof(struct chunk)) { fprintf( stderr, "Attempt to allocate something of size %d\n", size ); return( gcalloc(1,size)); } if ( sizeof(int *)==8 ) { size = ((size+7)>>3)<<3; index = size>>3; } else index = size>>2; if ( chunklists[index]==NULL ) { char *pt, *end; pt = galloc(ALLOC_CHUNK*size); chunklists[index] = (struct chunk *) pt; end = pt+(ALLOC_CHUNK-1)*size; while ( ptnext = (struct chunk *) (pt + size); pt += size; } ((struct chunk *) pt)->next = NULL; } item = chunklists[index]; chunklists[index] = item->next; memset(item,'\0',size); return( item ); # endif } void chunkfree(void *item,int size) { # if ALLOC_CHUNK<=1 free(item); # else if ( item==NULL ) return; if ( (size&0x3) || size>=CHUNK_MAX || size<=sizeof(struct chunk)) { fprintf( stderr, "Attempt to free something of size %d\n", size ); free(item); } else if ( sizeof(int *)==8 ) { ((struct chunk *) item)->next = chunklists[size>>3]; chunklists[size>>3] = (struct chunk *) item; } else { ((struct chunk *) item)->next = chunklists[size>>2]; chunklists[size>>2] = (struct chunk *) item; } # endif } #endif int RealNear(real a,real b) { real d; #ifdef USE_DOUBLE if ( a==0 ) return( b>-1e-8 && b<1e-8 ); if ( b==0 ) return( a>-1e-8 && a<1e-8 ); d = a/(1024*1024.); if ( d<0 ) d = -d; return( b>a-d && b-1e-5 && b<1e-5 ); if ( b==0 ) return( a>-1e-5 && a<1e-5 ); d = a/(1024*64.); if ( d<0 ) d = -d; return( b>a-d && b-.001 ) return( true ); return( false ); } int RealApprox(real a,real b) { if ( a==0 ) { if ( b<.0001 && b>-.0001 ) return( true ); } else if ( b==0 ) { if ( a<.0001 && a>-.0001 ) return( true ); } else { a /= b; if ( a>=.95 && a<=1.05 ) return( true ); } return( false ); } void LineListFree(LineList *ll) { LineList *next; while ( ll!=NULL ) { next = ll->next; chunkfree(ll,sizeof(LineList)); ll = next; } } void LinearApproxFree(LinearApprox *la) { LinearApprox *next; while ( la!=NULL ) { next = la->next; LineListFree(la->lines); chunkfree(la,sizeof(LinearApprox)); la = next; } } void ConicFree(Conic *conic) { LinearApproxFree(conic->approx); chunkfree(conic,sizeof(Conic)); } void ConicPointFree(ConicPoint *sp) { chunkfree(sp,sizeof(ConicPoint)); } void ConicPointListFree(ConicPointList *spl) { Conic *first, *conic, *next; if ( spl==NULL ) return; first = NULL; for ( conic = spl->first->next; conic!=NULL && conic!=first; conic = next ) { next = conic->to->next; chunkfree(conic->to->prevcp,sizeof(BasePoint)); ConicPointFree(conic->to); ConicFree(conic); if ( first==NULL ) first = conic; } if ( spl->last!=spl->first || spl->first->next==NULL ) ConicPointFree(spl->first); chunkfree(spl,sizeof(ConicPointList)); } void ConicPointListsFree(ConicPointList *head) { ConicPointList *spl, *next; for ( spl=head; spl!=NULL; spl=next ) { next = spl->next; ConicPointListFree(spl); } } void RefCharFree(RefChar *ref) { if ( ref==NULL ) return; ConicPointListsFree(ref->conics); chunkfree(ref,sizeof(RefChar)); } void RefCharsFree(RefChar *ref) { RefChar *rnext; while ( ref!=NULL ) { rnext = ref->next; RefCharFree(ref); ref = rnext; } } void ConicCharFree(ConicChar *cc) { struct coniccharlist *dlist, *dnext; if ( cc==NULL ) return; ConicPointListsFree(cc->conics); RefCharsFree(cc->refs); for ( dlist=cc->dependents; dlist!=NULL; dlist = dnext ) { dnext = dlist->next; chunkfree(dlist,sizeof(struct coniccharlist)); } chunkfree(cc,sizeof(ConicChar)); } void ConicRefigure(Conic *conic) { ConicPoint *from = conic->from, *to = conic->to; Conic1D *xsp = &conic->conics[0], *ysp = &conic->conics[1]; real t, y; #ifdef DEBUG if ( RealNear(from->me.x,to->me.x) && RealNear(from->me.y,to->me.y)) GDrawIError("Zero length conic created"); #endif if ( from->nextcp!=to->prevcp ) GDrawIError( "Inconsistancy in ConicRefigure" ); xsp->c = from->me.x; ysp->c = from->me.y; conic->islinear = ( from->nextcp==NULL ); if ( from->nextcp!=NULL ) { if ( from->me.x==to->me.x ) { if ( from->me.x==from->nextcp->x && ((from->nextcp->y>=from->me.y && from->nextcp->y<=to->me.y) || (from->nextcp->y<=from->me.y && from->nextcp->y>=to->me.y)) ) conic->islinear = true; } else if ( from->me.y==to->me.y ) { if ( from->me.y==from->nextcp->y && ((from->nextcp->x>=from->me.x && from->nextcp->x<=to->me.x) || (from->nextcp->x<=from->me.x && from->nextcp->x>=to->me.x)) ) conic->islinear = true; } else { t = (from->nextcp->x-from->me.x)/(to->me.x-from->me.x); y = t*(to->me.y-from->me.y) + from->me.y; if ( rint(y)==rint(from->nextcp->y) ) conic->islinear = true; } } if ( conic->islinear ) { xsp->a = ysp->a = 0; xsp->b = to->me.x-from->me.x; ysp->b = to->me.y-from->me.y; } else { xsp->b = 2*from->nextcp->x-2*from->me.x; xsp->a = to->me.x+from->me.x-2*from->nextcp->x; ysp->b = 2*from->nextcp->y-2*from->me.y; ysp->a = to->me.y+from->me.y-2*from->nextcp->y; if ( RealNear(xsp->b,0)) xsp->b=0; if ( RealNear(ysp->b,0)) ysp->b=0; if ( RealNear(xsp->a,0)) xsp->a=0; if ( RealNear(ysp->a,0)) ysp->a=0; if ( xsp->a==0 && ysp->a==0 ) conic->islinear = true; /* Can this happen? */ } if ( isnan(ysp->a) || isnan(xsp->a) ) GDrawIError("NaN value in conic creation"); LinearApproxFree(conic->approx); conic->approx = NULL; } Conic *ConicMake(ConicPoint *from, ConicPoint *to) { Conic *conic = chunkalloc(sizeof(Conic)); conic->from = from; conic->to = to; from->next = to->prev = conic; ConicRefigure(conic); return( conic ); } static void TransformPoint(BasePoint *bp, real transform[6]) { BasePoint p; p.x = transform[0]*bp->x + transform[2]*bp->y + transform[4]; p.y = transform[1]*bp->x + transform[3]*bp->y + transform[5]; p.x = rint(1024*p.x)/1024; p.y = rint(1024*p.y)/1024; p.pnum = bp->pnum; *bp = p; } ConicPointList *ConicPointListCopy(ConicPointList *base) { ConicPointList *spl; ConicPointList *hspl, *lspl=NULL, *cspl; ConicPoint *spt, *pfirst, *csp, *last; /* Note that this preserves the pnum field in the conic/basepoints */ for ( spl = base; spl!=NULL; spl = spl->next ) { cspl = chunkalloc(sizeof(ConicPointList)); if ( lspl==NULL ) hspl = cspl; else lspl->next = cspl; lspl = cspl; pfirst = NULL; last = NULL; for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to ) { csp = chunkalloc(sizeof(ConicPoint)); *csp = *spt; if ( csp->nextcp!=NULL ) { csp->nextcp = chunkalloc(sizeof(BasePoint)); *csp->nextcp = *spt->nextcp; } if ( pfirst==NULL ) { pfirst = spt; cspl->first = cspl->last = csp; csp->prevcp = NULL; /* for now */ } else { csp->prevcp = last->nextcp; ConicMake(last,csp); } last = csp; if ( spt->next==NULL ) { cspl->last = csp; break; } } if ( spt==pfirst ) { cspl->first->prevcp = last->nextcp; ConicMake(last,cspl->first); } } return( hspl ); } ConicPointList *ConicPointListTransform(ConicPointList *base, real transform[6]) { Conic *conic, *first; ConicPointList *spl; ConicPoint *spt, *pfirst; for ( spl = base; spl!=NULL; spl = spl->next ) { pfirst = NULL; for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to ) { if ( pfirst==NULL ) pfirst = spt; TransformPoint(&spt->me,transform); if ( spt->nextcp != NULL ) TransformPoint(spt->nextcp,transform); if ( spt->next==NULL ) break; } first = NULL; for ( conic = spl->first->next; conic!=NULL && conic!=first; conic=conic->to->next ) { ConicRefigure(conic); if ( first==NULL ) first = conic; } } return( base ); } static BasePoint *CCGetTTFPoint(ConicChar *cc,int pnum) { ConicPointList *spl; ConicPoint *sp; RefChar *rf; if ( cc!=NULL ) return( NULL ); for ( spl = cc->conics; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) return( &sp->me ); if ( sp->nextcp!=NULL && sp->nextcp->pnum==pnum ) return( sp->nextcp ); if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } } for ( rf=cc->refs; rf!=NULL; rf = rf->next ) { for ( spl = rf->conics; spl!=NULL; spl = spl->next ) { for ( sp = spl->first; ; ) { if ( sp->me.pnum==pnum ) return( &sp->me ); if ( sp->nextcp!=NULL && sp->nextcp->pnum==pnum ) return( sp->nextcp ); if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==spl->first ) break; } } } return( NULL ); } void RefCharRefigure(RefChar *ref) { ConicSet *last = NULL, *temp; RefChar *rf; ConicPointListsFree(ref->conics); ref->conics = ConicPointListTransform(ConicPointListCopy(ref->cc->conics),ref->transform); for ( last=ref->conics; last!=NULL && last->next!=NULL; last=last->next ); /* in correct truetype the following should never happen */ for ( rf = ref->cc->refs; rf!=NULL; rf=rf->next ) { temp = ConicPointListTransform(rf->conics,ref->transform); if ( last==NULL ) ref->conics = temp; else last->next = temp; if ( temp==NULL ) /* last doesn't change */; else { while ( temp->next!=NULL ) temp = temp->next; last = temp; } } ConicSetFindBounds(ref->conics,&ref->bb); } void RefCharAddDependant(RefChar *ref,ConicChar *referer) { struct coniccharlist *list; for ( list=ref->cc->dependents; list!=NULL && list->cc!=referer; list=list->next ); if ( list!=NULL ) /* Already there */ return; list = chunkalloc(sizeof(struct coniccharlist)); list->next = ref->cc->dependents; list->cc = referer; ref->cc->dependents = list; } static void AttachControls(ConicPoint *from, ConicPoint *to, BasePoint *cp) { from->nextcp = to->prevcp = chunkalloc(sizeof(BasePoint)); *from->nextcp = *cp; } /* This section copied out of parsettf.c */ static ConicSet *ttfbuildcontours(int path_cnt,uint16 *endpt, char *flags, BasePoint *pts) { ConicSet *head=NULL, *last=NULL, *cur; int i, path, start, last_off; ConicPoint *sp; for ( path=i=0; pathnext = cur; last = cur; last_off = false; start = i; while ( i<=endpt[path] ) { if ( flags[i]&_On_Curve ) { sp = chunkalloc(sizeof(ConicPoint)); sp->me = pts[i]; sp->nextcp = sp->prevcp = NULL; if ( last_off && cur->last!=NULL ) AttachControls(cur->last,sp,&pts[i-1]); last_off = false; } else if ( last_off ) { /* two off curve points get a third on curve point created */ /* half-way between them. Now isn't that special */ sp = chunkalloc(sizeof(ConicPoint)); sp->me.x = (pts[i].x+pts[i-1].x)/2; sp->me.y = (pts[i].y+pts[i-1].y)/2; sp->me.pnum = -1; sp->nextcp = sp->prevcp = NULL; if ( last_off && cur->last!=NULL ) AttachControls(cur->last,sp,&pts[i-1]); /* last_off continues to be true */ } else { last_off = true; sp = NULL; } if ( sp!=NULL ) { if ( cur->first==NULL ) cur->first = sp; else ConicMake(cur->last,sp); cur->last = sp; } ++i; } if ( start==i-1 ) { /* MS chinese fonts have contours consisting of a single off curve*/ /* point. What on earth do they think that means? */ sp = chunkalloc(sizeof(ConicPoint)); sp->me.x = pts[start].x; sp->me.y = pts[start].y; cur->first = cur->last = sp; } else if ( !(flags[start]&_On_Curve) && !(flags[i-1]&_On_Curve) ) { sp = chunkalloc(sizeof(ConicPoint)); sp->me.x = (pts[start].x+pts[i-1].x)/2; sp->me.y = (pts[start].y+pts[i-1].y)/2; sp->me.pnum = -1; sp->nextcp = sp->prevcp = NULL; AttachControls(cur->last,sp,&pts[i-1]); ConicMake(cur->last,sp); cur->last = sp; AttachControls(sp,cur->first,&pts[start]); } else if ( !(flags[i-1]&_On_Curve)) AttachControls(cur->last,cur->first,&pts[i-1]); else if ( !(flags[start]&_On_Curve) ) AttachControls(cur->last,cur->first,&pts[start]); ConicMake(cur->last,cur->first); cur->last = cur->first; } return( head ); } static void readttfsimpleglyph(FILE *ttf,ConicChar *cc, int path_cnt) { uint16 *endpt = galloc((path_cnt+1)*sizeof(uint16)); char *flags; BasePoint *pts; int i, j, tot; int last_pos; for ( i=0; iinstrdata.in_composit = cc->refs!=NULL; cc->instrdata.instr_cnt = getushort(ttf); cc->instrdata.instrs = galloc(cc->instrdata.instr_cnt); for ( i=0; iinstrdata.instr_cnt; ++i ) cc->instrdata.instrs[i] = getc(ttf); flags = galloc(tot); for ( i=0; i=tot ) GDrawIError("Flag count is wrong (or total is): %d %d", i+cnt, tot ); for ( j=0; jconics = ttfbuildcontours(path_cnt,endpt,flags,pts); cc->point_cnt = tot; CCCatagorizePoints(cc); free(endpt); free(flags); free(pts); } #define _ARGS_ARE_WORDS 1 #define _ARGS_ARE_XY 2 #define _ROUND 4 /* offsets rounded to grid */ #define _SCALE 8 #define _MORE 0x20 #define _XY_SCALE 0x40 #define _MATRIX 0x80 #define _INSTR 0x100 #define _MY_METRICS 0x200 #define _OVERLAP_COMPOUND 0x400 /* Used in Apple GX fonts */ /* Means the componants overlap (which? this one and what other?) */ /* These two described in OpenType specs, not by Apple yet */ #define _SCALED_OFFSETS 0x800 /* Use Apple definition of offset interpretation */ #define _UNSCALED_OFFSETS 0x1000 /* Use MS definition */ static void readttfcompositglyph(FILE *ttf,ConicFont *cf,ConicChar *cc, int32 end) { RefChar *head=NULL, *last=NULL, *cur; int flags, arg1, arg2; int i, pnum; ConicPointList *cpl; ConicPoint *sp; do { if ( ftell(ttf)>=end ) { fprintf( stderr, "Bad flags value, implied MORE components at end of glyph\n" ); break; } cur = chunkalloc(sizeof(RefChar)); flags = getushort(ttf); cur->glyph = getushort(ttf); if ( flags&_ARGS_ARE_WORDS ) { arg1 = (short) getushort(ttf); arg2 = (short) getushort(ttf); } else { arg1 = (signed char) getc(ttf); arg2 = (signed char) getc(ttf); } if ( flags & _ARGS_ARE_XY ) { cur->transform[4] = arg1; cur->transform[5] = arg2; /* There is some very strange stuff (half-)documented on the apple*/ /* site about how these should be interpretted when there are */ /* scale factors, or rotations */ /* It isn't well enough described to be comprehensible */ /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ /* Microsoft says nothing about this */ /* Adobe implies this is a difference between MS and Apple */ /* MS doesn't do this, Apple does (GRRRGH!!!!) */ /* Adobe says that setting bit 12 means that this will not happen */ /* Adobe says that setting bit 11 means that this will happen */ /* So if either bit is set we know when this happens, if neither */ /* we guess... But I still don't know how to interpret the */ /* apple mode under rotation... */ /* I notice that FreeType does nothing about rotation nor does it */ /* interpret bits 11&12 */ } else { /* Somehow we can get offsets by looking at the points in the */ /* points so far generated and comparing them to the points in */ /* the current componant */ /* How exactly is not described on any of the Apple, MS, Adobe */ /* freetype looks up arg1 in the set of points we've got so far */ /* looks up arg2 in the new component (before renumbering) */ /* offset.x = arg1.x - arg2.x; offset.y = arg1.y - arg2.y; */ /* Sadly I don't retain the information I need to deal with this */ /* I lose the point numbers and the control points... */ cur->point_match = true; fprintf( stderr, "TTF IError: I don't understand matching points. Please send me a copy\n" ); fprintf( stderr, " of whatever ttf file you are looking at. Thanks. gww@silcom.com\n" ); } cur->transform[0] = cur->transform[3] = 1.0; if ( flags & _SCALE ) cur->transform[0] = cur->transform[3] = get2dot14(ttf); else if ( flags & _XY_SCALE ) { cur->transform[0] = get2dot14(ttf); cur->transform[3] = get2dot14(ttf); } else if ( flags & _MATRIX ) { cur->transform[0] = get2dot14(ttf); cur->transform[1] = get2dot14(ttf); cur->transform[2] = get2dot14(ttf); cur->transform[3] = get2dot14(ttf); } /* If neither SCALED/UNSCALED specified I'll just assume MS interpretation */ if ( ((default_to_Apple && !(flags&_UNSCALED_OFFSETS)) || (flags & _SCALED_OFFSETS)) && (flags & _ARGS_ARE_XY) && (flags&(_SCALE|_XY_SCALE|_MATRIX))) { static int asked = 0; /* This is not what Apple documents on their website. But it is */ /* what appears to match the behavior of their rasterizer */ cur->transform[4] *= sqrt(cur->transform[0]*cur->transform[0]+ cur->transform[1]*cur->transform[1]); cur->transform[5] *= sqrt(cur->transform[2]*cur->transform[2]+ cur->transform[3]*cur->transform[3]); if ( strstr(cf->tfile->filename,"CompositeMac")==NULL && !asked ) { /* Not interested in the test font I generated myself */ asked = true; fprintf( stderr, "Neat! You've got a font that actually uses Apple's scaled composite offsets.\n" ); fprintf( stderr, " I've never seen one, could you send me a copy of %s?\n", cf->tfile->filename ); fprintf( stderr, " Thanks. gww@silcom.com\n" ); } } cur->use_my_metrics = (flags&_MY_METRICS)?1:0; cur->round = (flags&_ROUND)?1:0; if ( head==NULL ) head = cur; else last->next = cur; last = cur; if ( feof(ttf)) { fprintf(stderr, "Reached end of file when reading composit glyph\n" ); break; } } while ( flags&_MORE ); cc->refs = head; if ( flags&_INSTR ) { cc->instrdata.instr_cnt = getushort(ttf); cc->instrdata.instrs = galloc(cc->instrdata.instr_cnt); for ( i=0; iinstrdata.instr_cnt; ++i ) cc->instrdata.instrs[i] = getc(ttf); } for ( cur = head; cur!=NULL; cur = cur->next ) { cur->cc = LoadGlyph(cf,cur->glyph); if ( cur->point_match ) { BasePoint *p1, *p2; p1 = CCGetTTFPoint(cc,cur->transform[4]); p2 = CCGetTTFPoint(cur->cc,cur->transform[5]); if ( p1==NULL || p2==NULL ) { fprintf( stderr, "Could not do a point match when !ARGS_ARE_XY\n" ); cur->transform[4] = cur->transform[5] = 0; } else { cur->transform[4] = p1->x-p2->x; cur->transform[5] = p1->y-p2->y; } cur->point_match = false; } RefCharRefigure(cur); RefCharAddDependant(cur,cc); } pnum = 0; for ( cur = head; cur!=NULL; cur = cur->next ) { for ( cpl = cur->conics; cpl!=NULL ; cpl = cpl->next ) { sp = cpl->first; while ( 1 ) { if ( sp->me.pnum!=-1 ) sp->me.pnum = pnum++; if ( sp->nextcp != NULL ) sp->nextcp->pnum = pnum++; if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==cpl->first ) break; } } } cc->point_cnt = pnum; } /* End section copied out of parsettf.c */ ConicChar *LoadGlyph(ConicFont *cf, int glyph) { int path_cnt; FILE *ttf; ConicChar *cc; if ( glyph<0 || glyph>=cf->glyph_cnt ) return( NULL ); if ( (cc = cf->chars[glyph])->loaded ) return( cc ); cc->loaded = true; if ( cc->glyph_len==0 ) { /* glyphs with no size are like space, empty, and don't even have a */ /* path count. Just mark it as read (loaded) */ return( cc ); } ttf = cf->glyphs->container->file; fseek(ttf,cf->glyphs->start+cc->glyph_offset,SEEK_SET); path_cnt = (short) getushort(ttf); cc->ptn = getushort(ttf)-cc->lbearing; /* ymin = */ getushort(ttf); /* xmax = */ getushort(ttf); /* ymax = */ getushort(ttf); if ( path_cnt>=0 ) readttfsimpleglyph(ttf,cc,path_cnt); else readttfcompositglyph(ttf,cf,cc,cf->glyphs->start+cc->glyph_offset+cc->glyph_len); return( cc ); } ConicFont *LoadConicFont(TtfFont *tfont) { int i, mcnt, start, next, lcnt; Table *glyphs=NULL, *loca=NULL, *hmetrics=NULL, *hheader=NULL, *head; ConicFont *cf; for ( i=0; itbl_cnt; ++i ) { if ( tfont->tbls[i]->name==CHR('l','o','c','a') ) loca = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('g','l','y','f') ) glyphs = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('h','m','t','x') ) hmetrics = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('h','h','e','a') ) hheader = tfont->tbls[i]; else if ( tfont->tbls[i]->name==CHR('h','e','a','d') ) head = tfont->tbls[i]; } if ( loca==NULL || glyphs==NULL || hmetrics==NULL || hheader==NULL || head==NULL ) return( NULL ); TableFillup(hheader); TableFillup(hmetrics); TableFillup(loca); TableFillup(head); lcnt = loca->len; if ( ptgetushort(head->data+50)) /* Long format */ lcnt /= sizeof(int32); else lcnt /= sizeof(int16); --lcnt; if ( lcnt!=tfont->glyph_cnt ) { GDrawError("TTF Font has bad glyph count field. maxp says: %d sizeof(loca)=>%d", tfont->glyph_cnt, lcnt); if ( lcntglyph_cnt ) tfont->glyph_cnt = lcnt; } cf = gcalloc(1,sizeof(ConicFont)); cf->glyph_cnt = tfont->glyph_cnt; cf->tfont = tfont; cf->tfile = tfont->container; cf->glyphs = glyphs; cf->loca = loca; cf->chars = galloc(cf->glyph_cnt*sizeof(ConicChar*)); for ( i=0; iglyph_cnt; ++i ) { cf->chars[i] = chunkalloc(sizeof(ConicChar)); cf->chars[i]->parent = cf; cf->chars[i]->glyph = i; } mcnt = ptgetushort(hheader->data+34); for ( i=0; ichars[i]->width = ptgetushort(hmetrics->data+4*i); cf->chars[i]->lbearing = ptgetushort(hmetrics->data+4*i+2); } for ( i=mcnt; iglyph_cnt; ++i ) { cf->chars[i]->width = cf->chars[mcnt-1]->width; cf->chars[i]->lbearing = ptgetushort(hmetrics->data+4*mcnt+2*(i-mcnt)); } cf->em = ptgetushort(head->data+18); /* units per em */ if ( ptgetushort(head->data+50)) { /* Long format */ start = ptgetlong(loca->data); for ( i=0; iglyph_cnt; ++i ) { next = ptgetlong(loca->data+4*i+4); cf->chars[i]->glyph_offset = start; cf->chars[i]->glyph_len = next-start; start = next; } } else { /* Short format */ /* since low bit is always 0, short format hides it, so must multiply by 2 */ start = ptgetushort(loca->data); for ( i=0; iglyph_cnt; ++i ) { next = ptgetushort(loca->data+2*i+2); cf->chars[i]->glyph_offset = 2*start; cf->chars[i]->glyph_len = 2*(next-start); start = next; } } free(loca->data); loca->data = NULL; /* loca table is never worth looking at */ return( cf ); } /* Remove line segments which are just one point long */ /* Merge colinear line segments */ /* Merge two segments each of which involves a single pixel change in one dimension (cut corners) */ static void SimplifyLineList(LineList *prev) { LineList *next, *lines; if ( prev->next==NULL ) return; lines = prev->next; while ( (next = lines->next)!=NULL ) { if ( (prev->here.x==lines->here.x && prev->here.y == lines->here.y ) || ( prev->here.x==lines->here.x && lines->here.x==next->here.x ) || ( prev->here.y==lines->here.y && lines->here.y==next->here.y ) || (( prev->here.x==next->here.x+1 || prev->here.x==next->here.x-1 ) && ( prev->here.y==next->here.y+1 || prev->here.y==next->here.y-1 )) ) { lines->here = next->here; lines->next = next->next; chunkfree(next,sizeof(*next)); } else { prev = lines; lines = next; } } if ( prev!=NULL && prev->here.x==lines->here.x && prev->here.y == lines->here.y ) { prev->next = NULL; chunkfree(lines,sizeof(*lines)); } while ( (next = lines->next)!=NULL ) { if ( prev->here.x!=next->here.x ) { real slope = (next->here.y-prev->here.y) / (real) (next->here.x-prev->here.x); real inter = prev->here.y - slope*prev->here.x; int y = rint(lines->here.x*slope + inter); if ( y == lines->here.y ) { lines->here = next->here; lines->next = next->next; chunkfree(next,sizeof(*next)); } else lines = next; } else lines = next; } } static real SolveQuad(real a,real b,real c,real err, real from,int bigger) { real temp, best; real ts[4]; int i; if ( bigger ) ts[0]=ts[1]=ts[2]=ts[3] = -1; else ts[0]=ts[1]=ts[2]=ts[3] = 2; if ( a!=0 ) { temp = b*b-4*a*(c+err); if ( temp==0 ) ts[0] = -b/(2*a); else if ( temp>0 ) { temp = sqrt(temp); ts[0] = (-b+temp)/(2*a); ts[1] = (-b-temp)/(2*a); } temp = b*b-4*a*(c-err); if ( temp==0 ) ts[2] = -b/(2*a); else if ( temp>0 ) { temp = sqrt(temp); ts[2] = (-b+temp)/(2*a); ts[3] = (-b-temp)/(2*a); } if ( bigger ) { best = 1; for ( i=0; i<4; ++i ) if ( ts[i]>from && ts[i]best ) best = ts[i]; } return( best ); } return( bigger ? 1 : 0 ); } LinearApprox *ConicApproximate(Conic *conic, real scale) { LinearApprox *test; LineList *cur, *last=NULL, *prev; real tx,ty,t, oldt; real slpx, slpy; real intx, inty; for ( test = conic->approx; test!=NULL && test->scale!=scale; test = test->next ); if ( test!=NULL ) return( test ); test = chunkalloc(sizeof(LinearApprox)); test->scale = scale; test->next = conic->approx; conic->approx = test; cur = chunkalloc(sizeof(LineList) ); cur->here.x = rint(conic->from->me.x*scale); cur->here.y = rint(conic->from->me.y*scale); test->lines = last = cur; if ( conic->islinear ) { cur = chunkalloc(sizeof(LineList) ); cur->here.x = rint(conic->to->me.x*scale); cur->here.y = rint(conic->to->me.y*scale); last->next = cur; } else { /* find t so that (xt,yt) is a half pixel off from (cx*t+dx,cy*t+dy) */ /* min t of scale*(ax*t^3+bx*t^2)==.5, scale*(ay*t^3+by*t^2)==.5 */ /* I do this from both ends in. this is because I miss essential */ /* symmetry if I go from one end to the other. */ /* first start at 0 and go to .5, the first linear approximation is easy */ /* it's just the function itself ignoring higher orders, so the error*/ /* is just the higher orders */ if ( (tx = .5/(scale*conic->conics[0].a))<0 ) tx = -tx; tx = sqrt(tx); if ( (ty = .5/(scale*conic->conics[1].a))<0 ) ty = -ty; ty = sqrt(ty); t = (tx=1 ) t = 1; cur = chunkalloc(sizeof(LineList) ); cur->here.x = rint( ((conic->conics[0].a*t+conic->conics[0].b)*t+conic->conics[0].c)*scale ); cur->here.y = rint( ((conic->conics[1].a*t+conic->conics[1].b)*t+conic->conics[1].c)*scale ); last->next = cur; last = cur; while ( t<.5 ) { slpx = 2*conic->conics[0].a*t+conic->conics[0].b; slpy = 2*conic->conics[1].a*t+conic->conics[1].b; intx = (conic->conics[0].a*t+conic->conics[0].b-slpx)*t+conic->conics[0].c; inty = (conic->conics[1].a*t+conic->conics[1].b-slpy)*t+conic->conics[1].c; tx = SolveQuad(conic->conics[0].a,conic->conics[0].b-slpx,conic->conics[0].c-intx,.5/scale,t,true); ty = SolveQuad(conic->conics[1].a,conic->conics[1].b-slpy,conic->conics[1].c-inty,.5/scale,t,true); oldt = t; t = (tx.5 ) { if ( t>=1-oldt ) t=1-oldt; else t=.5; } cur = chunkalloc(sizeof(LineList)); cur->here.x = rint( ((conic->conics[0].a*t+conic->conics[0].b)*t+conic->conics[0].c)*scale ); cur->here.y = rint( ((conic->conics[1].a*t+conic->conics[1].b)*t+conic->conics[1].c)*scale ); last->next = cur; last = cur; } oldt = t; if ( t<1 ) { /* Now start at t=1 and work back to t=.5 */ prev = NULL; cur = chunkalloc(sizeof(LineList) ); cur->here.x = rint(conic->to->me.x*scale); cur->here.y = rint(conic->to->me.y*scale); prev = cur; t=1.0; while ( 1 ) { slpx = 2*conic->conics[0].a*t+conic->conics[0].b; slpy = 2*conic->conics[1].a*t+conic->conics[1].b; intx = (conic->conics[0].a*t+conic->conics[0].b-slpx)*t+conic->conics[0].c; inty = (conic->conics[1].a*t+conic->conics[1].b-slpy)*t+conic->conics[1].c; tx = SolveQuad(conic->conics[0].a,conic->conics[0].b-slpx,conic->conics[0].c-intx,.5/scale,t,false); ty = SolveQuad(conic->conics[1].a,conic->conics[1].b-slpy,conic->conics[1].c-inty,.5/scale,t,false); t = (tx>ty)?tx:ty; if ( there.x = rint( ((conic->conics[0].a*t+conic->conics[0].b)*t+conic->conics[0].c)*scale ); cur->here.y = rint( ((conic->conics[1].a*t+conic->conics[1].b)*t+conic->conics[1].c)*scale ); cur->next = prev; prev = cur; if ( t<=oldt ) break; } last->next = cur; } SimplifyLineList(test->lines); } if ( test->lines->next==NULL ) { test->oneline = 1; test->onepoint = 1; } else if ( test->lines->next->next == NULL ) { test->oneline = 1; } return( test ); } static void ConicFindBounds(Conic *sp, DBounds *bounds) { real t, v; real min, max; Conic1D *sp1; int i; /* first try the end points */ for ( i=0; i<2; ++i ) { sp1 = &sp->conics[i]; if ( i==0 ) { if ( sp->to->me.xminx ) bounds->minx = sp->to->me.x; if ( sp->to->me.x>bounds->maxx ) bounds->maxx = sp->to->me.x; min = bounds->minx; max = bounds->maxx; } else { if ( sp->to->me.yminy ) bounds->miny = sp->to->me.y; if ( sp->to->me.y>bounds->maxy ) bounds->maxy = sp->to->me.y; min = bounds->miny; max = bounds->maxy; } /* then try the extrema of the conic (assuming they are between t=(0,1) */ if ( sp1->a!=0 ) { t = -sp1->b/(2.0*sp1->a); if ( t>0 && t<1 ) { v = (sp1->a*t+sp1->b)*t + sp1->c; if ( vmax ) max = v; } } if ( i==0 ) { bounds->minx = min; bounds->maxx = max; } else { bounds->miny = min; bounds->maxy = max; } } } static void _ConicSetFindBounds(ConicPointList *spl, DBounds *bounds) { Conic *conic, *first; for ( ; spl!=NULL; spl = spl->next ) { first = NULL; if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 ) { bounds->minx = bounds->maxx = spl->first->me.x; bounds->miny = bounds->maxy = spl->first->me.y; } else { if ( spl->first->me.xminx ) bounds->minx = spl->first->me.x; if ( spl->first->me.x>bounds->maxx ) bounds->maxx = spl->first->me.x; if ( spl->first->me.yminy ) bounds->miny = spl->first->me.y; if ( spl->first->me.y>bounds->maxy ) bounds->maxy = spl->first->me.y; } for ( conic = spl->first->next; conic!=NULL && conic!=first; conic=conic->to->next ) { ConicFindBounds(conic,bounds); if ( first==NULL ) first = conic; } } } void ConicSetFindBounds(ConicPointList *spl, DBounds *bounds) { memset(bounds,'\0',sizeof(*bounds)); _ConicSetFindBounds(spl,bounds); } void ConicCharFindBounds(ConicChar *cc,DBounds *bounds) { RefChar *rf; /* a char with no conics (ie. a space) must have an lbearing of 0 */ bounds->minx = bounds->maxx = 0; bounds->miny = bounds->maxy = 0; for ( rf=cc->refs; rf!=NULL; rf = rf->next ) _ConicSetFindBounds(rf->conics,bounds); _ConicSetFindBounds(cc->conics,bounds); } void ConicFontFindBounds(ConicFont *sf,DBounds *bounds) { RefChar *rf; int i; bounds->minx = bounds->maxx = 0; bounds->miny = bounds->maxy = 0; for ( i = 0; iglyph_cnt; ++i ) { ConicChar *cc = sf->chars[i]; if ( cc!=NULL ) { for ( rf=cc->refs; rf!=NULL; rf = rf->next ) _ConicSetFindBounds(rf->conics,bounds); _ConicSetFindBounds(cc->conics,bounds); } } } void ConicPointCatagorize(ConicPoint *sp) { sp->pointtype = pt_corner; if ( sp->next==NULL && sp->prev==NULL ) ; /* Empty segments */ else if ( (sp->next!=NULL && sp->next->to->me.x==sp->me.x && sp->next->to->me.y==sp->me.y) || (sp->prev!=NULL && sp->prev->from->me.x==sp->me.x && sp->prev->from->me.y==sp->me.y )) ; else if ( sp->next==NULL ) { sp->pointtype = sp->prevcp==NULL ? pt_corner : pt_curve; } else if ( sp->prev==NULL ) { sp->pointtype = sp->nextcp==NULL ? pt_corner : pt_curve; } else if ( sp->nextcp==NULL && sp->prevcp==NULL ) { ; } else if ( sp->nextcp!=NULL && sp->prevcp!=NULL ) { if ( sp->nextcp->y==sp->prevcp->y && sp->nextcp->y==sp->me.y ) sp->pointtype = pt_curve; else if ( sp->nextcp->x!=sp->prevcp->x ) { real slope = (sp->nextcp->y-sp->prevcp->y)/(sp->nextcp->x-sp->prevcp->x); real y = slope*(sp->me.x-sp->prevcp->x) + sp->prevcp->y - sp->me.y; if ( y<1 && y>-1 ) sp->pointtype = pt_curve; else if ( sp->nextcp->y!=sp->prevcp->y ) { real x; slope = (sp->nextcp->x-sp->prevcp->x)/(sp->nextcp->y-sp->prevcp->y); x = slope*(sp->me.y-sp->prevcp->y) + sp->prevcp->x - sp->me.x; if ( x<1 && x>-1 ) sp->pointtype = pt_curve; } else if ( sp->me.y == sp->nextcp->y ) sp->pointtype = pt_curve; } else if ( sp->me.x == sp->nextcp->x ) sp->pointtype = pt_curve; } else if ( sp->nextcp==NULL ) { if ( sp->next->to->me.x!=sp->prevcp->x ) { real slope = (sp->next->to->me.y-sp->prevcp->y)/(sp->next->to->me.x-sp->prevcp->x); real y = slope*(sp->me.x-sp->prevcp->x) + sp->prevcp->y - sp->me.y; if ( y<1 && y>-1 ) sp->pointtype = pt_tangent; } else if ( sp->me.x == sp->prevcp->x ) sp->pointtype = pt_tangent; } else { if ( sp->nextcp->x!=sp->prev->from->me.x ) { real slope = (sp->nextcp->y-sp->prev->from->me.y)/(sp->nextcp->x-sp->prev->from->me.x); real y = slope*(sp->me.x-sp->prev->from->me.x) + sp->prev->from->me.y - sp->me.y; if ( y<1 && y>-1 ) sp->pointtype = pt_tangent; } else if ( sp->me.x == sp->nextcp->x ) sp->pointtype = pt_tangent; } } int ConicPointIsACorner(ConicPoint *sp) { enum pointtype old = sp->pointtype, new; ConicPointCatagorize(sp); new = sp->pointtype; sp->pointtype = old; return( new==pt_corner ); } void CCCatagorizePoints(ConicChar *cc) { Conic *conic, *first, *last=NULL; ConicPointList *spl; for ( spl = cc->conics; spl!=NULL; spl = spl->next ) { first = NULL; for ( conic = spl->first->next; conic!=NULL && conic!=first; conic=conic->to->next ) { ConicPointCatagorize(conic->from); last = conic; if ( first==NULL ) first = conic; } if ( conic==NULL && last!=NULL ) ConicPointCatagorize(last->to); } } mensis-080507/cursors.c0100664000076500007650000000374607743353446013221 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" GCursor ct_leftright; #define leftright_width 16 #define leftright_height 9 #define leftright_x_hot 7 #define leftright_y_hot 4 static unsigned char leftright_bits[] = { 0x80, 0x00, 0x88, 0x08, 0x84, 0x10, 0xfe, 0x3f, 0x81, 0x40, 0xfe, 0x3f, 0x84, 0x10, 0x88, 0x08, 0x80, 0x00}; void InitCursors(void) { GWindow /*mask,*/ image; image = GDrawCreateBitmap(NULL,leftright_width,leftright_height,leftright_bits); ct_leftright = GDrawCreateCursor(image,image,0xff0000,0xffffff,leftright_x_hot, leftright_y_hot); GDrawDestroyWindow(image); } mensis-080507/fontview.c0100664000076500007650000004625111010406101013321 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derfved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #define CHAR_PAD 1 extern int _GScrollBar_Width; #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static int font_processdata(TableView *tv) { if ( !tv->table->changed ) { tv->table->changed = true; tv->table->td_changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int font_close(TableView *tv) { FontView *fv = (FontView *) tv; ConicFont *cf = fv->cf; CharView *cv, *next; int i; if ( fv->destroyed ) return( true ); for ( i=0; iglyph_cnt; ++i ) { for ( cv=cf->chars[i]->views; cv!=NULL; cv = next ) { next = cv->next; CVClose(cv); } } #if 0 static int yesnocancel[] = { _STR_Yes, _STR_No, _STR_Cancel, 0 }; static int closecancel[] = { _STR_Close, _STR_Cancel, 0 }; int copyover = true; int16 *edits; if ( ret ) { if ( ((FontView *) tv)->changed ) { ret = GWidgetAskR(_STR_RetainChanges,yesnocancel,0,2,_STR_RetainChanges); if ( ret==2 ) return( false ); if ( ret==1 ) copyover = false; } } else { ret = GWidgetAskR(_STR_BadNumber,closecancel,0,1,_STR_BadNumberCloseAnyway); if ( ret==1 ) return( false ); } if ( copyover && (edits=((FontView *) tv)->edits)!=NULL ) { int i; for ( i=0; itable->len/2; ++i ) ptputushort(tv->table->data+2*i,edits[i]); if ( !tv->table->changed ) { tv->table->changed = true; tv->table->td_changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } } #endif tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } static struct tableviewfuncs fontfuncs = { font_close, font_processdata }; static void font_resize(FontView *fv,GEvent *event) { GRect pos; int lh; /* height must be a multiple of the line height */ /* Width a multiple too */ if ( (event->u.resize.size.height-fv->mbh-fv->ifh)%fv->boxh!=0 || (event->u.resize.size.height-fv->mbh-fv->ifh-fv->boxh)<0 || (event->u.resize.size.width-fv->sbw)%fv->boxh!=0 || (event->u.resize.size.width-fv->sbw-fv->boxh)<0 ) { int lc = (event->u.resize.size.height-fv->mbh-fv->ifh+fv->fh/2)/fv->boxh; int wc = (event->u.resize.size.width-fv->sbw+fv->fh/2)/fv->boxh; if ( lc<=0 ) lc = 1; if ( wc<=0 ) wc = 1; GDrawResize(fv->gw, fv->sbw+wc*fv->boxh,fv->mbh+fv->ifh+lc*fv->boxh ); return; } pos.width = GDrawPointsToPixels(fv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-fv->mbh-fv->ifh; pos.x = event->u.resize.size.width-pos.width; pos.y = fv->mbh+fv->ifh; GGadgetResize(fv->vsb,pos.width,pos.height); GGadgetMove(fv->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(fv->v,pos.width,pos.height); fv->vheight = pos.height; fv->vwidth = pos.width; fv->cols = fv->vwidth/fv->boxh; fv->rows = lh = (fv->cf->glyph_cnt+fv->cols-1)/fv->cols; GScrollBarSetBounds(fv->vsb,0,lh,fv->vheight/fv->boxh); if ( fv->lpos + fv->vheight/fv->boxh > lh ) { int lpos = lh-fv->vheight/fv->boxh; if ( lpos<0 ) lpos = 0; fv->lpos = lpos; } GScrollBarSetPos(fv->vsb,fv->lpos); GDrawRequestExpose(fv->gw,NULL,false); GDrawRequestExpose(fv->v,NULL,false); } static void font_expose(FontView *fv,GWindow pixmap,GRect *rect) { int low, high; int i,j, y, index, ch, width; /*ConicFont *cf = fv->cf;*/ struct enctab *enc = fv->font->enc; unichar_t temp[2]; GDrawSetFont(pixmap,fv->gfont); low = rect->y/fv->boxh; high = (rect->y+rect->height+fv->fh)/fv->boxh; for ( i=low; i<=high; ++i ) GDrawDrawLine(pixmap,0,i*fv->boxh,fv->vwidth,i*fv->boxh,0x000000); for ( i=0; i<=fv->cols; ++i ) GDrawDrawLine(pixmap,i*fv->boxh,0,i*fv->boxh,fv->vwidth,0x000000); for ( i=low; iboxh + CHAR_PAD+1 ; for ( j=0; jcols; ++j ) { index = (fv->lpos+i)*fv->cols + j; if ( index>=fv->cf->glyph_cnt ) break; #if TT_RASTERIZE_FONTVIEW if ( fv->rasters[index]==NULL ) fv->rasters[index] = FreeType_GetRaster(fv,index); if ( fv->rasters[index]!=(void *) -1 ) /* Rasterization error flag */ FreeType_ShowRaster(pixmap, j*fv->boxh+(fv->boxh-fv->rasters[index]->cols)/2, y+20-fv->rasters[index]->as, fv->rasters[index]); else { #endif if ( enc!=NULL && indexcnt ) ch = enc->uenc[index]; else ch = CHAR_UNDEF; temp[0] = ch==CHAR_UNDEF? '?' : ch; temp[1] = '\0'; width = GDrawGetTextWidth(pixmap,temp,-1,NULL); GDrawDrawText(pixmap,j*fv->boxh+(fv->fh-width)/2,y+fv->as,temp,-1, NULL, ch==CHAR_UNDEF ? 0xff0000 : 0x000000); #if TT_RASTERIZE_FONTVIEW } #endif } } } static void font_infoexpose(FontView *fv,GWindow pixmap,GRect *rect) { int uch; char buf[100]; unichar_t ubuf[100]; if ( fv->info_glyph==CHAR_UNDEF ) return; sprintf( buf, "Glyph: %5d", fv->info_glyph ); uc_strcpy(ubuf,buf); GDrawSetFont(pixmap,fv->ifont); GDrawDrawText(pixmap,5,fv->mbh+fv->ias,ubuf,-1,NULL,0x000000); if ( fv->font->enc!=NULL && fv->info_glyphfont->enc->cnt && (uch=fv->font->enc->uenc[fv->info_glyph])!=CHAR_UNDEF ) { sprintf( buf, "Unicode: U+%04X ", uch ); if ( psunicodenames[uch]!=NULL ) strcat(buf, psunicodenames[uch]); uc_strcpy(ubuf,buf); GDrawDrawText(pixmap,100,fv->mbh+fv->ias,ubuf,-1,NULL,0x000000); } } const struct unicode_nameannot * const *const *_UnicodeNameAnnot = NULL; static void CCPreparePopup(GWindow gw,struct enctab *enc, int index) { static unichar_t space[200]; char cspace[40]; int upos; if ( enc==NULL || index<0 || index>=enc->cnt || (upos=enc->uenc[index])==CHAR_UNDEF ) return; #if 0 if ( UnicodeCharacterNames[upos>>8][upos&0xff]!=NULL ) { GGadgetPreparePopup(gw,UnicodeCharacterNames[upos>>8][upos&0xff]); } else #endif { sprintf( cspace, "%04x %s", upos, upos=='\0' ? "Null": upos=='\t' ? "Tab": upos=='\r' ? "Return": upos=='\n' ? "LineFeed": upos=='\f' ? "FormFeed": upos=='\33' ? "Escape": upos<160 ? "Control Char": upos>=0x3400 && upos<=0x4db5 ? "CJK Ideograph Extension A": upos>=0x4E00 && upos<=0x9FA5 ? "CJK Ideograph": upos>=0xAC00 && upos<=0xD7A3 ? "Hangul Syllable": upos>=0xD800 && upos<=0xDB7F ? "Non Private Use High Surrogate": upos>=0xDB80 && upos<=0xDBFF ? "Private Use High Surrogate": upos>=0xDC00 && upos<=0xDFFF ? "Low Surrogate": upos>=0xE000 && upos<=0xF8FF ? "Private Use": "Unencoded Unicode" ); uc_strcpy(space,cspace); GGadgetPreparePopup(gw,space); } } static void font_mousemove(FontView *fv,int index) { GRect r; fv->info_glyph = index; r.y = fv->mbh; r.x = 0; r.height = fv->ifh; r.width = fv->vwidth+fv->sbw; GDrawRequestExpose(fv->gw,&r,false); CCPreparePopup(fv->gw,fv->cf->tfont->enc, index); } static void font_scroll(FontView *fv,struct sbevent *sb) { int newpos = fv->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= fv->vheight/fv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += fv->vheight/fv->fh; break; case et_sb_bottom: newpos = fv->rows-fv->vheight/fv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>fv->rows-fv->vheight/fv->boxh ) newpos = fv->rows-fv->vheight/fv->boxh; if ( newpos<0 ) newpos =0; if ( newpos!=fv->lpos ) { int diff = newpos-fv->lpos; fv->lpos = newpos; GScrollBarSetPos(fv->vsb,fv->lpos); GDrawScroll(fv->v,NULL,0,diff*fv->boxh); } } static void FontViewFree(FontView *fv) { fv->cf->glyphs->tv = NULL; fv->cf->loca->tv = NULL; #if TT_RASTERIZE_FONTVIEW { int i; for ( i=0; icf->glyph_cnt; ++i ) if ( fv->rasters[i]!=NULL && fv->rasters[i]!=(void *) -1 ) FreeType_FreeRaster(fv->rasters[i]); free(fv->rasters); } #endif free(fv); } static int fv_v_e_h(GWindow gw, GEvent *event) { FontView *fv = (FontView *) GDrawGetUserData(gw); int index; switch ( event->type ) { case et_expose: font_expose(fv,gw,&event->u.expose.rect); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(fv->table->name); else if ( event->u.chr.chars[0]!='\0' && event->u.chr.chars[1]=='\0' && fv->font->enc!=NULL ) { for ( index=0; indexfont->enc->cnt; ++index ) if ( event->u.chr.chars[0]==fv->font->enc->enc[index] ) break; if ( indexfont->enc->cnt ) { int l = index/fv->cols; if ( l<=fv->lpos || l>=fv->lpos+fv->vheight/fv->boxh ) { if ( l + fv->vheight/fv->boxh > fv->rows ) l = fv->rows - fv->vheight/fv->boxh; if ( l<0 ) l=0; fv->lpos = l; GScrollBarSetPos(fv->vsb,l); GDrawRequestExpose(fv->v,NULL,false); } } } break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); index = (event->u.mouse.y/fv->boxh + fv->lpos)*fv->cols + event->u.mouse.x/fv->boxh; if ( index>=fv->cf->glyph_cnt ) break; if ( event->type==et_mousemove ) font_mousemove(fv,index); else if ( event->type == et_mousedown && event->u.mouse.clicks==2 ) { charCreateEditor(fv->cf,index); /* Invoke CharView */ } break; case et_timer: break; case et_focus: break; } return( true ); } static int fv_e_h(GWindow gw, GEvent *event) { FontView *fv = (FontView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: font_infoexpose(fv,gw,&event->u.expose.rect); break; case et_resize: font_resize(fv,event); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(fv->table->name); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: font_scroll(fv,&event->u.control.u.sb); break; } break; case et_close: font_close((TableView *) fv); break; case et_destroy: FontViewFree(fv); break; } return( true ); } static void FVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { FontView *fv = (FontView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) font_close, fv); } static void FVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((FontView *) GDrawGetUserData(gw))->owner; _TFVMenuSaveAs(tfv); } static void FVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((FontView *) GDrawGetUserData(gw))->owner; _TFVMenuSave(tfv); } static void FVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((FontView *) GDrawGetUserData(gw))->owner; DelayEvent((void (*)(void *)) _TFVMenuRevert, tfv); } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, FVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, FVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, FVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, FVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; /* glyf,loca tables */ void fontCreateEditor(Table *tab,TtfView *tfv) { FontView *fv = gcalloc(1,sizeof(FontView)); unichar_t title[60]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld; GGadgetData gd; GGadget *sb; fv->cf = LoadConicFont(tfv->ttf->fonts[tfv->selectedfont]); if ( fv->cf==NULL ) { GWidgetErrorR(_STR_CouldntReadGlyphs,_STR_CouldntReadGlyphs); free(fv); return; } fv->table = tab = fv->cf->glyphs; fv->virtuals = &fontfuncs; fv->owner = tfv; fv->font = tfv->ttf->fonts[tfv->selectedfont]; fv->cf->glyphs->tv = (TableView *) fv; fv->cf->loca->tv = (TableView *) fv; fv->cf->fv = fv; title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, fv->font->fontname, sizeof(title)/sizeof(title[0])-6); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,fv_e_h,fv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; fv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(fv->mb,&gsize); fv->mbh = gsize.height; memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; fv->ifont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(fv->gw,fv->ifont); GDrawFontMetrics(fv->ifont,&as,&ds,&ld); fv->ias = as+1; fv->ifh = fv->ias+ds; gd.pos.y = fv->mbh+fv->ifh; gd.pos.height = pos.height-gd.pos.y; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; fv->vsb = sb = GScrollBarCreate(gw,&gd,fv); GGadgetGetSize(fv->vsb,&gsize); fv->sbw = gsize.width; wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = fv->mbh+fv->ifh; pos.width = gd.pos.x; pos.height = gd.pos.height; fv->v = GWidgetCreateSubWindow(gw,&pos,fv_v_e_h,fv,&wattrs); GDrawSetVisible(fv->v,true); rq.point_size = -24; fv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(fv->v,fv->gfont); GDrawFontMetrics(fv->gfont,&as,&ds,&ld); fv->as = as+1; fv->fh = fv->as+ds; fv->boxh = fv->fh + 2*CHAR_PAD + 1; #if TT_RASTERIZE_FONTVIEW fv->rasters = gcalloc(fv->cf->glyph_cnt,sizeof(void *)); #endif GDrawResize(fv->gw,16*fv->boxh+fv->sbw,fv->mbh+fv->ifh+4*fv->boxh); GDrawSetVisible(gw,true); } mensis-080507/freetype.c0100664000076500007650000007674410662414246013342 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derfved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include "ttfinstrs.h" /* This is the interface module to freetype. You don't need it if you aren't */ /* rasterizing glyphs for the fontview (and aren't able to use the bytecode */ /* interpreter */ #if TT_RASTERIZE_FONTVIEW || TT_CONFIG_OPTION_BYTECODE_INTERPRETER # ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER # if TT_CONFIG_OPTION_BYTECODE_INTERPRETER # define _TT_CONFIG_OPTION_BYTECODE_INTERPRETER # endif # undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER # endif #include #include FT_FREETYPE_H # if !defined(TT_CONFIG_OPTION_BYTECODE_INTERPRETER) && defined(_TT_CONFIG_OPTION_BYTECODE_INTERPRETER) # warning "You have compiled Mensis to use FreeType's bytecode interpreter." # warning "But you didn't compile FreeType with it enabled. I suppose you" # warning "might want to examine their AutoHinter, so this is just a warning." # warning "But you should check and make sure that's what you want." # endif # ifdef _TT_CONFIG_OPTION_BYTECODE_INTERPRETER # undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER # define TT_CONFIG_OPTION_BYTECODE_INTERPRETER 1 # else # undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER # define TT_CONFIG_OPTION_BYTECODE_INTERPRETER 0 # endif #ifdef TT_CONFIG_OPTION_FREETYPE_DEBUG # undef TT_CONFIG_OPTION_FREETYPE_DEBUG #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG && TT_CONFIG_OPTION_FREETYPE_DEBUG && TT_CONFIG_OPTION_BYTECODE_INTERPRETER # include "ttobjs.h" # include "ttdriver.h" # include "ttinterp.h" #endif static FT_Library context; /* Ok, this complication is here because: */ /* 1) I want to be able to deal with static libraries on some systems */ /* 2) If I've got a dynamic library and I compile up an executable */ /* I want it to run on systems without freetype */ /* So one case boils down to linking against the standard names, while the */ /* other does the link at run time if it's possible */ /*#define _STATIC_LIBFREETYPE 1 /* Debug */ # if defined(_STATIC_LIBFREETYPE) || defined(NODYNAMIC) #define _FT_Init_FreeType FT_Init_FreeType #define _FT_New_Face FT_New_Face #define _FT_Set_Pixel_Sizes FT_Set_Pixel_Sizes #define _FT_Done_Face FT_Done_Face #define _FT_Load_Glyph FT_Load_Glyph #define _FT_Render_Glyph FT_Render_Glyph #define _FT_Outline_Decompose FT_Outline_Decompose #define _FT_Get_Module FT_Get_Module #define _FT_Set_Debug_Hook FT_Set_Debug_Hook #define _TT_RunIns TT_RunIns static int freetype_init_base() { return( true ); } # else #include static void *libfreetype; static FT_Error (*_FT_Init_FreeType)( FT_Library * ); static FT_Error (*_FT_New_Face)( FT_Library, const char *, int, FT_Face * ); static FT_Error (*_FT_Done_Face)( FT_Face ); static FT_Error (*_FT_Set_Pixel_Sizes)( FT_Face, int, int); static FT_Error (*_FT_Load_Glyph)( FT_Face, int, int); static FT_Error (*_FT_Render_Glyph)( FT_GlyphSlot, int); static FT_Error (*_FT_Outline_Decompose)(FT_Outline *, const FT_Outline_Funcs *,void *); #if TT_CONFIG_OPTION_BYTECODE_DEBUG && TT_CONFIG_OPTION_FREETYPE_DEBUG && TT_CONFIG_OPTION_BYTECODE_INTERPRETER static FT_Module (*_FT_Get_Module)(FT_Library, const char *); static void (*_FT_Set_Debug_Hook)(FT_Library, FT_UInt, FT_DebugHook_Func); static FT_Error (*_TT_RunIns)( TT_ExecContext ); #endif static int freetype_init_base() { libfreetype = dlopen("libfreetype.so",RTLD_LAZY); if ( libfreetype==NULL ) return( false ); _FT_Init_FreeType = (FT_Error (*)(FT_Library *)) dlsym(libfreetype,"FT_Init_FreeType"); _FT_New_Face = (FT_Error (*)(FT_Library, const char *, int, FT_Face * )) dlsym(libfreetype,"FT_New_Face"); _FT_Set_Pixel_Sizes = (FT_Error (*)(FT_Face, int, int)) dlsym(libfreetype,"FT_Set_Pixel_Sizes"); _FT_Done_Face = (FT_Error (*)(FT_Face)) dlsym(libfreetype,"FT_Done_Face"); _FT_Load_Glyph = (FT_Error (*)(FT_Face, int, int)) dlsym(libfreetype,"FT_Load_Glyph"); _FT_Render_Glyph = (FT_Error (*)(FT_GlyphSlot, int)) dlsym(libfreetype,"FT_Render_Glyph"); _FT_Outline_Decompose = (FT_Error (*)(FT_Outline *, const FT_Outline_Funcs *,void *)) dlsym(libfreetype,"FT_Outline_Decompose"); #if TT_CONFIG_OPTION_BYTECODE_DEBUG && TT_CONFIG_OPTION_FREETYPE_DEBUG && TT_CONFIG_OPTION_BYTECODE_INTERPRETER _FT_Get_Module = (FT_Module (*)(FT_Library, const char* )) dlsym(libfreetype,"FT_Get_Module"); _FT_Set_Debug_Hook = (void (*)(FT_Library, FT_UInt, FT_DebugHook_Func)) dlsym(libfreetype,"FT_Set_Debug_Hook"); _TT_RunIns = (FT_Error (*)(TT_ExecContext)) dlsym(libfreetype,"TT_RunIns"); #endif return( true ); } # endif static int freetype_init() { int done=false; int ok=false; if ( done ) return(ok); done = true; if ( !freetype_init_base()) return( false ); if ( _FT_Init_FreeType( &context )) return( false ); ok = true; return( true ); } struct freetype_raster *FreeType_GetRaster(FontView *fv,int index) { FT_GlyphSlot slot; struct freetype_raster *ret; if ( fv->freetype_face==NULL ) { TtfFile *tfile = fv->cf->tfile; int i; if ( !freetype_init()) return( (void *) -1 ); /* Error */ for ( i=0; ifont_cnt; ++i ) if ( tfile->fonts[i]==fv->cf->tfont ) break; if ( _FT_New_Face(context,tfile->filename,i,(FT_Face *) &fv->freetype_face)) { fv->freetype_face = (void *) -1; return( (void *) -1 ); /* Error Return */ } /* I want a 24 PIXEL (not point) bitmap */ /* Er... let's try 22. A 24 pixel ARIAL does not fit in a 27 pixel grid */ if ( _FT_Set_Pixel_Sizes(fv->freetype_face,0,22)) { _FT_Done_Face(fv->freetype_face); fv->freetype_face = (void *) -1; return( (void *) -1 ); /* Error Return */ } } else if ( fv->freetype_face == (void *) -1 ) return( (void *) -1 ); if ( _FT_Load_Glyph(fv->freetype_face,index,FT_LOAD_RENDER)) return( (void *) -1 ); slot = ((FT_Face) (fv->freetype_face))->glyph; if ( slot->bitmap.pixel_mode!=ft_pixel_mode_mono && slot->bitmap.pixel_mode!=ft_pixel_mode_grays ) return( (void *) -1 ); ret = galloc(sizeof(struct freetype_raster)); ret->rows = slot->bitmap.rows; ret->cols = slot->bitmap.width; ret->bytes_per_row = slot->bitmap.pitch; ret->as = slot->bitmap_top; ret->num_greys = slot->bitmap.num_grays; /* Can't find any description of freetype's bitendianness */ /* These guys will probably be greyscale anyway... */ ret->bitmap = galloc(ret->rows*ret->bytes_per_row); memcpy(ret->bitmap,slot->bitmap.buffer,ret->rows*ret->bytes_per_row); return( ret ); } void FreeType_ShowRaster(GWindow pixmap,int x,int y, struct freetype_raster *raster) { GClut clut; struct _GImage base; GImage gi; Color bg = GDrawGetDefaultBackground(NULL); int bgr=COLOR_RED(bg), bgg=COLOR_GREEN(bg), bgb=COLOR_BLUE(bg); memset(&gi,'\0',sizeof(gi)); memset(&base,'\0',sizeof(base)); memset(&clut,'\0',sizeof(clut)); gi.u.image = &base; base.trans = 0; base.clut = &clut; if ( raster->num_greys>2 ) { int i; base.image_type = it_index; clut.clut_len = raster->num_greys; for ( i=0; ibitmap; base.bytes_per_line = raster->bytes_per_row; base.width = raster->cols; base.height = raster->rows; if ( raster->rows>0 && raster->cols>0 ) GDrawDrawImage(pixmap,&gi,NULL,x,y); } void FreeType_FreeRaster(struct freetype_raster *raster) { if ( raster==NULL || raster==(void *) -1 ) return; free(raster->bitmap); free(raster); } # if TT_CONFIG_OPTION_BYTECODE_INTERPRETER struct ft_context { ConicPointList *hcpl, *lcpl, *cpl; ConicPoint *last; double scale; ConicPointList *orig_cpl; ConicPoint *orig_sp; }; static void FT_ClosePath(struct ft_context *context) { if ( context->cpl!=NULL ) { if ( context->cpl->first->me.x != context->last->me.x || context->cpl->first->me.y != context->last->me.y ) ConicMake(context->last,context->cpl->first); else { context->cpl->first->prevcp = context->last->nextcp; context->last->prev->to = context->cpl->first; ConicPointFree(context->last); } context->cpl->last = context->cpl->first; context->last = NULL; if ( context->orig_cpl!=NULL ) context->orig_cpl = context->orig_cpl->next; context->orig_sp = NULL; } } static int FT_CubicTo(FT_Vector *cp1, FT_Vector *cp2,FT_Vector *to,void *user) { GDrawIError("Got a cubic in outline decomposition"); return( 1 ); } static int FT_MoveTo(FT_Vector *to,void *user) { struct ft_context *context = user; FT_ClosePath(context); context->cpl = chunkalloc(sizeof(ConicPointList)); if ( context->lcpl==NULL ) context->hcpl = context->cpl; else context->lcpl->next = context->cpl; context->lcpl = context->cpl; if ( context->orig_cpl!=NULL ) context->orig_sp = context->orig_cpl->first; context->last = context->cpl->first = chunkalloc(sizeof(ConicPoint)); context->last->me.x = to->x*context->scale; context->last->me.y = to->y*context->scale; context->last->me.pnum = context->orig_sp?context->orig_sp->me.pnum: -2; return( 0 ); } static int FT_LineTo(FT_Vector *to,void *user) { struct ft_context *context = user; ConicPoint *sp; sp = chunkalloc(sizeof(ConicPoint)); sp->me.x = to->x*context->scale; sp->me.y = to->y*context->scale; sp->me.pnum = -1; ConicMake(context->last,sp); context->last = sp; if ( context->orig_sp!=NULL ) { context->orig_sp = context->orig_sp->next->to; if ( context->orig_sp!=NULL ) sp->me.pnum = context->orig_sp->me.pnum; } return( 0 ); } static int FT_ConicTo(FT_Vector *_cp, FT_Vector *to,void *user) { struct ft_context *context = user; ConicPoint *sp; BasePoint *cp; sp = chunkalloc(sizeof(ConicPoint)); sp->me.x = to->x*context->scale; sp->me.y = to->y*context->scale; sp->me.pnum = -1; cp = chunkalloc(sizeof(BasePoint)); cp->x = _cp->x*context->scale; cp->y = _cp->y*context->scale; cp->pnum = -1; sp->prevcp = context->last->nextcp = cp; ConicMake(context->last,sp); context->last = sp; if ( context->orig_sp!=NULL ) { context->orig_sp = context->orig_sp->next->to; if ( context->orig_sp!=NULL ) { sp->me.pnum = context->orig_sp->me.pnum; if ( context->orig_sp->nextcp!=NULL ) cp->pnum = context->orig_sp->nextcp->pnum; } } return( 0 ); } static FT_Outline_Funcs outlinefuncs = { FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, 0,0 /* I don't understand shift and delta */ }; /* Eventually I want to create baby ttf fonts containing only the glyph I need*/ /* and its componants. Also need: head, hhea, hmtx, maxp, prep, fpgm, loca, */ /* OS/2, post. Some of these are just direct copies, others (hmtx) are shrunk */ static FT_Error FreeType_FaceForCV(CharView *cv, FT_Face *face) { TtfFile *tfile = cv->cc->parent->tfile; int i; /* Ttf_MakeTinyFont(cv->cc);*/ /* This makes the tiny font. Now figure out how to use it!!!! */ for ( i=0; ifont_cnt; ++i ) if ( tfile->fonts[i]==cv->cc->parent->tfont ) break; return( _FT_New_Face(context,tfile->filename,i,face) ); } void FreeType_GridFitChar(CharView *cv) { FT_Face face; struct freetype_raster *ret; FT_GlyphSlot slot; struct ft_context outline_context; ConicPointListsFree(cv->gridfit); cv->gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = (void *) -1; /* set error mark */ if ( !freetype_init()) return; if ( FreeType_FaceForCV(cv,&face) ) return; if ( _FT_Set_Pixel_Sizes(face,0,cv->show.ppem)) { _FT_Done_Face(face); return; } if ( _FT_Load_Glyph(face,cv->cc->glyph,FT_LOAD_NO_BITMAP)) { _FT_Done_Face(face); return; } slot = face->glyph; memset(&outline_context,'\0',sizeof(outline_context)); /* The outline's position is expressed in 24.6 fixed numbers representing */ /* pixels. I want to scale it back to the original coordinate system */ outline_context.scale = cv->cc->parent->em/(64.0*cv->show.ppem); outline_context.orig_cpl = cv->cc->conics; outline_context.orig_sp = NULL; if ( !_FT_Outline_Decompose(&slot->outline,&outlinefuncs,&outline_context)) { FT_ClosePath(&outline_context); cv->gridfit = outline_context.hcpl; } cv->gridwidth = outline_context.scale*slot->advance.x; #if 0 /* If I want to look at bitmaps... */ _FT_Load_Glyph(face,cv->cc->glyph,FT_LOAD_DEFAULT); if ( slot->format!=ft_glyph_format_bitmap ) #endif if ( _FT_Render_Glyph(slot,ft_render_mode_mono)) { _FT_Done_Face(face); return; } if ( slot->bitmap.pixel_mode!=ft_pixel_mode_mono ) { _FT_Done_Face(face); return; } ret = galloc(sizeof(struct freetype_raster)); ret->rows = slot->bitmap.rows; ret->cols = slot->bitmap.width; ret->bytes_per_row = slot->bitmap.pitch; ret->as = slot->bitmap_top; ret->lb = slot->bitmap_left; ret->num_greys = slot->bitmap.num_grays; /* Can't find any description of freetype's bitendianness */ /* These guys will probably be greyscale anyway... */ ret->bitmap = galloc(ret->rows*ret->bytes_per_row); memcpy(ret->bitmap,slot->bitmap.buffer,ret->rows*ret->bytes_per_row); cv->raster = ret; _FT_Done_Face(face); } # endif #else /* ANSI C says a file must define something. It might as well defined a noop */ /* version of one of the things it is supposed to define */ void FreeType_FreeRaster(struct freetype_raster *raster) { } #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG && TT_CONFIG_OPTION_FREETYPE_DEBUG && TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* This code is inspired by ttdebug.c in ft2demos and David Turner's kind */ /* suggestions. */ #undef PACK #define PACK( x, y ) ( ( x << 4 ) | y ) /* And this table is taken directly from ttinterp.c */ static const FT_Byte Pop_Push_Use_Count[256][2] = { /* opcodes are gathered in groups of 16 */ /* please keep the spaces as they are */ /* SVTCA y */ PACK( 0, 0 ), 0, /* SVTCA x */ PACK( 0, 0 ), 0, /* SPvTCA y */ PACK( 0, 0 ), 0, /* SPvTCA x */ PACK( 0, 0 ), 0, /* SFvTCA y */ PACK( 0, 0 ), 0, /* SFvTCA x */ PACK( 0, 0 ), 0, /* SPvTL // */ PACK( 2, 0 ), 0, /* SPvTL + */ PACK( 2, 0 ), 0, /* SFvTL // */ PACK( 2, 0 ), 0, /* SFvTL + */ PACK( 2, 0 ), 0, /* SPvFS */ PACK( 2, 0 ), 0, /* SFvFS */ PACK( 2, 0 ), 0, /* GPV */ PACK( 0, 2 ), 0, /* GFV */ PACK( 0, 2 ), 0, /* SFvTPv */ PACK( 0, 0 ), 0, /* ISECT */ PACK( 5, 0 ), 0, /* SRP0 */ PACK( 1, 0 ), 0, /* SRP1 */ PACK( 1, 0 ), 0, /* SRP2 */ PACK( 1, 0 ), 0, /* SZP0 */ PACK( 1, 0 ), 0, /* SZP1 */ PACK( 1, 0 ), 0, /* SZP2 */ PACK( 1, 0 ), 0, /* SZPS */ PACK( 1, 0 ), 0, /* SLOOP */ PACK( 1, 0 ), 0, /* RTG */ PACK( 0, 0 ), 0, /* RTHG */ PACK( 0, 0 ), 0, /* SMD */ PACK( 1, 0 ), 0, /* ELSE */ PACK( 0, 0 ), 0, /* JMPR */ PACK( 1, 0 ), 0, /* SCvTCi */ PACK( 1, 0 ), 0, /* SSwCi */ PACK( 1, 0 ), 0, /* SSW */ PACK( 1, 0 ), 0, /* DUP */ PACK( 1, 2 ), 0, /* POP */ PACK( 1, 0 ), 0, /* CLEAR */ PACK( 0, 0 ), 0, /* SWAP */ PACK( 2, 2 ), 0, /* DEPTH */ PACK( 0, 1 ), 0, /* CINDEX */ PACK( 1, 1 ), 0, /* MINDEX */ PACK( 1, 0 ), 0, /* AlignPTS */ PACK( 2, 0 ), 0, /* INS_$28 */ PACK( 0, 0 ), 0, /* UTP */ PACK( 1, 0 ), 0, /* LOOPCALL */ PACK( 2, 0 ), 0, /* CALL */ PACK( 1, 0 ), 0, /* FDEF */ PACK( 1, 0 ), 0, /* ENDF */ PACK( 0, 0 ), 0, /* MDAP[0] */ PACK( 1, 0 ), 0, /* MDAP[1] */ PACK( 1, 0 ), 0, /* IUP[0] */ PACK( 0, 0 ), 0, /* IUP[1] */ PACK( 0, 0 ), 0, /* SHP[0] */ PACK( 0, 0 ), ttf_rp2|ttf_inloop, /* SHP[1] */ PACK( 0, 0 ), ttf_rp1|ttf_inloop, /* SHC[0] */ PACK( 1, 0 ), ttf_rp1, /* SHC[1] */ PACK( 1, 0 ), ttf_rp1, /* SHZ[0] */ PACK( 1, 0 ), ttf_rp1, /* SHZ[1] */ PACK( 1, 0 ), ttf_rp1, /* SHPIX */ PACK( 1, 0 ), ttf_inloop, /* IP */ PACK( 0, 0 ), ttf_rp1|ttf_rp2|ttf_inloop, /* MSIRP[0] */ PACK( 2, 0 ), ttf_rp0, /* MSIRP[1] */ PACK( 2, 0 ), ttf_rp0, /* AlignRP */ PACK( 0, 0 ), ttf_rp0|ttf_inloop, /* RTDG */ PACK( 0, 0 ), 0, /* MIAP[0] */ PACK( 2, 0 ), 0, /* MIAP[1] */ PACK( 2, 0 ), 0, /* NPushB */ PACK( 0, 0 ), 0, /* NPushW */ PACK( 0, 0 ), 0, /* WS */ PACK( 2, 0 ), 0, /* RS */ PACK( 1, 1 ), 0, /* WCvtP */ PACK( 2, 0 ), 0, /* RCvt */ PACK( 1, 1 ), 0, /* GC[0] */ PACK( 1, 1 ), 0, /* GC[1] */ PACK( 1, 1 ), 0, /* SCFS */ PACK( 2, 0 ), 0, /* MD[0] */ PACK( 2, 1 ), 0, /* MD[1] */ PACK( 2, 1 ), 0, /* MPPEM */ PACK( 0, 1 ), 0, /* MPS */ PACK( 0, 1 ), 0, /* FlipON */ PACK( 0, 0 ), 0, /* FlipOFF */ PACK( 0, 0 ), 0, /* DEBUG */ PACK( 1, 0 ), 0, /* LT */ PACK( 2, 1 ), 0, /* LTEQ */ PACK( 2, 1 ), 0, /* GT */ PACK( 2, 1 ), 0, /* GTEQ */ PACK( 2, 1 ), 0, /* EQ */ PACK( 2, 1 ), 0, /* NEQ */ PACK( 2, 1 ), 0, /* ODD */ PACK( 1, 1 ), 0, /* EVEN */ PACK( 1, 1 ), 0, /* IF */ PACK( 1, 0 ), 0, /* EIF */ PACK( 0, 0 ), 0, /* AND */ PACK( 2, 1 ), 0, /* OR */ PACK( 2, 1 ), 0, /* NOT */ PACK( 1, 1 ), 0, /* DeltaP1 */ PACK( 1, 0 ), 0, /* SDB */ PACK( 1, 0 ), 0, /* SDS */ PACK( 1, 0 ), 0, /* ADD */ PACK( 2, 1 ), 0, /* SUB */ PACK( 2, 1 ), 0, /* DIV */ PACK( 2, 1 ), 0, /* MUL */ PACK( 2, 1 ), 0, /* ABS */ PACK( 1, 1 ), 0, /* NEG */ PACK( 1, 1 ), 0, /* FLOOR */ PACK( 1, 1 ), 0, /* CEILING */ PACK( 1, 1 ), 0, /* ROUND[0] */ PACK( 1, 1 ), 0, /* ROUND[1] */ PACK( 1, 1 ), 0, /* ROUND[2] */ PACK( 1, 1 ), 0, /* ROUND[3] */ PACK( 1, 1 ), 0, /* NROUND[0] */ PACK( 1, 1 ), 0, /* NROUND[1] */ PACK( 1, 1 ), 0, /* NROUND[2] */ PACK( 1, 1 ), 0, /* NROUND[3] */ PACK( 1, 1 ), 0, /* WCvtF */ PACK( 2, 0 ), 0, /* DeltaP2 */ PACK( 1, 0 ), 0, /* DeltaP3 */ PACK( 1, 0 ), 0, /* DeltaCn[0] */ PACK( 1, 0 ), 0, /* DeltaCn[1] */ PACK( 1, 0 ), 0, /* DeltaCn[2] */ PACK( 1, 0 ), 0, /* SROUND */ PACK( 1, 0 ), 0, /* S45Round */ PACK( 1, 0 ), 0, /* JROT */ PACK( 2, 0 ), 0, /* JROF */ PACK( 2, 0 ), 0, /* ROFF */ PACK( 0, 0 ), 0, /* INS_$7B */ PACK( 0, 0 ), 0, /* RUTG */ PACK( 0, 0 ), 0, /* RDTG */ PACK( 0, 0 ), 0, /* SANGW */ PACK( 1, 0 ), 0, /* AA */ PACK( 1, 0 ), 0, /* FlipPT */ PACK( 0, 0 ), ttf_inloop, /* FlipRgON */ PACK( 2, 0 ), 0, /* FlipRgOFF */ PACK( 2, 0 ), 0, /* INS_$83 */ PACK( 0, 0 ), 0, /* INS_$84 */ PACK( 0, 0 ), 0, /* ScanCTRL */ PACK( 1, 0 ), 0, /* SDVPTL[0] */ PACK( 2, 0 ), 0, /* SDVPTL[1] */ PACK( 2, 0 ), 0, /* GetINFO */ PACK( 1, 1 ), 0, /* IDEF */ PACK( 1, 0 ), 0, /* ROLL */ PACK( 3, 3 ), 0, /* MAX */ PACK( 2, 1 ), 0, /* MIN */ PACK( 2, 1 ), 0, /* ScanTYPE */ PACK( 1, 0 ), 0, /* InstCTRL */ PACK( 2, 0 ), 0, /* INS_$8F */ PACK( 0, 0 ), 0, /* INS_$90 */ PACK( 0, 0 ), 0, /* INS_$91 */ PACK( 0, 0 ), 0, /* INS_$92 */ PACK( 0, 0 ), 0, /* INS_$93 */ PACK( 0, 0 ), 0, /* INS_$94 */ PACK( 0, 0 ), 0, /* INS_$95 */ PACK( 0, 0 ), 0, /* INS_$96 */ PACK( 0, 0 ), 0, /* INS_$97 */ PACK( 0, 0 ), 0, /* INS_$98 */ PACK( 0, 0 ), 0, /* INS_$99 */ PACK( 0, 0 ), 0, /* INS_$9A */ PACK( 0, 0 ), 0, /* INS_$9B */ PACK( 0, 0 ), 0, /* INS_$9C */ PACK( 0, 0 ), 0, /* INS_$9D */ PACK( 0, 0 ), 0, /* INS_$9E */ PACK( 0, 0 ), 0, /* INS_$9F */ PACK( 0, 0 ), 0, /* INS_$A0 */ PACK( 0, 0 ), 0, /* INS_$A1 */ PACK( 0, 0 ), 0, /* INS_$A2 */ PACK( 0, 0 ), 0, /* INS_$A3 */ PACK( 0, 0 ), 0, /* INS_$A4 */ PACK( 0, 0 ), 0, /* INS_$A5 */ PACK( 0, 0 ), 0, /* INS_$A6 */ PACK( 0, 0 ), 0, /* INS_$A7 */ PACK( 0, 0 ), 0, /* INS_$A8 */ PACK( 0, 0 ), 0, /* INS_$A9 */ PACK( 0, 0 ), 0, /* INS_$AA */ PACK( 0, 0 ), 0, /* INS_$AB */ PACK( 0, 0 ), 0, /* INS_$AC */ PACK( 0, 0 ), 0, /* INS_$AD */ PACK( 0, 0 ), 0, /* INS_$AE */ PACK( 0, 0 ), 0, /* INS_$AF */ PACK( 0, 0 ), 0, /* PushB[0] */ PACK( 0, 1 ), 0, /* PushB[1] */ PACK( 0, 2 ), 0, /* PushB[2] */ PACK( 0, 3 ), 0, /* PushB[3] */ PACK( 0, 4 ), 0, /* PushB[4] */ PACK( 0, 5 ), 0, /* PushB[5] */ PACK( 0, 6 ), 0, /* PushB[6] */ PACK( 0, 7 ), 0, /* PushB[7] */ PACK( 0, 8 ), 0, /* PushW[0] */ PACK( 0, 1 ), 0, /* PushW[1] */ PACK( 0, 2 ), 0, /* PushW[2] */ PACK( 0, 3 ), 0, /* PushW[3] */ PACK( 0, 4 ), 0, /* PushW[4] */ PACK( 0, 5 ), 0, /* PushW[5] */ PACK( 0, 6 ), 0, /* PushW[6] */ PACK( 0, 7 ), 0, /* PushW[7] */ PACK( 0, 8 ), 0, /* MDRP[00] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[01] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[02] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[03] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[04] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[05] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[06] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[07] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[08] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[09] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[10] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[11] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[12] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[13] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[14] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[15] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[16] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[17] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[18] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[19] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[20] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[21] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[22] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[23] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[24] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[25] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[26] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[27] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[28] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[29] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[30] */ PACK( 1, 0 ), ttf_rp0, /* MDRP[31] */ PACK( 1, 0 ), ttf_rp0, /* MIRP[00] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[01] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[02] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[03] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[04] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[05] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[06] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[07] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[08] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[09] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[10] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[11] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[12] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[13] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[14] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[15] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[16] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[17] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[18] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[19] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[20] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[21] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[22] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[23] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[24] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[25] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[26] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[27] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[28] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[29] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[30] */ PACK( 2, 0 ), ttf_rp0, /* MIRP[31] */ PACK( 2, 0 ), ttf_rp0 }; static CharView *debugcv; static void PointMoved( TT_ExecContext exc, FT_Vector *old, int pt, int val1, int val2, int rp0 ) { struct ttfactions *act = gcalloc(1,sizeof(struct ttfactions)); struct ttfactions *test, *prev; int c; int old_opcode = exc->code[exc->IP-1]; act->pnum = pt; act->interp = (old_opcode==ttf_ip || old_opcode==ttf_iup || old_opcode==ttf_iup+1)? -2:-1; act->basedon = -1; act->distance = 0; act->cvt_entry = -1; act->min = 0; act->rounded = 0; if ( old_opcode==ttf_msirp || old_opcode==ttf_msirp+1 ) { act->basedon = rp0; act->distance = val2; } else if ( old_opcode==ttf_miap || old_opcode==ttf_miap+1 ) { act->cvt_entry = val2; } else if ( old_opcode==ttf_mdap || old_opcode==ttf_mdap+1 ) { act->rounded = (old_opcode&4)?1:0; } else if ( old_opcode>=ttf_mirp ) { act->basedon = rp0; act->cvt_entry = val2; act->min = (old_opcode&8)?1:0; act->rounded = (old_opcode&4)?1:0; } else if ( old_opcode>=ttf_mdrp ) { act->basedon = rp0; act->min = (old_opcode&8)?1:0; act->rounded = (old_opcode&4)?1:0; } act->infunc = -1; act->instr = debugcv->cc->instrdata.instrs + exc->IP-1; if ( exc->callTop!=0 ) act->instr = debugcv->cc->instrdata.instrs + exc->callStack[0].Caller_IP; act->freedom.x = (double) (((int)exc->GS.freeVector.x<<16)>>(16+14)) + ((exc->GS.freeVector.x&0x3fff)/16384.0); act->freedom.y = (double) (((int)exc->GS.freeVector.y<<16)>>(16+14)) + ((exc->GS.freeVector.y&0x3fff)/16384.0); act->was.x = old[pt].x; act->was.y = old[pt].y; act->is.x = exc->pts.cur[pt].x; act->is.y = exc->pts.cur[pt].y; c = (act->freedom.x!=0?1:0) + (act->freedom.y!=0?2:0); for ( prev=NULL, test=debugcv->instrinfo.acts; test!=NULL && (pt>test->pnum || (pt==test->pnum && c>=(test->freedom.x!=0?1:0) + (test->freedom.y!=0?2:0))); prev = test, test = test->acts ); if ( prev==NULL ) debugcv->instrinfo.acts = act; else prev->acts = act; act->acts = test; ++debugcv->instrinfo.act_cnt; } static FT_Error RunIns( TT_ExecContext exc ) { FT_Error ret=0; FT_Vector *old; struct ttfargs *args; int val1, val2, rp0, i, c; double scale = 64.0*debugcv->show.ppem/debugcv->cc->parent->em; exc->instruction_trap = 1; old = galloc(exc->pts.n_points*sizeof(FT_Vector)); while ( true ) { if ( exc->curRange == (FT_Int)tt_coderange_glyph && exc->callTop==0 && /* How do I tell if I'm executing instructions in a subcomponant of a composit? */ exc->IP < debugcv->cc->instrdata.instr_cnt && debugcv->instrinfo.args!=NULL ) { args = &debugcv->instrinfo.args[exc->IP]; if ( args->loopcnt==0 ) { args->rp0val = exc->GS.rp0; args->rp1val = exc->GS.rp1; args->rp2val = exc->GS.rp2; args->rp2val = exc->GS.rp2; if ( exc->GS.gep0 ) args->zs |= 1; if ( exc->GS.gep1 ) args->zs |= 2; if ( exc->GS.gep2 ) args->zs |= 4; args->used = Pop_Push_Use_Count[exc->code[exc->IP]][1]; if ( exc->GS.loop<=1 ) args->used &= ~ttf_inloop; if ( (Pop_Push_Use_Count[exc->code[exc->IP]][0]>>4)>=1 ) { args->used |= ttf_sp0; args->spvals[0] = exc->stack[exc->top-1]; if ( (Pop_Push_Use_Count[exc->code[exc->IP]][0]>>4)>=2 ) { args->used |= ttf_sp1; args->spvals[1] = exc->stack[exc->top-3]; } } } ++args->loopcnt; } val2 = exc->stack[exc->top-1]; val1 = exc->stack[exc->top-2]; rp0 = exc->GS.rp0; memcpy(old,exc->pts.cur,exc->pts.n_points*sizeof(FT_Vector)); ret = _TT_RunIns(exc); /* How do I tell if I'm executing instructions in a subcomponant of a composit? */ if ( exc->curRange == (FT_Int)tt_coderange_glyph && exc->callTop==0 && exc->IP < debugcv->cc->instrdata.instr_cnt && debugcv->instrinfo.args!=NULL ) { args = &debugcv->instrinfo.args[exc->IP]; if ( args->loopcnt==1 && (Pop_Push_Use_Count[exc->code[exc->IP]][0]&0xf)>=1 ) { args->used |= ttf_pushed; args->pushed = exc->stack[exc->top-(Pop_Push_Use_Count[exc->code[exc->IP]][0]&0xf)]; if ( (Pop_Push_Use_Count[exc->code[exc->IP]][0]&0xf)>=2 ) args->used |= ttf_pushedmore; } } for ( i=0; ipts.n_points; ++i ) { if ( old[i].x!=exc->pts.cur[i].x || old[i].y!=exc->pts.cur[i].y ) { PointMoved(exc,old,i,val1,val2,rp0); } } if ( ret || ( exc->curRange == (FT_Int)tt_coderange_glyph && exc->IP >= exc->codeSize ) ) break; } free(old); debugcv->twilight_cnt = exc->twilight.n_points; debugcv->twilight = galloc(debugcv->twilight_cnt*sizeof(BasePoint)); for ( c=0; ctwilight_cnt; ++c ) { debugcv->twilight[c].pnum = c; debugcv->twilight[c].x = exc->twilight.cur[c].x/scale; debugcv->twilight[c].y = exc->twilight.cur[c].y/scale; } return( ret ); } void CVGenerateGloss(CharView *cv) { /*struct ttfactions *acts;*/ FT_Driver driver; /* truetype driver */ FT_Face face; free(cv->instrinfo.args); TtfActionsFree(cv->instrinfo.acts); free(cv->cvtvals); free(cv->twilight); cv->instrinfo.args = NULL; cv->instrinfo.acts = NULL; cv->instrinfo.act_cnt = 0; cv->twilight = NULL; cv->cvtvals = NULL; if ( cv->cc->refs!=NULL ) /* I can't figure out what character I'm in */ return; /* (composite or which componant) so I get everything wrong */ if ( !freetype_init()) return; driver = (FT_Driver)_FT_Get_Module( context, "truetype" ); _FT_Set_Debug_Hook( context, FT_DEBUG_HOOK_TRUETYPE, (FT_DebugHook_Func)RunIns ); debugcv = cv; if ( FreeType_FaceForCV(cv,&face) ) return; if ( ((TT_Face) face)->root.driver != driver ) { _FT_Done_Face(face); return; } if ( _FT_Set_Pixel_Sizes(face,0,cv->show.ppem)) { _FT_Done_Face(face); return; } cv->instrinfo.args = NULL; if ( cv->cc->refs==NULL ) cv->instrinfo.args = gcalloc(cv->cc->instrdata.instr_cnt,sizeof(struct ttfargs)); /* Don't know how to tell when I'm in the composit's instrs, and when */ /* in a componant's */ _FT_Load_Glyph(face,cv->cc->glyph,FT_LOAD_NO_BITMAP); _FT_Done_Face(face); } #endif mensis-080507/gasp.c0100664000076500007650000003516511010406101012414 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include extern struct lconv localeinfo; #define CID_Version 1000 #define CID_Count 1001 #define CID_OK 1010 #define CID_Cancel 1011 #define CID_Group 1020 typedef struct gaspview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* gasp specials */ uint16 version, cnt; struct gasps { uint16 ppem, flags; } *gasps; GFont *gfont; int as, fh; int ybase, yend; int width; int fieldx, fieldxend; int gfx, gfxend; int aax, aaxend; GGadget *tf; int tfpos; unsigned int changed: 1; } gaspView; static int gvFinishUp(gaspView *gv) { const unichar_t *ret = _GGadgetGetTitle(gv->tf); unichar_t *end; int val = u_strtol(ret,&end,10); if ( gv->tfpos==-1 ) return( true ); if ( *end!='\0' ) { GWidgetErrorR( _STR_BadInteger, _STR_BadInteger ); return( false ); } gv->gasps[gv->tfpos].ppem = val; gv->tfpos = -1; return( true ); } static int gasp_processdata(TableView *tv) { uint8 *data; int len,i; gaspView *gv = (gaspView *) tv; if ( !gvFinishUp(gv)) return( false ); free(tv->table->data); len = 4+4*gv->cnt; data = galloc(len); ptputushort(data,gv->version); ptputushort(data+2,gv->cnt); for ( i=0; icnt; ++i ) { ptputushort(data+4+4*i,gv->gasps[i].ppem); ptputushort(data+4+4*i+2,gv->gasps[i].flags); } tv->table->data = data; tv->table->newlen = len; if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int gasp_close(TableView *tv) { if ( gasp_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs gaspfuncs = { gasp_close, gasp_processdata }; static int gasp_CountChange(GGadget *g, GEvent *e) { GWindow gw; int val,i; gaspView *gv; struct gasps last; if ( e->type==et_controlevent && e->u.control.subtype == et_textchanged ) { const unichar_t *ret = _GGadgetGetTitle(g); val = u_strtol(ret,NULL,10); gw = GGadgetGetWindow(g); gv = GDrawGetUserData(gw); if ( gv->cnt != val && val>0 ) { last = gv->gasps[gv->cnt-1]; gv->gasps = grealloc(gv->gasps,val*sizeof(struct gasps)); for ( i=gv->cnt-1 ; igasps[i].ppem = gv->gasps[i].flags = 0; gv->gasps[val-1] = last; GDrawResize(gw,gv->width,gv->ybase+(val+1)*gv->fh+GDrawPointsToPixels(NULL,34)); gv->cnt = val; } } return( true ); } static int gasp_Cancel(GGadget *g, GEvent *e) { GWindow gw; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int gasp_OK(GGadget *g, GEvent *e) { GWindow gw; gaspView *gv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); gv = GDrawGetUserData(gw); gasp_close((TableView *) gv); } return( true ); } static void DrawCheckBox(GWindow pixmap,gaspView *gv,int x,int y,int set) { GRect rect; rect.x = x; rect.width = gv->as-1; rect.y = y+1; rect.height = rect.width; GDrawDrawRect(pixmap,&rect,0x000000); if ( set ) { GDrawDrawLine(pixmap,rect.x,rect.y,rect.x+rect.width, rect.y+rect.height, 0x000000 ); GDrawDrawLine(pixmap,rect.x,rect.y+rect.height,rect.x+rect.width, rect.y, 0x000000 ); } } static void gvExpose(GWindow pixmap, gaspView *gv,GRect *exp) { GRect sub, old; int i, y, x; unichar_t ubuf[60]; char buf[60]; GDrawSetFont(pixmap,gv->gfont); sub.x = exp->x; sub.width = exp->width; sub.y = gv->ybase; sub.height = gv->yend-gv->ybase; GDrawPushClip(pixmap,&sub,&old); for ( i=0; icnt; ++i ) { sprintf( buf, "Sizes less than %6d:", gv->gasps[i].ppem ); uc_strcpy(ubuf,buf); y = gv->ybase+gv->as+i*gv->fh; GDrawDrawText(pixmap, 8,y,ubuf,-1,NULL,0x000000); x = 8+GDrawGetTextWidth(pixmap,ubuf,-1,NULL)+5; DrawCheckBox(pixmap,gv,x,y-gv->as,gv->gasps[i].flags&1); GDrawDrawText(pixmap, x+gv->fh,y,GStringGetResource(_STR_GridFit,NULL),-1,NULL,0x000000); x += gv->fh + GDrawGetTextWidth(pixmap,GStringGetResource(_STR_GridFit,NULL),-1,NULL)+5; DrawCheckBox(pixmap,gv,x,y-gv->as,gv->gasps[i].flags&2); GDrawDrawText(pixmap, x+gv->fh,y,GStringGetResource(_STR_AntiAlias,NULL),-1,NULL,0x000000); } GDrawPopClip(pixmap,&old); } static void gvMouseDown(gaspView *gv,GEvent *e) { int index = (e->u.mouse.y-gv->ybase)/gv->fh; int x, xtf; unichar_t ubuf[60]; char buf[60]; if ( e->u.mouse.yybase || index>=gv->cnt ) return; GDrawSetFont(gv->gw,gv->gfont); uc_strcpy(ubuf, "Sizes less than "); xtf = 8+GDrawGetTextWidth(gv->gw,ubuf,-1,NULL); if ( e->u.mouse.xgasps[index].ppem ); uc_strcpy(ubuf,buf); x = 8+GDrawGetTextWidth(gv->gw,ubuf,22,NULL); if ( e->u.mouse.xcnt-1 ) { /* Can't change last one, must be 0xffff */ GDrawBeep(screen_display); } else if ( index!=gv->tfpos ) { if ( gvFinishUp(gv)) { GGadgetMove(gv->tf,xtf,gv->ybase+index*gv->fh); sprintf( buf, "%6d", gv->gasps[index].ppem ); uc_strcpy(ubuf,buf); GGadgetResize(gv->tf,GDrawGetTextWidth(gv->gw,ubuf,6,NULL),gv->fh); sprintf( buf, "%d", gv->gasps[index].ppem ); uc_strcpy(ubuf,buf); GGadgetSetTitle(gv->tf,ubuf); GGadgetSetVisible(gv->tf,true); gv->tfpos = index; GDrawRequestExpose(gv->gw,NULL,false); } } return; } x = 8+GDrawGetTextWidth(gv->gw,ubuf,-1,NULL)+5; if ( e->u.mouse.x>=x && e->u.mouse.xfh ) { gv->gasps[index].flags ^= 1; gv->changed = true; GDrawRequestExpose(gv->gw,NULL,false); return; } x += gv->fh + GDrawGetTextWidth(gv->gw,GStringGetResource(_STR_GridFit,NULL),-1,NULL)+5; if ( e->u.mouse.x>=x && e->u.mouse.xfh ) { gv->gasps[index].flags ^= 2; gv->changed = true; GDrawRequestExpose(gv->gw,NULL,false); return; } } static void gvResize(gaspView *gv,GEvent *event) { GRect pos; int yend; yend = event->u.resize.size.height - GDrawPointsToPixels(NULL,34); GGadgetGetSize(GWidgetGetControl(gv->gw,CID_OK),&pos); GGadgetMove(GWidgetGetControl(gv->gw,CID_OK),pos.x,pos.y+yend-gv->yend); GGadgetGetSize(GWidgetGetControl(gv->gw,CID_Cancel),&pos); GGadgetMove(GWidgetGetControl(gv->gw,CID_Cancel),pos.x,pos.y+yend-gv->yend); GGadgetResize(GWidgetGetControl(gv->gw,CID_Group),event->u.resize.size.width-4, event->u.resize.size.height-4); gv->yend = yend; gv->width = event->u.resize.size.width; GDrawRequestExpose(gv->gw,NULL,false); } static int gasp_e_h(GWindow gw, GEvent *event) { gaspView *gv = GDrawGetUserData(gw); if ( event->type==et_close ) { gv->destroyed = true; GDrawDestroyWindow(gv->gw); } else if ( event->type == et_destroy ) { gv->table->tv = NULL; free(gv->gasps); free(gv); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(gv->table->name); system("netscape http://partners.adobe.com/asn/developer/opentype/gasp.html &"); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } else if ( event->type == et_mousedown ) { gvMouseDown(gv,event); } else if ( event->type == et_resize ) { gvResize(gv,event); } else if ( event->type == et_expose ) { gvExpose(gw,gv,&event->u.expose.rect); } return( true ); } static void gaspTableFillup(gaspView *gv) { int i; TableFillup(gv->table); gv->version = ptgetushort(gv->table->data); gv->cnt = ptgetushort(gv->table->data+2); gv->gasps = galloc(gv->cnt*sizeof(struct gasps)); for ( i=0; icnt; ++i ) { gv->gasps[i].ppem = ptgetushort(gv->table->data+4+4*i); gv->gasps[i].flags = ptgetushort(gv->table->data+4+4*i+2); } } void gaspCreateEditor(Table *tab,TtfView *tfv) { gaspView *gv = gcalloc(1,sizeof(gaspView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[12]; GTextInfo label[12]; int i; static unichar_t title[60]; char version[20], cnt[8]; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld; static GBox tfbox; static unichar_t num[] = { '0', '\0' }; gv->table = tab; gv->virtuals = &gaspfuncs; gv->owner = tfv; gv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) gv; gaspTableFillup(gv); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, gv->font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,gasp_e_h,gv,&wattrs); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; gv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(gv->gw,gv->gfont); GDrawFontMetrics(gv->gfont,&as,&ds,&ld); gv->as = as+1; gv->fh = gv->as+ds; memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _STR_Version; label[0].text_in_resource = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 5; gcd[0].gd.pos.y = 5+6; gcd[0].gd.flags = gg_enabled|gg_visible; gcd[0].creator = GLabelCreate; sprintf( version, "%d", gv->version ); label[1].text = (unichar_t *) version; label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 55; gcd[1].gd.pos.y = gcd[0].gd.pos.y-6; gcd[1].gd.pos.width = 50; gcd[1].gd.flags = /*gg_enabled|*/gg_visible; gcd[1].gd.cid = CID_Version; /*gcd[1].gd.handle_controlevent = gasp_VersionChange;*/ gcd[1].creator = GTextFieldCreate; label[2].text = (unichar_t *) _STR_Count; label[2].text_in_resource = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 115; gcd[2].gd.pos.y = gcd[0].gd.pos.y; gcd[2].gd.flags = gg_enabled|gg_visible; gcd[2].creator = GLabelCreate; sprintf( cnt, "%d", gv->cnt ); label[3].text = (unichar_t *) cnt; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = 155; gcd[3].gd.pos.y = gcd[2].gd.pos.y-6; gcd[3].gd.pos.width = 50; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_Count; gcd[3].gd.handle_controlevent = gasp_CountChange; gcd[3].creator = GTextFieldCreate; gv->ybase = GDrawPointsToPixels(NULL,gcd[3].gd.pos.y+24+8); gv->yend = gv->ybase+(gv->cnt+1)*gv->fh; gv->width = pos.width; i = 4; gcd[i].gd.pos.x = 20-3; gcd[i].gd.pos.y = GDrawPixelsToPoints(NULL,gv->yend); gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_default; label[i].text = (unichar_t *) _STR_OK; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'O'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = gasp_OK; gcd[i].gd.cid = CID_OK; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 265-GIntGetResource(_NUM_Buttonsize)-20; gcd[i].gd.pos.y = gcd[i-1].gd.pos.y+3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = gasp_Cancel; gcd[i].gd.cid = CID_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i].gd.cid = CID_Group; gcd[i++].creator = GGroupCreate; tfbox.main_background = tfbox.main_foreground = COLOR_DEFAULT; label[i].text = num+1; label[i].font = gv->gfont; gcd[i].gd.label = &label[i]; gcd[i].gd.box = &tfbox; gcd[i].gd.pos.x = 10; gcd[i].gd.pos.y = 10; gcd[i].gd.pos.width = 30; gcd[i].gd.pos.height = gv->fh; gcd[i].gd.flags = gg_enabled | gg_pos_in_pixels|gg_dontcopybox; gcd[i].creator = GTextFieldCreate; GGadgetsCreate(gw,gcd); gv->tf = gcd[i].ret; gv->tfpos = -1; GDrawResize(gw,pos.width,gv->yend+GDrawPointsToPixels(NULL,34)); GDrawSetVisible(gw,true); } mensis-080507/_hea.c0100664000076500007650000004265611010406101012361 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #define CID_Version 1001 #define CID_Ascender 1002 #define CID_Descender 1003 #define CID_LineGap 1004 #define CID_Advance 1005 #define CID_LTBearing 1006 #define CID_RBBearing 1007 #define CID_MaxExtent 1008 #define CID_CaretRise 1009 #define CID_CaretRun 1010 #define CID_CaretOffset 1011 #define CID_DataFormat 1012 #define CID_MetricsCount 1013 typedef struct headview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* _head specials */ } HeaView; static int _hea_processdata(TableView *tv) { int err = false; real version; int as, ds, lg, am, mlb, mrb, me, cr, crun, co, df, count; uint8 *data; int oldcount = tgetushort(tv->table,34); static int buts[] = { _STR_Yes, _STR_No, 0 }; version = GetRealR(tv->gw,CID_Version,_STR_Version,&err); as = GetIntR(tv->gw,CID_Ascender,_STR_Ascent,&err); ds = GetIntR(tv->gw,CID_Descender,_STR_Descent,&err); lg = GetIntR(tv->gw,CID_LineGap,_STR_TypoLineGap,&err); am = GetIntR(tv->gw,CID_Advance,_STR_AdvanceMax,&err); mlb = GetIntR(tv->gw,CID_LTBearing,_STR_MinLeftBearing,&err); mrb = GetIntR(tv->gw,CID_RBBearing,_STR_MinRightBearing,&err); me = GetIntR(tv->gw,CID_MaxExtent,_STR_XMaxExtent,&err); cr = GetIntR(tv->gw,CID_CaretRise,_STR_CaretRise,&err); crun = GetIntR(tv->gw,CID_CaretRun,_STR_CaretRun,&err); co = GetIntR(tv->gw,CID_CaretOffset,_STR_CaretOffset,&err); df = GetIntR(tv->gw,CID_DataFormat,_STR_DataFormat,&err); count = GetIntR(tv->gw,CID_MetricsCount,_STR_MetricsCount,&err); if ( err ) return( false ); if ( count!=oldcount ) { if ( GWidgetAskR(_STR_ChangingMetricsCount,buts,0,1,_STR_ReallyChangeMetricsCnt)==1 ) { char buf[8]; unichar_t ubuf[8]; sprintf( buf, "%d", oldcount); uc_strcpy(ubuf,buf); GGadgetSetTitle(GWidgetGetControl(tv->gw,CID_MetricsCount),ubuf); return( false ); } } if ( tv->table->newlen<36 ) { free(tv->table->data); tv->table->data = gcalloc(36,1); tv->table->newlen = 36; } data = tv->table->data; ptputvfixed(data,version); ptputushort(data+4,as); ptputushort(data+6,ds); ptputushort(data+8,lg); ptputushort(data+10,am); ptputushort(data+12,mlb); ptputushort(data+14,mrb); ptputushort(data+16,me); ptputushort(data+18,cr); ptputushort(data+20,crun); ptputushort(data+22,co); ptputushort(data+32,df); ptputushort(data+34,count); if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int _hea_close(TableView *tv) { if ( _hea_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs _heafuncs = { _hea_close, _hea_processdata }; static int _Hea_Cancel(GGadget *g, GEvent *e) { GWindow gw; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int _Hea_OK(GGadget *g, GEvent *e) { GWindow gw; HeaView *hv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); hv = GDrawGetUserData(gw); _hea_close((TableView *) hv); } return( true ); } static int _hea_e_h(GWindow gw, GEvent *event) { HeaView *hv = GDrawGetUserData(gw); if ( event->type==et_close ) { hv->destroyed = true; GDrawDestroyWindow(hv->gw); } else if ( event->type == et_destroy ) { hv->table->tv = NULL; free(hv); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(hv->table->name); system("netscape http://partners.adobe.com/asn/developer/opentype/head.html &"); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } void _heaCreateEditor(Table *tab,TtfView *tfv) { HeaView *hv = gcalloc(1,sizeof(HeaView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[34]; GTextInfo label[34]; int i; unichar_t title[60]; char version[8], asc[8], dsc[8], lg[8], advance[8], ltb[8], rb[8], extent[8], crise[8], crun[8], coffset[8], df[8], mc[8]; hv->table = tab; hv->virtuals = &_heafuncs; hv->owner = tfv; hv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) hv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, hv->font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; wattrs.window_title = title; wattrs.icon = ttf_icon; pos.x = pos.y = 0; pos.width =GDrawPointsToPixels(NULL,270); pos.height = GDrawPointsToPixels(NULL,269); hv->gw = gw = GDrawCreateTopWindow(NULL,&pos,_hea_e_h,hv,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _STR_Version; label[0].text_in_resource = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 5; gcd[0].gd.pos.y = 8+6; gcd[0].gd.flags = gg_enabled|gg_visible; gcd[0].creator = GLabelCreate; sprintf( version, "%.4g", tgetvfixed(tab,0) ); label[1].text = (unichar_t *) version; label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 80; gcd[1].gd.pos.y = gcd[0].gd.pos.y-6; gcd[1].gd.pos.width = 50; gcd[1].gd.flags = gg_enabled|gg_visible; gcd[1].gd.cid = CID_Version; gcd[1].creator = GTextFieldCreate; label[2].text = (unichar_t *) (title[0]=='h'?_STR_TypoAscender:_STR_TypoRight); label[2].text_in_resource = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 5; gcd[2].gd.pos.y = gcd[1].gd.pos.y+24+6; gcd[2].gd.flags = gg_enabled|gg_visible; gcd[2].creator = GLabelCreate; sprintf( asc, "%d", tgetushort(tab,4) ); label[3].text = (unichar_t *) asc; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = gcd[1].gd.pos.x; gcd[3].gd.pos.y = gcd[2].gd.pos.y-6; gcd[3].gd.pos.width = 50; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_Ascender; gcd[3].creator = GTextFieldCreate; label[4].text = (unichar_t *) (title[0]=='h'?_STR_TypoDescender:_STR_TypoLeft); label[4].text_in_resource = true; gcd[4].gd.label = &label[4]; gcd[4].gd.pos.x = 5+gcd[1].gd.pos.x+gcd[1].gd.pos.width; gcd[4].gd.pos.y = gcd[2].gd.pos.y; gcd[4].gd.flags = gg_enabled|gg_visible; gcd[4].creator = GLabelCreate; sprintf( dsc, "%d", (short) tgetushort(tab,6) ); label[5].text = (unichar_t *) dsc; label[5].text_is_1byte = true; gcd[5].gd.label = &label[5]; gcd[5].gd.pos.x = gcd[4].gd.pos.x+75; gcd[5].gd.pos.y = gcd[4].gd.pos.y-6; gcd[5].gd.pos.width = 50; gcd[5].gd.flags = gg_enabled|gg_visible; gcd[5].gd.cid = CID_Descender; gcd[5].creator = GTextFieldCreate; label[6].text = (unichar_t *) (title[0]=='h'?_STR_TypoLineGap:_STR_TypoLineSpacing); label[6].text_in_resource = true; gcd[6].gd.label = &label[6]; gcd[6].gd.pos.x = 5; gcd[6].gd.pos.y = gcd[4].gd.pos.y+24; gcd[6].gd.flags = gg_enabled|gg_visible; gcd[6].creator = GLabelCreate; sprintf( lg, "%d", (short) tgetushort(tab,8) ); label[7].text = (unichar_t *) lg; label[7].text_is_1byte = true; gcd[7].gd.label = &label[7]; gcd[7].gd.pos.x = gcd[1].gd.pos.x; gcd[7].gd.pos.y = gcd[6].gd.pos.y-6; gcd[7].gd.pos.width = 50; gcd[7].gd.flags = gg_enabled|gg_visible; gcd[7].gd.cid = CID_LineGap; gcd[7].creator = GTextFieldCreate; label[8].text = (unichar_t *) _STR_AdvanceMax; label[8].text_in_resource = true; gcd[8].gd.label = &label[8]; gcd[8].gd.pos.x = 5; gcd[8].gd.pos.y = gcd[7].gd.pos.y+24+6; gcd[8].gd.flags = gg_enabled|gg_visible; gcd[8].creator = GLabelCreate; sprintf( advance, "%d", tgetushort(tab,10) ); label[9].text = (unichar_t *) advance; label[9].text_is_1byte = true; gcd[9].gd.label = &label[9]; gcd[9].gd.pos.x = gcd[1].gd.pos.x; gcd[9].gd.pos.y = gcd[8].gd.pos.y-6; gcd[9].gd.pos.width = 50; gcd[9].gd.flags = gg_enabled|gg_visible; gcd[9].gd.cid = CID_Advance; gcd[9].creator = GTextFieldCreate; label[10].text = (unichar_t *) (title[0]=='h'?_STR_MinLeftBearing:_STR_MinTopBearing); label[10].text_in_resource = true; gcd[10].gd.label = &label[10]; gcd[10].gd.pos.x = gcd[0].gd.pos.x; gcd[10].gd.pos.y = gcd[8].gd.pos.y+24; gcd[10].gd.flags = gg_enabled|gg_visible; gcd[10].creator = GLabelCreate; sprintf( ltb, "%d", (short) tgetushort(tab,12) ); label[11].text = (unichar_t *) ltb; label[11].text_is_1byte = true; gcd[11].gd.label = &label[11]; gcd[11].gd.pos.x = gcd[1].gd.pos.x; gcd[11].gd.pos.y = gcd[10].gd.pos.y-6; gcd[11].gd.pos.width = 50; gcd[11].gd.flags = gg_enabled|gg_visible; gcd[11].gd.cid = CID_LTBearing; gcd[11].creator = GTextFieldCreate; label[12].text = (unichar_t *) (title[0]=='h'?_STR_MinRightBearing:_STR_MinBottomBearing); label[12].text_in_resource = true; gcd[12].gd.label = &label[12]; gcd[12].gd.pos.x = gcd[4].gd.pos.x; gcd[12].gd.pos.y = gcd[9].gd.pos.y+24+6; gcd[12].gd.flags = gg_enabled|gg_visible; gcd[12].creator = GLabelCreate; sprintf( rb, "%d", (short) tgetushort(tab,14) ); label[13].text = (unichar_t *) rb; label[13].text_is_1byte = true; gcd[13].gd.label = &label[13]; gcd[13].gd.pos.x = gcd[5].gd.pos.x; gcd[13].gd.pos.y = gcd[12].gd.pos.y-6; gcd[13].gd.pos.width = 50; gcd[13].gd.flags = gg_enabled|gg_visible; gcd[13].gd.cid = CID_RBBearing; gcd[13].creator = GTextFieldCreate; label[14].text = (unichar_t *) (title[0]=='h'?_STR_XMaxExtent:_STR_YMaxExtent); label[14].text_in_resource = true; gcd[14].gd.label = &label[14]; gcd[14].gd.pos.x = gcd[0].gd.pos.x; gcd[14].gd.pos.y = gcd[12].gd.pos.y+24; gcd[14].gd.flags = gg_enabled|gg_visible; gcd[14].creator = GLabelCreate; sprintf( extent, "%d", tgetushort(tab,16) ); label[15].text = (unichar_t *) extent; label[15].text_is_1byte = true; gcd[15].gd.label = &label[15]; gcd[15].gd.pos.x = gcd[1].gd.pos.x; gcd[15].gd.pos.y = gcd[14].gd.pos.y-6; gcd[15].gd.pos.width = 50; gcd[15].gd.flags = gg_enabled|gg_visible; gcd[15].gd.cid = CID_MaxExtent; gcd[15].creator = GTextFieldCreate; label[16].text = (unichar_t *) _STR_CaretRise; label[16].text_in_resource = true; gcd[16].gd.label = &label[16]; gcd[16].gd.pos.x = 5; gcd[16].gd.pos.y = gcd[15].gd.pos.y+24+6; gcd[16].gd.flags = gg_enabled|gg_visible; gcd[16].creator = GLabelCreate; sprintf( crise, "%d", tgetushort(tab,18) ); label[17].text = (unichar_t *) crise; label[17].text_is_1byte = true; gcd[17].gd.label = &label[17]; gcd[17].gd.pos.x = gcd[1].gd.pos.x; gcd[17].gd.pos.y = gcd[16].gd.pos.y-6; gcd[17].gd.pos.width = 50; gcd[17].gd.flags = gg_enabled|gg_visible; gcd[17].gd.cid = CID_CaretRise; gcd[17].creator = GTextFieldCreate; label[18].text = (unichar_t *) _STR_CaretRun; label[18].text_in_resource = true; gcd[18].gd.label = &label[18]; gcd[18].gd.pos.x = gcd[4].gd.pos.x; gcd[18].gd.pos.y = gcd[16].gd.pos.y; gcd[18].gd.flags = gg_enabled|gg_visible; gcd[18].creator = GLabelCreate; sprintf( crun, "%d", tgetushort(tab,20) ); label[19].text = (unichar_t *) crun; label[19].text_is_1byte = true; gcd[19].gd.label = &label[19]; gcd[19].gd.pos.x = gcd[5].gd.pos.x; gcd[19].gd.pos.y = gcd[18].gd.pos.y-6; gcd[19].gd.pos.width = 50; gcd[19].gd.flags = gg_enabled|gg_visible; gcd[19].gd.cid = CID_CaretRun; gcd[19].creator = GTextFieldCreate; label[20].text = (unichar_t *) _STR_CaretOffset; label[20].text_in_resource = true; gcd[20].gd.label = &label[20]; gcd[20].gd.pos.x = gcd[0].gd.pos.x; gcd[20].gd.pos.y = gcd[18].gd.pos.y+24; gcd[20].gd.flags = gg_enabled|gg_visible; gcd[20].creator = GLabelCreate; sprintf( coffset, "%d", tgetushort(tab,22) ); label[21].text = (unichar_t *) coffset; label[21].text_is_1byte = true; gcd[21].gd.label = &label[21]; gcd[21].gd.pos.x = gcd[1].gd.pos.x; gcd[21].gd.pos.y = gcd[20].gd.pos.y-6; gcd[21].gd.pos.width = 50; gcd[21].gd.flags = gg_enabled|gg_visible; gcd[21].gd.cid = CID_CaretOffset; gcd[21].creator = GTextFieldCreate; label[22].text = (unichar_t *) _STR_DataFormat; label[22].text_in_resource = true; gcd[22].gd.label = &label[22]; gcd[22].gd.pos.x = 5; gcd[22].gd.pos.y = gcd[21].gd.pos.y+24+6; gcd[22].gd.flags = gg_enabled|gg_visible; gcd[22].creator = GLabelCreate; sprintf( df, "%d", tgetushort(tab,32) ); label[23].text = (unichar_t *) df; label[23].text_is_1byte = true; gcd[23].gd.label = &label[23]; gcd[23].gd.pos.x = gcd[1].gd.pos.x; gcd[23].gd.pos.y = gcd[22].gd.pos.y-6; gcd[23].gd.pos.width = 50; gcd[23].gd.flags = gg_enabled|gg_visible; gcd[23].gd.cid = CID_DataFormat; gcd[23].creator = GTextFieldCreate; label[24].text = (unichar_t *) _STR_MetricsCount; label[24].text_in_resource = true; gcd[24].gd.label = &label[24]; gcd[24].gd.pos.x = gcd[4].gd.pos.x; gcd[24].gd.pos.y = gcd[22].gd.pos.y; gcd[24].gd.flags = gg_enabled|gg_visible; gcd[24].creator = GLabelCreate; sprintf( mc, "%d", tgetushort(tab,34) ); label[25].text = (unichar_t *) mc; label[25].text_is_1byte = true; gcd[25].gd.label = &label[25]; gcd[25].gd.pos.x = gcd[5].gd.pos.x; gcd[25].gd.pos.y = gcd[24].gd.pos.y-6; gcd[25].gd.pos.width = 50; gcd[25].gd.flags = gg_enabled|gg_visible; gcd[25].gd.cid = CID_MetricsCount; gcd[25].creator = GTextFieldCreate; i = 26; gcd[i].gd.pos.x = 20-3; gcd[i].gd.pos.y = gcd[25].gd.pos.y+35-3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_default; label[i].text = (unichar_t *) _STR_OK; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'O'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = _Hea_OK; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 265-GIntGetResource(_NUM_Buttonsize)-20; gcd[i].gd.pos.y = gcd[i-1].gd.pos.y+3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = _Hea_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i].creator = GGroupCreate; GGadgetsCreate(gw,gcd); GDrawSetVisible(gw,true); } void _heaChangeLongMetrics(Table *_hea,int newlongcnt) { char buf[8]; unichar_t ubuf[8]; TableFillup(_hea); if ( _hea->tv!=NULL ) { sprintf( buf, "%d", newlongcnt ); uc_strcpy(ubuf, buf); GGadgetSetTitle(GWidgetGetControl(_hea->tv->gw,CID_MetricsCount),ubuf); } ptputushort(_hea->data+34,newlongcnt); if ( !_hea->changed ) { _hea->changed = true; _hea->container->changed = true; GDrawRequestExpose(_hea->container->tfv->v,NULL,false); } } mensis-080507/head.c0100664000076500007650000006501411010406101012357 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #define CID_Version 1001 #define CID_Revision 1002 #define CID_Checksum 1003 #define CID_MagicNumber 1004 #define CID_Flags 1005 #define CID_FlagsList 1105 #define CID_UnitsPerEm 1006 #define CID_Created 1007 #define CID_Modified 1107 #define CID_xMin 1008 #define CID_yMin 1009 #define CID_xMax 1010 #define CID_yMax 1011 #define CID_MacStyle 1012 #define CID_MacStyleList 1112 #define CID_SmallestSize 1013 #define CID_FontDir 1014 #define CID_LocaFormat 1015 #define CID_GlyphFormat 1016 static unichar_t mnum[] = { '5','f','0','f','3','c','f','5', '\0' }; static GTextInfo magicnumbers[] = { { (unichar_t *) mnum}, { NULL }}; static GTextInfo flagslist[] = { { (unichar_t *) _STR_Baseliney0, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LBearingx0, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_InstrsDepOnPointsize, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ForcePPEMInt, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_InstrsAlterWidth, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, /* Apple only */ { (unichar_t *) _STR_VerticalLayout, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, /* 6 MBZ */ { (unichar_t *) _STR_Arabic, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GXWithMetamorphosis, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ContainsRightToLeft, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Indic, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, /* Adobe only */ { (unichar_t *) _STR_Lossless, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FontConverted, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ClearType, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo macstylelist[] = { { (unichar_t *) _STR_Bold, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Italic, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, /* Apple only */ { (unichar_t *) _STR_Underline, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Outline, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Shadow, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Condensed, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Extended, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo directionlist[] = { { (unichar_t *) _STR_RToLOrNeutral, NULL, 0, 0, (void *) -2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StronglyRightToLeft, NULL, 0, 0, (void *) -1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FullyMixed, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StronglyLeftToRight, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LtoROrNeutral, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo localist[] = { { (unichar_t *) _STR_16bit, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_32bit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; typedef struct headview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* head specials */ } HeadView; static int head_processdata(TableView *tv) { int err = false; real version, revision; int magic, flags, ppem, xmin, ymin, xmax, ymax, macstyle, small, fdir, locaform, glyfform; uint32 created[2]; uint8 *data; version = GetRealR(tv->gw,CID_Version,_STR_Version,&err); revision = GetRealR(tv->gw,CID_Revision,_STR_FontRevision,&err); /* Ignore checksum, that has to be calculated automatically */ magic = GetHexR(tv->gw,CID_MagicNumber,_STR_MagicNumber,&err); flags = GetHexR(tv->gw,CID_Flags,_STR_Flags,&err); ppem = GetIntR(tv->gw,CID_UnitsPerEm,_STR_UnitsPerEm,&err); GetDateR(tv->gw,CID_Created,_STR_Created,created,&err); /* modified date, like checksum, must be set on save */ xmin = GetIntR(tv->gw,CID_xMin,_STR_XMin,&err); ymin = GetIntR(tv->gw,CID_yMin,_STR_YMin,&err); xmax = GetIntR(tv->gw,CID_xMax,_STR_XMax,&err); ymax = GetIntR(tv->gw,CID_yMax,_STR_YMax,&err); macstyle = GetHexR(tv->gw,CID_MacStyle,_STR_MacStyle,&err); small = GetIntR(tv->gw,CID_SmallestSize,_STR_SmallestSize,&err); fdir = GetListR(tv->gw,CID_FontDir,_STR_FontDirection,&err); locaform = GetListR(tv->gw,CID_LocaFormat,_STR_LocaFormat,&err); glyfform = GetIntR(tv->gw,CID_GlyphFormat,_STR_GlyfFormat,&err); if ( err ) return( false ); if ( tv->table->newlen<54 ) { free(tv->table->data); tv->table->data = gcalloc(54,1); tv->table->newlen = 54; } data = tv->table->data; ptputvfixed(data,version); ptputfixed(data+4,revision); /* checksum */ ptputlong(data+12,magic); ptputushort(data+16,flags); ptputushort(data+18,ppem); ptputlong(data+20,created[0]); ptputlong(data+24,created[1]); /* modified */ ptputushort(data+36,xmin); ptputushort(data+38,ymin); ptputushort(data+40,xmax); ptputushort(data+42,ymax); ptputushort(data+44,macstyle); ptputushort(data+46,small); ptputushort(data+48,fdir); ptputushort(data+50,locaform); ptputushort(data+52,glyfform); if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int head_close(TableView *tv) { if ( head_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs headfuncs = { head_close, head_processdata }; static int head_FlagsChange(GGadget *g, GEvent *e) { int32 flags; int len,i,bit,set; if ( e==NULL || (e->type==et_controlevent && e->u.control.subtype == et_textchanged )) { const unichar_t *ret; unichar_t *end; GWindow gw = GGadgetGetWindow(g); GGadget *list; int othercid = GGadgetGetCid(g)==CID_Flags?CID_FlagsList:CID_MacStyleList; GTextInfo *tilist = GGadgetGetCid(g)==CID_Flags?flagslist:macstylelist; ret = _GGadgetGetTitle(g); flags = u_strtoul(ret,&end,16); list = GWidgetGetControl(gw,othercid); for ( i=0; tilist[i].text!=NULL; ++i ) { bit = (int) (tilist[i].userdata); set = (flags&(1<type==et_controlevent && e->u.control.subtype == et_listselected ) { GWindow gw = GGadgetGetWindow(g); char ranges[40]; unichar_t ur[40]; GTextInfo **list = GGadgetGetList(g,&len); int othercid = GGadgetGetCid(g)==CID_FlagsList?CID_Flags:CID_MacStyle; GGadget *field = GWidgetGetControl(gw,othercid); flags = 0; for ( i=0; iselected ) { bit = ((int) (list[i]->userdata)); flags |= (1<type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int Head_OK(GGadget *g, GEvent *e) { GWindow gw; HeadView *hv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); hv = GDrawGetUserData(gw); head_close((TableView *) hv); } return( true ); } static int head_e_h(GWindow gw, GEvent *event) { HeadView *hv = GDrawGetUserData(gw); if ( event->type==et_close ) { hv->destroyed = true; GDrawDestroyWindow(hv->gw); } else if ( event->type == et_destroy ) { hv->table->tv = NULL; free(hv); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(hv->table->name); system("netscape http://partners.adobe.com/asn/developer/opentype/head.html &"); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } static void quad2date(char str[80], int32 date1, int32 date2 ) { time_t date; struct tm *tm; /* convert from a time based on 1904 to a unix time based on 1970 */ if ( sizeof(time_t)>32 ) { /* as unixes switch over to 64 bit times, this will be the better */ /* solution */ date = ((((time_t) date1)<<16)<<16) | date2; date -= ((time_t) 60)*60*24*365*(70-4); date -= 60*60*24*(70-4)/4; /* leap years */ } else { /* But for now, we're stuck with this on most machines */ int year[2], date1904[4], i; date1904[0] = date1>>16; date1904[1] = date1&0xffff; date1904[2] = date2>>16; date1904[3] = date2&0xffff; year[0] = 60*60*24*365; year[1] = year[0]>>16; year[0] &= 0xffff; for ( i=4; i<70; ++i ) { date1904[3] -= year[0]; date1904[2] -= year[1]; if ( (i&3)==0 ) date1904[3] -= 60*60*24; date1904[2] += date1904[3]>>16; date1904[3] &= 0xffff; date1904[1] += date1904[2]>>16; date1904[2] &= 0xffff; } date = ((date1904[2]<<16) | date1904[3]); } tm = gmtime(&date); sprintf( str, "%d-%d-%d %d:%02d:%02d", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec ); } void headViewUpdateModifiedCheck(Table *tab) { char modified[100]; unichar_t ubuf[100]; if ( tab->tv!=NULL ) { quad2date(modified, tgetlong(tab,28), tgetlong(tab,32)); uc_strcpy(ubuf,modified); GGadgetSetTitle(GWidgetGetControl(tab->tv->gw,CID_Modified),ubuf); sprintf( modified, "%08x", tgetlong(tab,8) ); uc_strcpy(ubuf,modified); GGadgetSetTitle(GWidgetGetControl(tab->tv->gw,CID_Checksum),ubuf); } } void headCreateEditor(Table *tab,TtfView *tfv) { HeadView *hv = gcalloc(1,sizeof(HeadView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[41]; GTextInfo label[41]; int i; static unichar_t title[60]; char version[10], revision[10], checksum[10], magic[10], flags[10], em[10], created[80], modified[80], xmin[10], ymin[10], xmax[10], ymax[10], macstyle[8], smallest[8], glyf[8]; hv->table = tab; hv->virtuals = &headfuncs; hv->owner = tfv; hv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) hv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, hv->font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,head_e_h,hv,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _STR_Version; label[0].text_in_resource = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 5; gcd[0].gd.pos.y = 5+6; gcd[0].gd.flags = gg_enabled|gg_visible; gcd[0].creator = GLabelCreate; sprintf( version, "%.4g", tgetvfixed(tab,0) ); label[1].text = (unichar_t *) version; label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 80; gcd[1].gd.pos.y = gcd[0].gd.pos.y-6; gcd[1].gd.pos.width = 100; gcd[1].gd.flags = gg_enabled|gg_visible; gcd[1].gd.cid = CID_Version; gcd[1].creator = GTextFieldCreate; label[2].text = (unichar_t *) _STR_FontRevision; label[2].text_in_resource = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 5; gcd[2].gd.pos.y = gcd[1].gd.pos.y+24+6; gcd[2].gd.flags = gg_enabled|gg_visible; gcd[2].creator = GLabelCreate; sprintf( revision, "%.4g", tgetfixed(tab,4) ); label[3].text = (unichar_t *) revision; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = gcd[1].gd.pos.x; gcd[3].gd.pos.y = gcd[2].gd.pos.y-6; gcd[3].gd.pos.width = gcd[1].gd.pos.width; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_Revision; gcd[3].creator = GTextFieldCreate; label[4].text = (unichar_t *) _STR_Checksum; label[4].text_in_resource = true; gcd[4].gd.label = &label[4]; gcd[4].gd.pos.x = 5; gcd[4].gd.pos.y = gcd[3].gd.pos.y+24+6; gcd[4].gd.flags = gg_visible; gcd[4].creator = GLabelCreate; sprintf( checksum, "%08x", tgetlong(tab,8) ); label[5].text = (unichar_t *) checksum; label[5].text_is_1byte = true; gcd[5].gd.label = &label[5]; gcd[5].gd.pos.x = gcd[1].gd.pos.x; gcd[5].gd.pos.y = gcd[4].gd.pos.y-6; gcd[5].gd.pos.width = gcd[1].gd.pos.width; gcd[5].gd.flags = gg_visible; gcd[5].gd.cid = CID_Checksum; gcd[5].creator = GTextFieldCreate; label[6].text = (unichar_t *) _STR_MagicNumber; label[6].text_in_resource = true; gcd[6].gd.label = &label[6]; gcd[6].gd.pos.x = 5+gcd[1].gd.pos.x+gcd[1].gd.pos.width; gcd[6].gd.pos.y = gcd[4].gd.pos.y; gcd[6].gd.flags = gg_enabled|gg_visible; gcd[6].creator = GLabelCreate; sprintf( magic, "%x", tgetlong(tab,12) ); label[7].text = (unichar_t *) magic; label[7].text_is_1byte = true; gcd[7].gd.label = &label[7]; gcd[7].gd.pos.x = gcd[6].gd.pos.x+75; gcd[7].gd.pos.y = gcd[6].gd.pos.y-6; gcd[7].gd.pos.width = gcd[1].gd.pos.width; gcd[7].gd.flags = gg_enabled|gg_visible; gcd[7].gd.cid = CID_MagicNumber; gcd[7].gd.u.list = magicnumbers; gcd[7].creator = GListFieldCreate; label[8].text = (unichar_t *) _STR_Flags; label[8].text_in_resource = true; gcd[8].gd.label = &label[8]; gcd[8].gd.pos.x = 5; gcd[8].gd.pos.y = gcd[5].gd.pos.y+24+6; gcd[8].gd.flags = gg_enabled|gg_visible; gcd[8].creator = GLabelCreate; sprintf( flags, "%04x", tgetushort(tab,16) ); label[9].text = (unichar_t *) flags; label[9].text_is_1byte = true; gcd[9].gd.label = &label[9]; gcd[9].gd.pos.x = gcd[1].gd.pos.x; gcd[9].gd.pos.y = gcd[8].gd.pos.y-6; gcd[9].gd.pos.width = gcd[1].gd.pos.width; gcd[9].gd.flags = gg_enabled|gg_visible; gcd[9].gd.handle_controlevent = head_FlagsChange; gcd[9].gd.cid = CID_Flags; gcd[9].creator = GTextFieldCreate; gcd[34].gd.pos.x = gcd[9].gd.pos.x+gcd[9].gd.pos.width+10; gcd[34].gd.pos.y = gcd[9].gd.pos.y; gcd[34].gd.pos.height = 57; gcd[34].gd.pos.width = 120; gcd[34].gd.flags = gg_enabled|gg_visible | gg_list_multiplesel; gcd[34].gd.u.list = flagslist; gcd[34].gd.cid = CID_FlagsList; gcd[34].gd.handle_controlevent = head_FlagsChange; gcd[34].creator = GListCreate; label[10].text = (unichar_t *) _STR_UnitsPerEm; label[10].text_in_resource = true; gcd[10].gd.label = &label[10]; gcd[10].gd.pos.x = gcd[0].gd.pos.x; gcd[10].gd.pos.y = gcd[8].gd.pos.y+60; gcd[10].gd.flags = gg_enabled|gg_visible; gcd[10].creator = GLabelCreate; sprintf( em, "%d", tgetushort(tab,18) ); label[11].text = (unichar_t *) em; label[11].text_is_1byte = true; gcd[11].gd.label = &label[11]; gcd[11].gd.pos.x = gcd[1].gd.pos.x; gcd[11].gd.pos.y = gcd[10].gd.pos.y-6; gcd[11].gd.pos.width = gcd[1].gd.pos.width; gcd[11].gd.flags = gg_enabled|gg_visible; gcd[11].gd.cid = CID_UnitsPerEm; gcd[11].creator = GTextFieldCreate; label[12].text = (unichar_t *) _STR_Created; label[12].text_in_resource = true; gcd[12].gd.label = &label[12]; gcd[12].gd.pos.x = 5; gcd[12].gd.pos.y = gcd[11].gd.pos.y+24+6; gcd[12].gd.flags = gg_enabled|gg_visible; gcd[12].creator = GLabelCreate; quad2date(created, tgetlong(tab,20), tgetlong(tab,24)); label[13].text = (unichar_t *) created; label[13].text_is_1byte = true; gcd[13].gd.label = &label[13]; gcd[13].gd.pos.x = gcd[1].gd.pos.x-30; gcd[13].gd.pos.y = gcd[12].gd.pos.y-6; gcd[13].gd.pos.width = gcd[1].gd.pos.width+30; gcd[13].gd.flags = gg_enabled|gg_visible; gcd[13].gd.cid = CID_Created; gcd[13].creator = GTextFieldCreate; label[14].text = (unichar_t *) _STR_Modified; label[14].text_in_resource = true; gcd[14].gd.label = &label[14]; gcd[14].gd.pos.x = gcd[6].gd.pos.x; gcd[14].gd.pos.y = gcd[12].gd.pos.y; gcd[14].gd.flags = gg_visible; gcd[14].creator = GLabelCreate; quad2date(modified, tgetlong(tab,28), tgetlong(tab,32)); label[15].text = (unichar_t *) modified; label[15].text_is_1byte = true; gcd[15].gd.label = &label[15]; gcd[15].gd.pos.x = gcd[7].gd.pos.x-30; gcd[15].gd.pos.y = gcd[14].gd.pos.y-6; gcd[15].gd.pos.width = gcd[1].gd.pos.width+30; gcd[15].gd.flags = gg_visible; gcd[15].gd.cid = CID_Modified; gcd[15].creator = GTextFieldCreate; label[16].text = (unichar_t *) _STR_XMin; label[16].text_in_resource = true; gcd[16].gd.label = &label[16]; gcd[16].gd.pos.x = gcd[0].gd.pos.x; gcd[16].gd.pos.y = gcd[15].gd.pos.y+24+6; gcd[16].gd.flags = gg_enabled|gg_visible; gcd[16].creator = GLabelCreate; sprintf( xmin, "%d", (short) tgetushort(tab,36) ); label[17].text = (unichar_t *) xmin; label[17].text_is_1byte = true; gcd[17].gd.label = &label[17]; gcd[17].gd.pos.x = gcd[1].gd.pos.x; gcd[17].gd.pos.y = gcd[16].gd.pos.y-6; gcd[17].gd.pos.width = gcd[1].gd.pos.width; gcd[17].gd.flags = gg_enabled|gg_visible; gcd[17].gd.cid = CID_xMin; gcd[17].creator = GTextFieldCreate; label[18].text = (unichar_t *) _STR_YMin; label[18].text_in_resource = true; gcd[18].gd.label = &label[18]; gcd[18].gd.pos.x = gcd[6].gd.pos.x; gcd[18].gd.pos.y = gcd[16].gd.pos.y; gcd[18].gd.flags = gg_enabled|gg_visible; gcd[18].creator = GLabelCreate; sprintf( ymin, "%d", (short) tgetushort(tab,38) ); label[19].text = (unichar_t *) ymin; label[19].text_is_1byte = true; gcd[19].gd.label = &label[19]; gcd[19].gd.pos.x = gcd[7].gd.pos.x; gcd[19].gd.pos.y = gcd[18].gd.pos.y-6; gcd[19].gd.pos.width = gcd[1].gd.pos.width; gcd[19].gd.flags = gg_enabled|gg_visible; gcd[19].gd.cid = CID_yMin; gcd[19].creator = GTextFieldCreate; label[20].text = (unichar_t *) _STR_XMax; label[20].text_in_resource = true; gcd[20].gd.label = &label[20]; gcd[20].gd.pos.x = gcd[0].gd.pos.x; gcd[20].gd.pos.y = gcd[18].gd.pos.y+24; gcd[20].gd.flags = gg_enabled|gg_visible; gcd[20].creator = GLabelCreate; sprintf( xmax, "%d", (short) tgetushort(tab,40) ); label[21].text = (unichar_t *) xmax; label[21].text_is_1byte = true; gcd[21].gd.label = &label[21]; gcd[21].gd.pos.x = gcd[1].gd.pos.x; gcd[21].gd.pos.y = gcd[20].gd.pos.y-6; gcd[21].gd.pos.width = gcd[1].gd.pos.width; gcd[21].gd.flags = gg_enabled|gg_visible; gcd[21].gd.cid = CID_xMax; gcd[21].creator = GTextFieldCreate; label[22].text = (unichar_t *) _STR_YMax; label[22].text_in_resource = true; gcd[22].gd.label = &label[22]; gcd[22].gd.pos.x = gcd[6].gd.pos.x; gcd[22].gd.pos.y = gcd[20].gd.pos.y; gcd[22].gd.flags = gg_enabled|gg_visible; gcd[22].creator = GLabelCreate; sprintf( ymax, "%d", (short) tgetushort(tab,42) ); label[23].text = (unichar_t *) ymax; label[23].text_is_1byte = true; gcd[23].gd.label = &label[23]; gcd[23].gd.pos.x = gcd[7].gd.pos.x; gcd[23].gd.pos.y = gcd[22].gd.pos.y-6; gcd[23].gd.pos.width = gcd[1].gd.pos.width; gcd[23].gd.flags = gg_enabled|gg_visible; gcd[23].gd.cid = CID_yMax; gcd[23].creator = GTextFieldCreate; label[24].text = (unichar_t *) _STR_MacStyle; label[24].text_in_resource = true; gcd[24].gd.label = &label[24]; gcd[24].gd.pos.x = gcd[0].gd.pos.x; gcd[24].gd.pos.y = gcd[22].gd.pos.y+24; gcd[24].gd.flags = gg_enabled|gg_visible; gcd[24].creator = GLabelCreate; sprintf( macstyle, "%04x", tgetushort(tab,44) ); label[25].text = (unichar_t *) macstyle; label[25].text_is_1byte = true; gcd[25].gd.label = &label[25]; gcd[25].gd.pos.x = gcd[1].gd.pos.x; gcd[25].gd.pos.y = gcd[24].gd.pos.y-6; gcd[25].gd.pos.width = gcd[1].gd.pos.width; gcd[25].gd.flags = gg_enabled|gg_visible; gcd[25].gd.cid = CID_MacStyle; gcd[25].gd.handle_controlevent = head_FlagsChange; gcd[25].creator = GTextFieldCreate; gcd[35].gd.pos.x = gcd[34].gd.pos.x; gcd[35].gd.pos.y = gcd[25].gd.pos.y; gcd[35].gd.pos.height = 58; gcd[35].gd.pos.width = gcd[34].gd.pos.width; gcd[35].gd.flags = gg_enabled|gg_visible | gg_list_multiplesel; gcd[35].gd.u.list = macstylelist; gcd[35].gd.cid = CID_MacStyleList; gcd[35].gd.handle_controlevent = head_FlagsChange; gcd[35].creator = GListCreate; label[26].text = (unichar_t *) _STR_SmallestSize; label[26].text_in_resource = true; gcd[26].gd.label = &label[26]; gcd[26].gd.pos.x = 5; gcd[26].gd.pos.y = gcd[25].gd.pos.y+60+6; gcd[26].gd.flags = gg_enabled|gg_visible; gcd[26].creator = GLabelCreate; sprintf( smallest, "%d", tgetushort(tab,46) ); label[27].text = (unichar_t *) smallest; label[27].text_is_1byte = true; gcd[27].gd.label = &label[27]; gcd[27].gd.pos.x = gcd[1].gd.pos.x; gcd[27].gd.pos.y = gcd[26].gd.pos.y-6; gcd[27].gd.pos.width = gcd[1].gd.pos.width; gcd[27].gd.flags = gg_enabled|gg_visible; gcd[27].gd.cid = CID_SmallestSize; gcd[27].creator = GTextFieldCreate; label[28].text = (unichar_t *) _STR_FontDirection; label[28].text_in_resource = true; gcd[28].gd.label = &label[28]; gcd[28].gd.pos.x = gcd[6].gd.pos.x; gcd[28].gd.pos.y = gcd[26].gd.pos.y; gcd[28].gd.flags = gg_enabled|gg_visible; gcd[28].creator = GLabelCreate; gcd[29].gd.pos.x = gcd[7].gd.pos.x; gcd[29].gd.pos.y = gcd[28].gd.pos.y-6; gcd[29].gd.pos.width = gcd[1].gd.pos.width; gcd[29].gd.flags = gg_enabled|gg_visible; gcd[29].gd.cid = CID_FontDir; gcd[29].gd.u.list = directionlist; gcd[29].creator = GListButtonCreate; for ( i=0; directionlist[i].text!=NULL; ++i ) directionlist[i].selected = (tgetushort(tab,48)==(int) (directionlist[i].userdata)); label[30].text = (unichar_t *) _STR_LocaFormat; label[30].text_in_resource = true; gcd[30].gd.label = &label[30]; gcd[30].gd.pos.x = gcd[0].gd.pos.x; gcd[30].gd.pos.y = gcd[28].gd.pos.y+24; gcd[30].gd.flags = gg_enabled|gg_visible; gcd[30].creator = GLabelCreate; gcd[31].gd.pos.x = gcd[1].gd.pos.x; gcd[31].gd.pos.y = gcd[30].gd.pos.y-6; gcd[31].gd.pos.width = gcd[1].gd.pos.width; gcd[31].gd.flags = gg_enabled|gg_visible; gcd[31].gd.cid = CID_LocaFormat; gcd[31].gd.u.list = localist; gcd[31].creator = GListButtonCreate; for ( i=0; localist[i].text!=NULL; ++i ) localist[i].selected = false; localist[ tgetushort(tab,50) ].selected = true; label[32].text = (unichar_t *) _STR_GlyfFormat; label[32].text_in_resource = true; gcd[32].gd.label = &label[32]; gcd[32].gd.pos.x = gcd[6].gd.pos.x; gcd[32].gd.pos.y = gcd[30].gd.pos.y; gcd[32].gd.flags = gg_enabled|gg_visible; gcd[32].creator = GLabelCreate; sprintf( glyf, "%d", tgetushort(tab,52) ); label[33].text = (unichar_t *) glyf; label[33].text_is_1byte = true; gcd[33].gd.label = &label[33]; gcd[33].gd.pos.x = gcd[7].gd.pos.x; gcd[33].gd.pos.y = gcd[32].gd.pos.y-6; gcd[33].gd.pos.width = gcd[1].gd.pos.width; gcd[33].gd.flags = gg_enabled|gg_visible; gcd[33].gd.cid = CID_GlyphFormat; gcd[33].creator = GTextFieldCreate; /* 2 extra entries for lists */ i = 36; gcd[i].gd.pos.x = 20-3; gcd[i].gd.pos.y = gcd[33].gd.pos.y+35-3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_default; label[i].text = (unichar_t *) _STR_OK; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'O'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = Head_OK; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 370-GIntGetResource(_NUM_Buttonsize)-20; gcd[i].gd.pos.y = gcd[i-1].gd.pos.y+3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = Head_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i].creator = GGroupCreate; GGadgetsCreate(gw,gcd); head_FlagsChange(gcd[9].ret,NULL); head_FlagsChange(gcd[25].ret,NULL); GDrawSetVisible(gw,true); } mensis-080507/INSTALL0100664000076500007650000001722707742401532012372 0ustar gwwgwwBasic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. mensis-080507/install-sh0100775000076500007650000001273607742401532013345 0ustar gwwgww#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 mensis-080507/instrmod.c0100664000076500007650000002532611010406101013317 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #include "ttfinstrs.h" #if 0 static const int pushes[] = { ttf_pushb, ttf_pushb+1, ttf_pushb+2, ttf_pushb+3, ttf_pushb+4, ttf_pushb+5, ttf_pushb+6, ttf_pushb+7, ttf_pushw, ttf_pushw+1, ttf_pushw+2, ttf_pushw+3, ttf_npushb, ttf_pushw+4, ttf_pushw+5, ttf_pushw+6, ttf_pushw+7, ttf_npushw, -1 }; static const int stack[] = { ttf_pop, ttf_dup, ttf_swap, ttf_roll, ttf_mindex, ttf_cindex, ttf_clear, ttf_depth, -1 }; static const int unary[] = { ttf_abs, ttf_neg, ttf_ceiling, ttf_floor, ttf_nround, ttf_nround+1, ttf_nround+2, ttf_round, ttf_round+1, ttf_round+2, -1 }; static const int binary[] = { ttf_add, ttf_sub, ttf_mul, ttf_div, ttf_max, ttf_min, -1 }; static const int logical[] = { ttf_not, ttf_or, ttf_and, ttf_even, ttf_odd, ttf_eq, ttf_neq, ttf_lt, ttf_lteq, ttf_gt, ttf_gteq, -1 }; static const int storage[] = { ttf_rcvt, ttf_wcvtf, ttf_wcvtp, ttf_ws, ttf_rs, -1 }; static const int deltas[] = { ttf_deltac1, ttf_deltac2, ttf_deltac3, ttf_deltap1, ttf_deltap2, ttf_deltap3, -1 }; static const int conditionals[] = { ttf_if, ttf_else, ttf_eif, ttf_jmpr, ttf_jrof, ttf_jrot, -1 }; static const int routines[] = { ttf_call, ttf_loopcall, ttf_fdef, ttf_endf, ttf_idef, -1 }; static const int ubytes[] = { -1 }; static const int sshorts[] = { -1 }; static const int vectors[] = { ttf_svtca, ttf_svtca+1, ttf_sfvfs, ttf_sfvtca, ttf_sfvtca+1, ttf_sfvtl, ttf_sfvtl+1, ttf_sfvtpv, ttf_spvfs, ttf_spvtca, ttf_spvtca+1, ttf_spvtl, ttf_spvtl+1, ttf_sdpvtl, ttf_sdpvtl+1, ttf_gfv, ttf_gpv, -1 }; static const int ttsetstate[] = { ttf_flipoff, ttf_flipon, ttf_rdtg, ttf_roff, ttf_rtdg, ttf_rtg, ttf_rthg, ttf_rutg, ttf_s45round, ttf_sround, ttf_sdb, ttf_sds, ttf_instctrl, ttf_scanctrl, ttf_scantype, ttf_scvtci, ttf_smd, ttf_ssw, ttf_sswci, ttf_sloop, -1 }; static const int setregisters[] = { ttf_srp0, ttf_srp1, ttf_srp2, ttf_szp0, ttf_szp1, ttf_szp2, ttf_szps, -1 }; static const int getinfo[] = { ttf_gc, ttf_gc+1, ttf_getinfo, ttf_md, ttf_md+1, ttf_mppem, ttf_mps, -1 }; static const int pointstate[] = { ttf_utp, ttf_flippt, ttf_fliprgoff, ttf_fliprgon, -1 }; static const int movepoints[] = { ttf_alignpts, ttf_alignrp, ttf_ip, ttf_iup, ttf_iup+1, ttf_isect, ttf_mdap, ttf_mdap+1, ttf_miap, ttf_miap+1, ttf_msirp, ttf_msirp+1, ttf_scfs, ttf_shc, ttf_shc+1, ttf_shp, ttf_shp+1, ttf_shpix, ttf_shz, -1 }; static const int mdrp[] = { ttf_mdrp, ttf_mdrp+0x01, ttf_mdrp+0x02, ttf_mdrp+0x04, ttf_mdrp+0x05, ttf_mdrp+0x06, ttf_mdrp+0x08, ttf_mdrp+0x09, ttf_mdrp+0x0a, ttf_mdrp+0x0c, ttf_mdrp+0x0d, ttf_mdrp+0x0e, ttf_mdrp+0x10, ttf_mdrp+0x11, ttf_mdrp+0x12, ttf_mdrp+0x14, ttf_mdrp+0x15, ttf_mdrp+0x16, ttf_mdrp+0x18, ttf_mdrp+0x19, ttf_mdrp+0x1a, ttf_mdrp+0x1c, ttf_mdrp+0x1d, ttf_mdrp+0x1e, -1 }; static const int mirp[] = { ttf_mirp, ttf_mirp+0x01, ttf_mirp+0x02, ttf_mirp+0x04, ttf_mirp+0x05, ttf_mirp+0x06, ttf_mirp+0x08, ttf_mirp+0x09, ttf_mirp+0x0a, ttf_mirp+0x0c, ttf_mirp+0x0d, ttf_mirp+0x0e, ttf_mirp+0x10, ttf_mirp+0x11, ttf_mirp+0x12, ttf_mirp+0x14, ttf_mirp+0x15, ttf_mirp+0x16, ttf_mirp+0x18, ttf_mirp+0x19, ttf_mirp+0x1a, ttf_mirp+0x1c, ttf_mirp+0x1d, ttf_mirp+0x1e, -1 }; static GTextInfo instrtypes[] = { { (unichar_t *) _STR_Pushes, NULL, 0, 0, (void *) pushes, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UBytes, NULL, 0, 0, (void *) ubytes, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Shorts, NULL, 0, 0, (void *) sshorts, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Stack, NULL, 0, 0, (void *) stack, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StorageOps, NULL, 0, 0, (void *) storage, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unary, NULL, 0, 0, (void *) unary, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Binary, NULL, 0, 0, (void *) binary, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Logical, NULL, 0, 0, (void *) logical, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Conditional, NULL, 0, 0, (void *) conditionals, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Routines, NULL, 0, 0, (void *) routines, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Vectors, NULL, 0, 0, (void *) vectors, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SetState, NULL, 0, 0, (void *) ttsetstate, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SetRegisters, NULL, 0, 0, (void *) setregisters, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GetInfo, NULL, 0, 0, (void *) getinfo, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_PointState, NULL, 0, 0, (void *) pointstate, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MovePoints, NULL, 0, 0, (void *) movepoints, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MDRP, NULL, 0, 0, (void *) mdrp, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MIRP, NULL, 0, 0, (void *) mirp, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Deltas, NULL, 0, 0, (void *) deltas, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL } }; static GTextInfo *number[] = { NULL }; #define CID_InstrClasses 1001 /* List of types of instrs */ #define CID_Instrs 1002 /* List of instrs */ #define CID_Instr 1003 /* tf of current instruction */ typedef struct instrmod { GWindow gw; struct instrinfo *ii; struct instrdata *id; } InstrMod; static GTextInfo **NewInstrList(const int *vals) { GTextInfo **list; int i; for ( i=0; vals[i]!=-1; ++i ); list = galloc((i+1)*sizeof(GTextInfo *)); list[i] = NULL; for ( i=0; vals[i]!=-1; ++i ) { list[i] = gcalloc(1,sizeof(GTextInfo)); list[i]->fg = list[i]->bg = COLOR_DEFAULT; list[i]->userdata = (void *) vals[i]; list[i]->text = uc_copy(instrs[vals[i]]); } return( list ); } static const int *FindInstrList(uint8 instr,int *which, int *subwhich) { const int *instrs; int i,j; for ( i=0; instrtypes[i].text!=NULL; ++i ) { instrs = instrtypes[i].userdata; for ( j=0; instrs[j]!=-1; ++j ) if ( instrs[j]==instr ) { *which = i; *subwhich = j; return( instrs ); } } /* some instructions are unassigned (8F), others (like ROUND[3]) have no meaning */ return( NULL ); } int InstrsFindAddr(struct instrinfo *ii) { return( 0 ); } static void IMSetToInstr(InstrMod *im) { int where, subwhere, addr; const int *list; const char *msg; unichar_t *temp; char buffer[8]; addr = InstrsFindAddr(im->ii); /* index of isel_pos in instrs array */ if ( im->ii->isel_pos==-1 || im->id->instr_cnt==0 ) { where = 0; subwhere = 0; list = pushes; msg = instrs[ttf_pushb]; } else if ( im->id->bts[addr]==bt_instr ) { list = FindInstrList(im->id->instrs[addr],&where,&subwhere); msg = instrs[im->id->instrs[addr]]; } else if ( im->id->bts[addr]==bt_cnt || im->id->bts[addr]==bt_byte ) { list = ubytes; where = 1; subwhere = 0; sprintf( buffer, "%d", im->id->instrs[addr]); msg = buffer; } else { list = sshorts; where = 1; subwhere = 0; sprintf( buffer, "%d", (short) ((im->id->instrs[addr]<<8)|im->id->instrs[addr+1])); msg = buffer; } if ( list==ubytes || list==sshorts ) { GGadgetSetList(GWidgetGetControl(im->gw,CID_Instrs),number,true); } else { GTextInfo **tlist = NewInstrList(list); tlist[subwhere]->selected = true; GGadgetSetList(GWidgetGetControl(im->gw,CID_Instrs),tlist,false); } GGadgetSetTitle(GWidgetGetControl(im->gw,CID_InstrClasses), GStringGetResource((int) instrtypes[where].text,NULL)); temp = uc_copy(msg); GGadgetSetTitle(GWidgetGetControl(im->gw,CID_Instr),temp); free(temp); } /* A line can contain a list of numbers and one instruction, or (if ubyte or shorts is set) */ /* exactly one number and no instructions */ /* If a number has a decimal point it will be interpreted as 10.6 (ie a 16 bit*/ /* version of 26.6) */ static uint8 *BuildInstrs(InstrMod *im, int *_cnt) { const unichar_t *ret = _GGadgetGetTitle(GWidgetGetControl(im->gw,CID_Instr)); unichar_t *end, *pt; int16 *numbs = galloc((u_strlen(ret)/2+1)*sizeof(int16)); int ncnt=0; long val; double dval; int instr,i; while ( isspace( *ret )) ++ret; if ( *ret=='\0' ) { GWidgetErrorR(_STR_NoInstruction,_STR_NoInstruction); free( numbs ); return( NULL ); } while ( *ret ) { val = u_strtol(ret,&end,0); if ( *end=='.' ) { dval = u_strtod(ret,&end); val = rint(dval*64); } if ( end==ret ) break; if ( val>=32768 || val<-32768 ) { GWidgetErrorR(_STR_ValueOutOfBounds,_STR_ValueMustBeShort,val); free( numbs ); return( NULL ); } numbs[ncnt++] = val; ret = end; } while ( isspace( *ret )) ++ret; instr = -1; if ( *ret!='\0' ) { for ( i=0; instrs[i]!=NULL; ++i ) if ( uc_strcmp(ret,instrs[i])==0 ) break; if ( instrs[i]!=NULL ) instr = i; else if ( (pt=u_strchr(ret,'['))!=NULL ) { for ( i=0; instrs[i]!=NULL; ++i ) if ( uc_strncmp(ret,instrs[i],pt+1-ret)==0 ) break; if ( instrs[i]!=NULL ) { val = u_strtol(pt+1,&end,2); if ( *end!=']' ) { val = u_strtol(pt+1,&end,10); if ( *end!=']' ) val = u_strtol(pt+1,&end,16); } if ( *end==']' ) instr = i+val; } } if ( instr==-1 ) { GWidgetErrorR(_STR_NoInstruction,_STR_CouldntParseInstr, ret); free( numbs ); return( NULL ); } } } #endif void InstrModCreate(struct instrinfo *ii) { /*InstrMod *im;*/ fprintf( stderr, "NYI\n" ); } mensis-080507/instrs.c0100664000076500007650000011540311010406101012776 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include "ttfinstrs.h" extern int _GScrollBar_Width; #define EDGE_SPACING 2 const char *instrs[] = { "SVTCA[y-axis]", "SVTCA[x-axis]", "SPVTCA[y-axis]", "SPVTCA[x-axis]", "SFVTCA[y-axis]", "SFVTCA[x-axis]", "SPVTL[parallel]", "SPVTL[orthog]", "SFVTL[parallel]", "SFVTL[orthog]", "SPVFS", "SFVFS", "GPV", "GFV", "SFVTPV", "ISECT", "SRP0", "SRP1", "SRP2", "SZP0", "SZP1", "SZP2", "SZPS", "SLOOP", "RTG", "RTHG", "SMD", "ELSE", "JMPR", "SCVTCI", "SSWCI", "SSW", "DUP", "POP", "CLEAR", "SWAP", "DEPTH", "CINDEX", "MINDEX", "ALIGNPTS", "Unknown28", "UTP", "LOOPCALL", "CALL", "FDEF", "ENDF", "MDAP[no rnd]", "MDAP[rnd]", "IUP[y]", "IUP[x]", "SHP[rp2]", "SHP[rp1]", "SHC[rp2]", "SHC[rp1]", "SHZ[rp2]", "SHZ[rp1]", "SHPIX", "IP", "MSIRP[no set rp0]", "MSIRP[set rp0]", "ALIGNRP", "RTDG", "MIAP[no rnd]", "MIAP[rnd]", "NPUSHB", "NPUSHW", "WS", "RS", "WCVTP", "RCVT", "GC[cur]", "GC[orig]", "SCFS", "MD[grid]", "MD[orig]", "MPPEM", "MPS", "FLIPON", "FLIPOFF", "DEBUG", "LT", "LTEQ", "GT", "GTEQ", "EQ", "NEQ", "ODD", "EVEN", "IF", "EIF", "AND", "OR", "NOT", "DELTAP1", "SDB", "SDS", "ADD", "SUB", "DIV", "MUL", "ABS", "NEG", "FLOOR", "CEILING", "ROUND[Grey]", "ROUND[Black]", "ROUND[White]", "ROUND[Undef4]", "NROUND[Grey]", "NROUND[Black]", "NROUND[White]", "NROUND[Undef4]", "WCVTF", "DELTAP2", "DELTAP3", "DELTAC1", "DELTAC2", "DELTAC3", "SROUND", "S45ROUND", "JROT", "JROF", "ROFF", "Unknown7B", "RUTG", "RDTG", "SANGW", "AA", "FLIPPT", "FLIPRGON", "FLIPRGOFF", "Unknown83", "Unknown84", "SCANCTRL", "SDPVTL[parallel]", "SDPVTL[orthog]", "GETINFO", "IDEF", "ROLL", "MAX", "MIN", "SCANTYPE", "INSTCTRL", "Unknown8F", "Unknown90", "Unknown91", "Unknown92", "Unknown93", "Unknown94", "Unknown95", "Unknown96", "Unknown97", "Unknown98", "Unknown99", "Unknown9A", "Unknown9B", "Unknown9C", "Unknown9D", "Unknown9E", "Unknown9F", "UnknownA0", "UnknownA1", "UnknownA2", "UnknownA3", "UnknownA4", "UnknownA5", "UnknownA6", "UnknownA7", "UnknownA8", "UnknownA9", "UnknownAA", "UnknownAB", "UnknownAC", "UnknownAD", "UnknownAE", "UnknownAF", "PUSHB 1", "PUSHB 2", "PUSHB 3", "PUSHB 4", "PUSHB 5", "PUSHB 6", "PUSHB 7", "PUSHB 8", "PUSHW 1", "PUSHW 2", "PUSHW 3", "PUSHW 4", "PUSHW 5", "PUSHW 6", "PUSHW 7", "PUSHW 8", "MDRP[grey]", "MDRP[black]", "MDRP[white]", "MDRP03", "MDRP[rnd, grey]", "MDRP[rnd, black]", "MDRP[rnd, white]", "MDRP07", "MDRP[min, grey]", "MDRP[min, black]", "MDRP[min, white]", "MDRP0b", "MDRP[min, rnd, grey]", "MDRP[min, rnd, black]", "MDRP[min, rnd, white]", "MDRP0f", "MDRP[rp0, grey]", "MDRP[rp0, black]", "MDRP[rp0, white]", "MDRP13", "MDRP[rp0, rnd, grey]", "MDRP[rp0, rnd, black]", "MDRP[rp0, rnd, white]", "MDRP17", "MDRP[rp0, min, grey]", "MDRP[rp0, min, black]", "MDRP[rp0, min, white]", "MDRP1b", "MDRP[rp0, min, rnd, grey]", "MDRP[rp0, min, rnd, black]", "MDRP[rp0, min, rnd, white]", "MDRP1f", "MIRP[grey]", "MIRP[black]", "MIRP[white]", "MIRP03", "MIRP[rnd, grey]", "MIRP[rnd, black]", "MIRP[rnd, white]", "MIRP07", "MIRP[min, grey]", "MIRP[min, black]", "MIRP[min, white]", "MIRP0b", "MIRP[min, rnd, grey]", "MIRP[min, rnd, black]", "MIRP[min, rnd, white]", "MIRP0f", "MIRP[rp0, grey]", "MIRP[rp0, black]", "MIRP[rp0, white]", "MIRP13", "MIRP[rp0, rnd, grey]", "MIRP[rp0, rnd, black]", "MIRP[rp0, rnd, white]", "MIRP17", "MIRP[rp0, min, grey]", "MIRP[rp0, min, black]", "MIRP[rp0, min, white]", "MIRP1b", "MIRP[rp0, min, rnd, grey]", "MIRP[rp0, min, rnd, black]", "MIRP[rp0, min, rnd, white]", "MIRP1f" }; unichar_t *instrhelppopup[256]; static void ihaddr(int bottom,int top,char *msg) { unichar_t *um = uc_copy(msg); while ( bottom<=top ) instrhelppopup[bottom++] = um; } static void ihadd(int p,char *msg) { ihaddr(p,p,msg); } void instrhelpsetup(void) { if ( instrhelppopup[0]!=NULL ) return; ihadd(0x7f,"Adjust Angle\nObsolete instruction\nPops one value"); ihadd(0x64,"ABSolute Value\nReplaces top of stack with its abs"); ihadd(0x60,"ADD\nPops two 26.6 fixed numbers from stack\nadds them, pushes result"); ihadd(0x27,"ALIGN PoinTS\nAligns (&pops) the two points which are on the stack\nby moving along freedom vector to the average of their\npositions on projection vector"); ihadd(0x3c,"ALIGN to Reference Point\nPops as many points as specified in loop counter\nAligns points with RP0 by moving each\nalong freedom vector until distance to\nRP0 on projection vector is 0"); ihadd(0x5a,"logical AND\nPops two values, ands them, pushes result"); ihadd(0x2b,"CALL function\nPops a value, calls the function represented by it"); ihadd(0x67,"CEILING\nPops one 26.6 value, rounds upward to an int\npushes result"); ihadd(0x25,"Copy INDEXed element to stack\nPops an index & copies stack\nelement[index] to top of stack"); ihadd(0x22,"CLEAR\nPops all elements on stack"); ihadd(0x4f,"DEBUG call\nPops a value and executes a debugging interpreter\n(if available)"); ihadd(0x73,"DELTA exception C1\nPops a value n & then n exception specifications & cvt entries\nchanges each cvt entry at a given size by the pixel amount"); ihadd(0x74,"DELTA exception C2\nPops a value n & then n exception specifications & cvt entries\nchanges each cvt entry at a given size by the amount"); ihadd(0x75,"DELTA exception C3\nPops a value n & then n exception specifications & cvt entries\nchanges each cvt entry at a given size by the amount"); ihadd(0x5D,"DELTA exception P1\nPops a value n & then n exception specifications & points\nmoves each point at a given size by the amount"); ihadd(0x71,"DELTA exception P2\nPops a value n & then n exception specifications & points\nmoves each point at a given size by the amount"); ihadd(0x72,"DELTA exception P3\nPops a value n & then n exception specifications & points\nmoves each point at a given size by the amount"); ihadd(0x24,"DEPTH of stack\nPushes the number of elements on the stack"); ihadd(0x62,"DIVide\nPops two 26.6 numbers, divides them, pushes result"); ihadd(0x20,"DUPlicate top stack element\nPushes the top stack element again"); ihadd(0x59,"End IF\nEnds and IF or IF-ELSE sequence"); ihadd(0x1b,"ELSE clause\nStart of Else clause of preceding IF"); ihadd(0x2d,"END Function definition"); ihadd(0x54,"EQual\nPops two values, tests for equality, pushes result(0/1)"); ihadd(0x57,"EVEN\nPops one value, rounds it and tests if it is even(0/1)"); ihadd(0x2C,"Function DEFinition\nPops a value (n) and starts the nth\nfunction definition"); ihadd(0x4e,"set the auto FLIP boolean to OFF"); ihadd(0x4d,"set the auto FLIP boolean to ON"); ihadd(0x80,"FLIP PoinT\nPops as many points as specified in loop counter\nFlips whether each point is on/off curve"); ihadd(0x82,"FLIP RanGe OFF\nPops two point numbers\nsets all points between to be off curve points"); ihadd(0x81,"FLIP RanGe ON\nPops two point numbers\nsets all points between to be on curve points"); ihadd(0x66,"FLOOR\nPops a value, rounds to lowest int, pushes result"); ihaddr(0x46,0x47,"Get Coordinate[a] projected onto projection vector\n 0=>use current pos\n 1=>use original pos\nPops one point, pushes the coordinate of\nthe point along projection vector"); ihadd(0x88,"GET INFOrmation\nPops information type, pushes result"); ihadd(0x0d,"Get Freedom Vector\nDecomposes freedom vector, pushes its\ntwo coordinates onto stack as 2.14"); ihadd(0x0c,"Get Projection Vector\nDecomposes projection vector, pushes its\ntwo coordinates onto stack as 2.14"); ihadd(0x52,"Greater Than\nPops two values, pushes (0/1) if bottom el > top"); ihadd(0x53,"Greater Than or EQual\nPops two values, pushes (0/1) if bottom el >= top"); ihadd(0x89,"Instruction DEFinition\nPops a value which becomes the opcode\nand begins definition of new instruction"); ihadd(0x58,"IF test\nPops an integer,\nif 0 (false) next instruction is ELSE or EIF\nif non-0 execution continues normally\n(unless there's an ELSE)"); ihadd(0x8e,"INSTRuction execution ConTRoL\nPops a selector and value\nSets a state variable"); ihadd(0x39,"Interpolate Point\nPops as many points as specified in loop counter\nInterpolates each point to preserve original status\nwith respect to RP1 and RP2"); ihadd(0x0f,"moves point to InterSECTion of two lines\nPops start,end start,end points of two lines\nand a point to move. Point is moved to\nintersection"); ihaddr(0x30,0x31,"Interpolate Untouched Points[a]\n 0=> interpolate in y direction\n 1=> x direction"); ihadd(0x1c,"JuMP Relative\nPops offset (in bytes) to move the instruction pointer"); ihadd(0x79,"Jump Relative On False\nPops a boolean and an offset\nChanges instruction pointer by offset bytes\nif boolean is false"); ihadd(0x78,"Jump Relative On True\nPops a boolean and an offset\nChanges instruction pointer by offset bytes\nif boolean is true"); ihadd(0x2a,"LOOP and CALL function\nPops a function number & count\nCalls function count times"); ihadd(0x50,"Less Than\nPops two values, pushes (0/1) if bottom el < top"); ihadd(0x51,"Less Than or EQual\nPops two values, pushes (0/1) if bottom el <= top"); ihadd(0x8b,"MAXimum of top two stack entries\nPops two values, pushes the maximum back"); ihaddr(0x49,0x4a,"Measure Distance[a]\n 0=>distance with current positions\n 1=>distance with original positions\nPops two point numbers, pushes distance between them"); ihaddr(0x2e,0x2f,"Move Direct Absolute Point[a]\n 0=>do not round\n 1=>round\nPops a point number, touches that point\nand perhaps rounds it to the grid along\nthe projection vector. Sets rp0&rp1 to the point"); ihaddr(0xc0,0xdf,"Move Direct Relative Point[abcde]\n a=0=>don't set rp0\n a=1=>set rp0 to p\n b=0=>do not keep distance more than minimum\n b=1=>keep distance at least minimum\n c=0 do not round\n c=1 round\n de=0 => grey distance\n de=1 => black distance\n de=2 => white distance\nPops a point moves it so that it maintains\nits original distance to the rp0. Sets\nrp1 to rp0, rp2 to point, sometimes rp0 to point"); ihaddr(0x3e,0x3f,"Move Indirect Absolute Point[a]\n 0=>do not round, don't use cvt cutin\n 1=>round\nPops a point number & a cvt entry,\ntouches the point and moves it to the coord\nspecified in the cvt (along the projection vector).\nSets rp0&rp1 to the point"); ihadd(0x8c,"Minimum of top two stack entries\nPops two values, pushes the minimum back"); ihadd(0x26,"Move INDEXed element to stack\nPops an index & moves stack\nelement[index] to top of stack\n(removing it from where it was)"); ihaddr(0xe0,0xff,"Move Indirect Relative Point[abcde]\n a=0=>don't set rp0\n a=1=>set rp0 to p\n b=0=>do not keep distance more than minimum\n b=1=>keep distance at least minimum\n c=0 do not round nor use cvt cutin\n c=1 round & use cvt cutin\n de=0 => grey distance\n de=1 => black distance\n de=2 => white distance\nPops a cvt index and a point moves it so that it\nis cvt[index] from rp0. Sets\nrp1 to rp0, rp2 to point, sometimes rp0 to point"); ihadd(0x4b,"Measure Pixels Per EM\nPushs the pixels per em (for current rasterization)"); ihadd(0x4c,"Measure Point Size\nPushes the current point size"); ihaddr(0x3a,0x3b,"Move Stack Indirect Relative Point[a]\n 0=>do not set rp0\n 1=>set rp0 to point\nPops a 26.6 distance and a point\nMoves point so it is distance from rp0"); ihadd(0x63,"MULtiply\nPops two 26.6 numbers, multiplies them, pushes result"); ihadd(0x65,"NEGate\nNegates the top of the stack"); ihadd(0x55,"Not EQual\nPops two values, tests for inequality, pushes result(0/1)"); ihadd(0x5c,"logical NOT\nPops a number, if 0 pushes 1, else pushes 0"); ihadd(0x40,"N PUSH Bytes\nReads an (unsigned) count byte from the\ninstruction stream, then reads and pushes\nthat many unsigned bytes"); ihadd(0x41,"N PUSH Words\nReads an (unsigned) count byte from the\ninstruction stream, then reads and pushes\nthat many signed 2byte words"); ihaddr(0x6c,0x6f,"No ROUNDing of value[ab]\n ab=0 => grey distance\n ab=1 => black distance\n ab=2 => white distance\nPops a coordinate (26.6), changes it (without\nrounding) to compensate for engine effects\npushes it back" ); ihadd(0x56,"ODD\nPops one value, rounds it and tests if it is odd(0/1)"); ihadd(0x5b,"logical OR\nPops two values, ors them, pushes result"); ihadd(0x21,"POP top stack element"); ihaddr(0xb0,0xb7,"PUSH Byte[abc]\n abc is the number-1 of bytes to push\nReads abc+1 unsigned bytes from\nthe instruction stream and pushes them"); ihaddr(0xb8,0xbf,"PUSH Word[abc]\n abc is the number-1 of words to push\nReads abc+1 signed words from\nthe instruction stream and pushes them"); ihadd(0x45,"Read Control Value Table entry\nPops an index to the CVT and\npushes it in 26.6 format"); ihadd(0x7d,"Round Down To Grid\n\nSets round state to the obvious"); ihadd(0x7a,"Round OFF\nSets round state so that no rounding occurs\nbut engine compensation does"); ihadd(0x8a,"ROLL the top three stack elements"); ihaddr(0x68,0x6b,"ROUND value[ab]\n ab=0 => grey distance\n ab=1 => black distance\n ab=2 => white distance\nRounds a coordinate (26.6) at top of stack\nand compensates for engine effects" ); ihadd(0x43,"Read Store\nPops an index into store array\nPushes value at that index"); ihadd(0x3d,"Round To Double Grid\nSets the round state (round to closest .5/int)"); ihadd(0x18,"Round To Grid\nSets the round state"); ihadd(0x19,"Round To Half Grid\nSets the round state (round to closest .5 not int)"); ihadd(0x7c,"Round Up To Grid\nSets the round state"); ihadd(0x77,"Super 45\260 ROUND\nToo complicated. Look it up"); ihadd(0x7e,"Set ANGle Weight\nPops an int, and sets the angle\nweight state variable to it\nObsolete"); ihadd(0x85,"SCAN conversion ConTRoL\nPops a number which sets the\ndropout control mode"); ihadd(0x8d,"SCANTYPE\nPops number which sets which scan\nconversion rules to use"); ihadd(0x48,"Sets Coordinate From Stack using projection & freedom vectors\nPops a coordinate 26.6 and a point\nMoves point to given coordinate"); ihadd(0x1d,"Sets Control Value Table Cut-In\nPops 26.6 from stack, sets cvt cutin"); ihadd(0x5e,"Set Delta Base\nPops value sets delta base"); ihaddr(0x86,0x87,"Set Dual Projection Vector To Line[a]\n 0 => parallel to line\n 1=>orthogonal to line\nPops two points used to establish the line\nSets a second projection vector based on original\npositions of points"); ihadd(0x5F,"Set Delta Shift\nPops a new value for delta shift"); ihadd(0x0b,"Set Freedom Vector From Stack\npops 2 2.14 values (x,y) from stack\nmust be a unit vector"); ihaddr(0x04,0x05,"Set Freedom Vector To Coordinate Axis[a]\n 0=>y axis\n 1=>x axis\n" ); ihaddr(0x08,0x09,"Set Fredom Vector To Line[a]\n 0 => parallel to line\n 1=>orthogonal to line\nPops two points used to establish the line\nSets the freedom vector" ); ihadd(0x0e,"Set Freedom Vector To Projection Vector"); ihaddr(0x34,0x35,"SHift Contour using reference point[a]\n 0=>uses rp2 in zp1\n 1=>uses rp1 in zp0\nPops number of contour to be shifted\nShifts the entire contour by the amount\nreference point was shifted"); ihaddr(0x32,0x33,"SHift Point using reference point[a]\n 0=>uses rp2 in zp1\n 1=>uses rp1 in zp0\nPops as many points as specified by the loop count\nShifts each by the amount the reference\npoint was shifted"); ihadd(0x38,"SHift point by a PIXel amount\nPops an amount (26.6) and as many points\nas the loop counter specifies\neach point is shifted along the FREEDOM vector"); ihaddr(0x36,0x37,"SHift Zone using reference point[a]\n 0=>uses rp2 in zp1\n 1=>uses rp1 in zp0\nPops the zone to be shifted\nShifts all points in zone by the amount\nthe reference point was shifted"); ihadd(0x17,"Set LOOP variable\nPops the new value for the loop counter\nDefaults to 1 after each use"); ihadd(0x1a,"Set Minimum Distance\nPops a 26.6 value from stack to be new minimum distance"); ihadd(0x0a,"Set Projection Vector From Stack\npops 2 2.14 values (x,y) from stack\nmust be a unit vector"); ihaddr(0x02,0x03,"Set Projection Vector To Coordinate Axis[a]\n 0=>y axis\n 1=>x axis\n" ); ihaddr(0x06,0x07,"Set Projection Vector To Line[a]\n 0 => parallel to line\n 1=>orthogonal to line\nPops two points used to establish the line\nSets the projection vector" ); ihadd(0x76,"Super ROUND\nToo complicated. Look it up"); ihadd(0x10,"Set Reference Point 0\nPops a point which becomes the new rp0"); ihadd(0x11,"Set Reference Point 1\nPops a point which becomes the new rp1"); ihadd(0x12,"Set Reference Point 2\nPops a point which becomes the new rp2"); ihadd(0x1f,"Set Single Width\nPops value for single width value (FUnit)"); ihadd(0x1e,"Set Single Width Cut-In\nPops value for single width cut-in value (26.6)"); ihadd(0x61,"SUBtract\nPops two 26.6 fixed numbers from stack\nsubtracts them, pushes result"); ihaddr(0x00,0x01,"Set freedom & projection Vectors To Coordinate Axis[a]\n 0=>both to y axis\n 1=>both to x axis\n" ); ihadd(0x23,"SWAP top two elements on stack"); ihadd(0x13,"Set Zone Pointer 0\nPops the zone number into zp0"); ihadd(0x14,"Set Zone Pointer 1\nPops the zone number into zp1"); ihadd(0x15,"Set Zone Pointer 2\nPops the zone number into zp2"); ihadd(0x16,"Set Zone PointerS\nPops the zone number into zp0,zp1 and zp2"); ihadd(0x29,"UnTouch Point\nPops a point number and marks it untouched"); ihadd(0x70,"Write Control Value Table in Funits\nPops a number(Funits) and a\nCVT index and writes the number to cvt[index]"); ihadd(0x44,"Write Control Value Table in Pixel units\nPops a number(26.6) and a\nCVT index and writes the number to cvt[index]"); ihadd(0x42,"Write Store\nPops a value and an index and writes the value to storage[index]"); } typedef struct instrview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* instrs specials */ int16 mbh; GGadget *mb; struct instrdata instrdata; struct instrinfo instrinfo; } InstrView; void instr_typify(struct instrinfo *instrinfo) { int i, len = instrinfo->instrdata->instr_cnt, cnt, j, lh; uint8 *instrs = instrinfo->instrdata->instrs; uint8 *bts; if ( instrinfo->instrdata->bts==NULL ) instrinfo->instrdata->bts = galloc(len); bts = instrinfo->instrdata->bts; for ( i=lh=0; ilheight = lh; } #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static int instr_processdata(TableView *tv) { /*InstrView *iv = (InstrView *) tv;*/ /* Do changes!!! */ return( true ); } static int instr_close(TableView *tv) { if ( instr_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs instrfuncs = { instr_close, instr_processdata }; static void instr_resize(InstrView *iv,GEvent *event) { GRect pos; int lh; struct instrinfo *ii = &iv->instrinfo; /* Multiple of the number of lines we've got */ if ( (event->u.resize.size.height-iv->mbh-4)%ii->fh!=0 ) { int lc = (event->u.resize.size.height-iv->mbh+ii->fh/2)/ii->fh; if ( lc<=0 ) lc = 1; GDrawResize(iv->gw, event->u.resize.size.width,lc*ii->fh+iv->mbh+4); return; } pos.width = GDrawPointsToPixels(iv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-iv->mbh; pos.x = event->u.resize.size.width-pos.width; pos.y = iv->mbh; GGadgetResize(ii->vsb,pos.width,pos.height); GGadgetMove(ii->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(ii->v,pos.width,pos.height); ii->vheight = pos.height; ii->vwidth = pos.width; lh = ii->lheight; GScrollBarSetBounds(ii->vsb,0,lh,ii->vheight/ii->fh); if ( ii->lpos + ii->vheight/ii->fh > lh ) ii->lpos = lh-ii->vheight/ii->fh; if ( ii->lpos<0 ) ii->lpos = 0; GScrollBarSetPos(ii->vsb,ii->lpos); } void instr_expose(struct instrinfo *ii,GWindow pixmap,GRect *rect) { int low, high; int i,x,y; char loc[8], ins[8], val[8]; unichar_t uloc[8], uins[8], uname[30]; int addr_end, num_end; static unichar_t nums[] = { '0', '0', '0', '0', '0', '0', '\0' }; GDrawSetFont(pixmap,ii->gfont); addr_end = 0; if ( ii->showaddr ) addr_end = GDrawGetTextWidth(pixmap,nums,4,NULL)+EDGE_SPACING; num_end = addr_end; if ( ii->showhex ) num_end = addr_end + GDrawGetTextWidth(pixmap,nums,5,NULL)+4; low = ( (rect->y-EDGE_SPACING)/ii->fh ) * ii->fh +EDGE_SPACING; high = ( (rect->y+rect->height+ii->fh-1-EDGE_SPACING)/ii->fh ) * ii->fh +EDGE_SPACING; if ( ii->isel_pos!=-1 ) { GRect r; r.x = 0; r.width = ii->vwidth; r.y = (ii->isel_pos-ii->lpos)*ii->fh+EDGE_SPACING; r.height = ii->fh; GDrawFillRect(pixmap,&r,0xffff00); } if ( ii->showaddr ) GDrawDrawLine(pixmap,addr_end,rect->y,addr_end,rect->y+rect->height,0x000000); if ( ii->showhex ) GDrawDrawLine(pixmap,num_end,rect->y,num_end,rect->y+rect->height,0x000000); for ( i=0, y=EDGE_SPACING-ii->lpos*ii->fh; yinstrdata->instr_cnt; ++i ) { if ( ii->instrdata->bts[i]==bt_wordhi ) ++i; y += ii->fh; } if ( y<=high && ii->instrdata->instr_cnt==0 && i==0 ) { if ( ii->instrdata->in_composit ) { uc_strcpy(uname,""); GDrawDrawText(pixmap,num_end+EDGE_SPACING,y+ii->as,uname,-1,NULL,0xff0000); y += ii->fh; } uc_strcpy(uname,""); GDrawDrawText(pixmap,num_end+EDGE_SPACING,y+ii->as,uname,-1,NULL,0xff0000); } else for ( ; y<=high && iinstrdata->instr_cnt; ++i ) { sprintf( loc, "%d", i ); uc_strcpy(uloc,loc); if ( ii->instrdata->bts[i]==bt_wordhi ) { sprintf( ins, " %02x%02x", ii->instrdata->instrs[i], ii->instrdata->instrs[i+1]); uc_strcpy(uins,ins); sprintf( val, " %d", (short) ((ii->instrdata->instrs[i]<<8) | ii->instrdata->instrs[i+1]) ); uc_strcpy(uname,val); ++i; } else if ( ii->instrdata->bts[i]==bt_cnt || ii->instrdata->bts[i]==bt_byte ) { sprintf( ins, " %02x", ii->instrdata->instrs[i] ); uc_strcpy(uins,ins); sprintf( val, " %d", ii->instrdata->instrs[i]); uc_strcpy(uname,val); } else { sprintf( ins, "%02x", ii->instrdata->instrs[i] ); uc_strcpy(uins,ins); uc_strcpy(uname, instrs[ii->instrdata->instrs[i]]); } if ( ii->showaddr ) { x = addr_end - EDGE_SPACING - GDrawGetTextWidth(pixmap,uloc,-1,NULL); GDrawDrawText(pixmap,x,y+ii->as,uloc,-1,NULL,0x000000); } x = addr_end + EDGE_SPACING; if ( ii->showhex ) GDrawDrawText(pixmap,x,y+ii->as,uins,-1,NULL,0x000000); GDrawDrawText(pixmap,num_end+EDGE_SPACING,y+ii->as,uname,-1,NULL,0x000000); y += ii->fh; } } void instr_mousedown(struct instrinfo *ii,int pos) { int i; pos = (pos-2)/ii->fh + ii->lpos; if ( pos>=ii->lheight ) pos = -1; if ( i!=ii->isel_pos ) { ii->isel_pos=pos; GDrawRequestExpose(ii->v,NULL,false); if ( ii->selection_callback!=NULL ) (ii->selection_callback)(ii); } } void instr_mousemove(struct instrinfo *ii,int pos) { int i,y; static unichar_t buffer[1025]; const unichar_t *msg; if ( ii->mousedown ) { instr_mousedown(ii,y); return; } pos = ((pos-2)/ii->fh) * ii->fh + 2; for ( i=0, y=2-ii->lpos*ii->fh; yinstrdata->instr_cnt; ++i ) { if ( ii->instrdata->bts[i]==bt_wordhi ) ++i; y += ii->fh; } switch ( ii->instrdata->bts[i] ) { case bt_wordhi: case bt_wordlo: uc_strcpy(buffer,"A short to be pushed on the stack"); msg = buffer; break; case bt_cnt: uc_strcpy(buffer,"A count specifying how many bytes/shorts\nshould be pushed on the stack"); msg = buffer; break; case bt_byte: uc_strcpy(buffer,"An unsigned byte to be pushed on the stack"); msg = buffer; break; case bt_instr: msg = instrhelppopup[ii->instrdata->instrs[i]]; #if TT_CONFIG_OPTION_BYTECODE_DEBUG if ( ii->args!=NULL ) { char temp[80]; temp[0]='\0'; if ( ii->args[i].used&ttf_sp0 ) { sprintf( temp, "Pop: %d", ii->args[i].spvals[0] ); if ( ii->args[i].used&ttf_sp1 ) sprintf( temp+strlen(temp), ", Pop: %d", ii->args[i].spvals[1] ); } if ( ii->args[i].used&ttf_rp0 ) sprintf( temp+strlen(temp), ", rp0: %d", ii->args[i].rp0val ); if ( ii->args[i].used&ttf_rp1 ) sprintf( temp+strlen(temp), ", rp1: %d", ii->args[i].rp1val ); if ( ii->args[i].used&ttf_rp2 ) sprintf( temp+strlen(temp), ", rp2: %d", ii->args[i].rp2val ); if ( temp[0]!='\0' ) { strcat(temp,"\n"); uc_strcpy(buffer,temp); if ( msg!=NULL ) u_strcat(buffer,msg); else uc_strcat(buffer,"???"); msg = buffer; } } #endif if ( msg==NULL ) { uc_strcpy(buffer,"???"); msg = buffer; } break; default: uc_strcpy(buffer,"???"); msg = buffer; break; } GGadgetPreparePopup(GDrawGetParentWindow(ii->v),msg); } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } void instr_scroll(struct instrinfo *ii,struct sbevent *sb) { int newpos = ii->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= ii->vheight/ii->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += ii->vheight/ii->fh; break; case et_sb_bottom: newpos = ii->lheight-ii->vheight/ii->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>ii->lheight-ii->vheight/ii->fh ) newpos = ii->lheight-ii->vheight/ii->fh; if ( newpos<0 ) newpos =0; if ( newpos!=ii->lpos ) { GRect r; int diff = newpos-ii->lpos; ii->lpos = newpos; GScrollBarSetPos(ii->vsb,ii->lpos); r.x=0; r.y = EDGE_SPACING; r.width=ii->vwidth; r.height=ii->vheight-2*EDGE_SPACING; GDrawScroll(ii->v,&r,0,diff*ii->fh); } } static void InstrViewFree(InstrView *iv) { iv->table->tv = NULL; free(iv->instrdata.bts); free(iv); } int IIChar(struct instrinfo *ii,GEvent *event) { int pos = ii->isel_pos; if ( event->u.chr.keysym == GK_Up || event->u.chr.keysym == GK_KP_Up ) --pos; else if ( event->u.chr.keysym == GK_Down || event->u.chr.keysym == GK_KP_Down ) ++pos; else if ( event->u.chr.keysym == GK_Home || event->u.chr.keysym == GK_KP_Home || event->u.chr.keysym == GK_Begin || event->u.chr.keysym == GK_KP_Begin ) pos = 0; else if ( event->u.chr.keysym == GK_End || event->u.chr.keysym == GK_KP_End ) { pos = ii->lheight-1; } else return( false ); if ( pos==-2 ) pos = -1; if ( pos!=ii->isel_pos ) { ii->isel_pos = pos; if ( pos!=-1 && (poslpos || pos>=ii->lpos+ii->vheight/ii->fh )) { ii->lpos = pos-(ii->vheight/(3*ii->fh)); if ( ii->lpos>=ii->lheight-ii->vheight/ii->fh ) ii->lpos = ii->lheight-ii->vheight/ii->fh-1; if ( ii->lpos<0 ) ii->lpos = 0; GScrollBarSetPos(ii->vsb,ii->lpos); } GDrawRequestExpose(ii->v,NULL,false); if ( ii->selection_callback!=NULL ) (ii->selection_callback)(ii); } return( true ); } static int iv_v_e_h(GWindow gw, GEvent *event) { InstrView *iv = (InstrView *) GDrawGetUserData(gw); struct instrinfo *ii = &iv->instrinfo; switch ( event->type ) { case et_expose: instr_expose(ii,gw,&event->u.expose.rect); break; case et_char: if ( IIChar(ii,event)) /* All Done */; else if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(iv->table->name); break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) instr_mousemove(ii,event->u.mouse.y); else if ( event->type==et_mousedown ) { instr_mousedown(ii,event->u.mouse.y); if ( event->u.mouse.clicks==2 ) InstrModCreate(ii); } else { instr_mousemove(ii,event->u.mouse.y); ii->mousedown = false; } break; case et_timer: break; case et_focus: break; } return( true ); } static int iv_e_h(GWindow gw, GEvent *event) { InstrView *iv = (InstrView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: break; case et_resize: instr_resize(iv,event); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(iv->table->name); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: instr_scroll(&iv->instrinfo,&event->u.control.u.sb); break; } break; case et_close: instr_close((TableView *) iv); break; case et_destroy: InstrViewFree(iv); break; } return( true ); } static void IVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { InstrView *iv = (InstrView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) instr_close, iv); } static void IVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((InstrView *) GDrawGetUserData(gw))->owner; _TFVMenuSaveAs(tfv); } static void IVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((InstrView *) GDrawGetUserData(gw))->owner; _TFVMenuSave(tfv); } static void IVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((InstrView *) GDrawGetUserData(gw))->owner; _TFVMenuRevert(tfv); } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, IVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, IVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, IVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, IVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; /* fpgm, prep */ void instrCreateEditor(Table *tab,TtfView *tfv) { InstrView *iv = gcalloc(1,sizeof(InstrView)); unichar_t title[60]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld, lh; GGadgetData gd; GGadget *sb; instrhelpsetup(); iv->table = tab; iv->virtuals = &instrfuncs; iv->owner = tfv; iv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) iv; TableFillup(tab); iv->instrdata.instrs = tab->data; iv->instrdata.instr_cnt = tab->newlen; iv->instrinfo.instrdata = &iv->instrdata; iv->instrinfo.showhex = iv->instrinfo.showaddr = true; instr_typify(&iv->instrinfo); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, iv->font->fontname, sizeof(title)/sizeof(title[0])-6); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,iv_e_h,iv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; iv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(iv->mb,&gsize); iv->mbh = gsize.height; gd.pos.y = iv->mbh; gd.pos.height = pos.height-iv->mbh; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; iv->instrinfo.vsb = sb = GScrollBarCreate(gw,&gd,iv); wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = iv->mbh; pos.width = gd.pos.x; pos.height -= iv->mbh; iv->instrinfo.v = GWidgetCreateSubWindow(gw,&pos,iv_v_e_h,iv,&wattrs); GDrawSetVisible(iv->instrinfo.v,true); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; iv->instrinfo.gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(iv->instrinfo.v,iv->instrinfo.gfont); GDrawFontMetrics(iv->instrinfo.gfont,&as,&ds,&ld); iv->instrinfo.as = as+1; iv->instrinfo.fh = iv->instrinfo.as+ds; iv->instrinfo.isel_pos = -1; lh = iv->instrinfo.lheight; if ( lh>40 ) lh = 40; if ( lh<4 ) lh = 4; GDrawResize(iv->gw,pos.width+gd.pos.width,iv->mbh+lh*iv->instrinfo.fh+4); GDrawSetVisible(gw,true); } mensis-080507/LICENSE0100664000076500007650000000276307742401532012345 0ustar gwwgwwPfaEdit is copyright (C) 2000,2001,2002,2003 by George Williams Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The configure script is subject to the GNU public license. See the file COPYING. mensis-080507/ltmain.sh0100664000076500007650000042412007742401532013153 0ustar gwwgww# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case $nonopt in *cc | *++ | gcc* | *-gcc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= prev= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do case $prev in "") ;; xcompiler) # Aesthetically quote the previous argument. prev= lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac # Accept any command-line options. case $arg in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; -Xcompiler) prev=xcompiler continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac case $user_target in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $lastarg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case $user_target in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" else # Don't build PIC code command="$base_compile $srcfile" fi if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if (test -z "$pic_flag" || test "$pic_mode" != default) && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $srcfile" else # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 ;; # libtool link mode link | relink) modename="$modename: link" case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args="$nonopt" compile_command="$nonopt" finalize_command="$nonopt" compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= # We need to know -static, to get the right output filenames. for arg do case $arg in -all-static | -static) if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n $prev prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit 1 fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.lo | *.$objext) # A library or standard object. if test "$prev" = dlfiles; then # This file was specified with -dlopen. if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $arg" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= else case $arg in *.lo) libobjs="$libobjs $arg" ;; *) objs="$objs $arg" ;; esac fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit 1 ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode" = prog; then # Determine which files to process case $pass in dlopen) libs="$dlfiles" save_deplibs="$deplibs" # Collect dlpreopened libraries deplibs= ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi for deplib in $libs; do lib= found=no case $deplib in -l*) if test "$linkmode" = oldlib && test "$linkmode" = obj; then $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do # Search the libtool library lib="$searchdir/lib${name}.la" if test -f "$lib"; then found=yes break fi done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then echo echo "*** Warning: This library needs some functionality provided by $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." else echo echo "*** Warning: Linking the shared library $output against the" echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit 1 fi # Check to see that this really is a libtool archive. if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then # Add dl[pre]opened files of deplib test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit 1 fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit 1 fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. dlprefiles="$dlprefiles $lib" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit 1 fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # Link against this shared library if test "$linkmode,$pass" = "prog,link" || { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac if test "$linkmode" = prog; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi fi fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`echo $soroot | sed -e 's/^.*\///'` newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$extract_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$old_archive_from_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then # Try looking first in the location we're being installed to. add_dir= if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="-L$inst_prefix_dir$libdir" ;; esac fi add_dir="$add_dir -L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" else # We cannot seem to hardcode it, guess we'll fake it. # Try looking first in the location we're being installed to. add_dir= if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="-L$inst_prefix_dir$libdir" ;; esac fi add_dir="$add_dir -L$libdir" add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi # Try to link the static library # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo echo "*** Warning: This library needs some functionality provided by $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** Therefore, libtool will create a static module, that should work " echo "*** as long as the dlopening application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="-L$absdir/$objdir" else eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="-L$absdir" fi ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then test "$pass" != scan && dependency_libs="$newdependency_libs" if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do case $deplib in -L*) new_libs="$deplib $new_libs" ;; *) case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi if test "$pass" = "conv" && { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then libs="$deplibs" # reset libs deplibs= fi done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit 1 else echo echo "*** Warning: Linking the shared library $output against the non-libtool" echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case $current in [0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $revision in [0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $age in [0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix) major=`expr $current - $age + 1` verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring="" ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs. $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'` deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'` dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd*) # Do not include libc due to us having libc/libc_r. ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | sed 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do if eval echo \"$potent_lib\" 2>/dev/null \ | sed 10q \ | egrep "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi test -z "$dlname" && dlname=$soname lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit 0 fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; prog) case $host in *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit 0 fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe ;; *) exeext= ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin* | *-*-pw32*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit 1 fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit 1 fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then notinst_deplibs= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` if test $? = 0 ; then : else tmpdir="$tmpdir/libtool-$$" fi if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in /usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`echo $destfile | sed -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $0 --finish$current_libdirs' else exit 0 fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi rmdirs= for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$objdir" else objdir="$dir/$objdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi ;; *) # Do a test to see if this is a libtool program. if test "$mode" = clean && (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$file rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit 1 fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: mensis-080507/Makefile.dynamic.in0100664000076500007650000000370611010402316015006 0ustar gwwgwwprefix = @prefix@ exec_prefix = @exec_prefix@ sharedir = @prefix@/share/mensis srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. VPATH = @srcdir@ bindir = @bindir@ libdir = @libdir@ LIBTOOL = @LIBTOOL@ CC = @CC@ INSTALL = @INSTALL@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o mensis_OBJECTS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point CFLAGS = @CFLAGS@ $(WFLAGS) $(X_CFLAGS) @DEFS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = -L../libs -rpath $(libdir) $(X_LIBS) -lgdraw -lgutils -lgunicode \ $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS) @LIBS@ -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(LIBTOOL) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(LIBTOOL) $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all install_libs # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/Makefile.in0100664000076500007650000000364411010402316013364 0ustar gwwgwwprefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ mandir = @mandir@ includedir = @includedir@ sharedir = $(prefix)/share/mensis srcdir = @srcdir@ top_builddir = . CC = @CC@ INSTALL = @INSTALL@ LIBTOOL = @LIBTOOL@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ @X_11LIB@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o mensis_OBJECTS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o scripting.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point CFLAGS = @CFLAGS@ $(WFLAGS) $(X_CFLAGS) @DEFS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = -rpath $(libdir) $(X_LIBS) @GLIBS@ \ $(X_PRE_LIBS) $(X_EXTRA_LIBS) @LIBS@ -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(LIBTOOL) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(LIBTOOL) $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/Makefile.in~0100664000076500007650000000362711010402316013563 0ustar gwwgwwprefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ mandir = @mandir@ includedir = @includedir@ sharedir = $(prefix)/share/mensis srcdir = @srcdir@ top_builddir = . CC = @CC@ INSTALL = @INSTALL@ LIBTOOL = @LIBTOOL@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ @X_11LIB@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o mensis_OBJECTS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o scripting.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point CFLAGS = @CFLAGS@ -I../inc $(WFLAGS) $(X_CFLAGS) @DEFS@ LDFLAGS = @LDFLAGS@ LIBS = -rpath $(libdir) $(X_LIBS) @GLIBS@ \ $(X_PRE_LIBS) $(X_EXTRA_LIBS) @LIBS@ -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(LIBTOOL) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(LIBTOOL) $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/Makefile.static.in0100664000076500007650000000336011010402316014645 0ustar gwwgwwCC = @CC@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o OBJS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point -prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses CFLAGS = @CFLAGS@ $(WFLAGS) $(X_CFLAGS) @DEFS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = -L../libs $(X_LIBS) -lgdraw -lgutils -lgunicode \ $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS) @LIBS@ -L/usr/lib -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all install_libs # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/makenomenh.c0100664000076500007650000004711211010403077013610 0ustar gwwgww#include #include #include #include #include #include #include #include #include #define e_hexjis 100 static char *istandard[] = { "buttonsize", "ScaleFactor", NULL }; static char *standard[] = { "Language", "OK", "Cancel", "Open", "Save", "Filter", "New", "Replace", "Fileexists", "Fileexistspre", "Fileexistspost", "Createdir", "Dirname", "Couldntcreatedir", "SelectAll", "None", NULL }; static unichar_t **names, **inames; static char *hadmn; static int nlen=__STR_LastStd+1000, npos=__STR_LastStd+1; static int ilen=__NUM_LastStd+1, ipos=__NUM_LastStd+1; static int isstandard(char *name) { int i; for ( i=0; standard[i]!=NULL; ++i ) if ( strcasecmp(standard[i],name)==0 ) return( 1 ); return( 0 ); } static int isistandard(char *name) { int i; for ( i=0; istandard[i]!=NULL; ++i ) if ( strcasecmp(istandard[i],name)==0 ) return( 1 ); return( 0 ); } static int lookup(char *name) { int i; for ( i=0; i=ilen ) { ilen += 1000; inames = grealloc(inames,ilen*sizeof(unichar_t*)); } inames[ipos++] = uc_copy(buffer+off); } static int makenomenh() { char buffer[1025]; FILE *in, *out; char *pt; int off, i; int ismn; names = malloc(nlen*sizeof(unichar_t *)); hadmn = calloc(nlen,sizeof(char)); for ( i=0; standard[i]!=NULL; ++i ) names[i] = uc_copy(standard[i]); inames = malloc(ilen*sizeof(unichar_t *)); for ( i=0; istandard[i]!=NULL; ++i ) inames[i] = uc_copy(istandard[i]); in = fopen("nomen-en.c","r"); if ( in==NULL ) { fprintf(stderr, "Missing required input file: nomen-en.c\n" ); exit( 1 ); } out = fopen("nomen.h","w"); fprintf( out, "#ifndef _NOMEN_H\n" ); fprintf( out, "#define _NOMEN_H\n" ); fprintf( out, "#include \n" ); fprintf( out, "#include \n" ); fprintf( out, "#include \n\n" ); while( fgets(buffer,sizeof(buffer),in)!=NULL ) { if ( (buffer[0]=='/' && buffer[1]=='*') || buffer[0]=='\n' ) { fprintf( out, "%s", buffer ); continue; } if ( strncmp(buffer,"static ",7)!=0 ) continue; off = 7; if (strncmp(buffer+off,"const ",6)==0 ) off += 6; if ( strncmp(buffer+off,"int num_",8)==0 ) { handleint(out,buffer,off+8); continue; } if ( strncmp(buffer+off,"unichar_t ",10)==0 ) off += 10; else if ( strncmp(buffer+off,"char ",5)==0 ) off += 5; else continue; if ( buffer[off]=='*' ) ++off; pt = buffer+off; ismn = 0; if ( strncmp(pt,"mnemonic_",9)==0 ) { ismn = 1; off += 9; } else if ( strncmp(pt,"str_",4)==0 ) off += 4; if ( buffer[off]=='_' ) ++off; for ( pt = buffer+off; isalnum(*pt) || *pt=='_'; ++pt ); *pt ='\0'; if ( buffer[off]=='\0' ) continue; if ( ismn ) { int index = lookup(buffer+off); if ( index==-1 ) fprintf( stderr, "mnemonic for %s when there's no string for it. Possibly mnemonic comes first\n in file, should follow string.\n", buffer+off ); else hadmn[index] = 1; continue; } if ( isstandard(buffer+off)) continue; if ( islower(buffer[off])) buffer[off] = toupper(buffer[off]); fprintf( out, "#define _STR_%s\t%d\n", buffer+off, npos ); if ( npos>=nlen ) { nlen += 1000; names = grealloc(names,nlen*sizeof(unichar_t*)); hadmn = grealloc(hadmn,nlen); for ( i=nlen-1000; i='a' && *bpt<='f') || (*bpt>='A' && *bpt<='F')) && bpt-start<3 ) { val <<= 4; if ( isdigit(*bpt)) val |= *bpt++-'0'; else if ( *bpt>='a' && *bpt<='f' ) val |= (*bpt++-'a'+10); else val |= (*bpt++-'A'+10); } --bpt; } } *buffer = (char *) bpt+1; return( val ); } static int twocharval(char **buffer,int enc) { /* Currently only support a few */ int ch1, ch2; if ( enc==e_wansung ) { ch1 = charval(buffer); if ( ch1<0xa1 ) return( ch1 ); ch1 -= 0xa1; ch2 = charval(buffer)-0xa1; ch1 = ch1*94 + ch2; ch1 = unicode_from_ksc5601[ch1]; return( ch1 ); } else if ( enc==e_big5 ) { ch1 = charval(buffer); if ( ch1<0xa1 ) return( ch1 ); ch2 = charval(buffer); ch1 = (ch1<<8) + ch2; ch1 = unicode_from_big5[ch1-0xa100]; return( ch1 ); } else if ( enc==e_johab ) { ch1 = charval(buffer); if ( ch1<0xa1 ) return( ch1 ); ch2 = charval(buffer); ch1 = (ch1<<8) + ch2; ch1 = unicode_from_johab[ch1-0x8400]; return( ch1 ); } else if ( enc==e_sjis ) { ch1 = charval(buffer); if ( ch1<0x80 ) return( ch1 ); else if ( ch1>=161 && ch1<=223 ) /* Katakana */ return( unicode_from_jis201[ch1]); ch2 = charval(buffer); if ( ch1 >= 129 && ch1<= 159 ) ch1 -= 112; else ch1 -= 176; ch1 <<= 1; if ( ch2>=159 ) ch2-= 126; else if ( ch2>127 ) { --ch1; ch2 -= 32; } else { --ch1; ch2 -= 31; } return( unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]); } else { fprintf( stderr, "Don't support this encoding\n" ); exit( 1 ); } return( -1 ); } static unichar_t *slurpchars(char *filename, char *name,int enc,char *buffer) { unichar_t space[1024], *pt; const unichar_t *table = unicode_from_alphabets[enc==e_utf8?e_iso8859_1:enc]; while ( isspace( *buffer )) ++buffer; if ( *buffer=='{' ) ++ buffer; while ( isspace( *buffer )) ++buffer; if ( *buffer=='\'' ) { ++buffer; space[0] = table[charval(&buffer)]; space[1] = '\0'; } else if ( *buffer=='"' ) { ++buffer; pt = space; if ( enc==e_utf8 ) { while ( *buffer!='"' && *buffer!= '\0' ) { int ch1, ch2; ch1 = charval(&buffer); if ( ch1<=0x7f ) *pt++ = ch1; else if ( (ch1&0xf0)==0xc0 ) { *pt++ = (ch1&0x1f)<<6 | (charval(&buffer)&0x3f); } else { ch2 = charval(&buffer); *pt++ = (ch1&0xf)<<6 | ((ch2&0x3f)<<6) | (charval(&buffer)&0x3f); } } } else { while ( *buffer!='"' && *buffer!= '\0' ) { *pt++ = table[charval(&buffer)]; } } *pt = 0; } else { fprintf( stderr, "Could not parse initializer for %s in %s\n", name, filename ); space[0] = 0; } return( u_copy(space)); } static unichar_t *slurp2bytes(char *filename, char *name,int enc,char *buffer) { unichar_t space[1024], *pt; while ( isspace( *buffer )) ++buffer; if ( *buffer=='{' ) ++ buffer; while ( isspace( *buffer )) ++buffer; if ( *buffer=='\'' ) { ++buffer; space[0] = twocharval(&buffer,enc); space[1] = '\0'; } else if ( *buffer=='"' ) { ++buffer; pt = space; while ( *buffer!='"' && *buffer!= '\0' ) { *pt++ = twocharval(&buffer,enc); } *pt = 0; } else { fprintf( stderr, "Could not parse initializer for %s in %s\n", name, filename ); space[0] = 0; } return( u_copy(space)); } static unichar_t *slurpunichars(char *filename, char *name,char *buffer) { unichar_t space[1024], *pt; char *end; while ( isspace( *buffer )) ++buffer; if ( *buffer=='{' ) ++ buffer; pt = space; while ( 1 ) { while ( isspace( *buffer ) || *buffer==',' ) ++buffer; if ( *buffer=='}' || *buffer==';' || *buffer=='\0' ) break; if ( *buffer=='\'' ) { ++buffer; *pt++ = charval(&buffer); while ( *buffer!='\'' && *buffer!='\0' ) ++buffer; if ( *buffer=='\'' ) ++buffer; } else { *pt++ = strtol(buffer,&end,0); if ( buffer==end ) { fprintf( stderr, "Could not parse initializer for %s in %s\n", name, filename ); return( NULL ); } buffer = end; } } *pt = '\0'; return( u_copy(space)); } static void handleint2(char *filename,int *ivalues,char *buffer,int off) { char *pt, *end; int ch, index; if ( buffer[off]=='_' ) ++off; for ( pt = buffer+off; isalnum(*pt) || *pt=='_'; ++pt ); ch = *pt; *pt ='\0'; if ( buffer[off]=='\0' ) return; index = ilookup(buffer+off); if ( index==-1 ) { fprintf( stderr, "Item num_%s does not exist in the base set of integers, but does in %s\n", buffer+off, filename ); return; } *pt = ch; while ( isspace( *pt )) ++pt; if ( *pt=='=' ) ++pt; ivalues[index] = strtol(pt,&end,0); if ( end==buffer ) fprintf( stderr, "Bad numeric value for num_%s in %s\n", buffer+off, filename ); } static int getencoding(char *str) { static struct encdata { int val; char *name; } encdata[] = { { e_iso8859_1, "e_iso8859_1" }, { e_iso8859_1, "iso8859_1" }, { e_iso8859_1, "isolatin1" }, { e_iso8859_1, "latin1" }, { e_iso8859_2, "e_iso8859_2" }, { e_iso8859_2, "latin2" }, { e_iso8859_3, "e_iso8859_3" }, { e_iso8859_3, "latin3" }, { e_iso8859_4, "e_iso8859_4" }, { e_iso8859_4, "latin4" }, { e_iso8859_5, "e_iso8859_5" }, { e_iso8859_5, "isocyrillic" }, { e_iso8859_6, "e_iso8859_6" }, { e_iso8859_6, "isoarabic" }, { e_iso8859_7, "e_iso8859_7" }, { e_iso8859_7, "isogreek" }, { e_iso8859_8, "e_iso8859_8" }, { e_iso8859_8, "isohebrew" }, { e_iso8859_9, "e_iso8859_9" }, { e_iso8859_9, "latin5" }, { e_iso8859_10, "e_iso8859_10" }, { e_iso8859_10, "latin6" }, { e_iso8859_13, "e_iso8859_13" }, { e_iso8859_13, "latin7" }, { e_iso8859_14, "e_iso8859_14" }, { e_iso8859_14, "latin8" }, { e_iso8859_15, "e_iso8859_15" }, { e_iso8859_15, "latin0" }, { e_iso8859_15, "latin9" }, { e_koi8_r, "e_koi8_r" }, { e_jis201, "e_jis201" }, { e_win, "e_win" }, { e_mac, "e_mac" }, { e_utf8, "e_utf8" }, { e_wansung, "e_wansung" }, { e_big5, "e_big5" }, { e_johab, "e_johab" }, { e_sjis, "e_sjis" }, { e_hexjis, "e_hexjis" }, { 0, NULL}}; int i; char *pt; while ( isspace(*str)) ++str; for ( pt=str; isalnum(*pt) || *pt=='_'; ++pt ); *pt = '\0'; for ( i=0; encdata[i].name!=NULL; ++i ) if ( strmatch(encdata[i].name,str)==0 ) return( encdata[i].val ); return( -1 ); } static void putshort(FILE *file,int sh) { putc((sh>>8)&0xff,file); putc(sh&0xff,file); } static void putint(FILE *file,int sh) { putc((sh>>24)&0xff,file); putc((sh>>16)&0xff,file); putc((sh>>8)&0xff,file); putc(sh&0xff,file); } static void ProcessNames(char *filename,char *lc,char *uc) { FILE *namef, *out; unichar_t **values, *mn, *init; int *ivalues; char buffer[1025]; char *pt, *bpt, *npt; int off, i, j; int isuni, ismn, index, ch; int enc=0; int missing; values = calloc(npos+1,sizeof(unichar_t *)); mn = calloc(npos,sizeof(unichar_t)); ivalues = malloc((ipos+1)*sizeof(int)); for ( i=0; i=e_first2byte ) init = slurp2bytes(filename,buffer,enc,pt); else init = slurpchars(filename,buffer,enc,pt); if ( init==NULL ) continue; if ( ismn ) { mn[index] = init[0]; if ( init[1]!='\0' ) fprintf( stderr, "Too many initializers for %s in %s\n", buffer+off, filename ); free(init); } else values[index] = init; } fclose(namef); if ( values[0]==NULL ) fprintf( stderr, "No language entry in %s\n", filename ); for ( i=0; i=32 && values[i][j]!='\\' && values[i][j]!='\'' ) fprintf( out, "'%c', ", values[i][j]); else fprintf( out, "0x%x, ", values[i][j]); fprintf( out, " 0 };\n" ); } } fprintf( out, "\nstatic const unichar_t *%s_ui_strings[] = {\n", lc ); for ( i=0; i=32 && mn[i]!='\\' && mn[i]!='\'' ) fprintf( out, "'%c', ", mn[i]); else fprintf( out, "0x%04x, ", mn[i]); } fprintf( out, "\n\t0};\n\n" ); fprintf( out, "static const int %s_ui_num[] = {", lc ); for ( i=0; i=32 && values[i][j]<127) || (values[i][j]>=0xa0 && values[i][j]<256)) && values[i][j]!='"' && values[i][j]!='\\' ) putc(values[i][j],out); else fprintf(out,"\\%03o", values[i][j]); } fprintf( out, "\";\n" ); } else { fprintf( out, "static unichar_t str_%s[] = { ", cu_copy(names[i])); for ( j=0; values[i][j]!=0; ++j ) { if (( (values[i][j]>=32 && values[i][j]<127) || (values[i][j]>=0xa0 && values[i][j]<256)) && values[i][j]!='"' && values[i][j]!='\\' ) fprintf(out, "'%c', ", values[i][j]); else fprintf(out,"0x%x, ", values[i][j]); } fprintf( out, " 0 };\n" ); } if ( mn[i]!=0 ) { fprintf( out, "static unichar_t mnemonic_%s[] = ", cu_copy(names[i])); if (( (mn[i]>=32 && mn[i]<127) || (mn[i]>=0xa0 && mn[i]<256)) && mn[i]!='"' && mn[i]!='\\' ) fprintf(out, "'%c';\n", mn[i]); else fprintf(out,"0x%x;\n", mn[i]); } } putc('\n',out); for ( i=0; i1 ) lc = argv[1]; if ( argc>2 ) uc = argv[2]; if ( makenomenh()) return( 1 ); /* read all nomen-??*.c files in the current directory */ here = opendir("."); if ( here==NULL ) return( 1 ); while ( (file = readdir(here))!=NULL ) { if ( strncmp(file->d_name,"nomen-",6)!=0 ) continue; len = strlen(file->d_name); if ( lend_name+len-2,".c")!=0 ) continue; ProcessNames(file->d_name,lc,uc); } closedir(here); return( 0 ); } mensis-080507/maxp.c0100664000076500007650000005045511010406101012426 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include extern struct lconv localeinfo; #define CID_Version 1000 #define CID_Glyphs 1001 #define CID_Points 1002 #define CID_Contours 1003 #define CID_CPoints 1004 #define CID_CContours 1005 #define CID_Zones 1006 #define CID_TPoints 1007 #define CID_Storage 1008 #define CID_FDefs 1009 #define CID_IDefs 1010 #define CID_SEl 1011 #define CID_SOI 1012 #define CID_CEl 1013 #define CID_CDepth 1014 static unichar_t one[] = { '1', '\0' }; static unichar_t pointfive[] = { '.', '5', '\0' }; static GTextInfo maxpversions[] = { { (unichar_t *) one, NULL, 0, 0, (void *) 0x10000}, { (unichar_t *) pointfive, NULL, 0, 0, (void *) 0x5000}, { NULL }}; typedef struct maxpview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* maxp specials */ } MaxpView; static int maxp_processdata(TableView *tv) { int err = false; real version; int gc, points, contours,cpoints,ccontours,zones,tpoints,store,fdefs,idefs, sel,sinstrs,cinstrs,cdepth; uint8 *data; int len; static int buts[] = { _STR_Yes, _STR_Cancel, 0 }; version = GetRealR(tv->gw,CID_Version,_STR_Version,&err); gc = GetIntR(tv->gw,CID_Glyphs,_STR_Glyphs,&err); if ( gc!=tv->font->glyph_cnt ) { if ( GWidgetAskR(_STR_ChangingGlyphCnt,buts,0,1,_STR_ReallyChangeGlyphCnt)==1 ) { char buf[8]; unichar_t ubuf[8]; sprintf( buf, "%d", tv->font->glyph_cnt ); uc_strcpy(ubuf,buf); GGadgetSetTitle(GWidgetGetControl(tv->gw,CID_Glyphs),ubuf); return( false ); } tv->font->glyph_cnt = gc; tv->table->container->gcchanged = true; } len = 6; if ( version>=1 ) { points = GetIntR(tv->gw,CID_Points,_STR_Points,&err); contours = GetIntR(tv->gw,CID_Contours,_STR_Contours,&err); cpoints = GetIntR(tv->gw,CID_CPoints,_STR_CompositPoints,&err); ccontours = GetIntR(tv->gw,CID_CContours,_STR_CompositContours,&err); zones = GetIntR(tv->gw,CID_Zones,_STR_Zones,&err); tpoints = GetIntR(tv->gw,CID_TPoints,_STR_TwilightPoints,&err); store = GetIntR(tv->gw,CID_Storage,_STR_Storage,&err); fdefs = GetIntR(tv->gw,CID_FDefs,_STR_FDEFs,&err); idefs = GetIntR(tv->gw,CID_IDefs,_STR_IDEFs,&err); sel = GetIntR(tv->gw,CID_SEl,_STR_StackElements,&err); sinstrs = GetIntR(tv->gw,CID_SOI,_STR_SizeOfInstructions,&err); cinstrs = GetIntR(tv->gw,CID_CEl,_STR_ComponentElements,&err); cdepth = GetIntR(tv->gw,CID_CDepth,_STR_ComponentDepth,&err); len = 32; } if ( err ) return( false ); data = galloc(len); ptputvfixed(data,version); ptputushort(data+4,gc); if ( version>=1 ) { ptputushort(data+6,points); ptputushort(data+8,contours); ptputushort(data+10,cpoints); ptputushort(data+12,ccontours); ptputushort(data+14,zones); ptputushort(data+16,tpoints); ptputushort(data+18,store); ptputushort(data+20,fdefs); ptputushort(data+22,idefs); ptputushort(data+24,sel); ptputushort(data+26,sinstrs); ptputushort(data+28,cinstrs); ptputushort(data+30,cdepth); } free(tv->table->data); tv->table->data = data; tv->table->newlen = len; if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int maxp_close(TableView *tv) { if ( maxp_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs maxpfuncs = { maxp_close, maxp_processdata }; static int maxp_VersionChange(GGadget *g, GEvent *e) { GWindow gw = GGadgetGetWindow(g); const unichar_t *ret = _GGadgetGetTitle(g); double val = u_strtod(ret,NULL); int i; if ( e->type!=et_controlevent || e->u.control.subtype != et_textchanged ) return( true ); if ( val==.5 || val==1.0 ) { for ( i=CID_Points; i<=CID_CDepth; ++i ) { GGadgetSetEnabled(GWidgetGetControl(gw,i),val==1.0); GGadgetSetEnabled(GWidgetGetControl(gw,i+1000),val==1.0); } } return( true ); } static int Maxp_Cancel(GGadget *g, GEvent *e) { GWindow gw; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int Maxp_OK(GGadget *g, GEvent *e) { GWindow gw; MaxpView *mv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); mv = GDrawGetUserData(gw); maxp_close((TableView *) mv); } return( true ); } static int maxp_e_h(GWindow gw, GEvent *event) { MaxpView *mv = GDrawGetUserData(gw); if ( event->type==et_close ) { mv->destroyed = true; GDrawDestroyWindow(mv->gw); } else if ( event->type == et_destroy ) { mv->table->tv = NULL; free(mv); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(mv->table->name); system("netscape http://partners.adobe.com/asn/developer/opentype/maxp.html &"); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } void maxpCreateEditor(Table *tab,TtfView *tfv) { MaxpView *mv = gcalloc(1,sizeof(MaxpView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[34]; GTextInfo label[34]; int short_table, i; static unichar_t title[60] = { 'm', 'a', 'x', 'p', ' ', '\0' }; char version[20], glyphs[8], points[8], contours[8], cpoints[8], ccontours[8], zones[8], tpoints[8], storage[8], fdefs[8], idefs[8], sels[8], soi[8], cels[8], cdep[8]; mv->table = tab; mv->virtuals = &maxpfuncs; mv->owner = tfv; mv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) mv; TableFillup(tab); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; wattrs.window_title = title; wattrs.icon = ttf_icon; pos.x = pos.y = 0; pos.width =GDrawPointsToPixels(NULL,270); pos.height = GDrawPointsToPixels(NULL,267); mv->gw = gw = GDrawCreateTopWindow(NULL,&pos,maxp_e_h,mv,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _STR_Version; label[0].text_in_resource = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 5; gcd[0].gd.pos.y = 5+6; gcd[0].gd.flags = gg_enabled|gg_visible; gcd[0].creator = GLabelCreate; short_table = tgetvfixed(tab,0)==.5; sprintf( version, "%.4g", tgetvfixed(tab,0) ); pointfive[0] = localeinfo.decimal_point[0]; label[1].text = (unichar_t *) version; label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 80; gcd[1].gd.pos.y = gcd[0].gd.pos.y-6; gcd[1].gd.pos.width = 50; gcd[1].gd.flags = gg_enabled|gg_visible; gcd[1].gd.cid = CID_Version; gcd[1].gd.u.list = maxpversions; gcd[1].gd.handle_controlevent = maxp_VersionChange; gcd[1].creator = GListFieldCreate; label[2].text = (unichar_t *) _STR_Glyphs; label[2].text_in_resource = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 5; gcd[2].gd.pos.y = gcd[1].gd.pos.y+24+6; gcd[2].gd.flags = gg_enabled|gg_visible; gcd[2].creator = GLabelCreate; sprintf( glyphs, "%d", tgetushort(tab,4) ); label[3].text = (unichar_t *) glyphs; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = gcd[1].gd.pos.x; gcd[3].gd.pos.y = gcd[2].gd.pos.y-6; gcd[3].gd.pos.width = 50; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_Glyphs; gcd[3].creator = GTextFieldCreate; label[4].text = (unichar_t *) _STR_Points; label[4].text_in_resource = true; gcd[4].gd.label = &label[4]; gcd[4].gd.pos.x = 5; gcd[4].gd.pos.y = gcd[3].gd.pos.y+24+6; gcd[4].gd.flags = gg_enabled|gg_visible; gcd[4].gd.cid = CID_Points+1000; gcd[4].creator = GLabelCreate; sprintf( points, "%d", tgetushort(tab,6) ); if ( short_table ) points[0] = '\0'; label[5].text = (unichar_t *) points; label[5].text_is_1byte = true; gcd[5].gd.label = &label[5]; gcd[5].gd.pos.x = gcd[1].gd.pos.x; gcd[5].gd.pos.y = gcd[4].gd.pos.y-6; gcd[5].gd.pos.width = 50; gcd[5].gd.flags = gg_enabled|gg_visible; gcd[5].gd.cid = CID_Points; gcd[5].creator = GTextFieldCreate; label[6].text = (unichar_t *) _STR_Contours; label[6].text_in_resource = true; gcd[6].gd.label = &label[6]; gcd[6].gd.pos.x = 5+gcd[1].gd.pos.x+gcd[1].gd.pos.width; gcd[6].gd.pos.y = gcd[4].gd.pos.y; gcd[6].gd.flags = gg_enabled|gg_visible; gcd[6].gd.cid = CID_Contours+1000; gcd[6].creator = GLabelCreate; sprintf( contours, "%d", tgetushort(tab,8) ); if ( short_table ) contours[0] = '\0'; label[7].text = (unichar_t *) contours; label[7].text_is_1byte = true; gcd[7].gd.label = &label[7]; gcd[7].gd.pos.x = gcd[6].gd.pos.x+75; gcd[7].gd.pos.y = gcd[6].gd.pos.y-6; gcd[7].gd.pos.width = 50; gcd[7].gd.flags = gg_enabled|gg_visible; gcd[7].gd.cid = CID_Contours; gcd[7].creator = GTextFieldCreate; label[8].text = (unichar_t *) _STR_CompositPoints; label[8].text_in_resource = true; gcd[8].gd.label = &label[8]; gcd[8].gd.pos.x = 5; gcd[8].gd.pos.y = gcd[5].gd.pos.y+24+6; gcd[8].gd.flags = gg_enabled|gg_visible; gcd[8].gd.cid = CID_CPoints+1000; gcd[8].creator = GLabelCreate; sprintf( cpoints, "%d", tgetushort(tab,10) ); if ( short_table ) cpoints[0] = '\0'; label[9].text = (unichar_t *) cpoints; label[9].text_is_1byte = true; gcd[9].gd.label = &label[9]; gcd[9].gd.pos.x = gcd[1].gd.pos.x; gcd[9].gd.pos.y = gcd[8].gd.pos.y-6; gcd[9].gd.pos.width = 50; gcd[9].gd.flags = gg_enabled|gg_visible; gcd[9].gd.cid = CID_CPoints; gcd[9].creator = GTextFieldCreate; label[10].text = (unichar_t *) _STR_CompositContours; label[10].text_in_resource = true; gcd[10].gd.label = &label[10]; gcd[10].gd.pos.x = gcd[6].gd.pos.x; gcd[10].gd.pos.y = gcd[8].gd.pos.y; gcd[10].gd.flags = gg_enabled|gg_visible; gcd[10].gd.cid = CID_CContours+1000; gcd[10].creator = GLabelCreate; sprintf( ccontours, "%d", tgetushort(tab,12) ); if ( short_table ) ccontours[0] = '\0'; label[11].text = (unichar_t *) ccontours; label[11].text_is_1byte = true; gcd[11].gd.label = &label[11]; gcd[11].gd.pos.x = gcd[7].gd.pos.x; gcd[11].gd.pos.y = gcd[10].gd.pos.y-6; gcd[11].gd.pos.width = 50; gcd[11].gd.flags = gg_enabled|gg_visible; gcd[11].gd.cid = CID_CContours; gcd[11].creator = GTextFieldCreate; label[12].text = (unichar_t *) _STR_Zones; label[12].text_in_resource = true; gcd[12].gd.label = &label[12]; gcd[12].gd.pos.x = 5; gcd[12].gd.pos.y = gcd[9].gd.pos.y+24+6; gcd[12].gd.flags = gg_enabled|gg_visible; gcd[12].gd.cid = CID_Zones+1000; gcd[12].creator = GLabelCreate; sprintf( zones, "%d", tgetushort(tab,14) ); if ( short_table ) zones[0] = '\0'; label[13].text = (unichar_t *) zones; label[13].text_is_1byte = true; gcd[13].gd.label = &label[13]; gcd[13].gd.pos.x = gcd[1].gd.pos.x; gcd[13].gd.pos.y = gcd[12].gd.pos.y-6; gcd[13].gd.pos.width = 50; gcd[13].gd.flags = gg_enabled|gg_visible; gcd[13].gd.cid = CID_Zones; gcd[13].creator = GTextFieldCreate; label[14].text = (unichar_t *) _STR_TwilightPoints; label[14].text_in_resource = true; gcd[14].gd.label = &label[14]; gcd[14].gd.pos.x = gcd[6].gd.pos.x; gcd[14].gd.pos.y = gcd[12].gd.pos.y; gcd[14].gd.flags = gg_enabled|gg_visible; gcd[14].gd.cid = CID_TPoints+1000; gcd[14].creator = GLabelCreate; sprintf( tpoints, "%d", tgetushort(tab,16) ); if ( short_table ) tpoints[0] = '\0'; label[15].text = (unichar_t *) tpoints; label[15].text_is_1byte = true; gcd[15].gd.label = &label[15]; gcd[15].gd.pos.x = gcd[7].gd.pos.x; gcd[15].gd.pos.y = gcd[14].gd.pos.y-6; gcd[15].gd.pos.width = 50; gcd[15].gd.flags = gg_enabled|gg_visible; gcd[15].gd.cid = CID_TPoints; gcd[15].creator = GTextFieldCreate; label[16].text = (unichar_t *) _STR_Storage; label[16].text_in_resource = true; gcd[16].gd.label = &label[16]; gcd[16].gd.pos.x = 5; gcd[16].gd.pos.y = gcd[13].gd.pos.y+24+6; gcd[16].gd.flags = gg_enabled|gg_visible; gcd[16].gd.cid = CID_Storage+1000; gcd[16].creator = GLabelCreate; sprintf( storage, "%d", tgetushort(tab,18) ); if ( short_table ) storage[0] = '\0'; label[17].text = (unichar_t *) storage; label[17].text_is_1byte = true; gcd[17].gd.label = &label[17]; gcd[17].gd.pos.x = gcd[1].gd.pos.x; gcd[17].gd.pos.y = gcd[16].gd.pos.y-6; gcd[17].gd.pos.width = 50; gcd[17].gd.flags = gg_enabled|gg_visible; gcd[17].gd.cid = CID_Storage; gcd[17].creator = GTextFieldCreate; label[18].text = (unichar_t *) _STR_FDEFs; label[18].text_in_resource = true; gcd[18].gd.label = &label[18]; gcd[18].gd.pos.x = 5; gcd[18].gd.pos.y = gcd[17].gd.pos.y+24+6; gcd[18].gd.flags = gg_enabled|gg_visible; gcd[18].gd.cid = CID_FDefs+1000; gcd[18].creator = GLabelCreate; sprintf( fdefs, "%d", tgetushort(tab,20) ); if ( short_table ) fdefs[0] = '\0'; label[19].text = (unichar_t *) fdefs; label[19].text_is_1byte = true; gcd[19].gd.label = &label[19]; gcd[19].gd.pos.x = gcd[1].gd.pos.x; gcd[19].gd.pos.y = gcd[18].gd.pos.y-6; gcd[19].gd.pos.width = 50; gcd[19].gd.flags = gg_enabled|gg_visible; gcd[19].gd.cid = CID_FDefs; gcd[19].creator = GTextFieldCreate; label[20].text = (unichar_t *) _STR_IDEFs; label[20].text_in_resource = true; gcd[20].gd.label = &label[20]; gcd[20].gd.pos.x = gcd[6].gd.pos.x; gcd[20].gd.pos.y = gcd[18].gd.pos.y; gcd[20].gd.flags = gg_enabled|gg_visible; gcd[20].gd.cid = CID_IDefs+1000; gcd[20].creator = GLabelCreate; sprintf( idefs, "%d", tgetushort(tab,22) ); if ( short_table ) idefs[0] = '\0'; label[21].text = (unichar_t *) idefs; label[21].text_is_1byte = true; gcd[21].gd.label = &label[21]; gcd[21].gd.pos.x = gcd[7].gd.pos.x; gcd[21].gd.pos.y = gcd[20].gd.pos.y-6; gcd[21].gd.pos.width = 50; gcd[21].gd.flags = gg_enabled|gg_visible; gcd[21].gd.cid = CID_IDefs; gcd[21].creator = GTextFieldCreate; label[22].text = (unichar_t *) _STR_StackElements; label[22].text_in_resource = true; gcd[22].gd.label = &label[22]; gcd[22].gd.pos.x = 5; gcd[22].gd.pos.y = gcd[19].gd.pos.y+24+6; gcd[22].gd.flags = gg_enabled|gg_visible; gcd[22].gd.cid = CID_SEl+1000; gcd[22].creator = GLabelCreate; sprintf( sels, "%d", tgetushort(tab,24) ); if ( short_table ) sels[0] = '\0'; label[23].text = (unichar_t *) sels; label[23].text_is_1byte = true; gcd[23].gd.label = &label[23]; gcd[23].gd.pos.x = gcd[1].gd.pos.x; gcd[23].gd.pos.y = gcd[22].gd.pos.y-6; gcd[23].gd.pos.width = 50; gcd[23].gd.flags = gg_enabled|gg_visible; gcd[23].gd.cid = CID_SEl; gcd[23].creator = GTextFieldCreate; label[24].text = (unichar_t *) _STR_SizeOfInstructions; label[24].text_in_resource = true; gcd[24].gd.label = &label[24]; gcd[24].gd.pos.x = gcd[6].gd.pos.x; gcd[24].gd.pos.y = gcd[22].gd.pos.y; gcd[24].gd.flags = gg_enabled|gg_visible; gcd[24].gd.cid = CID_SOI+1000; gcd[24].creator = GLabelCreate; sprintf( soi, "%d", tgetushort(tab,26) ); if ( short_table ) soi[0] = '\0'; label[25].text = (unichar_t *) soi; label[25].text_is_1byte = true; gcd[25].gd.label = &label[25]; gcd[25].gd.pos.x = gcd[7].gd.pos.x; gcd[25].gd.pos.y = gcd[24].gd.pos.y-6; gcd[25].gd.pos.width = 50; gcd[25].gd.flags = gg_enabled|gg_visible; gcd[25].gd.cid = CID_SOI; gcd[25].creator = GTextFieldCreate; label[26].text = (unichar_t *) _STR_ComponentElements; label[26].text_in_resource = true; gcd[26].gd.label = &label[26]; gcd[26].gd.pos.x = 5; gcd[26].gd.pos.y = gcd[23].gd.pos.y+24+6; gcd[26].gd.flags = gg_enabled|gg_visible; gcd[26].gd.cid = CID_CEl+1000; gcd[26].creator = GLabelCreate; sprintf( cels, "%d", tgetushort(tab,28) ); if ( short_table ) cels[0] = '\0'; label[27].text = (unichar_t *) cels; label[27].text_is_1byte = true; gcd[27].gd.label = &label[27]; gcd[27].gd.pos.x = gcd[1].gd.pos.x; gcd[27].gd.pos.y = gcd[26].gd.pos.y-6; gcd[27].gd.pos.width = 50; gcd[27].gd.flags = gg_enabled|gg_visible; gcd[27].gd.cid = CID_CEl; gcd[27].creator = GTextFieldCreate; label[28].text = (unichar_t *) _STR_ComponentDepth; label[28].text_in_resource = true; gcd[28].gd.label = &label[28]; gcd[28].gd.pos.x = gcd[6].gd.pos.x; gcd[28].gd.pos.y = gcd[26].gd.pos.y; gcd[28].gd.flags = gg_enabled|gg_visible; gcd[28].gd.cid = CID_CDepth+1000; gcd[28].creator = GLabelCreate; sprintf( cdep, "%d", tgetushort(tab,30) ); if ( short_table ) cdep[0] = '\0'; label[29].text = (unichar_t *) cdep; label[29].text_is_1byte = true; gcd[29].gd.label = &label[29]; gcd[29].gd.pos.x = gcd[7].gd.pos.x; gcd[29].gd.pos.y = gcd[28].gd.pos.y-6; gcd[29].gd.pos.width = 50; gcd[29].gd.flags = gg_enabled|gg_visible; gcd[29].gd.cid = CID_CDepth; gcd[29].creator = GTextFieldCreate; if ( short_table ) for ( i=4; i<30; ++i ) gcd[i].gd.flags &= ~gg_enabled; i = 30; gcd[i].gd.pos.x = 20-3; gcd[i].gd.pos.y = gcd[i==30?27:3].gd.pos.y+35-3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_default; label[i].text = (unichar_t *) _STR_OK; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'O'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = Maxp_OK; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 265-GIntGetResource(_NUM_Buttonsize)-20; gcd[i].gd.pos.y = gcd[i-1].gd.pos.y+3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = Maxp_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i].creator = GGroupCreate; GGadgetsCreate(gw,gcd); GDrawSetVisible(gw,true); } static void MaxPSetUShort(Table *maxp,int newval,int cid,int offset) { char buf[8]; unichar_t ubuf[8]; TableFillup(maxp); if ( maxp->tv!=NULL ) { sprintf( buf, "%d", newval ); uc_strcpy(ubuf, buf); GGadgetSetTitle(GWidgetGetControl(maxp->tv->gw,cid),ubuf); } ptputushort(maxp->data+offset,newval); if ( !maxp->changed ) { maxp->changed = true; maxp->container->changed = true; GDrawRequestExpose(maxp->container->tfv->v,NULL,false); } } void MaxPSetStack(Table *maxp,int newval) { MaxPSetUShort(maxp,newval,CID_SEl,24); } void MaxPSetStorage(Table *maxp,int newval) { MaxPSetUShort(maxp,newval,CID_Storage,18); } void MaxPSetFDef(Table *maxp,int newval) { MaxPSetUShort(maxp,newval,CID_FDefs,20); } mensis-080507/Mefile.dynamic.in~0100664000076500007650000000367111010402316014671 0ustar gwwgwwprefix = @prefix@ exec_prefix = @exec_prefix@ sharedir = @prefix@/share/mensis srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. VPATH = @srcdir@ bindir = @bindir@ libdir = @libdir@ LIBTOOL = @LIBTOOL@ CC = @CC@ INSTALL = @INSTALL@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o mensis_OBJECTS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point CFLAGS = @CFLAGS@ -I../inc $(WFLAGS) $(X_CFLAGS) @DEFS@ LDFLAGS = @LDFLAGS@ LIBS = -L../libs -rpath $(libdir) $(X_LIBS) -lgdraw -lgutils -lgunicode \ $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS) @LIBS@ -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(LIBTOOL) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(LIBTOOL) $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all install_libs # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/Mefile.static.in~0100664000076500007650000000334311010402316014530 0ustar gwwgwwCC = @CC@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ TABLEOBJS = maxp.o OS2.o instrs.o binary.o shorts.o metrics.o _hea.o head.o \ post.o gasp.o VORG.o GLYPHOBJS = fontview.o conicutil.o charview.o freetype.o bcdebug.o instrmod.o OBJS = mensis-ui.o start.o splashimage.o uiutil.o ttfview.o ttffile.o \ openfontdlg.o prefs.o cursors.o windowmenu.o psunicodenames.o \ ttfsave.o $(TABLEOBJS) $(GLYPHOBJS) WFLAGS = -WFLAGS = -Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses \ -Wformat -Wchar-subscripts -Wsequence-point -prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses CFLAGS = @CFLAGS@ -I../inc $(WFLAGS) $(X_CFLAGS) @DEFS@ LDFLAGS = @LDFLAGS@ LIBS = -L../libs $(X_LIBS) -lgdraw -lgutils -lgunicode \ $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS) @LIBS@ -L/usr/lib -lm all: mensis-en.ui mensis mensis: $(mensis_OBJECTS) $(CC) -o mensis $(mensis_OBJECTS) stamp.c $(LIBS) #this makes all the .ui files but wildcarding doesn't work too well if the # files don't exist. nomen.h mensis-ui.c mensis-en.ui: $(srcdir)/nomen-*.c makenomenh.c $(CC) -o makenomenh $(CFLAGS) $(srcdir)/makenomenh.c $(LIBS) -ln -s $(srcdir)/nomen-*.c . ./makenomenh mensis Mensis mv mensis-ui-en.c mensis-ui.c clean: -rm -f *.o mensis makenomenh *.ui nomen.h _nomen*.c distclean cleaner: clean -rm -f Makefile install: $(sharedir) all install_libs # You may need to be root to do the install mkdir -p $(bindir) mkdir -p $(mandir)/man1 mkdir -p $(sharedir) $(LIBTOOL) $(INSTALL) -c mensis $(bindir) cp mensis-*.ui $(sharedir) cp $(srcdir)/mensis.1 $(mandir)/man1 uninstall: -rm $(bindir)/mensis -rm $(sharedir)/mensis-*.ui -rm $(mandir)/man1/mensis.1 $(sharedir): mkdir -p $(sharedir) mensis-080507/mensis.10100664000076500007650000001002607743353446012722 0ustar gwwgww.\" Copyright © 2003 by George Williams. .ds Ps P\s-2OST\s+2S\s-2CRIPT\s+2 .TH MENSIS 1 "13 October 2003" .SH NAME .B mensis - To or for, by with or from TrueType tables .SH SYNOPSIS .B mensis .RB [ \-cmap .IR maptype ] .RB [ \-depth .IR pixeld ] .RB [ \-display .IR str ] .RB [ \-help ] .RB [ \-keyboard .IR ktype ] .RB [ \-nosplash .RB [ \-script .IR file ] .RB [ \-sync .RB [ \-usage ] .RB [ \-vc .IR vclass ] .RB [ \-version ] .I fontfile ... .SH DESCRIPTION The program .I mensis allows you to examine and modify some of the tables in a truetype or opentype font. .LP If the argument list contains a font file name (or several), .I pfaedit opens a .B table view window for each font displaying all the tables in that font In the absence of options or arguments, the program opens a file-picker window, allowing you to browse your disk to find a font file. .LP This manual page is intended only as a rudimentary overview; see the HTML Users Manual for more complete information. \fChttp://mensis.sourceforge.net/\fP .SH OPTIONS .TP .B \-cmap maptype Employ the specified method to control 8-bit colormaps, where .I maptype assumes one of these three values: .RS .TP .B current Attempt to allocate colors in the current (shared) colormap. The program will likely not find everything it requires. .TP .B copy Allocate what can be allocated, then copy the current colormap; it can thus make use of cells other programs are using. .TP .B private Create a new colormap and fill it with the required colors. .RE .TP .BI \-depth " pixeld" Attempt to employ a visual that matches the specified pixel depth, .IR pixeld . .TP .BI \-display " str" Employ the X display specified by the string .I str (for example: localhost:0). .TP .B \-help Display the usage description and start a web client displaying the online documentation. .TP .BI \-keyboard " ktype" Alter the displayed menus to employ modifier keys appropriate to the specified keyboard type, where .I ktype assumes one of the following four values: .RS .TP .B ibm IBM PC type keyboard. .TP .B mac Apple Macintosh keyboard. .TP .B sun Sun workstation keyboard. .TP .B ppc Macintosh keyboard, but on a system running SuSe linux (the mappings differ from those used under MacOS X). .RE .TP .B \-nosplash Suppress display of the splash screen. .TP .BI \-script " file" Execute the script named .IR file . Does not open the X display. This must be the first argument passed to mensis. Any other arguments are handled by the scriptfile itself. Any other command line arguments will be passed to the script. The program contains a command interpreter which allows access to most but not all of its interactive features. If a scriptfile is executable, and if its first line contains the string "mensis", then the argument .BI \-script may be omitted. This means that mensis can be used as an interpreter. .TP .B \-sync Make X synchronous. Used primarily for debugging, this option slows X down. .TP .B \-usage Display the usage description. .TP .B \-vc vclass Attempt to use a visual that matches the class, .IR vclass , specified as either the name of a visual class or an integer enumerating a visual class. .TP .B \-version Display the current version (a six digit string containing the date stamp of the source files). .SH ENVIRONMENT If any of the following environment variables exist, they are used: .TP .B BROWSER Specifies the name of a browser program for examining documentation. .TP .B MENSIS_VERBOSE Turns on verbose mode in scripting. Each statement is printed as it is executed. .SH FILES .TP .B /usr/local/share/mensis/*.ui translations for the user interface .TP .B /usr/local/share/doc/mensis/*.html optional location for online documentation. .\" .SH "SEE ALSO" .BR pfaedit (1) .LP The HTML version of the .I mensis manual, available online at: .TP \fChttp://mensis.sourceforge.net/\fP. .\" .SH STANDARDS .\" .SH HISTORY .SH AUTHOR Copyright (C) 2001-2003 by George Williams (gww@silcom.com). .SH BUGS Undoubtedly many, but unknown and ever changing. See .IP \fChttp://mensis.sourceforge.net/#known-bugs\fP for a current list. .\" end of file .\" mensis-080507/mensis.h0100664000076500007650000000353311010404052012762 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _PFAEDIT_H_ #define _PFAEDIT_H_ #include #include #include #include #include #include "ttffont.h" #include "conicfont.h" #include "nomen.h" #define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4)) #define RECENT_MAX 4 extern char *RecentFiles[RECENT_MAX]; extern char *getPfaEditDir(char *buffer); extern char *psunicodenames[]; #endif mensis-080507/mensisui.h0100664000076500007650000000417611010403077013332 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MENSISUI_H_ #define _MENSISUI_H_ #include "mensis.h" #include #include #include #include "ttfview.h" #include extern TtfView *tfv_list; extern GWindow ttf_icon; extern GCursor ct_leftright; extern void InitCursors(void); extern void TimeTToQuad(time_t t, uint32 date[2]); extern real GetRealR(GWindow gw,int cid,int namer,int *err); extern int GetIntR(GWindow gw,int cid,int namer,int *err); extern int GetHexR(GWindow gw,int cid,int namer,int *err); extern int GetListR(GWindow gw,int cid,int namer,int *err); extern void GetDateR(GWindow gw,int cid,int namer,uint32 date[2], int *err); extern void ProtestR(int labelr); extern void help(char *); #endif mensis-080507/metrics.c0100664000076500007650000005753311010406101013133 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * dermved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include extern int _GScrollBar_Width; #define ADDR_SPACER 4 #define EDGE_SPACER 2 #define UNIT_SPACER 2 typedef struct metricmview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* instrs specials */ GGadget *mb, *vsb, *tf; int lpos, lheight; int16 as, fh; int16 vheight, vwidth; int16 mbh, sbw; GFont *gfont, *ifont; int chrlen, addrend, widthend; int longmetricscnt, oldlongmetricscnt; int lastwidth; int active, islb; unsigned int changed: 1; uint8 *edits; int elen; } MetricsView; #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static void GrowLongMetrics(MetricsView *mv,int newlongcnt) { TtfFont *font = mv->font; Table *table = mv->table; int i, tag, newlen, gc, oldlen; uint8 *data, *olddata; if ( (table->name>>24)=='v' ) tag = CHR('v','m','t','x'); else tag = CHR('h','m','t','x'); for ( i=0; itbl_cnt; ++i ) if ( font->tbls[i]->name==tag ) break; _heaChangeLongMetrics(font->tbls[i],newlongcnt); oldlen = mv->edits ? mv->elen : table->newlen; olddata = mv->edits!=NULL?mv->edits:table->data; gc = (oldlen-4*mv->longmetricscnt)/2 + mv->longmetricscnt; newlen = 4*newlongcnt + 2*(gc-newlongcnt); data = galloc(newlen); memcpy(data,olddata,4*mv->longmetricscnt); for ( i=0; ilongmetricscnt+4*i,mv->lastwidth); ptputushort(data+4*mv->longmetricscnt+4*i+2, ptgetushort(olddata+4*mv->longmetricscnt+2*i)); } for ( i=0; ilongmetricscnt+2*(i+newlongcnt-mv->longmetricscnt))); } free(mv->edits); mv->edits = data; mv->elen = newlen; mv->longmetricscnt = newlongcnt; } static int mfinishup(MetricsView *mv,int showerr) { const unichar_t *ret = _GGadgetGetTitle(mv->tf); unichar_t *end; int val, oldval; Table *table = mv->table; static int buts[] = { _STR_Yes, _STR_Cancel, 0 }; uint8 *data = mv->edits ? mv->edits : table->data; if ( mv->active==-1 ) return( true ); val = u_strtol(ret,&end,10); if ( *ret=='\0' || *end!='\0' || val<-32768 || val>32767 ) { if ( showerr ) GWidgetErrorR(_STR_BadNumber,_STR_BadNumber); return( false ); } if ( mv->islb ) { if ( mv->activelongmetricscnt ) oldval = (short) ptgetushort(data+4*mv->active+2); else oldval = (short) ptgetushort(data+4*mv->longmetricscnt+2*(mv->active-mv->longmetricscnt)); } else { if ( mv->activelongmetricscnt ) oldval = (short) ptgetushort(data+4*mv->active); else oldval = mv->lastwidth; } if ( val != oldval ) { if ( !mv->islb && mv->active>=mv->longmetricscnt ) { if ( GWidgetAskR(_STR_GrowLongMetrics,buts,0,1,_STR_GrowLongMetricsSize)==1 ) { mv->active = -1; GGadgetMove(mv->tf,mv->addrend,-100); GDrawRequestExpose(mv->v,NULL,false); return( -1 ); } GrowLongMetrics(mv,mv->active); } if ( mv->edits==NULL ) { mv->elen = table->len; mv->edits = galloc(mv->elen); memcpy(mv->edits,table->data,mv->elen); } if ( !mv->islb ) ptputushort(mv->edits+4*mv->active,val); else if ( mv->activelongmetricscnt ) ptputushort(mv->edits+4*mv->active+2,val); else ptputushort(mv->edits+4*mv->longmetricscnt+2*(mv->active-mv->longmetricscnt),val); mv->changed = true; } mv->active = -1; GGadgetMove(mv->tf,mv->addrend,-100); return( true ); } static int metrics_processdata(TableView *tv) { MetricsView *mv = (MetricsView *) tv; int ret = mfinishup(mv,true); if ( ret>0 && !tv->table->changed ) { free(tv->table->data); tv->table->data = mv->edits; tv->table->newlen = mv->elen; tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( ret>0 ); } static int metrics_close(TableView *tv) { static int yesnocancel[] = { _STR_Yes, _STR_No, _STR_Cancel, 0 }; static int closecancel[] = { _STR_Close, _STR_Cancel, 0 }; MetricsView *mv = (MetricsView *) tv; int ret = mfinishup((MetricsView *) mv,false); int copyedits = true; if ( ret>0 ) { if ( mv->changed ) { ret = GWidgetAskR(_STR_RetainChanges,yesnocancel,0,2,_STR_RetainChanges); if ( ret==2 ) return( false ); if ( ret==1 ) copyedits = false; } } else if ( ret<0 ) return( false ); else { ret = GWidgetAskR(_STR_BadNumber,closecancel,0,1,_STR_BadNumberCloseAnyway); if ( ret==1 ) return( false ); } if ( copyedits && mv->edits ) { free(mv->table->data); mv->table->data = mv->edits; mv->table->newlen = mv->elen; if ( !mv->table->changed ) { mv->table->changed = true; mv->table->td_changed = true; mv->table->container->changed = true; GDrawRequestExpose(mv->owner->v,NULL,false); } } mv->destroyed = true; GDrawDestroyWindow(mv->gw); return( true ); } static struct tableviewfuncs instrfuncs = { metrics_close, metrics_processdata }; static void metrics_resize(MetricsView *mv,GEvent *event) { GRect pos; int top = mv->mbh + mv->fh + EDGE_SPACER; /* height must be a multiple of the line height */ if ( (event->u.resize.size.height-top-2*EDGE_SPACER)%mv->fh!=0 || (event->u.resize.size.height-top-2*EDGE_SPACER-mv->fh)<0 ) { int lc = (event->u.resize.size.height-top+mv->fh/2-2*EDGE_SPACER)/mv->fh; if ( lc<=0 ) lc = 1; GDrawResize(mv->gw, event->u.resize.size.width, lc*mv->fh+top+2*EDGE_SPACER); return; } pos.width = GDrawPointsToPixels(mv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-top; pos.x = event->u.resize.size.width-pos.width; pos.y = top; GGadgetResize(mv->vsb,pos.width,pos.height); GGadgetMove(mv->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(mv->v,pos.width,pos.height); mv->vheight = pos.height; mv->vwidth = pos.width; mv->lheight = mv->longmetricscnt + (mv->table->newlen-mv->longmetricscnt*4)/2; GScrollBarSetBounds(mv->vsb,0,mv->lheight,mv->vheight/mv->fh); if ( mv->lpos + mv->vheight/mv->fh > mv->lheight ) { mv->lpos = mv->lheight-mv->vheight/mv->fh; if ( mv->lpos<0 ) mv->lpos = 0; if ( mv->active!=-1 ) { GRect tp; GGadgetGetSize(mv->tf,&tp); GGadgetMove(mv->tf,tp.x,(mv->active-mv->lpos)*mv->fh); } } GScrollBarSetPos(mv->vsb,mv->lpos); if ( mv->islb ) { /* The tf's width isn't going to change if !mv->islb */ int width = pos.width-mv->addrend; if ( width < 5 ) width = 5; GGadgetResize(mv->tf,width,mv->fh); } GDrawRequestExpose(mv->gw,NULL,false); GDrawRequestExpose(mv->v,NULL,false); } static void metrics_expose(MetricsView *mv,GWindow pixmap,GRect *rect) { int low, high; int x,y; Table *table = mv->table; char cval[8], caddr[8]; unichar_t uval[8], uaddr[12]; int index; int col; uint8 *data = mv->edits ? mv->edits : table->data; GDrawSetFont(pixmap,mv->gfont); low = ( (rect->y-EDGE_SPACER)/mv->fh ) * mv->fh +EDGE_SPACER; high = ( (rect->y+rect->height+mv->fh-1-EDGE_SPACER)/mv->fh ) * mv->fh +EDGE_SPACER; if ( high>mv->vheight-EDGE_SPACER ) high = mv->vheight-EDGE_SPACER; GDrawDrawLine(pixmap,mv->addrend-ADDR_SPACER/2,rect->y,mv->addrend-ADDR_SPACER/2,rect->y+rect->height,0x000000); index = (mv->lpos+(low-EDGE_SPACER)/mv->fh); y = low; for ( ; y<=high && indexlheight; ++index ) { sprintf( caddr, "%d", index ); uc_strcpy(uaddr,caddr); col = 0x000000; if ( mv->font->enc!=NULL ) { int p = strlen(caddr); uaddr[p] = ' '; if ( mv->font->enc->uenc[index]!=0xffffffff ) uaddr[p+1] = mv->font->enc->uenc[index]; else { uaddr[p+1] = '?'; col = 0xff0000; } uaddr[p+2] = '\0'; } x = mv->addrend - ADDR_SPACER - GDrawGetTextWidth(pixmap,uaddr,-1,NULL); GDrawDrawText(pixmap,x,y+mv->as,uaddr,-1,NULL,col); if ( indexlongmetricscnt ) { sprintf( cval, "%d", (short) ptgetushort(data+4*index) ); uc_strcpy(uval,cval); GDrawDrawText(pixmap,mv->addrend,y+mv->as,uval,-1,NULL,0x000000); sprintf( cval, "%d", (short) ptgetushort(data+4*index+2) ); uc_strcpy(uval,cval); GDrawDrawText(pixmap,mv->widthend,y+mv->as,uval,-1,NULL,0x000000); } else { GDrawSetFont(pixmap,mv->ifont); sprintf( cval, "%d", mv->lastwidth ); uc_strcpy(uval,cval); GDrawDrawText(pixmap,mv->addrend,y+mv->as,uval,-1,NULL,0x000000); GDrawSetFont(pixmap,mv->gfont); sprintf( cval, "%d", (short) ptgetushort(data+ 4*mv->longmetricscnt+2*(index-mv->longmetricscnt)) ); uc_strcpy(uval,cval); GDrawDrawText(pixmap,mv->widthend,y+mv->as,uval,-1,NULL,0x000000); } y += mv->fh; } } static void metrics_mousemove(MetricsView *mv,int pos) { int index = (mv->lpos+(pos-EDGE_SPACER)/mv->fh); char buffer[20]; static unichar_t ubuf[60]; if ( mv->font->enc!=NULL && index>=0 && indexfont->enc->cnt ) { int val = mv->font->enc->uenc[index]; if ( index==0 ) uc_strcpy(ubuf,".notdef"); if ( val==0xffffffff ) { if ( index==0 ) uc_strcpy(ubuf,".notdef"); else if ( index==1 ) uc_strcpy(ubuf,".null"); else if ( index==2 ) uc_strcpy(ubuf,"nonmarkingreturn"); else uc_strcpy(ubuf,"???"); /* No idea */ } else if ( psunicodenames[val]!=NULL ) { uc_strcpy(ubuf,psunicodenames[val]); } else { sprintf( buffer, "uni%04X", val ); uc_strcpy(ubuf,buffer); } GGadgetPreparePopup(mv->gw,ubuf); } } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } static void metrics_scroll(MetricsView *mv,struct sbevent *sb) { int newpos = mv->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= mv->vheight/mv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += mv->vheight/mv->fh; break; case et_sb_bottom: newpos = mv->lheight-mv->vheight/mv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>mv->lheight-mv->vheight/mv->fh ) newpos = mv->lheight-mv->vheight/mv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=mv->lpos ) { int diff = newpos-mv->lpos; mv->lpos = newpos; GScrollBarSetPos(mv->vsb,mv->lpos); if ( mv->active!=-1 ) { GRect pos; GGadgetGetSize(mv->tf,&pos); GGadgetMove(mv->tf,pos.x,pos.y+diff*mv->fh); } GDrawScroll(mv->v,NULL,0,diff*mv->fh); } } static void MetricsViewFree(MetricsView *mv) { mv->table->tv = NULL; free(mv); } static int mv_v_e_h(GWindow gw, GEvent *event) { MetricsView *mv = (MetricsView *) GDrawGetUserData(gw); int val; switch ( event->type ) { case et_expose: metrics_expose(mv,gw,&event->u.expose.rect); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(mv->table->name); break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) metrics_mousemove(mv,event->u.mouse.y); else if ( event->type == et_mousedown ) { int l = (event->u.mouse.y-EDGE_SPACER)/mv->fh + mv->lpos; unichar_t ubuf[20]; char buf[20]; uint8 *data = mv->edits ? mv->edits : mv->table->data; if ( mfinishup(mv,true)>0 && event->u.mouse.x>mv->addrend && lfont->glyph_cnt && (l!=mv->active || (mv->islb && event->u.mouse.xwidthend) || (!mv->islb && event->u.mouse.x>=mv->widthend) )) { mv->active = l; mv->islb = event->u.mouse.x>=mv->widthend; if ( mv->islb ) { GGadgetMove(mv->tf, mv->widthend, (l-mv->lpos)*mv->fh+EDGE_SPACER+1); GGadgetResize(mv->tf, mv->vwidth-mv->widthend,mv->fh); if ( llongmetricscnt ) val = (short) ptgetushort(data+4*l+2); else val = (short) ptgetushort(data+4*mv->longmetricscnt+2*(l-mv->longmetricscnt)); } else { GGadgetMove(mv->tf, mv->addrend, (l-mv->lpos)*mv->fh+EDGE_SPACER+1); GGadgetResize(mv->tf, mv->widthend-mv->addrend-UNIT_SPACER,mv->fh); if ( llongmetricscnt ) val = (short) ptgetushort(data+4*l); else val = mv->lastwidth; } sprintf( buf, "%d", val ); uc_strcpy(ubuf,buf); GGadgetSetTitle(mv->tf,ubuf); GDrawPostEvent(event); /* And we hope the tf catches it this time */ } } break; case et_timer: break; case et_focus: break; } return( true ); } static int mv_e_h(GWindow gw, GEvent *event) { MetricsView *mv = (MetricsView *) GDrawGetUserData(gw); static unichar_t addr[] = { 'g','l','y','p','h', '\0' }, width[] = { 'w','i','d','t','h', '\0' }, bearing[] = { 'b','e','a','r','i','n','g', '\0' }; int x; switch ( event->type ) { case et_expose: GDrawSetFont(gw,mv->gfont); x = mv->addrend - ADDR_SPACER - GDrawGetTextWidth(gw,addr,-1,NULL); GDrawDrawText(gw,x,mv->mbh+mv->as,addr,-1,NULL,0x000000); GDrawDrawText(gw,mv->addrend,mv->mbh+mv->as,width,-1,NULL,0x000000); GDrawDrawText(gw,mv->widthend,mv->mbh+mv->as,bearing,-1,NULL,0x000000); break; case et_resize: metrics_resize(mv,event); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(mv->table->name); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: metrics_scroll(mv,&event->u.control.u.sb); break; } break; case et_close: metrics_close((TableView *) mv); break; case et_destroy: MetricsViewFree(mv); break; } return( true ); } static void IVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { MetricsView *mv = (MetricsView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) metrics_close, mv); } static void IVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((MetricsView *) GDrawGetUserData(gw))->owner; _TFVMenuSaveAs(tfv); } static void IVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((MetricsView *) GDrawGetUserData(gw))->owner; _TFVMenuSave(tfv); } static void IVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((MetricsView *) GDrawGetUserData(gw))->owner; _TFVMenuRevert(tfv); } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, IVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, IVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, IVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, IVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; static int GetMetricsCnt(TtfFont *tf,Table *tab) { int32 name; Table *header; int i; if ( tab->name==CHR('h','m','t','x')) name = CHR('h','h','e','a'); else name = CHR('v','h','e','a'); for ( i=0; itbl_cnt; ++i ) if ( tf->tbls[i]->name==name ) break; if ( i==tf->tbl_cnt ) /* Should we create a dummy vmtx table*/ return( tf->glyph_cnt ); /* (there better be a hmtx) with glyph_cnt in it? */ header = tf->tbls[i]; TableFillup(header); if ( header->newlen<36 ) /* Can't be */ return( tf->glyph_cnt ); return( tgetushort(header,34)); /* location of the numMetrics field */ } /* hmtx, vmtx */ void metricsCreateEditor(Table *tab,TtfView *tfv) { MetricsView *mv = gcalloc(1,sizeof(MetricsView)); unichar_t title[60]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld, lh; GGadgetData gd; GGadget *sb; static unichar_t num[] = { '0', '\0' }; int numlen; static GBox tfbox; GTextInfo lab; mv->table = tab; mv->virtuals = &instrfuncs; mv->owner = tfv; mv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) mv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, mv->font->fontname, sizeof(title)/sizeof(title[0])-6); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,mv_e_h,mv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; mv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(mv->mb,&gsize); mv->mbh = gsize.height; gd.pos.y = mv->mbh; gd.pos.height = pos.height-mv->mbh; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; mv->vsb = sb = GScrollBarCreate(gw,&gd,mv); GGadgetGetSize(mv->vsb,&gsize); mv->sbw = gsize.width; memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; mv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawFontMetrics(mv->gfont,&as,&ds,&ld); mv->as = as+1; mv->fh = mv->as+ds; rq.style = fs_italic; mv->ifont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = mv->mbh + mv->fh + EDGE_SPACER; pos.width = gd.pos.x; pos.height -= mv->mbh; mv->v = GWidgetCreateSubWindow(gw,&pos,mv_v_e_h,mv,&wattrs); GDrawSetVisible(mv->v,true); GDrawSetFont(mv->v,mv->gfont); mv->longmetricscnt = GetMetricsCnt(mv->font,tab); mv->oldlongmetricscnt = mv->longmetricscnt; mv->lastwidth = tgetushort(tab,(mv->longmetricscnt-1)*4); mv->chrlen = numlen = GDrawGetTextWidth(mv->v,num,1,NULL); mv->addrend = 8*numlen + ADDR_SPACER + EDGE_SPACER; mv->widthend = mv->addrend + 6*mv->chrlen + UNIT_SPACER; tfbox.main_background = tfbox.main_foreground = COLOR_DEFAULT; gd.pos.y = -100; gd.pos.height = mv->fh; gd.pos.x = mv->addrend; memset(&lab,'\0',sizeof(lab)); lab.text = num+1; lab.font = mv->gfont; gd.label = &lab; gd.box = &tfbox; gd.flags = gg_visible|gg_enabled|gg_sb_vert|gg_dontcopybox; mv->tf = GTextFieldCreate(mv->v,&gd,NULL); mv->active = -1; mv->islb=0; lh = mv->lheight = mv->longmetricscnt + (tab->newlen-mv->longmetricscnt*4)/2; if ( lh>39 ) lh = 39; if ( lh<4 ) lh = 4; GDrawResize(mv->gw,mv->addrend+12*numlen+UNIT_SPACER+EDGE_SPACER+mv->sbw, mv->mbh+mv->fh+EDGE_SPACER+lh*mv->fh+2*EDGE_SPACER); GDrawSetVisible(gw,true); } mensis-080507/name.c0100664000076500007650000003573711010406101012407 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include typedef struct namelist { int platform; int specific; int lang; int strtype; unichar_t *str; } NameList; /* Sortable by platform,specific,lang or by strtype */ /* double clicking brings up an editor window */ /* [New] button does too */ static GTextInfo platforms[] = { { (unichar_t *) _STR_AppleUnicode, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Mac, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ISO, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Microsoft, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo auspecific[] = { { (unichar_t *) _STR_Default, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unicode1, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unicode11, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unicode2, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo macspecific[] = { { (unichar_t *) _STR_ApRoman, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApJapanese, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApChinese, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApKorean, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApArabic, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApHebrew, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGreek, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApRussian, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApRSymbol, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApDevanagari, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGurmukhi, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGujarati, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApOriya, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApBengali, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApTamil, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApTelugu, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApKannada, NULL, 0, 0, (void *) 16, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApMalayalam, NULL, 0, 0, (void *) 17, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApSinhalese, NULL, 0, 0, (void *) 18, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApBurmese, NULL, 0, 0, (void *) 19, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApKhmer, NULL, 0, 0, (void *) 20, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApThai, NULL, 0, 0, (void *) 21, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApLoatian, NULL, 0, 0, (void *) 22, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGeorgian, NULL, 0, 0, (void *) 23, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApArmenian, NULL, 0, 0, (void *) 24, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApMaldivian, NULL, 0, 0, (void *) 25, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApTibetan, NULL, 0, 0, (void *) 26, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApMongolian, NULL, 0, 0, (void *) 27, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGeez, NULL, 0, 0, (void *) 28, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApSlavic, NULL, 0, 0, (void *) 29, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApVietnamese, NULL, 0, 0, (void *) 30, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApSindhi, NULL, 0, 0, (void *) 31, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Uninterpreted, NULL, 0, 0, (void *) 32, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo isospecific[] = { { (unichar_t *) _STR_ASCII, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ISO106461, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ISO88591, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo msspecific[] = { { (unichar_t *) _STR_Uninterpreted, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unicode, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo mslanguages[] = { { (unichar_t *) _STR_Albanian, NULL, 0, 0, (void *) 0x41c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Arabic, NULL, 0, 0, (void *) 0x401, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Basque, NULL, 0, 0, (void *) 0x42d, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Byelorussian, NULL, 0, 0, (void *) 0x423, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bulgarian, NULL, 0, 0, (void *) 0x402, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Catalan, NULL, 0, 0, (void *) 0x403, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MSChinese, NULL, 0, 0, (void *) 0x404, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Croatian, NULL, 0, 0, (void *) 0x41a, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Czech, NULL, 0, 0, (void *) 0x405, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Danish, NULL, 0, 0, (void *) 0x406, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Dutch, NULL, 0, 0, (void *) 0x413, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Flemish, NULL, 0, 0, (void *) 0x813, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_BrEnglish, NULL, 0, 0, (void *) 0x809, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_AmEnglish, NULL, 0, 0, (void *) 0x409, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CaEnglish, NULL, 0, 0, (void *) 0x1009, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_AuEnglish, NULL, 0, 0, (void *) 0xc09, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NZEnglish, NULL, 0, 0, (void *) 0x1409, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_IEEnglish, NULL, 0, 0, (void *) 0x1809, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Estonia, NULL, 0, 0, (void *) 0x425, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Finnish, NULL, 0, 0, (void *) 0x40b, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FRFrench, NULL, 0, 0, (void *) 0x40c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_BEFrench, NULL, 0, 0, (void *) 0x80c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CAFrench, NULL, 0, 0, (void *) 0xc0c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CHFrench, NULL, 0, 0, (void *) 0x100c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LUFrench, NULL, 0, 0, (void *) 0x140c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DEGerman, NULL, 0, 0, (void *) 0x407, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CHGerman, NULL, 0, 0, (void *) 0x807, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ATGerman, NULL, 0, 0, (void *) 0xc07, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LUGerman, NULL, 0, 0, (void *) 0x1007, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LIGerman, NULL, 0, 0, (void *) 0x1407, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Greek, NULL, 0, 0, (void *) 0x408, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Hebrew, NULL, 0, 0, (void *) 0x40d, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Hungarian, NULL, 0, 0, (void *) 0x402, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Icelandic, NULL, 0, 0, (void *) 0x40f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Italian, NULL, 0, 0, (void *) 0x410, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CHItalian, NULL, 0, 0, (void *) 0x810, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Japanese, NULL, 0, 0, (void *) 0x411, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Latvian, NULL, 0, 0, (void *) 0x426, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Lithuanian, NULL, 0, 0, (void *) 0x427, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Norwegian, NULL, 0, 0, (void *) 0x414, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NorwegianN, NULL, 0, 0, (void *) 0x814, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Polish, NULL, 0, 0, (void *) 0x415, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_PTPortuguese, NULL, 0, 0, (void *) 0x416, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_BRPortuguese, NULL, 0, 0, (void *) 0x816, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Romanian, NULL, 0, 0, (void *) 0x418, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Russian, NULL, 0, 0, (void *) 0x419, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Slovak, NULL, 0, 0, (void *) 0x41b, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Slovenian, NULL, 0, 0, (void *) 0x424, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TradSpanish, NULL, 0, 0, (void *) 0x40a, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MXSpanish, NULL, 0, 0, (void *) 0x80a, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ModSpanish, NULL, 0, 0, (void *) 0xc0a, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Swedish, NULL, 0, 0, (void *) 0x41d, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Turkish, NULL, 0, 0, (void *) 0x41f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Ukrainian, NULL, 0, 0, (void *) 0x422, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo maclanguages[] = { { (unichar_t *) _STR_ApEnglish, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApFrench, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGerman, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApItalian, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApDutch, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApSwedish, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApSpanish, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApDanish, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApPortuguese, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApNorwegian, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApHebrew, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApJapanese, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApArabic, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApFinnish, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApGreek, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApIcelandic, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApMaltese, NULL, 0, 0, (void *) 16, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApTurkish, NULL, 0, 0, (void *) 17, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApYugoslavian, NULL, 0, 0, (void *) 18, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApChinese, NULL, 0, 0, (void *) 19, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApUrdu, NULL, 0, 0, (void *) 20, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApHindi, NULL, 0, 0, (void *) 21, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ApThai, NULL, 0, 0, (void *) 22, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo ttfnameids[] = { { (unichar_t *) _STR_Copyright, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Family, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SubFamily, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 1, 0, 0, 1}, { (unichar_t *) _STR_UniqueID, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Fullname, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Version, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_PostscriptName, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Trademark, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Manufacturer, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Designer, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Descriptor, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VendorURL, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DesignerURL, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_License, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LicenseURL, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, /* slot 15 is reserved */ { (unichar_t *) _STR_OTFFamily, NULL, 0, 0, (void *) 16, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OTFStyles, NULL, 0, 0, (void *) 17, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CompatableFull, NULL, 0, 0, (void *) 18, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SampleText, NULL, 0, 0, (void *) 19, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; mensis-080507/nomen-en.c0100664000076500007650000013164510170345136013216 0ustar gwwgww#include "nomen.h" static enum encoding enc = e_iso8859_1; static char str_Language[] = "English"; static char str_OK[] = "OK"; static unichar_t mnemonic_OK[] = 'O'; static char str_Cancel[] = "Cancel"; static unichar_t mnemonic_Cancel[] = 'C'; static char str_Open[] = "Open"; static unichar_t mnemonic_Open[] = 'O'; static char str_Save[] = "Save"; static unichar_t mnemonic_Save[] = 'S'; static char str_Filter[] = "Filter"; static unichar_t mnemonic_Filter[] = 'F'; static char str_New[] = "New"; static unichar_t mnemonic_New[] = 'N'; static char str_Replace[] = "Replace"; static char str_Fileexists[] = "File Exists"; /* "File, %s, exists. Replace it?" */ static char str_Fileexistspre[] = "File, "; static char str_Fileexistspost[] = ", exists. Replace it?"; static char str_Createdir[] = "Create directory..."; static char str_Dirname[] = "Directory name?"; static char str_Couldntcreatedir[] = "Couldn't create directory"; static char str_SelectAll[] = "Select All"; static char mnemonic_SelectAll ='A'; static char *str_None ="None"; static char mnemonic_None ='N'; /* Menus ... */ static char str_File[] = "File"; static unichar_t mnemonic_File[] = 'F'; static char str_Edit[] = "Edit"; static unichar_t mnemonic_Edit[] = 'E'; static char str_View[] = "View"; static unichar_t mnemonic_View[] = 'V'; static char str_Window[] = "Window"; static unichar_t mnemonic_Window[] = 'W'; static char str_Help[] = "Help"; static unichar_t mnemonic_Help[] = 'H'; static char str_Recent[] = "Recent"; static unichar_t mnemonic_Recent[] = 't'; static char str_Revertfile[] = "Revert File"; static unichar_t mnemonic_Revertfile[] = 'R'; static char str_RevertTable[] = "Revert Table"; static char str_SaveAs[] = "Save as..."; static unichar_t mnemonic_Saveas[] = 'a'; static char str_Close[] = "Close"; static unichar_t mnemonic_Close[] = 'c'; static char str_Prefs[] = "Preferences..."; static unichar_t mnemonic_Prefs[] = 'e'; static char str_Quit[] = "Quit"; static unichar_t mnemonic_Quit[] = 'Q'; static char str_Undo[] = "Undo"; static unichar_t mnemonic_Undo[] = 'U'; static char str_Redo[] = "Redo"; static unichar_t mnemonic_Redo[] = 'R'; static char str_Cut[] = "Cut"; static unichar_t mnemonic_Cut[] = 't'; static char str_Copy[] = "Copy"; static unichar_t mnemonic_Copy[] = 'C'; static char str_Paste[] = "Paste"; static unichar_t mnemonic_Paste[] = 'P'; static char str_Clear[] = "Clear"; static unichar_t mnemonic_Clear[] = 'l'; static char str_Fit[] = "Fit"; static unichar_t mnemonic_Fit[] = 'F'; static char str_Zoomin[] = "Zoom in"; static unichar_t mnemonic_Zoomin[] = 'i'; static char str_Zoomout[] = "Zoom out"; static unichar_t mnemonic_Zoomout[] = 'o'; static char str_NextChar[] = "Next Char"; static unichar_t mnemonic_NextChar[] = 'N'; static char str_PrevChar[] = "Prev Char"; static unichar_t mnemonic_PrevChar[] = 'P'; static char str_Goto[] = "Goto"; static unichar_t mnemonic_Goto[] = 'G'; static char str_ShowInstrs[] = "Show Instructions"; static unichar_t mnemonic_ShowInstrs[] = 'I'; static char str_HideInstrs[] = "Hide Instructions"; static unichar_t mnemonic_HideInstrs[] = 'I'; static char str_ShowAddress[] = "Show Address"; static unichar_t mnemonic_ShowAddress[] = 'A'; static char str_HideAddress[] = "Hide Address"; static unichar_t mnemonic_HideAddress[] = 'A'; static char str_ShowGloss[] = "Show Gloss"; static unichar_t mnemonic_ShowGloss[] = 'l'; static char str_HideGloss[] = "Hide Gloss"; static unichar_t mnemonic_HideGloss[] = 'l'; static char str_ShowFore[] = "Show Splines"; static unichar_t mnemonic_ShowFore[] = 'S'; static char str_HideFore[] = "Hide Splines"; static unichar_t mnemonic_HideFore[] = 'S'; static char str_ShowGrid[] = "Show Grid"; static unichar_t mnemonic_ShowGrid[] = 'd'; static char str_HideGrid[] = "Hide Grid"; static unichar_t mnemonic_HideGrid[] = 'd'; static char str_ShowGridFit[] = "Show Grid Fit"; static unichar_t mnemonic_ShowGridFit[] = 'i'; static char str_HideGridFit[] = "Hide Grid Fit"; static unichar_t mnemonic_HideGridFit[] = 'i'; static char str_ShowRaster[] = "Show Raster"; static unichar_t mnemonic_ShowRaster[] = 'r'; static char str_HideRaster[] = "Hide Raster"; static unichar_t mnemonic_HideRaster[] = 'r'; static char str_ShowTwilight[] = "Show Twilight Points"; static unichar_t mnemonic_ShowTwilight[] = 'T'; static char str_HideTwilight[] = "Hide Twilight Points"; static unichar_t mnemonic_HideTwilight[] = 'T'; static char str_GridSize[] = "Grid Pixels per Em..."; static unichar_t mnemonic_GridSize[] = 'x'; static char *str_Mensis = "Mensis"; /* ttfview.c */ static char *str_OpenTtf = "Open TTF..."; static char *str_TabMod = "Can't edit modified table" static char *str_TabModNotBinary = "This table has been modified in such a way that\nthe binary editor can't edit it until you\nsave the file.\nWould you like to save the file now?"; static char *str_ReallyRevert = "Really Revert to old version?"; static char *str_RevertFailed = "Revert Failed!"; static char *str_FontChanged = "Font Changed"; static char *str_FontChangedSave = "Font %.100s has changed.\nWould you like to save it?"; static char *str_FontChangedSavem = "The file containing font %.100s has changed.\nWould you like to save it?"; static char *str_TablesOpen = "Tables Open"; static char *str_TablesOpenSave = "There are editor windows open looking at tables in font %.100s\nWould you like them to be parsed for changes and the font saved if it needs to be?"; static char *str_TablesOpenSavem = "There are editor windows open looking at tables in the file containing font %.100s\nWould you like them to be parsed for changes and the font saved it needs to be?"; static char *str_TablesOpenProcess = "There are editor windows open looking at tables in this file.\nWould you like the tables parsed before the file is saved?"; static char *str_TableNameMismatch = "Table name mismatch"; static char *str_TableMismatch = "You are attempting to replace the selected table with one of a different type.\nIs that really what you want to do?"; /* ttffile.c */ static char *str_RestrictedRightsFont = "This font is marked with an FSType of 2 (Restricted\nLicense). That means it is not editable without the\npermission of the legal owner.\n\nDo you have such permission?"; static char *str_RestrictedFont = "Restricted Font"; /* uiutil.c */ static char *str_Badnumberin = "Bad number in "; /* Table names */ static char *str_tbl_cmap = "Character to glyph mapping\nSpecifies the font's encoding"; static char *str_tbl_glyf = "Glyph data\nSpecifies the glyphs in the font"; static char *str_tbl_head = "Font header\nGeneral information about the font"; static char *str_tbl_hhea = "Horizontal header\nHigh level information about the font's\nhorizontal metrics"; static char *str_tbl_hmtx = "Horizontal metrics\nHorizontal metric (lbearing/width)\ninformation for each character"; static char *str_tbl_loca = "Index to location\nPointers specifying where each glyph\nbegins in the glyf table"; static char *str_tbl_maxp = "Maximum profile\nSpecifies various maxima of the font"; static char *str_tbl_name = "Naming table\nSpecifies the font name, copyright, etc."; static char *str_tbl_post = "PostScript data\nSpecifies PostScript specific data\nand PostScript glyph names"; static char *str_tbl_OS2 = "OS/2 and Windows specific metrics"; static char *str_tbl_cvt = "Control Value Table\nVarious integers used for instructing\n(hinting) the font"; static char *str_tbl_EBDT = "Embedded bitmap data (MS version)"; static char *str_tbl_EBLC = "Embedded bitmap location data (MS version)"; static char *str_tbl_EBSC = "Embedded bitmap scaling data"; static char *str_tbl_fpgm = "Font Program\nInvoked before the first use of the font."; static char *str_tbl_gasp = "grid-fitting and scan conversion procedure (greyscale)"; static char *str_tbl_hdmx = "Horizontal device metrics\nPrecomputed metrics for certain point-sizes"; static char *str_tbl_kern = "Kerning\nKerning pairs"; static char *str_tbl_LTSH = "Linear threshold table\nSpecifies point at which metrics may be\nassumed to scale from htmx table"; static char *str_tbl_prep = "CVT Program\nInvoked before each time the font is rasterized."; static char *str_tbl_PCLT = "PCL5\nInformation for HP printers"; static char *str_tbl_VDMX = "Vertical Device Metrics table\nPrecomputed metrics for certain point-sizes"; static char *str_tbl_vhea = "Vertical header\nHigh level information about the font's\nvertical metrics (for CJK fonts)"; static char *str_tbl_vmtx = "Vertical metrics"; static char *str_tbl_CFF = "Compact Font Format\nPostscript outlines"; /*static char *str_tbl_fvar = "Obsolete multiple master table"*/ static char *str_tbl_MMSD = "Obsolete multiple master table" static char *str_tbl_MMFX = "Obsolete multiple master table" static char *str_tbl_BASE = "Baseline data\nSpecifies how to align glyphs from different scripts"; static char *str_tbl_GDEF = "Glyph definition data\nSpecifies caret locations inside ligatures\nand attachment points"; static char *str_tbl_GPOS = "Glyph positioning data\nSpecifies how to positions glyphs with\nrespect to each other in caligraphic and other\ncomplex scripts"; static char *str_tbl_GSUB = "Glyph substitution data\nSpecifies ligatures, alternate glyphs,\npositional variants, contextual substitutions"; static char *str_tbl_JSTF = "Justification data\nAnother set of glyph substitutions\nspecifically for justification"; static char *str_tbl_DSIG = "Digital Signature"; static char *str_tbl_VORG = "Vertical Origin"; static char *str_Tbl_acnt = "Accent Attachement"; static char *str_Tbl_avar = "Axis Variation"; static char *str_Tbl_bdat = "Bitmap data (Apple version)"; static char *str_Tbl_bhed = "Bitmap font header\nSame as 'head' table\nMeans no outline data, just bitmaps"; static char *str_Tbl_bloc = "Bitmap location data (Apple version)"; static char *str_Tbl_bsln = "Baseline"; static char *str_Tbl_cvar = "CVT variation"; static char *str_Tbl_fdsc = "Font Descriptor"; static char *str_Tbl_feat = "Layout Features"; static char *str_Tbl_fmtx = "Font Metrics"; static char *str_Tbl_fvar = "Font variation"; static char *str_Tbl_gvar = "Glyph variation"; static char *str_Tbl_hsty = "Horizontal Style"; static char *str_Tbl_just = "Justification"; static char *str_Tbl_lcar = "Ligature caret"; static char *str_Tbl_mort = "Metamorphosis"; static char *str_Tbl_morx = "Extended Metamorphosis"; static char *str_Tbl_opbd = "Optical Bounds"; static char *str_Tbl_prop = "Properties"; static char *str_Tbl_trak = "Tracking"; static char *str_Tbl_Zapf = "Glyph Reference\nMaps glyphs to characters (unicode)\nand provides general character properties"; /* maxp */ static char *str_Version = "Version:"; static char mnemonic_Version = 'V'; static char *str_Glyphs = "Glyphs:"; static char mnemonic_Glyphs = 'G'; static char *str_Points = "Points:"; static char mnemonic_Points = 'P'; static char *str_Contours = "Contours:"; static char mnemonic_Contours = 'C'; static char *str_CompositPoints = "Composit Pts:"; static char mnemonic_CompositPoints = 'n'; static char *str_CompositContours = "Composit Cntrs:"; static char mnemonic_CompositContours = 'r'; static char *str_Zones = "Zones:"; static char mnemonic_Zones = 'Z'; static char *str_TwilightPoints = "Twilight Pts:"; static char mnemonic_TwilightPoints = 'T'; static char *str_Storage = "Storage:"; static char mnemonic_Storage = 'S'; static char *str_FDEFs = "FDEFs:"; static char mnemonic_FDEFs = 'F'; static char *str_IDEFs = "IDEFs:"; static char mnemonic_IDEFs = 'I'; static char *str_StackElements = "Stack Els:"; static char mnemonic_StackElements = 'E'; static char *str_SizeOfInstructions = "Size Of Instrs:"; static char mnemonic_SizeOfInstructions = 'u'; static char *str_ComponentElements = "Component Els:"; static char mnemonic_ComponentElements = 'l'; static char *str_ComponentDepth = "CDepth:"; static char mnemonic_ComponentDepth = 'D'; static char *str_ChangingGlyphCnt = "Changing Glyph Count"; static char *str_ReallyChangeGlyphCnt = "Changing the glyph count is rather dangerous.\nDo you really want to do that?"; /* OS/2 */ static char *str_General = "General"; static char *str_Alignment = "Alignment"; /* Super/Subscript/Strikeout */ static char *str_Panose = "Panose"; static char *str_Charsets = "Charsets"; static char *str_AvgWidth = "Average Width:" static char *str_UltraCondensed = "Ultra-Condensed (50%)" static char *str_ExtraCondensed = "Extra-Condensed (62.5%)" static char *str_Condensed75 = "Condensed (75%)" static char *str_SemiCondensed = "Semi-Condensed (87.5%)" static char *str_Medium100 = "Medium (100%)" static char *str_SemiExpanded = "Semi-Expanded (112.5%)" static char *str_Expanded125 = "Expanded (125%)" static char *str_ExtraExpanded = "Extra-Expanded (150%)" static char *str_UltraExpanded = "Ultra-Expanded (200%)" static char *str_Thin100 = "100 Thin"; static char *str_ExtraLight200 = "200 Extra-Light"; static char *str_Light300 = "300 Light"; static char *str_Book400 = "400 Book"; static char *str_Medium500 = "500 Medium"; static char *str_DemiBold600 = "600 Demi-Bold"; static char *str_Bold700 = "700 Bold"; static char *str_Heavy800 = "800 Heavy"; static char *str_Black900 = "900 Black"; static char *str_EmbeddablePopup = "Can this font be embedded in a downloadable (pdf)\ndocument and if so what behaviors are permitted on\nboth the document and the font.\nAlso known as FSType"; static char *str_Embeddable = "Embeddable:"; static char mnemonic_Embeddable = 'E'; static char *str_NeverEmbeddable = "Never Embed/No Editing"; static char *str_OnlyPrint = "Printable Document"; static char *str_EditableDoc = "Editable Document"; static char *str_Installable = "Installable Font"; static char *str_NoSubsetting = "No Subsetting"; static char *str_NoSubsettingPopup = "If set then the entire font must be\nembedded in a document when any character is.\nOtherwise the document creator need\nonly include the characters it uses."; static char *str_OnlyBitmaps = "Only Bitmaps"; static char *str_OnlyBitmapsPopup = "Only Bitmaps may be embedded\nOutline descriptions may not be\n(if font file contains no bitmaps\nthen nothing may be embedded)"; static char *str_Serif = "Serif"; static char *str_SansSerif = "Sans-Serif"; static char *str_Monospace = "Monospace"; static char *str_Script = "Script"; static char *str_Decorative = "Decorative"; static char *str_Any = "Any"; static char *str_NoFit = "No Fit"; static char *str_TextDisplay = "Text & Display"; static char *str_Pictoral = "Pictoral"; static char *str_Cove = "Cove"; static char *str_ObtuseCove = "Obtuse Cove"; static char *str_SquareCove = "Square Cove"; static char *str_ObtuseSquareCove = "Obtuse Square Cove"; static char *str_Square = "Square"; static char *str_Thin = "Thin"; static char *str_Bone = "Bone"; static char *str_Exaggerated = "Exaggerated"; static char *str_Triangle = "Triangle"; static char *str_NormalSans = "Normal Sans"; static char *str_ObtuseSans = "Obtuse Sans"; static char *str_PerpSans = "Perp Sans"; static char *str_Flared = "Flared"; static char *str_Rounded = "Rounded"; static char *str_VeryLight = "Very Light"; static char *str_Light = "Light"; static char *str_Book = "Book"; static char *str_Medium = "Medium"; static char *str_Demi = "Demi"; static char *str_Bold = "Bold"; static char *str_Heavy = "Heavy"; static char *str_Black = "Black"; static char *str_Nord = "Nord"; static char *str_OldStyle = "Old Style"; static char *str_Modern = "Modern"; static char *str_EvenWidth = "Even Width"; static char *str_Expanded = "Expanded"; static char *str_Condensed = "Condensed"; static char *str_VeryExpanded = "Very Expanded"; static char *str_VeryCondensed = "Very Condensed"; static char *str_Monospaced ="Monospaced"; static char *str_None ="None"; static char *str_VeryLow ="Very Low"; static char *str_Low ="Low"; static char *str_MediumLow ="Medium Low"; static char *str_MediumHigh ="Medium High"; static char *str_High ="High"; static char *str_VeryHigh ="Very High"; static char *str_GradDiag ="Gradual/Diagonal"; static char *str_GradTrans ="Gradual/Transitional"; static char *str_GradVert ="Gradual/Vertical"; static char *str_GradHor ="Gradual/Horizontal"; static char *str_RapidVert ="Rapid/Vertical"; static char *str_RapidHor ="Rapid/Horizontal"; static char *str_InstantVert ="Instant/Vertical"; static char *str_NormalContact ="Normal/Contact"; static char *str_NormalWeighted ="Normal/Weighted"; static char *str_NormalBoxed ="Normal/Boxed"; static char *str_NormalFlattened ="Normal/Flattened"; static char *str_NormalRounded ="Normal/Rounded"; static char *str_NormalOffCenter ="Normal/Off-Center"; static char *str_NormalSquare ="Normal/Square"; static char *str_ObliqueContact ="Oblique/Contact"; static char *str_ObliqueWeighted ="Oblique/Weighted"; static char *str_ObliqueBoxed ="Oblique/Boxed"; static char *str_ObliqueFlattened ="Oblique/Flattened"; static char *str_ObliqueRounded ="Oblique/Rounded"; static char *str_ObliqueOffCenter ="Oblique/Off-Center"; static char *str_ObliqueSquare ="Oblique/Square"; static char *str_StraightArmsH = "Straight Arms/Horizontal"; static char *str_StraightArmsW = "Straight Arms/Wedge"; static char *str_StraightArmsV = "Straight Arms/Vertical"; static char *str_StraightArmsSS = "Straight Arms/Single Serif"; static char *str_StraightArmsDS = "Straight Arms/Double Serif"; static char *str_NStraightArmsH = "Non-Straight Arms/Horizontal"; static char *str_NStraightArmsW = "Non-Straight Arms/Wedge"; static char *str_NStraightArmsV = "Non-Straight Arms/Vertical"; static char *str_NStraightArmsSS = "Non-Straight Arms/Single Serif"; static char *str_NStraightArmsDS = "Non-Straight Arms/Double Serif"; static char *str_StandardTrimmed = "Standard/Trimmed"; static char *str_StandardPointed = "Standard/Pointed"; static char *str_StandardSerifed = "Standard/Serifed"; static char *str_HighTrimmed = "High/Trimmed"; static char *str_HighPointed = "High/Pointed"; static char *str_HighSerifed = "High/Serifed"; static char *str_ConstantTrimmed = "Constant/Trimmed"; static char *str_ConstantPointed = "Constant/Pointed"; static char *str_ConstantSerifed = "Constant/Serifed"; static char *str_LowTrimmed = "Low/Trimmed"; static char *str_LowPointed = "Low/Pointed"; static char *str_LowSerifed = "Low/Serifed"; static char *str_ConstantSmall = "Constant/Small"; static char *str_ConstantStandard = "Constant/Standard"; static char *str_ConstantLarge = "Constant/Large"; static char *str_DuckingSmall = "Ducking/Small"; static char *str_DuckingStandard = "Ducking/Standard"; static char *str_DuckingLarge = "Ducking/Large"; static char *str_WidthClass ="Width Class:"; static char *str_6 = "6"; static char *str_7 = "7"; static char *str_8 = "8"; static char *str_9 = "9"; static char *str_10 = "10"; static char *str_11 = "11"; static char *str_12 = "12"; static char *str_13 = "13"; static char *str_14 = "14"; static char *str_15 = "15"; static char mnemonic_WidthClass ='C'; static char *str_WeightClass ="Weight Class:"; static char mnemonic_WeightClass ='W'; static char *str_Family ="Family"; static char mnemonic_Family ='F'; static char *str_Serifs ="Serifs"; static char mnemonic_Serifs ='S'; static char *str_Weight ="Weight"; static char mnemonic_Weight ='W'; static char *str_Proportion ="Proportion"; static char mnemonic_Proportion ='P'; static char *str_Contrast ="Contrast"; static char mnemonic_Contrast ='C'; static char *str_StrokeVar ="Stroke Variation"; static char mnemonic_StrokeVar ='V'; static char *str_ArmStyle ="Arm Style"; static char mnemonic_ArmStyle ='A'; static char *str_Letterform ="Letterform"; static char mnemonic_Letterform ='L'; static char *str_MidLine ="Midline"; static char mnemonic_MidLine ='M'; static char *str_XHeight ="X-Height"; static char mnemonic_XHeight ='X'; static char *str_SubXSize = "Sub X Size:"; static char *str_SubYSize = "Sub Y Size:"; static char *str_SubXOffset = "Sub X Offset:"; static char *str_SubYOffset = "Sub Y Offset:"; static char *str_SupXSize = "Sup X Size:"; static char *str_SupYSize = "Sup Y Size:"; static char *str_SupXOffset = "Sup X Offset:"; static char *str_SupYOffset = "Sup Y Offset:"; static char *str_StrikeSize = "Strikeout Size:"; static char *str_StrikePos = "Strikeout Pos:"; static char *str_IBMFamily = "IBM Family:" static char mnemonic_IBMFamily = 'I'; static char *str_NoClassification = "No Classification"; static char *str_OldStyleSerifs = "Old Style Serifs"; static char *str_OSSRoundedLegibility = "OSS Rounded Legibility"; static char *str_OSSGeralde = "OSS Geralde"; static char *str_OSSVenetian = "OSS Venetian"; static char *str_OSSModifiedVenetian = "OSS Modified Venetian"; static char *str_OSSDutchModern = "OSS Dutch Modern"; static char *str_OSSDutchTrad = "OSS Dutch Trad"; static char *str_OSSContemporary = "OSS Contemporary"; static char *str_OSSCaligraphic = "OSS Caligraphic"; static char *str_OSSMiscellaneous = "OSS Miscellaneous"; static char *str_TransitionalSerifs = "Transitional Serifs"; static char *str_TSDirectLine = "TS Direct Line"; static char *str_TSScript = "TS Script"; static char *str_TSMiscellaneous = "TS Miscellaneous"; static char *str_ModernSerifs = "Modern Serifs"; static char *str_MSItalian = "MS Italian"; static char *str_MSScript = "MS Script"; static char *str_MSMiscellaneous = "MS Miscellaneous"; static char *str_ClarendonSerifs = "Clarendon Serifs"; static char *str_CSClarendon = "CS Clarendon"; static char *str_CSModern = "CS Modern"; static char *str_CSTraditional = "CS Traditional"; static char *str_CSNewspaper = "CS Newspaper"; static char *str_CSStubSerif = "CS Stub Serif"; static char *str_CSMonotone = "CS Monotone"; static char *str_CSTypewriter = "CS Typewriter"; static char *str_CSMiscellaneous = "CS Miscellaneous"; static char *str_SlabSerifs = "Slab Serifs"; static char *str_SSMonotone = "SS Monotone"; static char *str_SSHumanist = "SS Humanist"; static char *str_SSGeometric = "SS Geometric"; static char *str_SSSwiss = "SS Swiss"; static char *str_SSTypewriter = "SS Typewriter"; static char *str_SSMiscellaneous = "SS Miscellaneous"; static char *str_FreeformSerifs = "Freeform Serifs"; static char *str_FSModern = "FS Modern"; static char *str_FSMiscellaneous = "FS Miscellaneous"; /*static char *str_SansSerif = "Sans Serif";*/ static char *str_SSIBMNeoGrotesqueGothic = "SS IBM NeoGrotesque Gothic"; /*static char *str_SSHumanist = "SS Humanist";*/ static char *str_SSLowxRoundGeometric = "SS Low-x Round Geometric"; static char *str_SSHighxRoundGeometric = "SS High-x Round Geometric"; static char *str_SSNeoGrotesqueGothic = "SS NeoGrotesque Gothic"; static char *str_SSModifiedGrotesqueGothic = "SS Modified Grotesque Gothic"; static char *str_SSTypewriterGothic = "SS Typewriter Gothic"; static char *str_SSMatrix = "SS Matrix"; /*static char *str_SSMiscellaneous = "SS Miscellaneous";*/ static char *str_Ornamentals = "Ornamentals"; static char *str_OEngraver = "O Engraver"; static char *str_OBlackLetter = "O Black Letter"; static char *str_ODecorative = "O Decorative"; static char *str_O3D = "O Three Dimensional"; static char *str_OMiscellaneous = "O Miscellaneous"; static char *str_Scripts = "Scripts"; static char *str_SUncial = "S Uncial"; static char *str_SBrushJoined = "S Brush Joined"; static char *str_SFormalJoined = "S Formal Joined"; static char *str_SMonotoneJoined = "S Monotone Joined"; static char *str_SCaligraphic = "S Caligraphic"; static char *str_SBrushUnjoined = "S Brush Unjoined"; static char *str_SFormalUnjoined = "S Formal Unjoined"; static char *str_SMonotoneUnjoined = "S Monotone Unjoined"; static char *str_SMiscellaneous = "S Miscellaneous"; static char *str_Symbolic = "Symbolic"; static char *str_SyMixedSerif = "Sy Mixed Serif"; static char *str_SyOldStyleSerif = "Sy Old Style Serif"; static char *str_SyNeoGrotesqueSansSerif = "Sy Neo-grotesque Sans Serif"; static char *str_SyMiscellaneous = "Sy Miscellaneous"; static char *str_VendorID = "Vendor ID:"; static char *mnemonic_VendorID = 'V'; static char *str_UnicodeRanges = "Unicode Ranges" static char *mnemonic_UnicodeRanges = 'U'; static char *str_BasicLatin = "Basic Latin 0000-007f"; static char *str_Latin1Sup = "Latin-1 Sup 0080-00ff"; static char *str_LatinExtA = "Latin Ext-A 0100-017f"; static char *str_LatinExtB = "Latin Ext-B 0180-024f"; static char *str_IPAExten = "IPA Extensions 0250-02Af"; static char *str_SpacingModLetters = "Spacing Mod Letters 02B0-02FF"; static char *str_CombiningDiacritics = "Combining Diacritics 0300-036F"; static char *str_UGreek = "Greek 0370-03FF"; static char *str_GreekSymCoptic = "Obsolete Greek Symbols & Coptic"; static char *str_Cyrillic = "Cyrillic 0400-052F"; static char *str_Armenian = "Armenian 0530-058F"; static char *str_UHebrew = "Hebrew 0590-05FF"; static char *str_HebrewExtended = "Obsolete Extended Hebrew"; static char *str_UArabic = "Arabic 0600-06FF"; static char *str_ArabicExtended = "Obsolete Extended Arabic"; static char *str_Devanagari = "Devanagari 0900-097F"; static char *str_Bengali = "Bengali 0980-09FF"; static char *str_Gurmukhi = "Gurmukhi 0A00-0A7F"; static char *str_Gujarati = "Gujarati 0A80-0AFF"; static char *str_Oriya = "Oriya 0B00-0B7F"; static char *str_Tamil = "Tamil 0B80-0BFF"; static char *str_Telegu = "Telegu 0C00-0C7F"; static char *str_Kannada = "Kannada 0C80-0CFF"; static char *str_Malayalam = "Malayalam 0D00-0D7F"; static char *str_Thai = "Thai 0E00-0E7F"; static char *str_Loa = "Loa 0E80-0EFF"; static char *str_Georgian = "Georgian 10A0-10FF"; static char *str_GeorgianExtended = "Obsolete Extended Georgian"; static char *str_HangulJamo = "Hangul Jamo 1100-11FF"; static char *str_LatinAdditional = "Latin Additional 1E00-1EFF"; static char *str_GreekAdditional = "Greek Additional 1F00-1FFF"; static char *str_Punctuation = "Punctuation 2000-206F"; static char *str_SubSuperscripts = "Sub/Super scripts 2070-209F"; static char *str_Currency = "Currency 20A0-20CF"; static char *str_CombSymbolDiac = "Combining Symbol Diacritics 20D0-20FF"; static char *str_LeterlikeSymbols = "Letterlike Symbols 2100-214F"; static char *str_NumberForms = "Number Forms 2150-218F"; static char *str_Arrows = "Arrows 2190-21FF"; static char *str_MathOpers = "Math Opers 2200-22FF"; static char *str_MiscTech = "Misc Technical 2300-23FF"; static char *str_ControlPictures = "Control Pictures 2400-233F"; static char *str_OCR = "OCR 2440-245F"; static char *str_EnclosedAlphanumerics = "Enclosed Alphanumerics 2460-24FF"; static char *str_BoxDrawing = "Box Drawing 2500-257F"; static char *str_BlockElements = "Block Elements 2580-259F"; static char *str_GeometricShapes = "Geometric Shapes 25A0-25FF"; static char *str_MiscSymbols = "Misc Symbols 2600-267F"; static char *str_Dingbats = "Dingbats 2700-27BF"; static char *str_CJKSymPunct = "CJK Symbols & Punct 3000-303F"; static char *str_Hiragana = "Hiragana 3040-309F"; static char *str_Katakana = "Katakana 30A0-30FF"; static char *str_Bopomofo = "Bopomofo 3100-312F, 3180-31AF"; static char *str_HangulCompatJamo = "Hangul Compat. Jamo 3130-318F"; static char *str_CJKMisc = "CJK Misc 31B0-31FF"; static char *str_EnclosedLettersMonths = "Enclosed Letters Months 3200-32FF"; static char *str_CJKCompat = "CJK Compatability 3300-33FF"; static char *str_Hangul = "Hangul AC00-D7AF"; static char *str_Surrogates = "Surrogates 10000-7FFFFFFF"; static char *str_Unassignedbit58 = "Unassigned bit 58"; static char *str_CJK = "CJK 2E80-29FF, 3400-9FFF"; static char *str_PrivateUse = "Private Use E000-F8FF"; static char *str_CJKCompatIdeo = "CJK Compat. Ideographs F900-FAFF"; static char *str_AlphabeticPresentationForms = "Alphabetic Forms FB00-FB4F"; static char *str_ArabicPresentationFormsA = "Arabic Forms-A FB50-FDFF"; static char *str_CombiningHalfMarks = "Combining Half Marks FE20-FE2F"; static char *str_CJKCompatForms = "CJK Compatability Forms FE30-FE4F"; static char *str_SmallForms = "Small Forms FE50-FE6F"; static char *str_ArabicPresentationFormsB = "Arabic Forms-B FE70-FEFF"; static char *str_HalfFullWidthForms = "Half/Full Width Forms FF00-FFEF"; static char *str_Specials = "Specials FFF0-FFFF"; static char *str_Tibetan = "Tibetan 0F00-0FFF"; static char *str_Syriac = "Syriac 0700-074F"; static char *str_Thaana = "Thaana 0780-07BF"; static char *str_Sinhala = "Sinhala 0D80-0DBF"; static char *str_Myanmar = "Myanmar 1000-109F"; static char *str_Ethiopic = "Ethiopic 1200-12FF"; static char *str_Cherokee = "Cherokee 13A0-13FF"; static char *str_UnitedCanSyl = "United Canadian Syllabics 1400-167F"; static char *str_Ogham = "Ogham 1680-169F"; static char *str_Runic = "Runic 16A0-16FF"; static char *str_Khmer = "Khmer 1780-17FF"; static char *str_Mongolian = "Mongolian 1800-18AF"; static char *str_Braille = "Braille 2800-28FF"; static char *str_Yi = "Yi & Yi Radicals A000-A4AF"; static char *str_Unassignedbit84 = "Unassigned bit 84"; static char *str_Add = "Add"; static char *str_Remove = "Remove"; static char *str_FirstUnicode = "First Unicode:"; static char *str_LastUnicode = "Last:"; static char *str_Selection = "Selection:"; static char *str_Italic = "Italic"; static char *str_Underscore = "Underscore"; static char *str_Negative = "Negative"; static char *str_Outlined = "Outlined"; static char *str_Strikeout = "Strikeout"; static char *str_Regular = "Regular"; static char *str_CodePages = "CodePages:"; static char *str_CPLatin1 = "1252 Latin1"; static char *str_CPLatin2 = "1250 Latin2"; static char *str_CPCyrillic = "1251 Cyrillic"; static char *str_CPGreek = "1253 Greek"; static char *str_CPTurkish = "1254 Turkish"; static char *str_CPHebrew = "1255 Hebrew"; static char *str_CPArabic = "1256 Arabic"; static char *str_CPBaltic = "1257 Windows Baltic"; static char *str_CPVietnamese = "1258 Vietnamese"; static char *str_CPThai = "874 Thai"; static char *str_CPJapan = "932 JIS/Japan"; static char *str_CPSimplifiedChinese = "936 Simplified Chinese"; static char *str_CPWansung = "949 Korean Wansung"; static char *str_CPTraditionalChinese = "950 Traditional Chinese"; static char *str_CPJohab = "1361 Korean Johab"; static char *str_CPMac = "Mac Roman"; static char *str_CPOEM = "OEM Charset"; static char *str_CPSymbol = "Symbol Charset"; static char *str_CPIBMGreek = "869 IBM Greek"; static char *str_CPDOSRussian = "866 MS/DOS Russian"; static char *str_CPDOSNordic = "865 MS/DOS Nordic"; static char *str_CPArabic2 = "864 Arabic"; static char *str_CPDOSFrench = "863 MS/DOS Canadian French"; static char *str_CPHebrew2 = "862 Hebrew"; static char *str_CPDOSIcelandic = "861 MS/DOS Icelandic"; static char *str_CPDOSPortuguese = "860 MS/DOS Portuguese"; static char *str_CPIBMTurkish = "857 IBM Turkish"; static char *str_CPIBMCyrillic = "855 IBM Cyrillic"; static char *str_CPLatin22 = "852 Latin2"; static char *str_CPIBMBaltic = "775 IBM Baltic"; static char *str_CPGreek3 = "737 Greek"; static char *str_CPArabic3 = "708 Arabic"; static char *str_CPLatin12 = "850 WE/Latin1"; static char *str_CPUS = "437 US"; static char *str_Typography = "Typo"; static char *str_TypoAscender = "Ascender:"; static char *str_TypoDescender = "Descender:"; static char *str_TypoRight = "Typo Right:"; static char *str_TypoLeft = "Typo Left:"; static char *str_TypoLineGap = "Line Gap:"; static char *str_TypoLineSpacing = "Line Spacing:"; static char *str_WinAscent = "Win Ascent:"; static char *str_WinDescent = "Win Descent:"; static char *str_XHeightC = "X-Height:"; static char *str_CapHeightC = "Cap-Height:"; static char *str_DefaultChar = "Default Char:"; static char *str_BreakChar = "Break Char:"; static char *str_MaxContext = "Max Context:"; /* name */ /* Platforms */ static char *str_AppleUnicode = "Unicode"; static char *str_Mac = "Mac"; static char *str_ISO = "ISO"; static char *str_Microsoft = "MS"; /* Apple Unicode Specific */ static char *str_Default = "Default"; static char *str_Unicode1 = "Unicode 1.0"; static char *str_Unicode11 = "Unicode 1.1"; static char *str_Unicode2 = "Unicode 2.0"; /* ISO Specific */ static char *str_ASCII = "ASCII"; /* ISO 646-1 */ static char *str_ISO106461 = "ISO 10646-1"; static char *str_ISO88591 = "ISO 8859-1"; /* MS Specific */ static char *str_Unicode = "Unicode"; /* Mac Specific */ static char *str_ApRoman = "Roman"; static char *str_ApJapanese = "Japanese"; static char *str_ApChinese = "Chinese"; static char *str_ApKorean = "Korean"; static char *str_ApArabic = "Arabic"; static char *str_ApHebrew = "Hebrew"; static char *str_ApGreek = "Greek"; static char *str_ApRussian = "Russian"; static char *str_ApRSymbol = "RSymbol"; static char *str_ApDevanagari = "Devanagari"; static char *str_ApGurmukhi = "Gurmukhi"; static char *str_ApGujarati = "Gujarati"; static char *str_ApOriya = "Oriya"; static char *str_ApBengali = "Bengali"; static char *str_ApTamil = "Tamil"; static char *str_ApTelugu = "Telugu"; static char *str_ApKannada = "Kannada"; static char *str_ApMalayalam = "Malayalam"; static char *str_ApSinhalese = "Sinhalese"; static char *str_ApBurmese = "Burmese"; static char *str_ApKhmer = "Khmer"; static char *str_ApThai = "Thai"; static char *str_ApLoatian = "Loatian"; static char *str_ApGeorgian = "Georgian"; static char *str_ApArmenian = "Armenian"; static char *str_ApMaldivian = "Maldivian"; static char *str_ApTibetan = "Tibetan"; static char *str_ApMongolian = "Mongolian"; static char *str_ApGeez = "Geez"; static char *str_ApSlavic = "Slavic"; static char *str_ApVietnamese = "Vietnamese"; static char *str_ApSindhi = "Sindhi"; static char *str_Uninterpreted = "Uninterp"; /* Apple Language list */ static char *str_ApEnglish = "English"; static char *str_ApFrench = "French"; static char *str_ApGerman = "German"; static char *str_ApItalian = "Italian"; static char *str_ApDutch = "Dutch"; static char *str_ApSwedish = "Swedish"; static char *str_ApSpanish = "Spanish"; static char *str_ApDanish = "Danish"; static char *str_ApPortuguese = "Portuguese"; static char *str_ApNorwegian = "Norwegian"; static char *str_ApFinnish = "Finnish"; static char *str_ApIcelandic = "Icelandic"; static char *str_ApMaltese = "Maltese"; static char *str_ApTurkish = "Turkish"; static char *str_ApYugoslavian = "Yugoslavian"; static char *str_ApUrdu = "Urdu"; static char *str_ApHindi = "Hindi"; /* MS Language list */ /* Language & Country (where applicable) in the native language if I can find */ /* it, in english if I can't. Followed by the 2char language _ 2char country */ /* (again country isn't always applicable. Should basque be ES, FR? */ static char *str_Albanian = "Albanian sq_AL"; static char *str_Arabic = "Arabic ar"; static char *str_Basque = "Basque eu"; static char *str_Byelorussian = "Byelorussian be_BY"; static char *str_Bulgarian = "Bulgarian bg_BG"; static char *str_Catalan = "Catalan ca"; static char *str_MSChinese = "Chinese zh_CN"; static char *str_Croatian = "Croatian hr"; static char *str_Czech = "Czech cs_CZ"; static char *str_Danish = "Dansk da_DK"; static char *str_Dutch = "Nederlands nl_NL"; static char *str_Flemish = "Nederlands nl_BE"; static char *str_BrEnglish = "British English en_UK"; static char *str_AmEnglish = "American English en_US"; static char *str_CaEnglish = "Canadian English en_CA"; static char *str_AuEnglish = "Australian English en_AU"; static char *str_NZEnglish = "New Zeeland English en_NZ"; static char *str_IEEnglish = "Irish English en_IE"; static char *str_Estonia = "Estonian et_EE"; static char *str_Finnish = "Suomi fi_FI"; static char *str_FRFrench = "Français Français fr_FR"; static char *str_BEFrench = "Français Belgique fr_BE"; static char *str_CAFrench = "Français Canadien fr_CA"; static char *str_CHFrench = "Français Suiss fr_CH"; static char *str_LUFrench = "Français de Luxembourg fr_LU"; static char *str_DEGerman = "Deutsch Deutsch de_DE"; static char *str_CHGerman = "Schweizer Deutsch de_CH"; static char *str_ATGerman = "Österreichisch Deutsch de_AT"; static char *str_LUGerman = "Luxembourg Deutsch de_LU"; static char *str_LIGerman = "Liechtenstein Deutsch de_LI"; static char *str_Greek = "Greek el_GR"; static char *str_Hebrew = "Hebrew he_IL"; static char *str_Hungarian = "Hungarian hu_HU"; static char *str_Icelandic = "Icelandic is_IS"; static char *str_Italian = "Italiano it_IT"; static char *str_CHItalian = "Italiano Swiss it_CH"; static char *str_Japanese = "Japanese jp_JP"; static char *str_Latvian = "Latvian lv_LV"; static char *str_Lithuanian = "Lithuanian lt_LT"; static char *str_Norwegian = "Norsk Bokmal no_NO"; static char *str_NorwegianN = "Norsk Nynorsk no_NO"; static char *str_Polish = "Polish pl_PL"; static char *str_PTPortuguese = "Português Português pt_PT"; static char *str_BRPortuguese = "Português Brasil pt_BR"; static char *str_Romanian = "Romanian ro_RO"; static unichar_t str_Russian = { 0x420, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, ' ', 'r','u','_','R','U', '\0' }; static char *str_Slovak = "Slovak sk_SK"; static char *str_Slovenian = "Slovenian sl_SI"; static char *str_TradSpanish = "Español Español es_ES"; static char *str_MXSpanish = "Español Méjico es_MX"; static char *str_ModSpanish = "Español Español es_ES"; static char *str_Swedish = "Svensk sv_SE"; static char *str_Turkish = "Turkish tr_TR"; static char *str_Ukrainian = "Ukrainian uk_UA"; /* String types */ static char *str_Copyright = "Copyright"; static char *str_SubFamily = "SubFamily"; static char *str_UniqueID = "UniqueID"; static char *str_Fullname = "Fullname"; static char *str_Trademark = "Trademark"; static char *str_PostscriptName = "PS FontName"; static char *str_Manufacturer = "Manufacturer"; static char *str_Designer = "Designer"; static char *str_Descriptor = "Descriptor"; static char *str_VendorURL = "Vendor URL"; static char *str_DesignerURL = "Designer URL"; static char *str_License = "License"; static char *str_LicenseURL = "License URL"; static char *str_OTFFamily = "Preferred Family"; static char *str_OTFStyles = "Preferred Styles"; static char *str_CompatableFull = "Compatable Full"; static char *str_SampleText = "Sample Text"; static char *str_FontRevision = "Font Revision:"; static char *str_Checksum = "Checksum:"; static char *str_MagicNumber = "Magic Number:"; static char *str_Flags = "Flags:"; static char *str_Baseliney0 = "Baseline at y==0"; static char *str_LBearingx0 = "LBearing at x==0"; static char *str_InstrsDepOnPointsize = "Instrs Depend on Pointsize"; static char *str_ForcePPEMInt = "Force PPEM to integer"; static char *str_InstrsAlterWidth = "Instrs Alter Width"; static char *str_VerticalLayout = "Vertical Layout"; /*static char *str_Arabic = "Arabic";*/ static char *str_GXWithMetamorphosis = "GX With Metamorphosis"; static char *str_ContainsRightToLeft = "Contains Right To Left"; static char *str_Indic = "Indic"; static char *str_Lossless = "Lossless"; static char *str_FontConverted = "Font Converted"; static char *str_ClearType = "Clear Type"; static char *str_UnitsPerEm = "Units Per Em:"; static char *str_Created = "Created:"; static char *str_Modified = "Modified:"; static char *str_XMin = "XMin:"; static char *str_XMax = "XMax:"; static char *str_YMin = "YMin:"; static char *str_YMax = "YMax:"; static char *str_MacStyle = "Mac Style:"; static char *str_Underline = "Underline"; static char *str_Outline = "Outline"; static char *str_Shadow = "Shadow"; /*static char *str_Condensed = "Condensed";*/ static char *str_Extended = "Extended"; static char *str_SmallestSize = "Smallest Size:"; static char *str_FontDirection = "Font Direction:"; static char *str_FullyMixed = "Fully Mixed"; static char *str_StronglyLeftToRight = "Strongly Left To Right"; static char *str_LtoROrNeutral = "LtoR Or Neutral"; static char *str_StronglyRightToLeft = "Strongly Right To Left"; static char *str_RToLOrNeutral = "RToL Or Neutral"; static char *str_LocaFormat = "loca Format:"; static char *str_16bit = "16 bit"; static char *str_32bit = "32 bit"; static char *str_GlyfFormat = "glyf Format:"; /* metrics headers (hhea,vhea) */ static char *str_Ascent = "Ascent:"; static char *str_Descent = "Descent:"; static char *str_AdvanceMax = "Advance Max:"; static char *str_MinLeftBearing = "Min LBearing:"; static char *str_MinRightBearing = "Min RBearing:"; static char *str_MinTopBearing = "Min TBearing:"; static char *str_MinBottomBearing = "Min BBearing:"; static char *str_XMaxExtent = "X Max Extent:"; static char *str_YMaxExtent = "Y Max Extent:"; static char *str_CaretRise = "Caret Rise:"; static char *str_CaretRun = "Caret Run:"; static char *str_CaretOffset = "Caret Offset:"; static char *str_DataFormat = "Data Format:"; static char *str_MetricsCount = "Metrics Count:"; static char *str_ChangingMetricsCount = "Changing Metrics Count"; static char *str_ReallyChangeMetricsCnt = "Changing the long metrics count is rather dangerous.\nDo you really want to do that?"; /* metrics data (hmtx,vmtx) */ static char *str_GrowLongMetrics = "Do you want to exend the metrics table?"; static char *str_GrowLongMetricsSize = "You are attempting to change the width\nof a glyph whose width is currently set\nby default. Making this change requires\na change in the table format and the\n*hea table.\nIs that what you want?" /* post table */ static char *str_Names = "Names"; static char *str_Encoding = "Encoding"; static char *str_MaxMemType1 = "Max:"; static char *str_MinMemType1 = "Min Memory (Type1):"; static char *str_MaxMemType42 = "Max:"; static char *str_MinMemType42 = "Min Memory (Type42):"; static char *str_IsFixed = "Is Fixed:"; static char *str_ItalicAngle = "Italic Angle:"; static char *str_UnderlinePos = "Underline Pos:"; static char *str_UnderlineHeight = "Size:"; static char *str_PostVersion4 = "A table version of 4 for the post table\nspecifies an encoding rather than\na list of character names. All names\nwill be lost.\nIs that what you want?"; static char *str_PostNamesLost = "All names will be lost"; static char *str_PostVersion3 = "A table version of 3 for the post table\nspecifies there are no postscript names\nAll names will be lost.\nIs that what you want?"; static char *str_PostEncLost = "Encoding will be lost"; static char *str_PostNotVersion4 = "A table version other than 4.0 for the post table\nDoes not include the encoding\nIt will be lost.\nIs that what you want?"; static char *str_PostVersion1Len = "A table version of 1 for the post table\ncan specify at most 258 glyph names\nThis font has more glyphs, those beyond\n258 will not have names.\nIs that what you want?"; static char *str_PostVersion1 = "A table version of 1 for the post table\nonly works for macintosh encodings\nYou can't use it with the names in this font."; static char *str_PostVersion2_5 = "A table version of 2.5 for the post table\nonly works for rearrangements of macintosh encodings\nYou can't use it with the names in this font.\n(And it's depreciated anyway)"; static char *str_PostVersionFailure = "This version may not work for these names"; static char *str_Yes = "Yes"; static char *str_No = "No"; static char *str_BadPSName = "Bad PostScript Name"; static char *str_BadPSNameEmpty = "You must provide a name"; static char *str_BadPSNameChar = "A PostScript name may not include '()[]{}<>%/'\nIt must be entirely printable ASCII\nIt may not contain a space"; static char *str_BadPSNameNotNumber = "A PostScript name may not be a number"; static char *str_BadNumber = "Bad Number"; static char *str_NumberOutOfRange = "Number out of range\nMust be between %d and %d"; static char *str_BinaryEdit = "Edited with Binary Editor"; static char *str_BinaryEditSave = "This table has been edited with\nthe binary editor. You must save\nthe font before you can edit it\nhere."; /* cvt table (shorts) */ static char *str_RetainChanges = "Retain Changes?"; static char *str_BadNumberCloseAnyway = "Bad Number, Close Anyway?"; /* ttfsave */ static char *str_NoBackup="Couldn't create backup file"; static char *str_CouldntWriteBackup="Couldnt Write Backup File"; static char *str_CouldntReopenFile="Couldn't open ttf file"; static char *str_CantCreate="Can't create file"; static char *str_CantCreateFile="Can't create file: %.100hs"; static char *str_SaveFailed="Save Failed!"; static char *str_SaveFailedOn="Attempt to save %.100hs failed."; static char *str_CantRecoverFromSave="Can't recover from failed save."; /* gasp */ static char *str_Count = "Count:"; static char *str_GridFit = "GridFit"; static char *str_AntiAlias = "AntiAlias"; static char *str_BadInteger = "Bad Integer"; /* VORG */ static char *str_Minor = "Minor:"; static char *str_DefYOrig = "Default Y Origin:"; static char *str_AddOrig = "Additional Origins:"; /* fontview */ static char *str_CouldntReadGlyphs = "Couldn't read glyphs"; /* charview */ static char *str_CouldntReadGlyph = "Couldn't read glyph"; static char *str_CouldntReadGlyphd = "Couldn't read glyph %d"; /* instrmod.c */ static char *str_Pushes = "Pushes"; static char *str_UBytes = "Unsigned Bytes"; static char *str_Shorts = "Signed Shorts"; static char *str_Stack = "Stack Manipulation"; static char *str_StorageOps = "Storage Ops."; static char *str_Unary = "Unary Ops."; static char *str_Binary = "Binary Ops."; static char *str_Logical = "Logical Ops."; static char *str_Conditional = "Conditional Ops."; static char *str_Routines = "Functions"; static char *str_Vectors = "Vectors"; static char *str_SetState = "Set State"; static char *str_SetRegisters = "Set Registers"; static char *str_GetInfo = "Get Info"; static char *str_PointState = "PointState"; static char *str_MovePoints = "MovePoints"; static char *str_MDRP = "MDRP"; static char *str_MIRP = "MIRP"; static char *str_Deltas = "Deltas"; static char *str_NoInstruction = "No Instruction"; static char *str_CouldntParseInstr = "Couldn't Parse Instruction: %s"; static char *str_ValueOutOfBounds = "Value Out Of Bounds"; static char *str_ValueMustBeShort = "Value must be between -32768 and 32767"; static int num_buttonsize = 55; static int num_ScaleFactor = 100; mensis-080507/nomen.h0100664000076500007650000005253211010400336012604 0ustar gwwgww#ifndef _NOMEN_H #define _NOMEN_H #include #include #include /* "File, %s, exists. Replace it?" */ /* Menus ... */ #define _STR_File 16 #define _STR_Edit 17 #define _STR_View 18 #define _STR_Window 19 #define _STR_Help 20 #define _STR_Recent 21 #define _STR_Revertfile 22 #define _STR_RevertTable 23 #define _STR_SaveAs 24 #define _STR_Close 25 #define _STR_Prefs 26 #define _STR_Quit 27 #define _STR_Undo 28 #define _STR_Redo 29 #define _STR_Cut 30 #define _STR_Copy 31 #define _STR_Paste 32 #define _STR_Clear 33 #define _STR_Fit 34 #define _STR_Zoomin 35 #define _STR_Zoomout 36 #define _STR_NextChar 37 #define _STR_PrevChar 38 #define _STR_Goto 39 #define _STR_ShowInstrs 40 #define _STR_HideInstrs 41 #define _STR_ShowAddress 42 #define _STR_HideAddress 43 #define _STR_ShowGloss 44 #define _STR_HideGloss 45 #define _STR_ShowFore 46 #define _STR_HideFore 47 #define _STR_ShowGrid 48 #define _STR_HideGrid 49 #define _STR_ShowGridFit 50 #define _STR_HideGridFit 51 #define _STR_ShowRaster 52 #define _STR_HideRaster 53 #define _STR_ShowTwilight 54 #define _STR_HideTwilight 55 #define _STR_GridSize 56 #define _STR_Mensis 57 #define _STR_OpenTtf 58 #define _STR_TabMod 59 #define _STR_TabModNotBinary 60 #define _STR_ReallyRevert 61 #define _STR_RevertFailed 62 #define _STR_FontChanged 63 #define _STR_FontChangedSave 64 #define _STR_FontChangedSavem 65 #define _STR_TablesOpen 66 #define _STR_TablesOpenSave 67 #define _STR_TablesOpenSavem 68 #define _STR_TablesOpenProcess 69 #define _STR_TableNameMismatch 70 #define _STR_TableMismatch 71 #define _STR_RestrictedRightsFont 72 #define _STR_RestrictedFont 73 #define _STR_Badnumberin 74 #define _STR_Tbl_cmap 75 #define _STR_Tbl_glyf 76 #define _STR_Tbl_head 77 #define _STR_Tbl_hhea 78 #define _STR_Tbl_hmtx 79 #define _STR_Tbl_loca 80 #define _STR_Tbl_maxp 81 #define _STR_Tbl_name 82 #define _STR_Tbl_post 83 #define _STR_Tbl_OS2 84 #define _STR_Tbl_cvt 85 #define _STR_Tbl_EBDT 86 #define _STR_Tbl_EBLC 87 #define _STR_Tbl_EBSC 88 #define _STR_Tbl_fpgm 89 #define _STR_Tbl_gasp 90 #define _STR_Tbl_hdmx 91 #define _STR_Tbl_kern 92 #define _STR_Tbl_LTSH 93 #define _STR_Tbl_prep 94 #define _STR_Tbl_PCLT 95 #define _STR_Tbl_VDMX 96 #define _STR_Tbl_vhea 97 #define _STR_Tbl_vmtx 98 #define _STR_Tbl_CFF 99 /*static char *str_tbl_fvar = "Obsolete multiple master table"*/ #define _STR_Tbl_MMSD 100 #define _STR_Tbl_MMFX 101 #define _STR_Tbl_BASE 102 #define _STR_Tbl_GDEF 103 #define _STR_Tbl_GPOS 104 #define _STR_Tbl_GSUB 105 #define _STR_Tbl_JSTF 106 #define _STR_Tbl_DSIG 107 #define _STR_Tbl_VORG 108 #define _STR_Tbl_acnt 109 #define _STR_Tbl_avar 110 #define _STR_Tbl_bdat 111 #define _STR_Tbl_bhed 112 #define _STR_Tbl_bloc 113 #define _STR_Tbl_bsln 114 #define _STR_Tbl_cvar 115 #define _STR_Tbl_fdsc 116 #define _STR_Tbl_feat 117 #define _STR_Tbl_fmtx 118 #define _STR_Tbl_fvar 119 #define _STR_Tbl_gvar 120 #define _STR_Tbl_hsty 121 #define _STR_Tbl_just 122 #define _STR_Tbl_lcar 123 #define _STR_Tbl_mort 124 #define _STR_Tbl_morx 125 #define _STR_Tbl_opbd 126 #define _STR_Tbl_prop 127 #define _STR_Tbl_trak 128 #define _STR_Tbl_Zapf 129 #define _STR_Version 130 #define _STR_Glyphs 131 #define _STR_Points 132 #define _STR_Contours 133 #define _STR_CompositPoints 134 #define _STR_CompositContours 135 #define _STR_Zones 136 #define _STR_TwilightPoints 137 #define _STR_Storage 138 #define _STR_FDEFs 139 #define _STR_IDEFs 140 #define _STR_StackElements 141 #define _STR_SizeOfInstructions 142 #define _STR_ComponentElements 143 #define _STR_ComponentDepth 144 #define _STR_ChangingGlyphCnt 145 #define _STR_ReallyChangeGlyphCnt 146 /* OS/2 */ #define _STR_General 147 #define _STR_Alignment 148 #define _STR_Panose 149 #define _STR_Charsets 150 #define _STR_AvgWidth 151 #define _STR_UltraCondensed 152 #define _STR_ExtraCondensed 153 #define _STR_Condensed75 154 #define _STR_SemiCondensed 155 #define _STR_Medium100 156 #define _STR_SemiExpanded 157 #define _STR_Expanded125 158 #define _STR_ExtraExpanded 159 #define _STR_UltraExpanded 160 #define _STR_Thin100 161 #define _STR_ExtraLight200 162 #define _STR_Light300 163 #define _STR_Book400 164 #define _STR_Medium500 165 #define _STR_DemiBold600 166 #define _STR_Bold700 167 #define _STR_Heavy800 168 #define _STR_Black900 169 #define _STR_EmbeddablePopup 170 #define _STR_Embeddable 171 #define _STR_NeverEmbeddable 172 #define _STR_OnlyPrint 173 #define _STR_EditableDoc 174 #define _STR_Installable 175 #define _STR_NoSubsetting 176 #define _STR_NoSubsettingPopup 177 #define _STR_OnlyBitmaps 178 #define _STR_OnlyBitmapsPopup 179 #define _STR_Serif 180 #define _STR_SansSerif 181 #define _STR_Monospace 182 #define _STR_Script 183 #define _STR_Decorative 184 #define _STR_Any 185 #define _STR_NoFit 186 #define _STR_TextDisplay 187 #define _STR_Pictoral 188 #define _STR_Cove 189 #define _STR_ObtuseCove 190 #define _STR_SquareCove 191 #define _STR_ObtuseSquareCove 192 #define _STR_Square 193 #define _STR_Thin 194 #define _STR_Bone 195 #define _STR_Exaggerated 196 #define _STR_Triangle 197 #define _STR_NormalSans 198 #define _STR_ObtuseSans 199 #define _STR_PerpSans 200 #define _STR_Flared 201 #define _STR_Rounded 202 #define _STR_VeryLight 203 #define _STR_Light 204 #define _STR_Book 205 #define _STR_Medium 206 #define _STR_Demi 207 #define _STR_Bold 208 #define _STR_Heavy 209 #define _STR_Black 210 #define _STR_Nord 211 #define _STR_OldStyle 212 #define _STR_Modern 213 #define _STR_EvenWidth 214 #define _STR_Expanded 215 #define _STR_Condensed 216 #define _STR_VeryExpanded 217 #define _STR_VeryCondensed 218 #define _STR_Monospaced 219 #define _STR_VeryLow 220 #define _STR_Low 221 #define _STR_MediumLow 222 #define _STR_MediumHigh 223 #define _STR_High 224 #define _STR_VeryHigh 225 #define _STR_GradDiag 226 #define _STR_GradTrans 227 #define _STR_GradVert 228 #define _STR_GradHor 229 #define _STR_RapidVert 230 #define _STR_RapidHor 231 #define _STR_InstantVert 232 #define _STR_NormalContact 233 #define _STR_NormalWeighted 234 #define _STR_NormalBoxed 235 #define _STR_NormalFlattened 236 #define _STR_NormalRounded 237 #define _STR_NormalOffCenter 238 #define _STR_NormalSquare 239 #define _STR_ObliqueContact 240 #define _STR_ObliqueWeighted 241 #define _STR_ObliqueBoxed 242 #define _STR_ObliqueFlattened 243 #define _STR_ObliqueRounded 244 #define _STR_ObliqueOffCenter 245 #define _STR_ObliqueSquare 246 #define _STR_StraightArmsH 247 #define _STR_StraightArmsW 248 #define _STR_StraightArmsV 249 #define _STR_StraightArmsSS 250 #define _STR_StraightArmsDS 251 #define _STR_NStraightArmsH 252 #define _STR_NStraightArmsW 253 #define _STR_NStraightArmsV 254 #define _STR_NStraightArmsSS 255 #define _STR_NStraightArmsDS 256 #define _STR_StandardTrimmed 257 #define _STR_StandardPointed 258 #define _STR_StandardSerifed 259 #define _STR_HighTrimmed 260 #define _STR_HighPointed 261 #define _STR_HighSerifed 262 #define _STR_ConstantTrimmed 263 #define _STR_ConstantPointed 264 #define _STR_ConstantSerifed 265 #define _STR_LowTrimmed 266 #define _STR_LowPointed 267 #define _STR_LowSerifed 268 #define _STR_ConstantSmall 269 #define _STR_ConstantStandard 270 #define _STR_ConstantLarge 271 #define _STR_DuckingSmall 272 #define _STR_DuckingStandard 273 #define _STR_DuckingLarge 274 #define _STR_WidthClass 275 #define _STR_WeightClass 276 #define _STR_Family 277 #define _STR_Serifs 278 #define _STR_Weight 279 #define _STR_Proportion 280 #define _STR_Contrast 281 #define _STR_StrokeVar 282 #define _STR_ArmStyle 283 #define _STR_Letterform 284 #define _STR_MidLine 285 #define _STR_XHeight 286 #define _STR_SubXSize 287 #define _STR_SubYSize 288 #define _STR_SubXOffset 289 #define _STR_SubYOffset 290 #define _STR_SupXSize 291 #define _STR_SupYSize 292 #define _STR_SupXOffset 293 #define _STR_SupYOffset 294 #define _STR_StrikeSize 295 #define _STR_StrikePos 296 #define _STR_IBMFamily 297 #define _STR_NoClassification 298 #define _STR_OldStyleSerifs 299 #define _STR_OSSRoundedLegibility 300 #define _STR_OSSGeralde 301 #define _STR_OSSVenetian 302 #define _STR_OSSModifiedVenetian 303 #define _STR_OSSDutchModern 304 #define _STR_OSSDutchTrad 305 #define _STR_OSSContemporary 306 #define _STR_OSSCaligraphic 307 #define _STR_OSSMiscellaneous 308 #define _STR_TransitionalSerifs 309 #define _STR_TSDirectLine 310 #define _STR_TSScript 311 #define _STR_TSMiscellaneous 312 #define _STR_ModernSerifs 313 #define _STR_MSItalian 314 #define _STR_MSScript 315 #define _STR_MSMiscellaneous 316 #define _STR_ClarendonSerifs 317 #define _STR_CSClarendon 318 #define _STR_CSModern 319 #define _STR_CSTraditional 320 #define _STR_CSNewspaper 321 #define _STR_CSStubSerif 322 #define _STR_CSMonotone 323 #define _STR_CSTypewriter 324 #define _STR_CSMiscellaneous 325 #define _STR_SlabSerifs 326 #define _STR_SSMonotone 327 #define _STR_SSHumanist 328 #define _STR_SSGeometric 329 #define _STR_SSSwiss 330 #define _STR_SSTypewriter 331 #define _STR_SSMiscellaneous 332 #define _STR_FreeformSerifs 333 #define _STR_FSModern 334 #define _STR_FSMiscellaneous 335 /*static char *str_SansSerif = "Sans Serif";*/ #define _STR_SSIBMNeoGrotesqueGothic 336 /*static char *str_SSHumanist = "SS Humanist";*/ #define _STR_SSLowxRoundGeometric 337 #define _STR_SSHighxRoundGeometric 338 #define _STR_SSNeoGrotesqueGothic 339 #define _STR_SSModifiedGrotesqueGothic 340 #define _STR_SSTypewriterGothic 341 #define _STR_SSMatrix 342 /*static char *str_SSMiscellaneous = "SS Miscellaneous";*/ #define _STR_Ornamentals 343 #define _STR_OEngraver 344 #define _STR_OBlackLetter 345 #define _STR_ODecorative 346 #define _STR_O3D 347 #define _STR_OMiscellaneous 348 #define _STR_Scripts 349 #define _STR_SUncial 350 #define _STR_SBrushJoined 351 #define _STR_SFormalJoined 352 #define _STR_SMonotoneJoined 353 #define _STR_SCaligraphic 354 #define _STR_SBrushUnjoined 355 #define _STR_SFormalUnjoined 356 #define _STR_SMonotoneUnjoined 357 #define _STR_SMiscellaneous 358 #define _STR_Symbolic 359 #define _STR_SyMixedSerif 360 #define _STR_SyOldStyleSerif 361 #define _STR_SyNeoGrotesqueSansSerif 362 #define _STR_SyMiscellaneous 363 #define _STR_VendorID 364 #define _STR_UnicodeRanges 365 #define _STR_BasicLatin 366 #define _STR_Latin1Sup 367 #define _STR_LatinExtA 368 #define _STR_LatinExtB 369 #define _STR_IPAExten 370 #define _STR_SpacingModLetters 371 #define _STR_CombiningDiacritics 372 #define _STR_UGreek 373 #define _STR_GreekSymCoptic 374 #define _STR_Cyrillic 375 #define _STR_Armenian 376 #define _STR_UHebrew 377 #define _STR_HebrewExtended 378 #define _STR_UArabic 379 #define _STR_ArabicExtended 380 #define _STR_Devanagari 381 #define _STR_Bengali 382 #define _STR_Gurmukhi 383 #define _STR_Gujarati 384 #define _STR_Oriya 385 #define _STR_Tamil 386 #define _STR_Telegu 387 #define _STR_Kannada 388 #define _STR_Malayalam 389 #define _STR_Thai 390 #define _STR_Loa 391 #define _STR_Georgian 392 #define _STR_GeorgianExtended 393 #define _STR_HangulJamo 394 #define _STR_LatinAdditional 395 #define _STR_GreekAdditional 396 #define _STR_Punctuation 397 #define _STR_SubSuperscripts 398 #define _STR_Currency 399 #define _STR_CombSymbolDiac 400 #define _STR_LeterlikeSymbols 401 #define _STR_NumberForms 402 #define _STR_Arrows 403 #define _STR_MathOpers 404 #define _STR_MiscTech 405 #define _STR_ControlPictures 406 #define _STR_OCR 407 #define _STR_EnclosedAlphanumerics 408 #define _STR_BoxDrawing 409 #define _STR_BlockElements 410 #define _STR_GeometricShapes 411 #define _STR_MiscSymbols 412 #define _STR_Dingbats 413 #define _STR_CJKSymPunct 414 #define _STR_Hiragana 415 #define _STR_Katakana 416 #define _STR_Bopomofo 417 #define _STR_HangulCompatJamo 418 #define _STR_CJKMisc 419 #define _STR_EnclosedLettersMonths 420 #define _STR_CJKCompat 421 #define _STR_Hangul 422 #define _STR_Surrogates 423 #define _STR_Unassignedbit58 424 #define _STR_CJK 425 #define _STR_PrivateUse 426 #define _STR_CJKCompatIdeo 427 #define _STR_AlphabeticPresentationForms 428 #define _STR_ArabicPresentationFormsA 429 #define _STR_CombiningHalfMarks 430 #define _STR_CJKCompatForms 431 #define _STR_SmallForms 432 #define _STR_ArabicPresentationFormsB 433 #define _STR_HalfFullWidthForms 434 #define _STR_Specials 435 #define _STR_Tibetan 436 #define _STR_Syriac 437 #define _STR_Thaana 438 #define _STR_Sinhala 439 #define _STR_Myanmar 440 #define _STR_Ethiopic 441 #define _STR_Cherokee 442 #define _STR_UnitedCanSyl 443 #define _STR_Ogham 444 #define _STR_Runic 445 #define _STR_Khmer 446 #define _STR_Mongolian 447 #define _STR_Braille 448 #define _STR_Yi 449 #define _STR_Unassignedbit84 450 #define _STR_Add 451 #define _STR_Remove 452 #define _STR_FirstUnicode 453 #define _STR_LastUnicode 454 #define _STR_Selection 455 #define _STR_Italic 456 #define _STR_Underscore 457 #define _STR_Negative 458 #define _STR_Outlined 459 #define _STR_Strikeout 460 #define _STR_Regular 461 #define _STR_CodePages 462 #define _STR_CPLatin1 463 #define _STR_CPLatin2 464 #define _STR_CPCyrillic 465 #define _STR_CPGreek 466 #define _STR_CPTurkish 467 #define _STR_CPHebrew 468 #define _STR_CPArabic 469 #define _STR_CPBaltic 470 #define _STR_CPVietnamese 471 #define _STR_CPThai 472 #define _STR_CPJapan 473 #define _STR_CPSimplifiedChinese 474 #define _STR_CPWansung 475 #define _STR_CPTraditionalChinese 476 #define _STR_CPJohab 477 #define _STR_CPMac 478 #define _STR_CPOEM 479 #define _STR_CPSymbol 480 #define _STR_CPIBMGreek 481 #define _STR_CPDOSRussian 482 #define _STR_CPDOSNordic 483 #define _STR_CPArabic2 484 #define _STR_CPDOSFrench 485 #define _STR_CPHebrew2 486 #define _STR_CPDOSIcelandic 487 #define _STR_CPDOSPortuguese 488 #define _STR_CPIBMTurkish 489 #define _STR_CPIBMCyrillic 490 #define _STR_CPLatin22 491 #define _STR_CPIBMBaltic 492 #define _STR_CPGreek3 493 #define _STR_CPArabic3 494 #define _STR_CPLatin12 495 #define _STR_CPUS 496 #define _STR_Typography 497 #define _STR_TypoAscender 498 #define _STR_TypoDescender 499 #define _STR_TypoRight 500 #define _STR_TypoLeft 501 #define _STR_TypoLineGap 502 #define _STR_TypoLineSpacing 503 #define _STR_WinAscent 504 #define _STR_WinDescent 505 #define _STR_XHeightC 506 #define _STR_CapHeightC 507 #define _STR_DefaultChar 508 #define _STR_BreakChar 509 #define _STR_MaxContext 510 /* name */ #define _STR_AppleUnicode 511 #define _STR_Mac 512 #define _STR_ISO 513 #define _STR_Microsoft 514 #define _STR_Default 515 #define _STR_Unicode1 516 #define _STR_Unicode11 517 #define _STR_Unicode2 518 #define _STR_ASCII 519 #define _STR_ISO106461 520 #define _STR_ISO88591 521 #define _STR_Unicode 522 #define _STR_ApRoman 523 #define _STR_ApJapanese 524 #define _STR_ApChinese 525 #define _STR_ApKorean 526 #define _STR_ApArabic 527 #define _STR_ApHebrew 528 #define _STR_ApGreek 529 #define _STR_ApRussian 530 #define _STR_ApRSymbol 531 #define _STR_ApDevanagari 532 #define _STR_ApGurmukhi 533 #define _STR_ApGujarati 534 #define _STR_ApOriya 535 #define _STR_ApBengali 536 #define _STR_ApTamil 537 #define _STR_ApTelugu 538 #define _STR_ApKannada 539 #define _STR_ApMalayalam 540 #define _STR_ApSinhalese 541 #define _STR_ApBurmese 542 #define _STR_ApKhmer 543 #define _STR_ApThai 544 #define _STR_ApLoatian 545 #define _STR_ApGeorgian 546 #define _STR_ApArmenian 547 #define _STR_ApMaldivian 548 #define _STR_ApTibetan 549 #define _STR_ApMongolian 550 #define _STR_ApGeez 551 #define _STR_ApSlavic 552 #define _STR_ApVietnamese 553 #define _STR_ApSindhi 554 #define _STR_Uninterpreted 555 #define _STR_ApEnglish 556 #define _STR_ApFrench 557 #define _STR_ApGerman 558 #define _STR_ApItalian 559 #define _STR_ApDutch 560 #define _STR_ApSwedish 561 #define _STR_ApSpanish 562 #define _STR_ApDanish 563 #define _STR_ApPortuguese 564 #define _STR_ApNorwegian 565 #define _STR_ApFinnish 566 #define _STR_ApIcelandic 567 #define _STR_ApMaltese 568 #define _STR_ApTurkish 569 #define _STR_ApYugoslavian 570 #define _STR_ApUrdu 571 #define _STR_ApHindi 572 /* Language & Country (where applicable) in the native language if I can find */ /* it, in english if I can't. Followed by the 2char language _ 2char country */ /* (again country isn't always applicable. Should basque be ES, FR? */ #define _STR_Albanian 573 #define _STR_Arabic 574 #define _STR_Basque 575 #define _STR_Byelorussian 576 #define _STR_Bulgarian 577 #define _STR_Catalan 578 #define _STR_MSChinese 579 #define _STR_Croatian 580 #define _STR_Czech 581 #define _STR_Danish 582 #define _STR_Dutch 583 #define _STR_Flemish 584 #define _STR_BrEnglish 585 #define _STR_AmEnglish 586 #define _STR_CaEnglish 587 #define _STR_AuEnglish 588 #define _STR_NZEnglish 589 #define _STR_IEEnglish 590 #define _STR_Estonia 591 #define _STR_Finnish 592 #define _STR_FRFrench 593 #define _STR_BEFrench 594 #define _STR_CAFrench 595 #define _STR_CHFrench 596 #define _STR_LUFrench 597 #define _STR_DEGerman 598 #define _STR_CHGerman 599 #define _STR_ATGerman 600 #define _STR_LUGerman 601 #define _STR_LIGerman 602 #define _STR_Greek 603 #define _STR_Hebrew 604 #define _STR_Hungarian 605 #define _STR_Icelandic 606 #define _STR_Italian 607 #define _STR_CHItalian 608 #define _STR_Japanese 609 #define _STR_Latvian 610 #define _STR_Lithuanian 611 #define _STR_Norwegian 612 #define _STR_NorwegianN 613 #define _STR_Polish 614 #define _STR_PTPortuguese 615 #define _STR_BRPortuguese 616 #define _STR_Romanian 617 #define _STR_Russian 618 #define _STR_Slovak 619 #define _STR_Slovenian 620 #define _STR_TradSpanish 621 #define _STR_MXSpanish 622 #define _STR_ModSpanish 623 #define _STR_Swedish 624 #define _STR_Turkish 625 #define _STR_Ukrainian 626 #define _STR_Copyright 627 #define _STR_SubFamily 628 #define _STR_UniqueID 629 #define _STR_Fullname 630 #define _STR_Trademark 631 #define _STR_PostscriptName 632 #define _STR_Manufacturer 633 #define _STR_Designer 634 #define _STR_Descriptor 635 #define _STR_VendorURL 636 #define _STR_DesignerURL 637 #define _STR_License 638 #define _STR_LicenseURL 639 #define _STR_OTFFamily 640 #define _STR_OTFStyles 641 #define _STR_CompatableFull 642 #define _STR_SampleText 643 #define _STR_FontRevision 644 #define _STR_Checksum 645 #define _STR_MagicNumber 646 #define _STR_Flags 647 #define _STR_Baseliney0 648 #define _STR_LBearingx0 649 #define _STR_InstrsDepOnPointsize 650 #define _STR_ForcePPEMInt 651 #define _STR_InstrsAlterWidth 652 #define _STR_VerticalLayout 653 /*static char *str_Arabic = "Arabic";*/ #define _STR_GXWithMetamorphosis 654 #define _STR_ContainsRightToLeft 655 #define _STR_Indic 656 #define _STR_Lossless 657 #define _STR_FontConverted 658 #define _STR_ClearType 659 #define _STR_UnitsPerEm 660 #define _STR_Created 661 #define _STR_Modified 662 #define _STR_XMin 663 #define _STR_XMax 664 #define _STR_YMin 665 #define _STR_YMax 666 #define _STR_MacStyle 667 #define _STR_Underline 668 #define _STR_Outline 669 #define _STR_Shadow 670 /*static char *str_Condensed = "Condensed";*/ #define _STR_Extended 671 #define _STR_SmallestSize 672 #define _STR_FontDirection 673 #define _STR_FullyMixed 674 #define _STR_StronglyLeftToRight 675 #define _STR_LtoROrNeutral 676 #define _STR_StronglyRightToLeft 677 #define _STR_RToLOrNeutral 678 #define _STR_LocaFormat 679 #define _STR_16bit 680 #define _STR_32bit 681 #define _STR_GlyfFormat 682 #define _STR_Ascent 683 #define _STR_Descent 684 #define _STR_AdvanceMax 685 #define _STR_MinLeftBearing 686 #define _STR_MinRightBearing 687 #define _STR_MinTopBearing 688 #define _STR_MinBottomBearing 689 #define _STR_XMaxExtent 690 #define _STR_YMaxExtent 691 #define _STR_CaretRise 692 #define _STR_CaretRun 693 #define _STR_CaretOffset 694 #define _STR_DataFormat 695 #define _STR_MetricsCount 696 #define _STR_ChangingMetricsCount 697 #define _STR_ReallyChangeMetricsCnt 698 #define _STR_GrowLongMetrics 699 #define _STR_GrowLongMetricsSize 700 #define _STR_Names 701 #define _STR_Encoding 702 #define _STR_MaxMemType1 703 #define _STR_MinMemType1 704 #define _STR_MaxMemType42 705 #define _STR_MinMemType42 706 #define _STR_IsFixed 707 #define _STR_ItalicAngle 708 #define _STR_UnderlinePos 709 #define _STR_UnderlineHeight 710 #define _STR_PostVersion4 711 #define _STR_PostNamesLost 712 #define _STR_PostVersion3 713 #define _STR_PostEncLost 714 #define _STR_PostNotVersion4 715 #define _STR_PostVersion1Len 716 #define _STR_PostVersion1 717 #define _STR_PostVersion2_5 718 #define _STR_PostVersionFailure 719 #define _STR_Yes 720 #define _STR_No 721 #define _STR_BadPSName 722 #define _STR_BadPSNameEmpty 723 #define _STR_BadPSNameChar 724 #define _STR_BadPSNameNotNumber 725 #define _STR_BadNumber 726 #define _STR_NumberOutOfRange 727 #define _STR_BinaryEdit 728 #define _STR_BinaryEditSave 729 #define _STR_RetainChanges 730 #define _STR_BadNumberCloseAnyway 731 #define _STR_NoBackup 732 #define _STR_CouldntWriteBackup 733 #define _STR_CouldntReopenFile 734 #define _STR_CantCreate 735 #define _STR_CantCreateFile 736 #define _STR_SaveFailed 737 #define _STR_SaveFailedOn 738 #define _STR_CantRecoverFromSave 739 #define _STR_Count 740 #define _STR_GridFit 741 #define _STR_AntiAlias 742 #define _STR_BadInteger 743 #define _STR_Minor 744 #define _STR_DefYOrig 745 #define _STR_AddOrig 746 #define _STR_CouldntReadGlyphs 747 #define _STR_CouldntReadGlyph 748 #define _STR_CouldntReadGlyphd 749 #define _STR_Pushes 750 #define _STR_UBytes 751 #define _STR_Shorts 752 #define _STR_Stack 753 #define _STR_StorageOps 754 #define _STR_Unary 755 #define _STR_Binary 756 #define _STR_Logical 757 #define _STR_Conditional 758 #define _STR_Routines 759 #define _STR_Vectors 760 #define _STR_SetState 761 #define _STR_SetRegisters 762 #define _STR_GetInfo 763 #define _STR_PointState 764 #define _STR_MovePoints 765 #define _STR_MDRP 766 #define _STR_MIRP 767 #define _STR_Deltas 768 #define _STR_NoInstruction 769 #define _STR_CouldntParseInstr 770 #define _STR_ValueOutOfBounds 771 #define _STR_ValueMustBeShort 772 #endif mensis-080507/nomen-ru.c0100664000076500007650000012655510170345136013246 0ustar gwwgww#include "nomen.h" static enum encoding enc = e_koi8_r; static char str_Language[] = "òÕÓÓËÉÊ"; static char str_OK[] = "OK"; static unichar_t mnemonic_OK[] = 'O'; static char str_Cancel[] = "ïÔÍÅÎÁ"; static unichar_t mnemonic_Cancel[] = 'C'; static char str_Open[] = "ïÔËÒÙÔØ"; static unichar_t mnemonic_Open[] = 'O'; static char str_Save[] = "óÏÈÒÁÎÉÔØ"; static unichar_t mnemonic_Save[] = 'S'; static char str_Filter[] = "æÉÌØÔÒ"; static unichar_t mnemonic_Filter[] = 'F'; static char str_New[] = "îÏ×ÙÊ"; static unichar_t mnemonic_New[] = 'N'; static char str_Replace[] = "úÁÍÅÎÉÔØ"; static char str_Fileexists[] = "æÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ"; /* "File, %s, exists. Replace it?" */ static char str_Fileexistspre[] = "æÁÊÌ, "; static char str_Fileexistspost[] = ", ÓÕÝÅÓÔ×ÕÅÔ. úÁÍÅÎÉÔØ ÅÇÏ?"; static char str_Createdir[] = "óÏÚÄÁÔØ ËÁÔÁÌÏÇ..."; static char str_Dirname[] = "îÁÚ×ÁÎÉÅ ËÁÔÁÌÏÇÁ?"; static char str_Couldntcreatedir[] = "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ"; static char str_SelectAll[] = "÷ÙÂÒÁÔØ ×ÓÅ"; static char mnemonic_SelectAll ='A'; static char *str_None ="îÅÔ"; static char mnemonic_None ='N'; /* Menus ... */ static char str_File[] = "æÁÊÌ"; static unichar_t mnemonic_File[] = 'F'; static char str_Edit[] = "ðÒÁ×ËÁ"; static unichar_t mnemonic_Edit[] = 'E'; static char str_View[] = "÷ÉÄ"; static unichar_t mnemonic_View[] = 'V'; static char str_Window[] = "ïËÎÏ"; static unichar_t mnemonic_Window[] = 'W'; static char str_Help[] = "óÐÒÁ×ËÁ"; static unichar_t mnemonic_Help[] = 'H'; static char str_Recent[] = "ðÏÓÌÅÄÎÉÅ"; static unichar_t mnemonic_Recent[] = 't'; static char str_Revertfile[] = "÷ÏÓÓÔÁÎÏ×ÉÔØ ÆÁÊÌ"; static unichar_t mnemonic_Revertfile[] = 'R'; static char str_RevertTable[] = "÷ÏÓÓÔÁÎÏ×ÉÔØ ÔÁÂÌÉÃÕ"; static char str_SaveAs[] = "óÏÈÒÁÎÉÔØ ËÁË..."; static unichar_t mnemonic_Saveas[] = 'a'; static char str_Close[] = "úÁËÒÙÔØ"; static unichar_t mnemonic_Close[] = 'c'; static char str_Prefs[] = "îÁÓÔÒÏÊËÉ..."; static unichar_t mnemonic_Prefs[] = 'e'; static char str_Quit[] = "÷ÙÈÏÄ"; static unichar_t mnemonic_Quit[] = 'Q'; static char str_Undo[] = "ïÔËÁÔ"; static unichar_t mnemonic_Undo[] = 'U'; static char str_Redo[] = "÷ÏÚ×ÒÁÔ"; static unichar_t mnemonic_Redo[] = 'R'; static char str_Cut[] = "÷ÙÒÅÚÁÔØ"; static unichar_t mnemonic_Cut[] = 't'; static char str_Copy[] = "óËÏÐÉÒÏ×ÁÔØ"; static unichar_t mnemonic_Copy[] = 'C'; static char str_Paste[] = "÷ÓÔÁ×ÉÔØ"; static unichar_t mnemonic_Paste[] = 'P'; static char str_Clear[] = "ïÞÉÓÔÉÔØ"; static unichar_t mnemonic_Clear[] = 'l'; static char str_Fit[] = "úÁÐÏÌÎÉÔØ"; static unichar_t mnemonic_Fit[] = 'F'; static char str_Zoomin[] = "íÁÓÛÔÁ +"; static unichar_t mnemonic_Zoomin[] = 'i'; static char str_Zoomout[] = "íÁÓÛÔÁ -"; static unichar_t mnemonic_Zoomout[] = 'o'; static char str_NextChar[] = "óÌÅÄ. ÓÉÍ×ÏÌ"; static unichar_t mnemonic_NextChar[] = 'N'; static char str_PrevChar[] = "ðÒÅÄ. ÓÉÍ×ÏÌ"; static unichar_t mnemonic_PrevChar[] = 'P'; static char str_Goto[] = "ðÅÒÅÊÔÉ"; static unichar_t mnemonic_Goto[] = 'G'; static char str_ShowInstrs[] = "ðÏËÁÚÁÔØ ÉÎÓÔÒÕËÃÉÉ"; static unichar_t mnemonic_ShowInstrs[] = 'I'; static char str_HideInstrs[] = "óËÒÙÔØ ÉÎÓÔÒÕËÃÉÉ"; static unichar_t mnemonic_HideInstrs[] = 'I'; static char str_ShowGloss[] = "Show Gloss"; static unichar_t mnemonic_ShowGloss[] = 'l'; static char str_HideGloss[] = "Hide Gloss"; static unichar_t mnemonic_HideGloss[] = 'l'; static char str_ShowFore[] = "ðÏËÁÚÁÔØ ÓÐÌÁÊÎÙ"; static unichar_t mnemonic_ShowFore[] = 'S'; static char str_HideFore[] = "óËÒÙÔØ ÓÐÌÁÊÎÙ"; static unichar_t mnemonic_HideFore[] = 'S'; static char str_ShowGrid[] = "ðÏËÁÚÁÔØ ÓÅÔËÕ"; static unichar_t mnemonic_ShowGrid[] = 'd'; static char str_HideGrid[] = "óËÒÙÔØ ÓÅÔËÕ"; static unichar_t mnemonic_HideGrid[] = 'd'; static char str_ShowGridFit[] = "Show Grid Fit"; static unichar_t mnemonic_ShowGridFit[] = 'i'; static char str_HideGridFit[] = "Hide Grid Fit"; static unichar_t mnemonic_HideGridFit[] = 'i'; static char str_ShowRaster[] = "ðÏËÁÚÁÔØ ÒÁÓÔÒ"; static unichar_t mnemonic_ShowRaster[] = 'r'; static char str_HideRaster[] = "óËÒÙÔØ ÒÁÓÔÒ"; static unichar_t mnemonic_HideRaster[] = 'r'; static char str_GridSize[] = "Grid Pixels per Em..."; static unichar_t mnemonic_GridSize[] = 'x'; static char *str_Mensis = "Mensis"; /* ttfview.c */ static char *str_OpenTtf = "ïÔËÒÙÔØ TTF..."; static char *str_TabMod = "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÒÁ×ÉÔØ ÉÚÍÅΣÎÎÕÀ ÔÁÂÌÉÃÕ" static char *str_TabModNotBinary = "üÔÁ ÔÁÂÌÉÃÁ ÂÙÌÁ ÉÚÍÅÎÅÎÁ ÔÁËÉÍ ÏÂÒÁÚÏÍ ÞÔÏ\nÄ×ÏÉÞÎÙÊ ÒÅÄÁËÔÏÒ ÎÅ ÍÏÖÅÔ ÒÅÄÁËÔÉÒÏ×ÁÔØ\nÅ£ ÐÏËÁ ×Ù ÎÅ ÓÏÈÒÁÎÉÔÅ ÆÁÊÌ.\nèÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ ÓÅÊÞÁÓ?"; static char *str_ReallyRevert = "äÅÊÓÔ×ÉÔÅÌØÎÏ ×ÏÓÓÔÁ×ÎÏ×ÉÔØ ÓÔÁÒÕÀ ×ÅÒÓÉÀ?"; static char *str_RevertFailed = "óÂÏÊ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ!"; static char *str_FontChanged = "ûÒÉÆÔ ÉÚÍÅΣÎ"; static char *str_FontChangedSave = "ûÒÉÆÔ %.100s ÂÙÌ ÉÚÍÅΣÎ.\nèÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÅÇÏ?"; static char *str_FontChangedSavem = "æÁÊÌ ÓÏÄÅÒÖÁÝÉÊ ÛÒÉÆÔ %.100s ÂÙÌ ÉÚÍÅΣÎ.\nèÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÅÇÏ?"; static char *str_TablesOpen = "ïÔËÒÙÔÙÅ ÔÁÂÌÉÃÙ"; static char *str_TablesOpenSave = "There are editor windows open looking at tables in font %.100s\nWould you like them to be parsed for changes and the font saved if it needs to be?"; static char *str_TablesOpenSavem = "There are editor windows open looking at tables in the file containing font %.100s\nWould you like them to be parsed for changes and the font saved it needs to be?"; static char *str_TablesOpenProcess = "There are editor windows open looking at tables in this file.\nWould you like the tables parsed before the file is saved?"; /* ttffile.c */ static char *str_RestrictedRightsFont = "This font is marked with an FSType of 2 (Restricted\nLicense). That means it is not editable without the\npermission of the legal owner.\n\nDo you have such permission?"; static char *str_RestrictedFont = "Restricted Font"; /* uiutil.c */ static char *str_Badnumberin = "Bad number in "; /* Table names */ static char *str_tbl_cmap = "Character to glyph mapping\nSpecifies the font's encoding"; static char *str_tbl_glyf = "Glyph data\nSpecifies the glyphs in the font"; static char *str_tbl_head = "Font header\nGeneral information about the font"; static char *str_tbl_hhea = "Horizontal header\nHigh level information about the font's\nhorizontal metrics"; static char *str_tbl_hmtx = "Horizontal metrics\nHorizontal metric (lbearing/width)\ninformation for each character"; static char *str_tbl_loca = "Index to location\nPointers specifying where each glyph\nbegins in the glyf table"; static char *str_tbl_maxp = "Maximum profile\nSpecifies various maxima of the font"; static char *str_tbl_name = "Naming table\nSpecifies the font name, copyright, etc."; static char *str_tbl_post = "PostScript data\nSpecifies PostScript specific data\nand PostScript glyph names"; static char *str_tbl_OS2 = "OS/2 and Windows specific metrics"; static char *str_tbl_cvt = "Control Value Table\nVarious integers used for instructing\n(hinting) the font"; static char *str_tbl_EBDT = "Embedded bitmap data (MS version)"; static char *str_tbl_EBLC = "Embedded bitmap location data (MS version)"; static char *str_tbl_EBSC = "Embedded bitmap scaling data"; static char *str_tbl_fpgm = "Font Program\nInvoked before the first use of the font."; static char *str_tbl_gasp = "grid-fitting and scan conversion procedure (greyscale)"; static char *str_tbl_hdmx = "Horizontal device metrics\nPrecomputed metrics for certain point-sizes"; static char *str_tbl_kern = "Kerning\nKerning pairs"; static char *str_tbl_LTSH = "Linear threshold table\nSpecifies point at which metrics may be\nassumed to scale from htmx table"; static char *str_tbl_prep = "CVT Program\nInvoked before each time the font is rasterized."; static char *str_tbl_PCLT = "PCL5\nInformation for HP printers"; static char *str_tbl_VDMX = "Vertical Device Metrics table\nPrecomputed metrics for certain point-sizes"; static char *str_tbl_vhea = "Vertical header\nHigh level information about the font's\nvertical metrics (for CJK fonts)"; static char *str_tbl_vmtx = "Vertical metrics"; static char *str_tbl_CFF = "Compact Font Format\nPostscript outlines"; /*static char *str_tbl_fvar = "Obsolete multiple master table"*/ static char *str_tbl_MMSD = "Obsolete multiple master table" static char *str_tbl_MMFX = "Obsolete multiple master table" static char *str_tbl_BASE = "Baseline data\nSpecifies how to align glyphs from different scripts"; static char *str_tbl_GDEF = "Glyph definition data\nSpecifies caret locations inside ligatures\nand attachment points"; static char *str_tbl_GPOS = "Glyph positioning data\nSpecifies how to positions glyphs with\nrespect to each other in caligraphic and other\ncomplex scripts"; static char *str_tbl_GSUB = "Glyph substitution data\nSpecifies ligatures, alternate glyphs,\npositional variants, contextual substitutions"; static char *str_tbl_JSTF = "Justification data\nAnother set of glyph substitutions\nspecifically for justification"; static char *str_tbl_DSIG = "Digital Signature"; static char *str_tbl_VORG = "Vertical Origin"; static char *str_Tbl_acnt = "Accent Attachement"; static char *str_Tbl_avar = "Axis Variation"; static char *str_Tbl_bdat = "Bitmap data (Apple version)"; static char *str_Tbl_bhed = "Bitmap font header\nSame as 'head' table\nMeans no outline data, just bitmaps"; static char *str_Tbl_bloc = "Bitmap location data (Apple version)"; static char *str_Tbl_bsln = "Baseline"; static char *str_Tbl_cvar = "CVT variation"; static char *str_Tbl_fdsc = "Font Descriptor"; static char *str_Tbl_feat = "Layout Features"; static char *str_Tbl_fmtx = "Font Metrics"; static char *str_Tbl_fvar = "Font variation"; static char *str_Tbl_gvar = "Glyph variation"; static char *str_Tbl_hsty = "Horizontal Style"; static char *str_Tbl_just = "Justification"; static char *str_Tbl_lcar = "Ligature caret"; static char *str_Tbl_mort = "Metamorphosis"; static char *str_Tbl_morx = "Extended Metamorphosis"; static char *str_Tbl_opbd = "Optical Bounds"; static char *str_Tbl_prop = "ó×ÏÊÓÔ×Á"; static char *str_Tbl_trak = "Tracking"; static char *str_Tbl_Zapf = "Glyph Reference\nMaps glyphs to characters (unicode)\nand provides general character properties"; /* maxp */ static char *str_Version = "÷ÅÒÓÉÑ:"; static char mnemonic_Version = 'V'; static char *str_Glyphs = "çÌÉÆÙ:"; static char mnemonic_Glyphs = 'G'; static char *str_Points = "ôÏÞËÉ:"; static char mnemonic_Points = 'P'; static char *str_Contours = "ëÏÎÔÕÒÙ:"; static char mnemonic_Contours = 'C'; static char *str_CompositPoints = "Composit Pts:"; static char mnemonic_CompositPoints = 'n'; static char *str_CompositContours = "Composit Cntrs:"; static char mnemonic_CompositContours = 'r'; static char *str_Zones = "úÏÎÙ:"; static char mnemonic_Zones = 'Z'; static char *str_TwilightPoints = "Twilight Pts:"; static char mnemonic_TwilightPoints = 'T'; static char *str_Storage = "Storage:"; static char mnemonic_Storage = 'S'; static char *str_FDEFs = "FDEFs:"; static char mnemonic_FDEFs = 'F'; static char *str_IDEFs = "IDEFs:"; static char mnemonic_IDEFs = 'I'; static char *str_StackElements = "Stack Els:"; static char mnemonic_StackElements = 'E'; static char *str_SizeOfInstructions = "Size Of Instrs:"; static char mnemonic_SizeOfInstructions = 'u'; static char *str_ComponentElements = "Component Els:"; static char mnemonic_ComponentElements = 'l'; static char *str_ComponentDepth = "CDepth:"; static char mnemonic_ComponentDepth = 'D'; static char *str_ChangingGlyphCnt = "Changing Glyph Count"; static char *str_ReallyChangeGlyphCnt = "Changing the glyph count is rather dangerous.\nDo you really want to do that?"; /* OS/2 */ static char *str_General = "ïÂÝÉÅ"; static char *str_Alignment = "÷ÙÒÁ×ÎÉ×ÁÎÉÅ"; /* Super/Subscript/Strikeout */ static char *str_Panose = "Panose"; static char *str_Charsets = "îÁÂÏÒÙ ÓÉÍ×ÏÌÏ×"; static char *str_AvgWidth = "óÒÅÄÎÑÑ ÛÉÒÉÎÁ:" static char *str_UltraCondensed = "õÌØÔÒÁÕÚËÉÊ (50%)" static char *str_ExtraCondensed = "üËÓÔÒÁÕÚËÉÊ (62.5%)" static char *str_Condensed75 = "õÚËÉÊ (75%)" static char *str_SemiCondensed = "ðÏÌÕÕÚËÉÊ (87.5%)" static char *str_Medium100 = "îÏÒÍÁÌØÎÙÊ (100%)" static char *str_SemiExpanded = "ðÏÌÕÛÉÒÏËÉÊ (112.5%)" static char *str_Expanded125 = "ûÉÒÏËÉÊ (125%)" static char *str_ExtraExpanded = "üËÓÔÒÁÛÉÒÏËÉÊ (150%)" static char *str_UltraExpanded = "õÌØÔÒÁÛÉÒÏËÉÊ (200%)" static char *str_Thin100 = "100 ôÏÎËÉÊ"; static char *str_ExtraLight200 = "200 üËÓÔÒÁÓ×ÅÔÌÙÊ"; static char *str_Light300 = "300 ó×ÅÔÌÙÊ"; static char *str_Book400 = "400 Book"; static char *str_Medium500 = "500 óÒÅÄÎÉÊ"; static char *str_DemiBold600 = "600 ðÏÌÕÖÉÒÎÙÊ"; static char *str_Bold700 = "700 öÉÒÎÙÊ"; static char *str_Heavy800 = "800 ôÑÖ£ÌÙÊ"; static char *str_Black900 = "900 þ£ÒÎÙÊ"; static char *str_EmbeddablePopup = "Can this font be embedded in a downloadable (pdf)\ndocument and if so what behaviors are permitted on\nboth the document and the font.\nAlso known as FSType"; static char *str_Embeddable = "Embeddable:"; static char mnemonic_Embeddable = 'E'; static char *str_NeverEmbeddable = "Never Embed/No Editing"; static char *str_OnlyPrint = "Printable Document"; static char *str_EditableDoc = "Editable Document"; static char *str_Installable = "Installable Font"; static char *str_NoSubsetting = "No Subsetting"; static char *str_NoSubsettingPopup = "If set then the entire font must be\nembedded in a document when any character is.\nOtherwise the document creator need\nonly include the characters it uses."; static char *str_OnlyBitmaps = "Only Bitmaps"; static char *str_OnlyBitmapsPopup = "Only Bitmaps may be embedded\nOutline descriptions may not be\n(if font file contains no bitmaps\nthen nothing may be embedded)"; static char *str_Serif = "Serif"; static char *str_SansSerif = "Sans-Serif"; static char *str_Monospace = "Monospace"; static char *str_Script = "Script"; static char *str_Decorative = "Decorative"; static char *str_Any = "Any"; static char *str_NoFit = "No Fit"; static char *str_TextDisplay = "Text & Display"; static char *str_Pictoral = "Pictoral"; static char *str_Cove = "Cove"; static char *str_ObtuseCove = "Obtuse Cove"; static char *str_SquareCove = "Square Cove"; static char *str_ObtuseSquareCove = "Obtuse Square Cove"; static char *str_Square = "Square"; static char *str_Thin = "Thin"; static char *str_Bone = "Bone"; static char *str_Exaggerated = "Exaggerated"; static char *str_Triangle = "Triangle"; static char *str_NormalSans = "Normal Sans"; static char *str_ObtuseSans = "Obtuse Sans"; static char *str_PerpSans = "Perp Sans"; static char *str_Flared = "Flared"; static char *str_Rounded = "Rounded"; static char *str_VeryLight = "Very Light"; static char *str_Light = "Light"; static char *str_Book = "Book"; static char *str_Medium = "Medium"; static char *str_Demi = "Demi"; static char *str_Bold = "Bold"; static char *str_Heavy = "Heavy"; static char *str_Black = "Black"; static char *str_Nord = "Nord"; static char *str_OldStyle = "Old Style"; static char *str_Modern = "Modern"; static char *str_EvenWidth = "Even Width"; static char *str_Expanded = "Expanded"; static char *str_Condensed = "Condensed"; static char *str_VeryExpanded = "Very Expanded"; static char *str_VeryCondensed = "Very Condensed"; static char *str_Monospaced ="Monospaced"; static char *str_None ="None"; static char *str_VeryLow ="Very Low"; static char *str_Low ="Low"; static char *str_MediumLow ="Medium Low"; static char *str_MediumHigh ="Medium High"; static char *str_High ="High"; static char *str_VeryHigh ="Very High"; static char *str_GradDiag ="Gradual/Diagonal"; static char *str_GradTrans ="Gradual/Transitional"; static char *str_GradVert ="Gradual/Vertical"; static char *str_GradHor ="Gradual/Horizontal"; static char *str_RapidVert ="Rapid/Vertical"; static char *str_RapidHor ="Rapid/Horizontal"; static char *str_InstantVert ="Instant/Vertical"; static char *str_NormalContact ="Normal/Contact"; static char *str_NormalWeighted ="Normal/Weighted"; static char *str_NormalBoxed ="Normal/Boxed"; static char *str_NormalFlattened ="Normal/Flattened"; static char *str_NormalRounded ="Normal/Rounded"; static char *str_NormalOffCenter ="Normal/Off-Center"; static char *str_NormalSquare ="Normal/Square"; static char *str_ObliqueContact ="Oblique/Contact"; static char *str_ObliqueWeighted ="Oblique/Weighted"; static char *str_ObliqueBoxed ="Oblique/Boxed"; static char *str_ObliqueFlattened ="Oblique/Flattened"; static char *str_ObliqueRounded ="Oblique/Rounded"; static char *str_ObliqueOffCenter ="Oblique/Off-Center"; static char *str_ObliqueSquare ="Oblique/Square"; static char *str_StraightArmsH = "Straight Arms/Horizontal"; static char *str_StraightArmsW = "Straight Arms/Wedge"; static char *str_StraightArmsV = "Straight Arms/Vertical"; static char *str_StraightArmsSS = "Straight Arms/Single Serif"; static char *str_StraightArmsDS = "Straight Arms/Double Serif"; static char *str_NStraightArmsH = "Non-Straight Arms/Horizontal"; static char *str_NStraightArmsW = "Non-Straight Arms/Wedge"; static char *str_NStraightArmsV = "Non-Straight Arms/Vertical"; static char *str_NStraightArmsSS = "Non-Straight Arms/Single Serif"; static char *str_NStraightArmsDS = "Non-Straight Arms/Double Serif"; static char *str_StandardTrimmed = "Standard/Trimmed"; static char *str_StandardPointed = "Standard/Pointed"; static char *str_StandardSerifed = "Standard/Serifed"; static char *str_HighTrimmed = "High/Trimmed"; static char *str_HighPointed = "High/Pointed"; static char *str_HighSerifed = "High/Serifed"; static char *str_ConstantTrimmed = "Constant/Trimmed"; static char *str_ConstantPointed = "Constant/Pointed"; static char *str_ConstantSerifed = "Constant/Serifed"; static char *str_LowTrimmed = "Low/Trimmed"; static char *str_LowPointed = "Low/Pointed"; static char *str_LowSerifed = "Low/Serifed"; static char *str_ConstantSmall = "Constant/Small"; static char *str_ConstantStandard = "Constant/Standard"; static char *str_ConstantLarge = "Constant/Large"; static char *str_DuckingSmall = "Ducking/Small"; static char *str_DuckingStandard = "Ducking/Standard"; static char *str_DuckingLarge = "Ducking/Large"; static char *str_WidthClass ="Width Class:"; static char *str_6 = "6"; static char *str_7 = "7"; static char *str_8 = "8"; static char *str_9 = "9"; static char *str_10 = "10"; static char *str_11 = "11"; static char *str_12 = "12"; static char *str_13 = "13"; static char *str_14 = "14"; static char *str_15 = "15"; static char mnemonic_WidthClass ='C'; static char *str_WeightClass ="Weight Class:"; static char mnemonic_WeightClass ='W'; static char *str_Family ="óÅÍÅÊÓÔ×Ï"; static char mnemonic_Family ='F'; static char *str_Serifs ="Serifs"; static char mnemonic_Serifs ='S'; static char *str_Weight ="îÁÓÙÝÅÎÎÏÓÔØ"; static char mnemonic_Weight ='W'; static char *str_Proportion ="ðÒÏÐÏÒÃÉÉ"; static char mnemonic_Proportion ='P'; static char *str_Contrast ="ëÏÎÔÒÁÓÔÎÏÓÔØ"; static char mnemonic_Contrast ='C'; static char *str_StrokeVar ="Stroke Variation"; static char mnemonic_StrokeVar ='V'; static char *str_ArmStyle ="Arm Style"; static char mnemonic_ArmStyle ='A'; static char *str_Letterform ="Letterform"; static char mnemonic_Letterform ='L'; static char *str_MidLine ="Midline"; static char mnemonic_MidLine ='M'; static char *str_XHeight ="X-Height"; static char mnemonic_XHeight ='X'; static char *str_SubXSize = "Sub X Size:"; static char *str_SubYSize = "Sub Y Size:"; static char *str_SubXOffset = "Sub X Offset:"; static char *str_SubYOffset = "Sub Y Offset:"; static char *str_SupXSize = "Sup X Size:"; static char *str_SupYSize = "Sup Y Size:"; static char *str_SupXOffset = "Sup X Offset:"; static char *str_SupYOffset = "Sup Y Offset:"; static char *str_StrikeSize = "Strikeout Size:"; static char *str_StrikePos = "Strikeout Pos:"; static char *str_IBMFamily = "óÅÍÅÊÓÔ×Ï IBM:" static char mnemonic_IBMFamily = 'I'; static char *str_NoClassification = "âÅÚ ËÌÁÓÓÉÆÉËÁÃÉÉ"; static char *str_OldStyleSerifs = "Old Style Serifs"; static char *str_OSSRoundedLegibility = "OSS Rounded Legibility"; static char *str_OSSGeralde = "OSS Geralde"; static char *str_OSSVenetian = "OSS Venetian"; static char *str_OSSModifiedVenetian = "OSS Modified Venetian"; static char *str_OSSDutchModern = "OSS Dutch Modern"; static char *str_OSSDutchTrad = "OSS Dutch Trad"; static char *str_OSSContemporary = "OSS Contemporary"; static char *str_OSSCaligraphic = "OSS Caligraphic"; static char *str_OSSMiscellaneous = "OSS Miscellaneous"; static char *str_TransitionalSerifs = "Transitional Serifs"; static char *str_TSDirectLine = "TS Direct Line"; static char *str_TSScript = "TS Script"; static char *str_TSMiscellaneous = "TS Miscellaneous"; static char *str_ModernSerifs = "Modern Serifs"; static char *str_MSItalian = "MS Italian"; static char *str_MSScript = "MS Script"; static char *str_MSMiscellaneous = "MS Miscellaneous"; static char *str_ClarendonSerifs = "Clarendon Serifs"; static char *str_CSClarendon = "CS Clarendon"; static char *str_CSModern = "CS Modern"; static char *str_CSTraditional = "CS Traditional"; static char *str_CSNewspaper = "CS Newspaper"; static char *str_CSStubSerif = "CS Stub Serif"; static char *str_CSMonotone = "CS Monotone"; static char *str_CSTypewriter = "CS Typewriter"; static char *str_CSMiscellaneous = "CS Miscellaneous"; static char *str_SlabSerifs = "Slab Serifs"; static char *str_SSMonotone = "SS Monotone"; static char *str_SSHumanist = "SS Humanist"; static char *str_SSGeometric = "SS Geometric"; static char *str_SSSwiss = "SS Swiss"; static char *str_SSTypewriter = "SS Typewriter"; static char *str_SSMiscellaneous = "SS Miscellaneous"; static char *str_FreeformSerifs = "Freeform Serifs"; static char *str_FSModern = "FS Modern"; static char *str_FSMiscellaneous = "FS Miscellaneous"; /*static char *str_SansSerif = "Sans Serif";*/ static char *str_SSIBMNeoGrotesqueGothic = "SS IBM NeoGrotesque Gothic"; /*static char *str_SSHumanist = "SS Humanist";*/ static char *str_SSLowxRoundGeometric = "SS Low-x Round Geometric"; static char *str_SSHighxRoundGeometric = "SS High-x Round Geometric"; static char *str_SSNeoGrotesqueGothic = "SS NeoGrotesque Gothic"; static char *str_SSModifiedGrotesqueGothic = "SS Modified Grotesque Gothic"; static char *str_SSTypewriterGothic = "SS Typewriter Gothic"; static char *str_SSMatrix = "SS Matrix"; /*static char *str_SSMiscellaneous = "SS Miscellaneous";*/ static char *str_Ornamentals = "Ornamentals"; static char *str_OEngraver = "O Engraver"; static char *str_OBlackLetter = "O Black Letter"; static char *str_ODecorative = "O Decorative"; static char *str_O3D = "O Three Dimensional"; static char *str_OMiscellaneous = "O Miscellaneous"; static char *str_Scripts = "Scripts"; static char *str_SUncial = "S Uncial"; static char *str_SBrushJoined = "S Brush Joined"; static char *str_SFormalJoined = "S Formal Joined"; static char *str_SMonotoneJoined = "S Monotone Joined"; static char *str_SCaligraphic = "S Caligraphic"; static char *str_SBrushUnjoined = "S Brush Unjoined"; static char *str_SFormalUnjoined = "S Formal Unjoined"; static char *str_SMonotoneUnjoined = "S Monotone Unjoined"; static char *str_SMiscellaneous = "S Miscellaneous"; static char *str_Symbolic = "Symbolic"; static char *str_SyMixedSerif = "Sy Mixed Serif"; static char *str_SyOldStyleSerif = "Sy Old Style Serif"; static char *str_SyNeoGrotesqueSansSerif = "Sy Neo-grotesque Sans Serif"; static char *str_SyMiscellaneous = "Sy Miscellaneous"; static char *str_VendorID = "éÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÉÚ×ÏÄÉÔÅÌÑ:"; static char *mnemonic_VendorID = 'V'; static char *str_UnicodeRanges = "äÉÁÐÁÚÏÎÙ Unicode" static char *mnemonic_UnicodeRanges = 'U'; static char *str_BasicLatin = "ïÓÎÏ×ÎÁÑ ÌÁÔÉÎÉÃÁ 0000-007f"; static char *str_Latin1Sup = "Latin-1 Sup 0080-00ff"; static char *str_LatinExtA = "Latin Ext-A 0100-017f"; static char *str_LatinExtB = "Latin Ext-B 0180-024f"; static char *str_IPAExten = "IPA Extensions 0250-02Af"; static char *str_SpacingModLetters = "Spacing Mod Letters 02B0-02FF"; static char *str_CombiningDiacritics = "Combining Diacritics 0300-036F"; static char *str_UGreek = "çÒÅÞÅÓËÉÊ 0370-03FF"; static char *str_GreekSymCoptic = "õÓÔÁÒÅ×ÛÉÅ ÇÒÅÞÅÓËÉÅ ÓÉÍ×ÏÌÙ & Coptic"; static char *str_Cyrillic = "ëÉÒÉÌÌÉÃÁ 0400-052F"; static char *str_Armenian = "áÒÍÑÎÓËÉÊ 0530-058F"; static char *str_UHebrew = "é×ÒÉÔ 0590-05FF"; static char *str_HebrewExtended = "Obsolete Extended Hebrew"; static char *str_UArabic = "áÒÁÂÓËÉÊ 0600-06FF"; static char *str_ArabicExtended = "Obsolete Extended Arabic"; static char *str_Devanagari = "äÅ×ÁÎÁÇÁÒÉ 0900-097F"; static char *str_Bengali = "âÅÎÇÁÌÉ 0980-09FF"; static char *str_Gurmukhi = "Gurmukhi 0A00-0A7F"; static char *str_Gujarati = "Gujarati 0A80-0AFF"; static char *str_Oriya = "Oriya 0B00-0B7F"; static char *str_Tamil = "Tamil 0B80-0BFF"; static char *str_Telegu = "Telegu 0C00-0C7F"; static char *str_Kannada = "Kannada 0C80-0CFF"; static char *str_Malayalam = "Malayalam 0D00-0D7F"; static char *str_Thai = "Thai 0E00-0E7F"; static char *str_Loa = "Loa 0E80-0EFF"; static char *str_Georgian = "çÒÕÚÉÎÓËÉÊ 10A0-10FF"; static char *str_GeorgianExtended = "Obsolete Extended Georgian"; static char *str_HangulJamo = "Hangul Jamo 1100-11FF"; static char *str_LatinAdditional = "Latin Additional 1E00-1EFF"; static char *str_GreekAdditional = "Greek Additional 1F00-1FFF"; static char *str_Punctuation = "ðÕÎËÔÕÁÃÉÑ 2000-206F"; static char *str_SubSuperscripts = "Sub/Super scripts 2070-209F"; static char *str_Currency = "÷ÁÌÀÔÁ 20A0-20CF"; static char *str_CombSymbolDiac = "Combining Symbol Diacritics 20D0-20FF"; static char *str_LeterlikeSymbols = "Letterlike Symbols 2100-214F"; static char *str_NumberForms = "Number Forms 2150-218F"; static char *str_Arrows = "óÔÒÅÌËÉ 2190-21FF"; static char *str_MathOpers = "íÁÔÅÍ.ÏÐÅÒÁÃÉÉ 2200-22FF"; static char *str_MiscTech = "Misc Technical 2300-23FF"; static char *str_ControlPictures = "Control Pictures 2400-233F"; static char *str_OCR = "OCR 2440-245F"; static char *str_EnclosedAlphanumerics = "Enclosed Alphanumerics 2460-24FF"; static char *str_BoxDrawing = "Box Drawing 2500-257F"; static char *str_BlockElements = "Block Elements 2580-259F"; static char *str_GeometricShapes = "çÅÏÍÅÔÒÉÞÅÓËÉÅ ÆÉÇÕÒÙ 25A0-25FF"; static char *str_MiscSymbols = "òÁÚÎÙÅ ÓÉÍ×ÏÌÙ 2600-267F"; static char *str_Dingbats = "Dingbats 2700-27BF"; static char *str_CJKSymPunct = "CJK Symbols & Punct 3000-303F"; static char *str_Hiragana = "èÉÒÁÇÁÎÁ 3040-309F"; static char *str_Katakana = "ëÁÔÁËÁÎÁ 30A0-30FF"; static char *str_Bopomofo = "Bopomofo 3100-312F, 3180-31AF"; static char *str_HangulCompatJamo = "Hangul Compat. Jamo 3130-318F"; static char *str_CJKMisc = "CJK Misc 31B0-31FF"; static char *str_EnclosedLettersMonths = "Enclosed Letters Months 3200-32FF"; static char *str_CJKCompat = "CJK Compatability 3300-33FF"; static char *str_Hangul = "Hangul AC00-D7AF"; static char *str_Surrogates = "Surrogates 10000-7FFFFFFF"; static char *str_Unassignedbit58 = "Unassigned bit 58"; static char *str_CJK = "CJK 2E80-29FF, 3400-9FFF"; static char *str_PrivateUse = "Private Use E000-F8FF"; static char *str_CJKCompatIdeo = "CJK Compat. Ideographs F900-FAFF"; static char *str_AlphabeticPresentationForms = "Alphabetic Forms FB00-FB4F"; static char *str_ArabicPresentationFormsA = "Arabic Forms-A FB50-FDFF"; static char *str_CombiningHalfMarks = "Combining Half Marks FE20-FE2F"; static char *str_CJKCompatForms = "CJK Compatability Forms FE30-FE4F"; static char *str_SmallForms = "Small Forms FE50-FE6F"; static char *str_ArabicPresentationFormsB = "Arabic Forms-B FE70-FEFF"; static char *str_HalfFullWidthForms = "Half/Full Width Forms FF00-FFEF"; static char *str_Specials = "Specials FFF0-FFFF"; static char *str_Tibetan = "ôÉÂÅÔÓËÉÊ 0F00-0FFF"; static char *str_Syriac = "óÉÒÉÊÓËÉÊ 0700-074F"; static char *str_Thaana = "Thaana 0780-07BF"; static char *str_Sinhala = "Sinhala 0D80-0DBF"; static char *str_Myanmar = "Myanmar 1000-109F"; static char *str_Ethiopic = "üÆÉÏÐÓËÉÊ 1200-12FF"; static char *str_Cherokee = "þÅÒÏËÉ 13A0-13FF"; static char *str_UnitedCanSyl = "United Canadian Syllabics 1400-167F"; static char *str_Ogham = "Ogham 1680-169F"; static char *str_Runic = "òÕÎÉÞÅÓËÉÊ 16A0-16FF"; static char *str_Khmer = "ëÈÍÅÒÓËÉÊ 1780-17FF"; static char *str_Mongolian = "íÏÎÇÏÌØÓËÉÊ 1800-18AF"; static char *str_Braille = "âÒÁÊÌÑ 2800-28FF"; static char *str_Yi = "Yi & Yi Radicals A000-A4AF"; static char *str_Unassignedbit84 = "Unassigned bit 84"; static char *str_Add = "äÏÂÁ×ÉÔØ"; static char *str_Remove = "õÄÁÌÉÔØ"; static char *str_FirstUnicode = "First Unicode:"; static char *str_LastUnicode = "Last:"; static char *str_Selection = "÷ÙÄÅÌÅÎÉÅ:"; static char *str_Italic = "îÁËÌÏÎÎÙÊ"; static char *str_Underscore = "Underscore"; static char *str_Negative = "Negative"; static char *str_Outlined = "ëÏÎÔÕÒÎÙÊ"; static char *str_Strikeout = "Strikeout"; static char *str_Regular = "ïÂÙÞÎÙÊ"; static char *str_CodePages = "ëÏÄÏ×ÙÅ ÓÔÒÁÎÉÃÙ:"; static char *str_CPLatin1 = "1252 Latin1"; static char *str_CPLatin2 = "1250 Latin2"; static char *str_CPCyrillic = "1251 ëÉÒÉÌÌÉÃÁ"; static char *str_CPGreek = "1253 çÒÅÞÅÓËÉÊ"; static char *str_CPTurkish = "1254 ôÕÒÅÃËÉÊ"; static char *str_CPHebrew = "1255 é×ÒÉÔ"; static char *str_CPArabic = "1256 áÒÁÂÓËÉÊ"; static char *str_CPBaltic = "1257 âÁÌÔÉÊÓËÉÊ"; static char *str_CPVietnamese = "1258 ÷ØÅÔÎÁÍÓËÉÊ"; static char *str_CPThai = "874 ôÁÊÓËÉÊ"; static char *str_CPJapan = "932 JIS/Japan"; static char *str_CPSimplifiedChinese = "936 õÐÒÏÝ£ÎÎÙÊ ËÉÔÁÊÓËÉÊ"; static char *str_CPWansung = "949 Korean Wansung"; static char *str_CPTraditionalChinese = "950 ôÒÁÄÉÃÉÏÎÎÙÊ ËÉÔÁÊÓËÉÊ"; static char *str_CPJohab = "1361 Korean Johab"; static char *str_CPMac = "Mac Roman"; static char *str_CPOEM = "OEM Charset"; static char *str_CPSymbol = "Symbol Charset"; static char *str_CPIBMGreek = "869 IBM Greek"; static char *str_CPDOSRussian = "866 MS/DOS Russian"; static char *str_CPDOSNordic = "865 MS/DOS Nordic"; static char *str_CPArabic2 = "864 Arabic"; static char *str_CPDOSFrench = "863 MS/DOS Canadian French"; static char *str_CPHebrew2 = "862 Hebrew"; static char *str_CPDOSIcelandic = "861 MS/DOS Icelandic"; static char *str_CPDOSPortuguese = "860 MS/DOS Portuguese"; static char *str_CPIBMTurkish = "857 IBM Turkish"; static char *str_CPIBMCyrillic = "855 IBM Cyrillic"; static char *str_CPLatin22 = "852 Latin2"; static char *str_CPIBMBaltic = "775 IBM Baltic"; static char *str_CPGreek3 = "737 Greek"; static char *str_CPArabic3 = "708 Arabic"; static char *str_CPLatin12 = "850 WE/Latin1"; static char *str_CPUS = "437 US"; static char *str_Typography = "Typo"; static char *str_TypoAscender = "Ascender:"; static char *str_TypoDescender = "Descender:"; static char *str_TypoLineGap = "Line Gap:"; static char *str_WinAscent = "Win Ascent:"; static char *str_WinDescent = "Win Descent:"; static char *str_XHeightC = "X-Height:"; static char *str_CapHeightC = "Cap-Height:"; static char *str_DefaultChar = "Default Char:"; static char *str_BreakChar = "Break Char:"; static char *str_MaxContext = "Max Context:"; /* name */ /* Platforms */ static char *str_AppleUnicode = "Unicode"; static char *str_Mac = "Mac"; static char *str_ISO = "ISO"; static char *str_Microsoft = "MS"; /* Apple Unicode Specific */ static char *str_Default = "Default"; static char *str_Unicode1 = "Unicode 1.0"; static char *str_Unicode11 = "Unicode 1.1"; static char *str_Unicode2 = "Unicode 2.0"; /* ISO Specific */ static char *str_ASCII = "ASCII"; /* ISO 646-1 */ static char *str_ISO106461 = "ISO 10646-1"; static char *str_ISO88591 = "ISO 8859-1"; /* MS Specific */ static char *str_Unicode = "Unicode"; /* Mac Specific */ static char *str_ApRoman = "Roman"; static char *str_ApJapanese = "ñÐÏÎÓËÉÊ"; static char *str_ApChinese = "ëÉÔÁÊÓËÉÊ"; static char *str_ApKorean = "ëÏÒÅÊÓËÉÊ"; static char *str_ApArabic = "áÒÁÂÓËÉÊ"; static char *str_ApHebrew = "é×ÒÉÔ"; static char *str_ApGreek = "çÒÅÞÅÓËÉÊ"; static char *str_ApRussian = "òÕÓÓËÉÊ"; static char *str_ApRSymbol = "RSymbol"; static char *str_ApDevanagari = "äÅ×ÁÎÁÇÁÒÉ"; static char *str_ApGurmukhi = "Gurmukhi"; static char *str_ApGujarati = "Gujarati"; static char *str_ApOriya = "Oriya"; static char *str_ApBengali = "âÅÎÇÁÌÉ"; static char *str_ApTamil = "Tamil"; static char *str_ApTelugu = "Telugu"; static char *str_ApKannada = "Kannada"; static char *str_ApMalayalam = "Malayalam"; static char *str_ApSinhalese = "Sinhalese"; static char *str_ApBurmese = "Burmese"; static char *str_ApKhmer = "Khmer"; static char *str_ApThai = "Thai"; static char *str_ApLoatian = "Loatian"; static char *str_ApGeorgian = "çÒÕÚÉÎÓËÉÊ"; static char *str_ApArmenian = "áÒÍÑÎÓËÉÊ"; static char *str_ApMaldivian = "Maldivian"; static char *str_ApTibetan = "Tibetan"; static char *str_ApMongolian = "íÏÎÇÏÌØÓËÉÊ"; static char *str_ApGeez = "Geez"; static char *str_ApSlavic = "Slavic"; static char *str_ApVietnamese = "÷ØÅÔÎÁÍÓËÉÊ"; static char *str_ApSindhi = "Sindhi"; static char *str_Uninterpreted = "Uninterp"; /* Apple Language list */ static char *str_ApEnglish = "áÎÇÌÉÊÓËÉÊ"; static char *str_ApFrench = "æÒÁÎÃÕÚÓËÉÊ"; static char *str_ApGerman = "îÅÍÅÃËÉÊ"; static char *str_ApItalian = "éÔÁÌØÑÎÓËÉÊ"; static char *str_ApDutch = "çÏÌÁÎÄÓËÉÊ"; static char *str_ApSwedish = "û×ÅÄÓËÉÊ"; static char *str_ApSpanish = "éÓÐÁÎÓËÉÊ"; static char *str_ApDanish = "äÁÔÓËÉÊ"; static char *str_ApPortuguese = "ðÏÒÔÕÇÁÌØÓËÉÊ"; static char *str_ApNorwegian = "îÏÒ×ÅÖÓËÉÊ"; static char *str_ApFinnish = "æÉÎÓËÉÊ"; static char *str_ApIcelandic = "éÓÌÁÎÄÓËÉÊ"; static char *str_ApMaltese = "Maltese"; static char *str_ApTurkish = "ôÕÒÅÃËÉÊ"; static char *str_ApYugoslavian = "àÇÏÓÌÁ×ÓËÉÊ"; static char *str_ApUrdu = "õÒÄÕ"; static char *str_ApHindi = "èÉÎÄÉ"; /* MS Language list */ /* Language & Country (where applicable) in the native language if I can find */ /* it, in english if I can't. Followed by the 2char language _ 2char country */ /* (again country isn't always applicable. Should basque be ES, FR? */ static char *str_Albanian = "áÌÂÁÎÓËÉÊ sq_AL"; static char *str_Arabic = "áÒÁÂÓËÉÊ ar"; static char *str_Basque = "âÁÓËÓËÉÊ eu"; static char *str_Byelorussian = "âÅÌÏÒÕÓÓËÉÊ be_BY"; static char *str_Bulgarian = "âÏÌÇÁÒÓËÉÊ bg_BG"; static char *str_Catalan = "ëÁÔÁÌÁÎÓËÉÊ ca"; static char *str_MSChinese = "ëÉÔÁÊÓËÉÊ zh_CN"; static char *str_Croatian = "èÏÒ×ÁÔÓËÉÊ hr"; static char *str_Czech = "þÅÛÓËÉÊ cs_CZ"; static char *str_Danish = "äÁÔÓËÉÊ da_DK"; static char *str_Dutch = "çÏÌÁÎÄÓËÉÊ nl_NL"; static char *str_Flemish = "âÅÌØÇÉÊÓËÉÊ nl_BE"; static char *str_BrEnglish = "âÒÉÔÁÎÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_UK"; static char *str_AmEnglish = "áÍÅÒÉËÁÎÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_US"; static char *str_CaEnglish = "ëÁÎÁÄÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_CA"; static char *str_AuEnglish = "á×ÓÔÒÁÌÉÊÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_AU"; static char *str_NZEnglish = "îÏ×ÏÚÅÌÁÎÄÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_NZ"; static char *str_IEEnglish = "éÒÌÁÎÄÓËÉÊ ÁÎÇÌÉÊÓËÉÊ en_IE"; static char *str_Estonia = "üÓÔÏÎÓËÉÊ et_EE"; static char *str_Finnish = "Suomi fi_FI"; static char *str_FRFrench = "Français Français fr_FR"; static char *str_BEFrench = "Français Belgique fr_BE"; static char *str_CAFrench = "Français Canadien fr_CA"; static char *str_CHFrench = "Français Suiss fr_CH"; static char *str_LUFrench = "Français de Luxembourg fr_LU"; static char *str_DEGerman = "Deutsch Deutsch de_DE"; static char *str_CHGerman = "Schweizer Deutsch de_CH"; static char *str_ATGerman = "Österreichisch Deutsch de_AT"; static char *str_LUGerman = "Luxembourg Deutsch de_LU"; static char *str_LIGerman = "Liechtenstein Deutsch de_LI"; static char *str_Greek = "çÒÅÞÅÓËÉÊ el_GR"; static char *str_Hebrew = "é×ÒÉÔ he_IL"; static char *str_Hungarian = "÷ÅÎÇÅÒÓËÉÊ hu_HU"; static char *str_Icelandic = "éÓÌÁÎÄÓËÉÊ is_IS"; static char *str_Italian = "éÔÁÌØÑÎÓËÉÊ it_IT"; static char *str_CHItalian = "û×ÅÊÃÁÒÓËÉÊ ÉÔÁÌØÑÎÓËÉÊ it_CH"; static char *str_Japanese = "ñÐÏÎÓËÉÊ jp_JP"; static char *str_Latvian = "ìÁÔÙÛÓËÉÊ lv_LV"; static char *str_Lithuanian = "ìÉÔÏ×ÓËÉÊ lt_LT"; static char *str_Norwegian = "Norsk Bokmal no_NO"; static char *str_NorwegianN = "Norsk Nynorsk no_NO"; static char *str_Polish = "ðÏÌØÓËÉÊ pl_PL"; static char *str_PTPortuguese = "ðÏÒÔÕÇÁÌØÓËÉÊ pt_PT"; static char *str_BRPortuguese = "âÒÁÚÉÌØÓËÉÊ ÐÏÒÔÕÇÁÌØÓËÉÊ pt_BR"; static char *str_Romanian = "òÕÍÙÎÓËÉÊ ro_RO"; static unichar_t str_Russian = { 0x420, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, ' ', 'r','u','_','R','U', '\0' }; static char *str_Slovak = "óÌÏ×ÁÃËÉÊ sk_SK"; static char *str_Slovenian = "óÌÏ×ÅÎÓËÉÊ sl_SI"; static char *str_TradSpanish = "éÓÐÁÎÓËÉÊ es_ES"; static char *str_MXSpanish = "íÅËÓÉËÁÎÓËÉÊ ÉÓÐÁÎÓËÉÊ es_MX"; static char *str_ModSpanish = "Español Español es_ES"; static char *str_Swedish = "û×ÅÄÓËÉÊ sv_SE"; static char *str_Turkish = "ôÕÒÅÃËÉÊ tr_TR"; static char *str_Ukrainian = "õËÒÁÉÎÓËÉÊ uk_UA"; /* String types */ static char *str_Copyright = "á×ÔÏÒÓËÏÅ ÐÒÁ×Ï"; static char *str_SubFamily = "ðÏÄÓÅÍÅÊÓÔ×Ï"; static char *str_UniqueID = "UniqueID"; static char *str_Fullname = "ðÏÌÎÏÅ ÎÁÚ×ÁÎÉÅ"; static char *str_Trademark = "ôÏÒÇÏ×ÁÑ ÍÁÒËÁ"; static char *str_PostscriptName = "PS FontName"; static char *str_Manufacturer = "ðÒÏÉÚ×ÏÄÉÔÅÌØ"; static char *str_Designer = "äÉÚÁÊÎÅÒ"; static char *str_Descriptor = "ïÐÉÓÁÎÉÅ"; static char *str_VendorURL = "URL ÐÒÏÉÚ×ÏÄÉÔÅÌÑ"; static char *str_DesignerURL = "URL ÄÉÚÁÊÎÅÒÁ"; static char *str_License = "ìÉÃÅÎÚÉÑ"; static char *str_LicenseURL = "URL ÌÉÃÅÎÚÉÉ"; static char *str_OTFFamily = "Preferred Family"; static char *str_OTFStyles = "Preferred Styles"; static char *str_CompatableFull = "Compatable Full"; static char *str_SampleText = "ïÂÒÁÚÅà ÔÅËÓÔÁ"; static char *str_FontRevision = "Font Revision:"; static char *str_Checksum = "Checksum:"; static char *str_MagicNumber = "Magic Number:"; static char *str_Flags = "Flags:"; static char *str_Baseliney0 = "Baseline at y==0"; static char *str_LBearingx0 = "LBearing at x==0"; static char *str_InstrsDepOnPointsize = "Instrs Depend on Pointsize"; static char *str_ForcePPEMInt = "Force PPEM to integer"; static char *str_InstrsAlterWidth = "Instrs Alter Width"; static char *str_VerticalLayout = "Vertical Layout"; /*static char *str_Arabic = "Arabic";*/ static char *str_GXWithMetamorphosis = "GX With Metamorphosis"; static char *str_ContainsRightToLeft = "Contains Right To Left"; static char *str_Indic = "Indic"; static char *str_Lossless = "Lossless"; static char *str_FontConverted = "Font Converted"; static char *str_ClearType = "Clear Type"; static char *str_UnitsPerEm = "Units Per Em:"; static char *str_Created = "Created:"; static char *str_Modified = "Modified:"; static char *str_XMin = "XMin:"; static char *str_XMax = "XMax:"; static char *str_YMin = "YMin:"; static char *str_YMax = "YMax:"; static char *str_MacStyle = "Mac Style:"; static char *str_Underline = "Underline"; static char *str_Outline = "Outline"; static char *str_Shadow = "Shadow"; /*static char *str_Condensed = "Condensed";*/ static char *str_Extended = "Extended"; static char *str_SmallestSize = "Smallest Size:"; static char *str_FontDirection = "Font Direction:"; static char *str_FullyMixed = "Fully Mixed"; static char *str_StronglyLeftToRight = "Strongly Left To Right"; static char *str_LtoROrNeutral = "LtoR Or Neutral"; static char *str_StronglyRightToLeft = "Strongly Right To Left"; static char *str_RToLOrNeutral = "RToL Or Neutral"; static char *str_LocaFormat = "loca Format:"; static char *str_16bit = "16 ÂÉÔ"; static char *str_32bit = "32 ÂÉÔ"; static char *str_GlyfFormat = "glyf Format:"; /* metrics headers (hhea,vhea) */ static char *str_Ascent = "Ascent:"; static char *str_Descent = "Descent:"; static char *str_AdvanceMax = "Advance Max:"; static char *str_MinLeftBearing = "Min LBearing:"; static char *str_MinRightBearing = "Min RBearing:"; static char *str_MinTopBearing = "Min TBearing:"; static char *str_MinBottomBearing = "Min BBearing:"; static char *str_XMaxExtent = "X Max Extent:"; static char *str_YMaxExtent = "Y Max Extent:"; static char *str_CaretRise = "Caret Rise:"; static char *str_CaretRun = "Caret Run:"; static char *str_CaretOffset = "Caret Offset:"; static char *str_DataFormat = "Data Format:"; static char *str_MetricsCount = "Metrics Count:"; static char *str_ChangingMetricsCount = "Changing Metrics Count"; static char *str_ReallyChangeMetricsCnt = "Changing the long metrics count is rather dangerous.\nDo you really want to do that?"; /* metrics data (hmtx,vmtx) */ static char *str_GrowLongMetrics = "Do you want to exend the metrics table?"; static char *str_GrowLongMetricsSize = "You are attempting to change the width\nof a glyph whose width is currently set\nby default. Making this change requires\na change in the table format and the\n*hea table.\nIs that what you want?" /* post table */ static char *str_Names = "îÁÚ×ÁÎÉÑ"; static char *str_Encoding = "ëÏÄÉÒÏ×ËÁ"; static char *str_MaxMemType1 = "íÁËÓ.:"; static char *str_MinMemType1 = "Min Memory (Type1):"; static char *str_MaxMemType42 = "íÁËÓ.:"; static char *str_MinMemType42 = "Min Memory (Type42):"; static char *str_IsFixed = "Is Fixed:"; static char *str_ItalicAngle = "õÇÏÌ ÎÁËÌÏÎÁ:"; static char *str_UnderlinePos = "Underline Pos:"; static char *str_UnderlineHeight = "òÁÚÍÅÒ:"; static char *str_PostVersion4 = "A table version of 4 for the post table\nspecifies an encoding rather than\na list of character names. All names\nwill be lost.\nIs that what you want?"; static char *str_PostNamesLost = "All names will be lost"; static char *str_PostVersion3 = "A table version of 3 for the post table\nspecifies there are no postscript names\nAll names will be lost.\nIs that what you want?"; static char *str_PostEncLost = "ëÏÄÉÒÏ×ËÁ ÂÕÄÅÔ ÐÏÔÅÒÑÎÁ"; static char *str_PostNotVersion4 = "A table version other than 4.0 for the post table\nDoes not include the encoding\nIt will be lost.\nIs that what you want?"; static char *str_PostVersion1Len = "A table version of 1 for the post table\ncan specify at most 258 glyph names\nThis font has more glyphs, those beyond\n258 will not have names.\nIs that what you want?"; static char *str_PostVersion1 = "A table version of 1 for the post table\nonly works for macintosh encodings\nYou can't use it with the names in this font."; static char *str_PostVersion2_5 = "A table version of 2.5 for the post table\nonly works for rearrangements of macintosh encodings\nYou can't use it with the names in this font.\n(And it's depreciated anyway)"; static char *str_PostVersionFailure = "This version may not work for these names"; static char *str_Yes = "äÁ"; static char *str_No = "îÅÔ"; static char *str_BadPSName = "Bad PostScript Name"; static char *str_BadPSNameEmpty = "îÅÏÂÈÏÄÉÍÏ ÕËÁÚÁÔØ ÎÁÚ×ÁÎÉÅ"; static char *str_BadPSNameChar = "A PostScript name may not include '()[]{}<>%/'\nIt must be entirely printable ASCII\nIt may not contain a space"; static char *str_BadPSNameNotNumber = "A PostScript name may not be a number"; static char *str_BadNumber = "Bad Number"; static char *str_NumberOutOfRange = "Number out of range\nMust be between %d and %d"; static char *str_BinaryEdit = "Edited with Binary Editor"; static char *str_BinaryEditSave = "This table has been edited with\nthe binary editor. You must save\nthe font before you can edit it\nhere."; /* cvt table (shorts) */ static char *str_RetainChanges = "Retain Changes?"; static char *str_BadNumberCloseAnyway = "Bad Number, Close Anyway?"; /* ttfsave */ static char *str_NoBackup="Couldn't create backup file"; static char *str_CouldntWriteBackup="Couldnt Write Backup File"; static char *str_CouldntReopenFile="Couldn't open ttf file"; static char *str_CantCreate="îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ"; static char *str_CantCreateFile="îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ: %.100hs"; static char *str_SaveFailed="óÂÏÊ ÓÏÈÒÁÎÅÎÉÑ!"; static char *str_SaveFailedOn="óÂÏÊ ÐÒÉ ÐÏÐÙÔËÅ ÓÏÈÒÁÎÅÎÉÑ %.100hs."; static char *str_CantRecoverFromSave="Can't recover from failed save."; /* gasp */ static char *str_Count = "Count:"; static char *str_GridFit = "GridFit"; static char *str_AntiAlias = "AntiAlias"; /* fontview */ static char *str_CouldntReadGlyphs = "Couldn't read glyphs"; /* charview */ static char *str_CouldntReadGlyph = "Couldn't read glyph"; static char *str_CouldntReadGlyphd = "Couldn't read glyph %d"; static int num_buttonsize = 55; mensis-080507/openfontdlg.c0100664000076500007650000001654711010403077014015 0ustar gwwgww/* Copyright (C) 2000-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include "mensisui.h" struct gfc_data { int done; unichar_t *ret; GGadget *gfc; }; static int GFD_Ok(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); d->done = true; d->ret = GGadgetGetTitle(d->gfc); } return( true ); } static int GFD_New(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); d->done = true; GDrawSetVisible(GGadgetGetWindow(g),false); FontNew(); } return( true ); } static int GFD_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); d->done = true; } return( true ); } static int e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { struct gfc_data *d = GDrawGetUserData(gw); d->done = true; } else if ( event->type == et_map ) { /* Above palettes */ GDrawRaise(gw); } else if ( event->type == et_char ) { return( false ); } else if ( event->type == et_mousemove || (event->type==et_mousedown && event->u.mouse.button==3 )) { struct gfc_data *d = GDrawGetUserData(gw); GFileChooserPopupCheck(d->gfc,event); } else if (( event->type==et_mouseup || event->type==et_mousedown ) && (event->u.mouse.button==4 || event->u.mouse.button==5) ) { struct gfc_data *d = GDrawGetUserData(gw); return( GGadgetDispatchEvent((GGadget *) (d->gfc),event)); } return( event->type!=et_char ); } unichar_t *FVOpenFont(const unichar_t *title, const unichar_t *defaultfile, const unichar_t *initial_filter, unichar_t **mimetypes,int mult, int newok) { GRect pos; int i, filter; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[7]; GTextInfo label[5]; struct gfc_data d; int bs = GIntGetResource(_NUM_Buttonsize), bsbigger, totwid, spacing; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_undercursor|wam_restrict; wattrs.event_masks = ~(1<totwid; totwid = bsbigger?4*bs+4*12:totwid; spacing = (totwid-4*bs-2*12)/3; } else { totwid = GGadgetScale(230); bsbigger = 3*bs+3*14>totwid; totwid = bsbigger?3*bs+3*12:totwid; spacing = (totwid-3*bs-2*12)/2; } pos.width = GDrawPointsToPixels(NULL,totwid); pos.height = GDrawPointsToPixels(NULL,223); gw = GDrawCreateTopWindow(NULL,&pos,e_h,&d,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); gcd[0].gd.pos.x = 12; gcd[0].gd.pos.y = 6; gcd[0].gd.pos.width = totwid*100/GIntGetResource(_NUM_ScaleFactor)-24; gcd[0].gd.pos.height = 180; gcd[0].gd.flags = gg_visible | gg_enabled; if ( RecentFiles[0]!=NULL ) gcd[0].gd.flags = gg_visible | gg_enabled | gg_file_pulldown; if ( mult ) gcd[0].gd.flags |= gg_file_multiple; gcd[0].creator = GFileChooserCreate; gcd[1].gd.pos.x = 12; gcd[1].gd.pos.y = 192-3; gcd[1].gd.pos.width = -1; gcd[1].gd.flags = gg_visible | gg_enabled | gg_but_default; label[1].text = (unichar_t *) _STR_OK; label[1].text_in_resource = true; gcd[1].gd.mnemonic = 'O'; gcd[1].gd.label = &label[1]; gcd[1].gd.handle_controlevent = GFD_Ok; gcd[1].creator = GButtonCreate; i=2; if ( newok ) { gcd[2].gd.pos.x = -(spacing+bs)*100/GIntGetResource(_NUM_ScaleFactor)-12; gcd[2].gd.pos.y = 192; gcd[2].gd.pos.width = -1; gcd[2].gd.flags = gg_visible | gg_enabled; label[2].text = (unichar_t *) _STR_New; label[2].text_in_resource = true; gcd[2].gd.mnemonic = 'N'; gcd[2].gd.label = &label[2]; gcd[2].gd.handle_controlevent = GFD_New; gcd[2].creator = GButtonCreate; i=3; } filter = i; gcd[i].gd.pos.x = (spacing+bs)*100/GIntGetResource(_NUM_ScaleFactor)+12; gcd[i].gd.pos.y = 192; gcd[i].gd.pos.width = -1; gcd[i].gd.flags = gg_visible | gg_enabled; label[i].text = (unichar_t *) _STR_Filter; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'F'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = GFileChooserFilterEh; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = -12; gcd[i].gd.pos.y = 192; gcd[i].gd.pos.width = -1; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = GFD_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i++].creator = GGroupCreate; GGadgetsCreate(gw,gcd); GGadgetSetUserData(gcd[filter].ret,gcd[0].ret); GFileChooserConnectButtons(gcd[0].ret,gcd[1].ret,gcd[filter].ret); GFileChooserSetFilterText(gcd[0].ret,initial_filter); GFileChooserSetMimetypes(gcd[0].ret,mimetypes); if ( RecentFiles[0]!=NULL ) { GGadget *tf; GFileChooserGetChildren(gcd[0].ret,NULL, NULL, &tf); GGadgetSetList(tf,GTextInfoFromChars(RecentFiles,RECENT_MAX),false); } GGadgetSetTitle(gcd[0].ret,defaultfile); memset(&d,'\0',sizeof(d)); d.gfc = gcd[0].ret; GWidgetHidePalettes(); GDrawSetVisible(gw,true); while ( !d.done ) GDrawProcessOneEvent(NULL); GDrawDestroyWindow(gw); GDrawProcessPendingEvents(NULL); /* Give the window a chance to vanish... */ GDrawSync(NULL); GDrawProcessPendingEvents(NULL); /* Give the window a chance to vanish... */ return(d.ret); } mensis-080507/OS2.c0100664000076500007650000025375411010406101012073 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include static unichar_t zero[] = { '0', '\0' }; static unichar_t one[] = { '1', '\0' }; static unichar_t two[] = { '2', '\0' }; static GTextInfo OS2versions[] = { { (unichar_t *) zero, NULL, 0, 0, (void *) 0}, { (unichar_t *) one, NULL, 0, 0, (void *) 1}, { (unichar_t *) two, NULL, 0, 0, (void *) 2}, { NULL }}; static GTextInfo widthclass[] = { { (unichar_t *) _STR_UltraCondensed, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ExtraCondensed, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Condensed75, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SemiCondensed, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Medium100, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SemiExpanded, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Expanded125, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ExtraExpanded, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UltraExpanded, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo weightclass[] = { { (unichar_t *) _STR_Thin100, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ExtraLight200, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Light300, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Book400, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Medium500, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DemiBold600, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bold700, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Heavy800, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Black900, NULL, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo fstype[] = { { (unichar_t *) _STR_NeverEmbeddable, NULL, 0, 0, (void *) 0x02, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OnlyPrint, NULL, 0, 0, (void *) 0x04, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_EditableDoc, NULL, 0, 0, (void *) 0x0c, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Installable, NULL, 0, 0, (void *) 0x00, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panfamily[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TextDisplay, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Script, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Decorative, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Pictoral, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_6, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_7, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_8, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_9, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_10, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_11, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panserifs[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Cove, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObtuseCove, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SquareCove, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObtuseSquareCove, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Square, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Thin, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bone, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Exaggerated, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Triangle, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalSans, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObtuseSans, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_PerpSans, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Flared, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Rounded, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panweight[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VeryLight, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Light, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Thin, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Book, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Medium, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Demi, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bold, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Heavy, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Black, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Nord, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panprop[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OldStyle, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Modern, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_EvenWidth, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Expanded, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Condensed, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VeryExpanded, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VeryCondensed, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Monospaced, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_10, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_11, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo pancontrast[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_None, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VeryLow, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Low, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MediumLow, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Medium, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MediumHigh, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_High, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_VeryHigh, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_10, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_11, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panstrokevar[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GradDiag, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GradTrans, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GradVert, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GradHor, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_RapidVert, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_RapidHor, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_InstantVert, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_9, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_10, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_11, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panarmstyle[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StraightArmsH, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StraightArmsW, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StraightArmsV, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StraightArmsSS, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StraightArmsDS, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NStraightArmsH, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NStraightArmsW, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NStraightArmsV, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NStraightArmsSS, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NStraightArmsDS, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panletterform[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalContact, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalWeighted, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalBoxed, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalFlattened, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalRounded, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalOffCenter, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NormalSquare, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueContact, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueWeighted, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueBoxed, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueRounded, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueOffCenter, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ObliqueSquare, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panmidline[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StandardTrimmed, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StandardPointed, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_StandardSerifed, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HighTrimmed, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HighPointed, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HighSerifed, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantTrimmed, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantPointed, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantSerifed, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LowTrimmed, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LowPointed, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LowSerifed, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo panxheight[] = { { (unichar_t *) _STR_Any, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NoFit, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantSmall, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantStandard, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ConstantLarge, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DuckingSmall, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DuckingStandard, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_DuckingLarge, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_8, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_9, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_10, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_11, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_12, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_13, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_14, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_15, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo ibmfamily[] = { { (unichar_t *) _STR_NoClassification, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OldStyleSerifs, NULL, 0, 0, (void *) 0x100, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSRoundedLegibility, NULL, 0, 0, (void *) 0x101, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSGeralde, NULL, 0, 0, (void *) 0x102, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSVenetian, NULL, 0, 0, (void *) 0x103, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSModifiedVenetian, NULL, 0, 0, (void *) 0x104, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSDutchModern, NULL, 0, 0, (void *) 0x105, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSDutchTrad, NULL, 0, 0, (void *) 0x106, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSContemporary, NULL, 0, 0, (void *) 0x107, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSCaligraphic, NULL, 0, 0, (void *) 0x108, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OSSMiscellaneous, NULL, 0, 0, (void *) 0x10f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TransitionalSerifs, NULL, 0, 0, (void *) 0x200, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TSDirectLine, NULL, 0, 0, (void *) 0x201, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TSScript, NULL, 0, 0, (void *) 0x202, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_TSMiscellaneous, NULL, 0, 0, (void *) 0x20f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ModernSerifs, NULL, 0, 0, (void *) 0x300, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MSItalian, NULL, 0, 0, (void *) 0x301, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MSScript, NULL, 0, 0, (void *) 0x302, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MSMiscellaneous, NULL, 0, 0, (void *) 0x30f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ClarendonSerifs, NULL, 0, 0, (void *) 0x400, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSClarendon, NULL, 0, 0, (void *) 0x401, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSModern, NULL, 0, 0, (void *) 0x402, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSTraditional, NULL, 0, 0, (void *) 0x403, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSNewspaper, NULL, 0, 0, (void *) 0x404, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSStubSerif, NULL, 0, 0, (void *) 0x405, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSMonotone, NULL, 0, 0, (void *) 0x406, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSTypewriter, NULL, 0, 0, (void *) 0x407, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CSMiscellaneous, NULL, 0, 0, (void *) 0x40f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SlabSerifs, NULL, 0, 0, (void *) 0x500, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSMonotone, NULL, 0, 0, (void *) 0x501, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSHumanist, NULL, 0, 0, (void *) 0x502, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSGeometric, NULL, 0, 0, (void *) 0x503, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSSwiss, NULL, 0, 0, (void *) 0x504, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSTypewriter, NULL, 0, 0, (void *) 0x505, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSMiscellaneous, NULL, 0, 0, (void *) 0x50f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FreeformSerifs, NULL, 0, 0, (void *) 0x700, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FSModern, NULL, 0, 0, (void *) 0x701, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_FSMiscellaneous, NULL, 0, 0, (void *) 0x70f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SansSerif, NULL, 0, 0, (void *) 0x800, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSIBMNeoGrotesqueGothic, NULL, 0, 0, (void *) 0x801, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSHumanist, NULL, 0, 0, (void *) 0x802, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSLowxRoundGeometric, NULL, 0, 0, (void *) 0x803, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSHighxRoundGeometric, NULL, 0, 0, (void *) 0x804, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSNeoGrotesqueGothic, NULL, 0, 0, (void *) 0x805, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSModifiedGrotesqueGothic, NULL, 0, 0, (void *) 0x806, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSTypewriterGothic, NULL, 0, 0, (void *) 0x809, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSMatrix, NULL, 0, 0, (void *) 0x80a, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SSMiscellaneous, NULL, 0, 0, (void *) 0x80f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Ornamentals, NULL, 0, 0, (void *) 0x900, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OEngraver, NULL, 0, 0, (void *) 0x901, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OBlackLetter, NULL, 0, 0, (void *) 0x902, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ODecorative, NULL, 0, 0, (void *) 0x903, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_O3D, NULL, 0, 0, (void *) 0x904, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OMiscellaneous, NULL, 0, 0, (void *) 0x90f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Scripts, NULL, 0, 0, (void *) 0xa00, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SUncial, NULL, 0, 0, (void *) 0xa01, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SBrushJoined, NULL, 0, 0, (void *) 0xa02, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SFormalJoined, NULL, 0, 0, (void *) 0xa03, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SMonotoneJoined, NULL, 0, 0, (void *) 0xa04, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SCaligraphic, NULL, 0, 0, (void *) 0xa05, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SBrushUnjoined, NULL, 0, 0, (void *) 0xa06, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SFormalUnjoined, NULL, 0, 0, (void *) 0xa07, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SMonotoneUnjoined, NULL, 0, 0, (void *) 0xa08, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SMiscellaneous, NULL, 0, 0, (void *) 0xa0f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Symbolic, NULL, 0, 0, (void *) 0xc00, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SyMixedSerif, NULL, 0, 0, (void *) 0xc03, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SyOldStyleSerif, NULL, 0, 0, (void *) 0xc06, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SyNeoGrotesqueSansSerif, NULL, 0, 0, (void *) 0xc07, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SyMiscellaneous, NULL, 0, 0, (void *) 0xc0f, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo unicoderangelist[] = { { (unichar_t *) _STR_BasicLatin, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Latin1Sup, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LatinExtA, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LatinExtB, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_IPAExten, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SpacingModLetters, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CombiningDiacritics, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UGreek, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GreekSymCoptic, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Cyrillic, NULL, 0, 0, (void *) 9, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Armenian, NULL, 0, 0, (void *) 10, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UHebrew, NULL, 0, 0, (void *) 11, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HebrewExtended, NULL, 0, 0, (void *) 12, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UArabic, NULL, 0, 0, (void *) 13, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ArabicExtended, NULL, 0, 0, (void *) 14, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Devanagari, NULL, 0, 0, (void *) 15, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bengali, NULL, 0, 0, (void *) 16, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Gurmukhi, NULL, 0, 0, (void *) 17, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Gujarati, NULL, 0, 0, (void *) 18, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Oriya, NULL, 0, 0, (void *) 19, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Tamil, NULL, 0, 0, (void *) 20, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Telegu, NULL, 0, 0, (void *) 21, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Kannada, NULL, 0, 0, (void *) 22, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Malayalam, NULL, 0, 0, (void *) 23, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Thai, NULL, 0, 0, (void *) 24, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Loa, NULL, 0, 0, (void *) 25, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Georgian, NULL, 0, 0, (void *) 26, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GeorgianExtended, NULL, 0, 0, (void *) 27, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HangulJamo, NULL, 0, 0, (void *) 28, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LatinAdditional, NULL, 0, 0, (void *) 29, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GreekAdditional, NULL, 0, 0, (void *) 30, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Punctuation, NULL, 0, 0, (void *) 31, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SubSuperscripts, NULL, 0, 0, (void *) 32, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Currency, NULL, 0, 0, (void *) 33, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CombSymbolDiac, NULL, 0, 0, (void *) 34, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_LeterlikeSymbols, NULL, 0, 0, (void *) 35, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_NumberForms, NULL, 0, 0, (void *) 36, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Arrows, NULL, 0, 0, (void *) 37, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MathOpers, NULL, 0, 0, (void *) 38, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MiscTech, NULL, 0, 0, (void *) 39, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ControlPictures, NULL, 0, 0, (void *) 40, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_OCR, NULL, 0, 0, (void *) 41, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_EnclosedAlphanumerics, NULL, 0, 0, (void *) 42, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_BoxDrawing, NULL, 0, 0, (void *) 43, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_BlockElements, NULL, 0, 0, (void *) 44, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_GeometricShapes, NULL, 0, 0, (void *) 45, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_MiscSymbols, NULL, 0, 0, (void *) 46, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Dingbats, NULL, 0, 0, (void *) 47, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJKSymPunct, NULL, 0, 0, (void *) 48, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Hiragana, NULL, 0, 0, (void *) 49, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Katakana, NULL, 0, 0, (void *) 50, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bopomofo, NULL, 0, 0, (void *) 51, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HangulCompatJamo, NULL, 0, 0, (void *) 52, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJKMisc, NULL, 0, 0, (void *) 53, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_EnclosedLettersMonths, NULL, 0, 0, (void *) 54, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJKCompat, NULL, 0, 0, (void *) 54, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Hangul, NULL, 0, 0, (void *) 56, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Surrogates, NULL, 0, 0, (void *) 57, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unassignedbit58, NULL, 0, 0, (void *) 58, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJK, NULL, 0, 0, (void *) 59, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_PrivateUse, NULL, 0, 0, (void *) 60, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJKCompatIdeo, NULL, 0, 0, (void *) 61, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_AlphabeticPresentationForms, NULL, 0, 0, (void *) 62, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ArabicPresentationFormsA, NULL, 0, 0, (void *) 63, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CombiningHalfMarks, NULL, 0, 0, (void *) 64, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CJKCompatForms, NULL, 0, 0, (void *) 65, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_SmallForms, NULL, 0, 0, (void *) 66, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_ArabicPresentationFormsB, NULL, 0, 0, (void *) 67, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_HalfFullWidthForms, NULL, 0, 0, (void *) 68, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Specials, NULL, 0, 0, (void *) 69, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Tibetan, NULL, 0, 0, (void *) 70, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Syriac, NULL, 0, 0, (void *) 71, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Thaana, NULL, 0, 0, (void *) 72, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Sinhala, NULL, 0, 0, (void *) 73, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Myanmar, NULL, 0, 0, (void *) 74, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Ethiopic, NULL, 0, 0, (void *) 75, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Cherokee, NULL, 0, 0, (void *) 76, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_UnitedCanSyl, NULL, 0, 0, (void *) 77, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Ogham, NULL, 0, 0, (void *) 78, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Runic, NULL, 0, 0, (void *) 79, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Khmer, NULL, 0, 0, (void *) 80, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Mongolian, NULL, 0, 0, (void *) 81, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Braille, NULL, 0, 0, (void *) 82, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Yi, NULL, 0, 0, (void *) 83, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Unassignedbit84, NULL, 0, 0, (void *) 84, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo fsselectionlist[] = { { (unichar_t *) _STR_Italic, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Underscore, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Negative, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Outlined, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Strikeout, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Bold, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_Regular, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static GTextInfo codepagelist[] = { { (unichar_t *) _STR_CPLatin1, NULL, 0, 0, (void *) 0, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPLatin2, NULL, 0, 0, (void *) 1, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPCyrillic, NULL, 0, 0, (void *) 2, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPGreek, NULL, 0, 0, (void *) 3, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPTurkish, NULL, 0, 0, (void *) 4, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPHebrew, NULL, 0, 0, (void *) 5, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPArabic, NULL, 0, 0, (void *) 6, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPBaltic, NULL, 0, 0, (void *) 7, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPVietnamese, NULL, 0, 0, (void *) 8, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPThai, NULL, 0, 0, (void *) 16, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPJapan, NULL, 0, 0, (void *) 17, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPSimplifiedChinese, NULL, 0, 0, (void *) 18, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPWansung, NULL, 0, 0, (void *) 19, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPTraditionalChinese, NULL, 0, 0, (void *) 20, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPJohab, NULL, 0, 0, (void *) 21, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPMac, NULL, 0, 0, (void *) 29, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPOEM, NULL, 0, 0, (void *) 30, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPSymbol, NULL, 0, 0, (void *) 31, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPIBMGreek, NULL, 0, 0, (void *) 48, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPDOSRussian, NULL, 0, 0, (void *) 49, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPDOSNordic, NULL, 0, 0, (void *) 50, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPArabic2, NULL, 0, 0, (void *) 51, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPDOSFrench, NULL, 0, 0, (void *) 52, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPHebrew2, NULL, 0, 0, (void *) 53, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPDOSIcelandic, NULL, 0, 0, (void *) 54, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPDOSPortuguese, NULL, 0, 0, (void *) 54, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPIBMTurkish, NULL, 0, 0, (void *) 56, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPIBMCyrillic, NULL, 0, 0, (void *) 57, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPLatin22, NULL, 0, 0, (void *) 58, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPIBMBaltic, NULL, 0, 0, (void *) 59, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPGreek3, NULL, 0, 0, (void *) 60, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPArabic3, NULL, 0, 0, (void *) 61, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPLatin12, NULL, 0, 0, (void *) 62, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { (unichar_t *) _STR_CPUS, NULL, 0, 0, (void *) 63, NULL, 0, 0, 0, 0, 0, 0, 0, 1}, { NULL }}; static int anames[] = { _STR_SubXSize, _STR_SubYSize, _STR_SubXOffset, _STR_SubYOffset, _STR_SupXSize, _STR_SupYSize, _STR_SupXOffset, _STR_SupYOffset, _STR_StrikeSize, _STR_StrikePos, 0 }; static int pnames[] = { _STR_Family, _STR_Serifs, _STR_Weight, _STR_Proportion, _STR_Contrast, _STR_StrokeVar, _STR_ArmStyle, _STR_Letterform, _STR_MidLine, _STR_XHeight, 0 }; #define CID_Version 1000 #define CID_WeightClass 1002 #define CID_WeightClassL 1003 #define CID_WidthClass 1004 #define CID_WidthClassL 1005 #define CID_FSType 1006 #define CID_FSTypeL 1007 #define CID_NoSubsetting 1106 #define CID_OnlyBitmaps 1107 #define CID_IBMFamily 1008 #define CID_IBMFamilyL 1009 #define CID_Vendor 1010 #define CID_Selection 1011 #define CID_SelectionList 1012 #define CID_SubXSize 2001 #define CID_SubYSize 2002 #define CID_SubXOffset 2003 #define CID_SubYOffset 2004 #define CID_SupXSize 2005 #define CID_SupYSize 2006 #define CID_SupXOffset 2007 #define CID_SupYOffset 2008 #define CID_StrikeSize 2009 #define CID_StrikePos 2010 #define CID_PanFamily 4001 #define CID_PanSerifs 4002 #define CID_PanWeight 4003 #define CID_PanProp 4004 #define CID_PanContrast 4005 #define CID_PanStrokeVar 4006 #define CID_PanArmStyle 4007 #define CID_PanLetterform 4008 #define CID_PanMidLine 4009 #define CID_PanXHeight 4010 #define CID_UnicodeRanges 5001 #define CID_UnicodeList 5002 #define CID_FirstUnicode 5003 #define CID_LastUnicode 5004 #define CID_CodePageLab 5005 #define CID_CodePageRanges 5006 #define CID_CodePageList 5007 #define CID_AvgWidth 1001 #define CID_TypoAscender 6001 #define CID_TypoDescender 6002 #define CID_TypoLineGap 6003 #define CID_WinAscent 6004 #define CID_WinDescent 6005 #define CID_XHeightLab 6106 #define CID_XHeight 6006 #define CID_CapHeightLab 6107 #define CID_CapHeight 6007 #define CID_DefCharLab 6108 #define CID_DefChar 6008 #define CID_DefCharS 6018 #define CID_BrkCharLab 6109 #define CID_BrkChar 6009 #define CID_BrkCharS 6019 #define CID_MaxContextLab 6110 #define CID_MaxContext 6010 typedef struct os2view /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* os2 specials */ int16 old_aspect; } OS2View; static int os2_processdata(TableView *tv) { int err = false; int version, weight, width, avwid, fstype, ibmfam, sel, first, last; int subsup[10]; char vendor[4]; const unichar_t *ret; char panose[10]; char buf[200]; int32 uranges[4]; int32 codepages[2]; int as, ds, was, wds, lg, xh, ch, dc, bc, mc; uint8 *data; int len, i; version = GetIntR(tv->gw,CID_Version,_STR_Version,&err); weight = GetIntR(tv->gw,CID_WeightClass,_STR_WeightClass,&err); width = GetIntR(tv->gw,CID_WidthClass,_STR_WidthClass,&err); fstype = GetIntR(tv->gw,CID_FSType,_STR_Embeddable,&err); ibmfam = GetHexR(tv->gw,CID_IBMFamily,_STR_IBMFamily,&err); ret = _GGadgetGetTitle(GWidgetGetControl(tv->gw,CID_Vendor)); if ( u_strlen(ret)>4 || (*ret!='\0' && (*ret>0x7e || *ret<' ' || (ret[1]!='\0' && (ret[1]>0x7e || ret[1]<' ' || (ret[2]!='\0' && (ret[2]>0x7e || ret[2]<' ' || (ret[3]!='\0' && (ret[3]>0x7e || ret[3]<' ')))))))) ) { ProtestR(_STR_VendorID); return( false ); } vendor[0] = ret[0]; vendor[1] = ret[1]; vendor[2] = ret[2]; vendor[3] = ret[3]; sel = GetHexR(tv->gw,CID_Selection,_STR_Selection,&err); avwid = GetIntR(tv->gw,CID_AvgWidth,_STR_AvgWidth,&err); if ( err ) return( false ); for ( i=0; i<10; ++i ) subsup[i] = GetIntR(tv->gw,CID_SubXSize+i,anames[i],&err); if ( err ) return( false ); for ( i=0; i<10; ++i ) panose[i] = GetListR(tv->gw,CID_PanFamily+i,pnames[i],&err); ret = _GGadgetGetTitle(GWidgetGetControl(tv->gw,CID_UnicodeRanges)); cu_strncpy(buf,ret,sizeof(buf)-1); buf[sizeof(buf)-1] = '\0'; if ( sscanf( buf, "%x.%x.%x.%x", (unsigned int *) uranges, (unsigned int *) uranges+1, (unsigned int *) uranges+2, (unsigned int *) uranges+3)!=4 ) { ProtestR(_STR_UnicodeRanges); return( false ); } first = GetHexR(tv->gw,CID_FirstUnicode,_STR_FirstUnicode,&err); last = GetHexR(tv->gw,CID_LastUnicode,_STR_LastUnicode,&err); if ( version>0 ) { ret = _GGadgetGetTitle(GWidgetGetControl(tv->gw,CID_CodePageRanges)); cu_strncpy(buf,ret,sizeof(buf)-1); buf[sizeof(buf)-1] = '\0'; if ( sscanf( buf, "%x.%x", (unsigned *) codepages, (unsigned *) codepages+1)!= 2 ) { ProtestR(_STR_CodePages); return( false ); } } as = GetIntR(tv->gw,CID_TypoAscender,_STR_TypoAscender,&err); ds = GetIntR(tv->gw,CID_TypoDescender,_STR_TypoDescender,&err); lg = GetIntR(tv->gw,CID_TypoLineGap,_STR_TypoLineGap,&err); was = GetIntR(tv->gw,CID_WinAscent,_STR_WinAscent,&err); wds = GetIntR(tv->gw,CID_WinDescent,_STR_WinDescent,&err); if ( version>1 ) { xh = GetIntR(tv->gw,CID_XHeight,_STR_XHeightC,&err); ch = GetIntR(tv->gw,CID_CapHeight,_STR_CapHeightC,&err); dc = GetIntR(tv->gw,CID_DefChar,_STR_DefaultChar,&err); bc = GetIntR(tv->gw,CID_BrkChar,_STR_BreakChar,&err); bc = GetIntR(tv->gw,CID_MaxContext,_STR_MaxContext,&err); } if ( err ) return( false ); /* if we're working on a table with a version>2 (so, presumably with */ /* fields we don't understand) then we'll allow people to edit the */ /* fields we do know, and leave the others as they were */ if ( version>2 && tv->table->newlen >= 96 ) len = tv->table->newlen; else len = version<=0? 78 : version==1 ? 86 : 96; if ( len==tv->table->newlen ) data = tv->table->data; else data = galloc(len); ptputushort(data,version); ptputushort(data+2,avwid); ptputushort(data+4,weight); ptputushort(data+6,width); ptputushort(data+8,fstype); for ( i=0; i<10; ++i ) ptputushort(data+10+2*i,subsup[i]); ptputushort(data+30,ibmfam); for ( i=0; i<10; ++i ) data[32+i] = panose[i]; for ( i=0; i<4; ++i ) ptputlong(data+42+4*i,uranges[3-i]); data[58]=vendor[0]; data[59]=vendor[1]; data[60]=vendor[2]; data[63]=vendor[3]; ptputushort(data+62,sel); ptputushort(data+64,first); ptputushort(data+66,last); ptputushort(data+68,as); ptputushort(data+70,ds); ptputushort(data+72,lg); ptputushort(data+74,was); ptputushort(data+76,wds); if ( version>0 ) { ptputlong(data+78,codepages[1]); ptputlong(data+82,codepages[0]); } if ( version>1 ) { ptputushort(data+86,xh); ptputushort(data+88,ch); ptputushort(data+90,dc); ptputushort(data+92,bc); ptputushort(data+94,mc); } if ( data!=tv->table->data ) { free(tv->table->data); tv->table->data = data; } tv->table->newlen = len; if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int os2_close(TableView *tv) { if ( os2_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs os2funcs = { os2_close, os2_processdata }; static int OS2_VersionChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret = _GGadgetGetTitle(g); int val = u_strtol(ret,NULL,10); if ( e->type!=et_controlevent || e->u.control.subtype != et_textchanged ) return( true ); GGadgetSetEnabled(GWidgetGetControl(gw,CID_CodePageLab),val>0); GGadgetSetEnabled(GWidgetGetControl(gw,CID_CodePageRanges),val>0); GGadgetSetEnabled(GWidgetGetControl(gw,CID_CodePageList),val>0); GGadgetSetEnabled(GWidgetGetControl(gw,CID_XHeightLab),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_XHeight),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_CapHeightLab),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_CapHeight),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_DefCharLab),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_DefChar),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_DefCharS),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_BrkCharLab),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_BrkChar),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_BrkCharS),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_MaxContextLab),val>=2); GGadgetSetEnabled(GWidgetGetControl(gw,CID_MaxContext),val>=2); return( true ); } static int OS2_WeightChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret; int val; char buffer[8]; unichar_t ub[8]; if ( GGadgetGetCid(g)==CID_WeightClass ) { ret = _GGadgetGetTitle(g); val = u_strtol(ret,NULL,10); val = val/100 -1; if ( val<0 ) val = 0; else if ( val>8 ) val=8; GGadgetSelectOneListItem(GWidgetGetControl(gw,CID_WeightClassL),val); } else { val = GGadgetGetFirstListSelectedItem(g); val = 100*val + 100; sprintf(buffer,"%d", val); uc_strcpy(ub,buffer); GGadgetSetTitle(GWidgetGetControl(gw,CID_WeightClass),ub); } return( true ); } static int OS2_WidthChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret; int val; char buffer[8]; unichar_t ub[8]; if ( GGadgetGetCid(g)==CID_WidthClass ) { ret = _GGadgetGetTitle(g); val = u_strtol(ret,NULL,10); --val; if ( val<0 ) val = 0; else if ( val>9 ) val=9; GGadgetSelectOneListItem(GWidgetGetControl(gw,CID_WidthClassL),val); } else { val = GGadgetGetFirstListSelectedItem(g); ++val; sprintf(buffer,"%d", val); uc_strcpy(ub,buffer); GGadgetSetTitle(GWidgetGetControl(gw,CID_WidthClass),ub); } return( true ); } static int OS2_TypeChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret; int val, index; GTextInfo *sel; char buffer[8]; unichar_t ub[8]; if ( GGadgetGetCid(g)==CID_FSType ) { ret = _GGadgetGetTitle(g); val = u_strtol(ret,NULL,16); if ( val&8 ) index = 2; else if ( val&4 ) index=1; else if ( val&2 ) index=0; else index = 3; GGadgetSelectOneListItem(GWidgetGetControl(gw,CID_FSTypeL),index); GGadgetSetChecked(GWidgetGetControl(gw,CID_NoSubsetting),val&0x100?1:0); GGadgetSetChecked(GWidgetGetControl(gw,CID_OnlyBitmaps),val&0x200?1:0); } else { sel = GGadgetGetListItemSelected(GWidgetGetControl(gw,CID_FSTypeL)); val = (int) (sel->userdata); if ( GGadgetIsChecked(GWidgetGetControl(gw,CID_NoSubsetting))) val |=0x100; if ( GGadgetIsChecked(GWidgetGetControl(gw,CID_OnlyBitmaps))) val |=0x200; sprintf(buffer,"%x", val); uc_strcpy(ub,buffer); GGadgetSetTitle(GWidgetGetControl(gw,CID_FSType),ub); } return( true ); } static int OS2_FamilyChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret; int val,i; char buffer[8]; unichar_t ub[8]; if ( GGadgetGetCid(g)==CID_IBMFamily ) { ret = _GGadgetGetTitle(g); val = u_strtol(ret,NULL,16); /* hex */ for ( i=0; ibmfamily[i].text!=NULL; ++i ) if ( (int) (ibmfamily[i].userdata)==val ) break; if ( ibmfamily[i].text!=NULL ) GGadgetSelectOneListItem(GWidgetGetControl(gw,CID_IBMFamilyL),i); } else { sprintf(buffer,"%04x", (int) (GGadgetGetListItemSelected(g)->userdata)); uc_strcpy(ub,buffer); GGadgetSetTitle(GWidgetGetControl(gw,CID_IBMFamily),ub); } return( true ); } static int OS2_UnicodeChange(GGadget *g, GEvent *e) { int32 flags[4]; int len,i,bit,set; if ( e==NULL || (e->type==et_controlevent && e->u.control.subtype == et_textchanged )) { const unichar_t *ret; unichar_t *end; GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); GGadget *list; ret = _GGadgetGetTitle(g); flags[3] = u_strtoul(ret,&end,16); while ( !ishexdigit(*end) && *end!='\0' ) ++end; flags[2] = u_strtoul(end,&end,16); while ( !ishexdigit(*end) && *end!='\0' ) ++end; flags[1] = u_strtoul(end,&end,16); while ( !ishexdigit(*end) && *end!='\0' ) ++end; flags[0] = u_strtoul(end,&end,16); list = GWidgetGetControl(gw,CID_UnicodeList); for ( i=0; unicoderangelist[i].text!=NULL; ++i ) { bit = (int) (unicoderangelist[i].userdata); set = (flags[bit>>5]&(1<<(bit&31)))?1 : 0; GGadgetSelectListItem(list,i,set); } } else if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); char ranges[40]; unichar_t ur[40]; GTextInfo **list = GGadgetGetList(g,&len); GGadget *field = GWidgetGetControl(gw,CID_UnicodeRanges); flags[0] = flags[1] = flags[2] = flags[3] = 0; for ( i=0; iselected ) { bit = ((int) (list[i]->userdata)); flags[bit>>5] |= (1<<(bit&31)); } sprintf( ranges, "%08x.%08x.%08x.%08x", flags[3], flags[2], flags[1], flags[0]); uc_strcpy(ur,ranges); GGadgetSetTitle(field,ur); } return( true ); } static int OS2_CodePageChange(GGadget *g, GEvent *e) { int32 flags[2]; int len,i,bit,set; if ( e==NULL || (e->type==et_controlevent && e->u.control.subtype == et_textchanged )) { const unichar_t *ret; unichar_t *end; GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); GGadget *list; ret = _GGadgetGetTitle(g); flags[1] = u_strtoul(ret,&end,16); while ( !ishexdigit(*end) && *end!='\0' ) ++end; flags[0] = u_strtoul(end,&end,16); list = GWidgetGetControl(gw,CID_CodePageList); for ( i=0; codepagelist[i].text!=NULL; ++i ) { bit = (int) (codepagelist[i].userdata); set = (flags[bit>>5]&(1<<(bit&31)))?1 : 0; GGadgetSelectListItem(list,i,set); } } else if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); char ranges[40]; unichar_t ur[40]; GTextInfo **list = GGadgetGetList(g,&len); GGadget *field = GWidgetGetControl(gw,CID_CodePageRanges); flags[0] = flags[1] = 0; for ( i=0; iselected ) { bit = ((int) (list[i]->userdata)); flags[bit>>5] |= (1<<(bit&31)); } sprintf( ranges, "%08x.%08x", flags[1], flags[0]); uc_strcpy(ur,ranges); GGadgetSetTitle(field,ur); } return( true ); } static int _OS2_SelectionChange(GGadget *g, int32 flags) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); int i, set; GGadget *list; list = GWidgetGetControl(gw,CID_SelectionList); for ( i=0; fsselectionlist[i].text!=NULL; ++i ) { set = (flags&(1<<((int) (fsselectionlist[i].userdata))))?1 : 0; GGadgetSelectListItem(list,i,set); } return( true ); } static int OS2_SelectionChange(GGadget *g, GEvent *e) { int32 flags; const unichar_t *ret; if ( e==NULL || (e->type==et_controlevent && e->u.control.subtype == et_textchanged )) { ret = GGadgetGetTitle(g); flags = u_strtoul(ret,NULL,16); _OS2_SelectionChange(g,flags); } else if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); char sel[8]; unichar_t us[8]; int len,i; GTextInfo **list = GGadgetGetList(g,&len); GGadget *field = GWidgetGetControl(gw,CID_Selection); for ( i=flags=0; iselected ) flags |= 1<<((int) (list[i]->userdata)); /* if Regular is set, then nothing else may be */ if ( e->u.control.u.list.changed_index==6 && (flags&(1<<6))) _OS2_SelectionChange(field,flags = (1<<6)); /* If they set some other bit, and regular was set, turn it off */ else if ( e->u.control.u.list.changed_index!=6 && (flags&(1<<6)) && flags!=(1<<6) ) _OS2_SelectionChange(field,flags &= ~(1<<6)); sprintf( sel, "%04x", flags); uc_strcpy(us,sel); GGadgetSetTitle(field,us); } return( true ); } static int OS2_DefBrkChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret; unichar_t newchar[2]; GGadget *other; if ( e->type!=et_controlevent || e->u.control.subtype != et_textchanged ) return( true ); other = GWidgetGetControl(gw,GGadgetGetCid(g)==CID_DefChar?CID_DefCharS :CID_BrkCharS); ret = GGadgetGetTitle(g); newchar[0] = u_strtoul(ret,NULL,16); newchar[1] = 0; GGadgetSetTitle(other,newchar); return( true ); } static int OS2_AspectChange(GGadget *g, GEvent *e) { return( true ); } static int OS2_Cancel(GGadget *g, GEvent *e) { GWindow gw; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int OS2_OK(GGadget *g, GEvent *e) { GWindow gw; OS2View *os2v; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); os2v = GDrawGetUserData(gw); os2_close((TableView *) os2v); } return( true ); } static int os2_e_h(GWindow gw, GEvent *event) { OS2View *os2v = GDrawGetUserData(gw); if ( event->type==et_close ) { os2v->destroyed = true; GDrawDestroyWindow(os2v->gw); } else if ( event->type == et_destroy ) { os2v->table->tv = NULL; free(os2v); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(os2v->table->name); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } void OS2CreateEditor(Table *tab,TtfView *tfv) { OS2View *os2v = gcalloc(1,sizeof(OS2View)); GRect pos; GWindow gw; GWindowAttrs wattrs; GTabInfo aspects[8]; GGadgetCreateData mgcd[6], ggcd[24], pangcd[22], agcd[24], cgcd[24], tgcd[26]; GTextInfo mlabel[6], glabel[24], panlabel[22], alabel[24], clabel[24], tlabel[25]; static unichar_t title[60] = { 'O', 'S', '/', '2', ' ', '\0' }; char version[8], avgwidth[8], weight[8], width[8], type[8], aligns[9][8], family[8], vendor[8], ranges[40], first[8], last[8], sel[8], codepages[40], asndr[8], dsndr[8], asnt[8], dsnt[8], linegap[8], xh[8], ch[8], dc[8], bc[8], mcontext[8]; unichar_t _dc[2], _bc[2]; int vnum, temp, i,j; os2v->table = tab; os2v->virtuals = &os2funcs; os2v->owner = tfv; os2v->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) os2v; TableFillup(tab); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; wattrs.window_title = title; wattrs.icon = ttf_icon; pos.x = pos.y = 0; pos.width =GDrawPointsToPixels(NULL,312); pos.height = GDrawPointsToPixels(NULL,340); os2v->gw = gw = GDrawCreateTopWindow(NULL,&pos,os2_e_h,os2v,&wattrs); /******************************************************************************/ memset(&glabel,0,sizeof(glabel)); memset(&ggcd,0,sizeof(ggcd)); ggcd[0].gd.pos.x = 10; ggcd[0].gd.pos.y = 12; glabel[0].text = (unichar_t *) _STR_Version; glabel[0].text_in_resource = true; ggcd[0].gd.label = &glabel[0]; ggcd[0].gd.flags = gg_visible | gg_enabled; ggcd[0].creator = GLabelCreate; vnum = tgetushort(tab,0); sprintf( version, "%d", vnum ); glabel[1].text = (unichar_t *) version; glabel[1].text_is_1byte = true; ggcd[1].gd.label = &glabel[1]; ggcd[1].gd.pos.x = 80; ggcd[1].gd.pos.y = ggcd[0].gd.pos.y-6; ggcd[1].gd.flags = gg_enabled|gg_visible; ggcd[1].gd.cid = CID_Version; ggcd[1].gd.u.list = OS2versions; ggcd[1].gd.handle_controlevent = OS2_VersionChange; ggcd[1].creator = GListFieldCreate; ggcd[2].gd.pos.x = 10; ggcd[2].gd.pos.y = ggcd[1].gd.pos.y+24+6; glabel[2].text = (unichar_t *) _STR_WeightClass; glabel[2].text_in_resource = true; ggcd[2].gd.label = &glabel[2]; ggcd[2].gd.flags = gg_visible | gg_enabled; ggcd[2].creator = GLabelCreate; sprintf( weight, "%d", tgetushort(tab,4) ); glabel[3].text = (unichar_t *) weight; glabel[3].text_is_1byte = true; ggcd[3].gd.label = &glabel[3]; ggcd[3].gd.pos.x = 80; ggcd[3].gd.pos.y = ggcd[2].gd.pos.y-6; ggcd[3].gd.pos.width = 60; ggcd[3].gd.flags = gg_enabled|gg_visible; ggcd[3].gd.cid = CID_WeightClass; ggcd[3].gd.handle_controlevent = OS2_WeightChange; ggcd[3].creator = GTextFieldCreate; ggcd[4].gd.pos.x = 150; ggcd[4].gd.pos.y = ggcd[3].gd.pos.y; ggcd[4].gd.flags = gg_visible | gg_enabled; ggcd[4].gd.cid = CID_WeightClassL; ggcd[4].gd.u.list = weightclass; ggcd[4].gd.handle_controlevent = OS2_WeightChange; ggcd[4].creator = GListButtonCreate; temp = (tgetushort(tab,4)+50)/100 - 1; if ( temp<0 ) temp = 0; else if ( temp>8 ) temp=8; for ( i=0; weightclass[i].text!=NULL; ++i ) weightclass[i].selected = i==temp; ggcd[5].gd.pos.x = 10; ggcd[5].gd.pos.y = ggcd[3].gd.pos.y+24+6; glabel[5].text = (unichar_t *) _STR_WidthClass; glabel[5].text_in_resource = true; ggcd[5].gd.label = &glabel[5]; ggcd[5].gd.flags = gg_visible | gg_enabled; ggcd[5].creator = GLabelCreate; sprintf( width, "%d", temp=tgetushort(tab,6) ); glabel[6].text = (unichar_t *) width; glabel[6].text_is_1byte = true; ggcd[6].gd.label = &glabel[6]; ggcd[6].gd.pos.x = 80; ggcd[6].gd.pos.y = ggcd[5].gd.pos.y-6; ggcd[6].gd.pos.width = 60; ggcd[6].gd.flags = gg_enabled|gg_visible; ggcd[6].gd.cid = CID_WidthClass; ggcd[6].gd.handle_controlevent = OS2_WidthChange; ggcd[6].creator = GTextFieldCreate; ggcd[7].gd.pos.x = 150; ggcd[7].gd.pos.y = ggcd[6].gd.pos.y; ggcd[7].gd.pos.width = 140; ggcd[7].gd.flags = gg_visible | gg_enabled; ggcd[7].gd.cid = CID_WidthClassL; ggcd[7].gd.u.list = widthclass; ggcd[7].gd.handle_controlevent = OS2_WidthChange; ggcd[7].creator = GListButtonCreate; if ( temp<1 ) temp = 1; else if ( temp>9 ) temp=9; for ( i=0; widthclass[i].text!=NULL; ++i ) widthclass[i].selected = i==temp-1; ggcd[8].gd.pos.x = 10; ggcd[8].gd.pos.y = ggcd[6].gd.pos.y+24+6; glabel[8].text = (unichar_t *) _STR_Embeddable; glabel[8].text_in_resource = true; ggcd[8].gd.label = &glabel[8]; ggcd[8].gd.flags = gg_visible | gg_enabled; ggcd[8].gd.popup_msg = GStringGetResource(_STR_EmbeddablePopup,NULL); ggcd[8].creator = GLabelCreate; sprintf( type, "%x", temp=tgetushort(tab,8) ); glabel[9].text = (unichar_t *) type; glabel[9].text_is_1byte = true; ggcd[9].gd.label = &glabel[9]; ggcd[9].gd.pos.x = 80; ggcd[9].gd.pos.y = ggcd[8].gd.pos.y-6; ggcd[9].gd.pos.width = 60; ggcd[9].gd.flags = gg_enabled|gg_visible; ggcd[9].gd.cid = CID_FSType; ggcd[9].gd.handle_controlevent = OS2_TypeChange; ggcd[9].creator = GTextFieldCreate; ggcd[10].gd.pos.x = 20; ggcd[10].gd.pos.y = ggcd[9].gd.pos.y+24; glabel[10].text = (unichar_t *) _STR_NoSubsetting; glabel[10].text_in_resource = true; ggcd[10].gd.label = &glabel[10]; ggcd[10].gd.flags = gg_visible | gg_enabled; if ( temp&0x100 ) ggcd[10].gd.flags |= gg_cb_on; ggcd[10].gd.popup_msg = GStringGetResource(_STR_NoSubsettingPopup,NULL); ggcd[10].gd.cid = CID_NoSubsetting; ggcd[10].gd.handle_controlevent = OS2_TypeChange; ggcd[10].creator = GCheckBoxCreate; ggcd[11].gd.pos.x = 110; ggcd[11].gd.pos.y = ggcd[9].gd.pos.y+24; glabel[11].text = (unichar_t *) _STR_OnlyBitmaps; glabel[11].text_in_resource = true; ggcd[11].gd.label = &glabel[11]; ggcd[11].gd.flags = gg_visible | gg_enabled; if ( temp&0x200 ) ggcd[11].gd.flags |= gg_cb_on; ggcd[11].gd.popup_msg = GStringGetResource(_STR_OnlyBitmapsPopup,NULL); ggcd[11].gd.cid = CID_OnlyBitmaps; ggcd[11].gd.handle_controlevent = OS2_TypeChange; ggcd[11].creator = GCheckBoxCreate; ggcd[12].gd.pos.x = 150; ggcd[12].gd.pos.y = ggcd[9].gd.pos.y; ggcd[12].gd.pos.width = ggcd[7].gd.pos.width; ggcd[12].gd.flags = gg_visible | gg_enabled; ggcd[12].gd.cid = CID_FSTypeL; ggcd[12].gd.u.list = fstype; ggcd[12].gd.handle_controlevent = OS2_TypeChange; ggcd[12].creator = GListButtonCreate; for ( i=0; fstype[i].text!=NULL; ++i ) fstype[i].selected = false; if ( temp&8 ) fstype[2].selected = true; else if ( temp&4 ) fstype[1].selected = true; else if ( temp&2 ) fstype[0].selected = true; else fstype[3].selected = true; ggcd[13].gd.pos.x = 10; ggcd[13].gd.pos.y = ggcd[11].gd.pos.y+24+6; glabel[13].text = (unichar_t *) _STR_IBMFamily; glabel[13].text_in_resource = true; ggcd[13].gd.label = &glabel[13]; ggcd[13].gd.flags = gg_visible | gg_enabled; ggcd[13].creator = GLabelCreate; sprintf( family, "%04x", temp=tgetushort(tab,30) ); glabel[14].text = (unichar_t *) family; glabel[14].text_is_1byte = true; ggcd[14].gd.label = &glabel[14]; ggcd[14].gd.pos.x = 80; ggcd[14].gd.pos.y = ggcd[13].gd.pos.y-6; ggcd[14].gd.pos.width = 60; ggcd[14].gd.flags = gg_enabled|gg_visible; ggcd[14].gd.cid = CID_IBMFamily; ggcd[14].gd.handle_controlevent = OS2_FamilyChange; ggcd[14].creator = GTextFieldCreate; ggcd[15].gd.pos.x = 150; ggcd[15].gd.pos.y = ggcd[14].gd.pos.y; ggcd[15].gd.pos.width = ggcd[7].gd.pos.width; ggcd[15].gd.flags = gg_visible | gg_enabled; ggcd[15].gd.cid = CID_IBMFamilyL; ggcd[15].gd.u.list = ibmfamily; ggcd[15].gd.handle_controlevent = OS2_FamilyChange; ggcd[15].creator = GListButtonCreate; for ( i=0; ibmfamily[i].text!=NULL; ++i ) ibmfamily[i].selected = temp==(int)ibmfamily[i].userdata; ggcd[16].gd.pos.x = 10; ggcd[16].gd.pos.y = ggcd[14].gd.pos.y+24+6; glabel[16].text = (unichar_t *) _STR_VendorID; glabel[16].text_in_resource = true; ggcd[16].gd.label = &glabel[16]; ggcd[16].gd.flags = gg_visible | gg_enabled; ggcd[16].creator = GLabelCreate; vendor[0] = tab->data[58]; vendor[1] = tab->data[59]; vendor[2] = tab->data[60]; vendor[3] = tab->data[61]; vendor[4] = 0; glabel[17].text = (unichar_t *) vendor; glabel[17].text_is_1byte = true; ggcd[17].gd.label = &glabel[17]; ggcd[17].gd.pos.x = 80; ggcd[17].gd.pos.y = ggcd[16].gd.pos.y-6; ggcd[17].gd.pos.width = 60; ggcd[17].gd.flags = gg_enabled|gg_visible; ggcd[17].gd.cid = CID_Vendor; ggcd[17].creator = GTextFieldCreate; ggcd[18].gd.pos.x = 10; ggcd[18].gd.pos.y = ggcd[17].gd.pos.y+24+6; glabel[18].text = (unichar_t *) _STR_Selection; glabel[18].text_in_resource = true; ggcd[18].gd.label = &glabel[18]; ggcd[18].gd.flags = gg_visible | gg_enabled; ggcd[18].creator = GLabelCreate; sprintf( sel, "%04x", tgetushort(tab,62) ); glabel[19].text = (unichar_t *) sel; glabel[19].text_is_1byte = true; ggcd[19].gd.label = &glabel[19]; ggcd[19].gd.pos.x = 80; ggcd[19].gd.pos.y = ggcd[18].gd.pos.y-6; ggcd[19].gd.pos.width = 60; ggcd[19].gd.flags = gg_enabled|gg_visible; ggcd[19].gd.cid = CID_Selection; ggcd[19].gd.handle_controlevent = OS2_SelectionChange; ggcd[19].creator = GTextFieldCreate; ggcd[20].gd.pos.x = 150; ggcd[20].gd.pos.y = ggcd[19].gd.pos.y; ggcd[20].gd.pos.height = 7*12+10; ggcd[20].gd.flags = gg_visible | gg_enabled | gg_list_multiplesel; ggcd[20].gd.cid = CID_SelectionList; ggcd[20].gd.u.list = fsselectionlist; ggcd[20].gd.handle_controlevent = OS2_SelectionChange; ggcd[20].creator = GListCreate; /******************************************************************************/ memset(&alabel,0,sizeof(alabel)); memset(&agcd,0,sizeof(agcd)); for ( i=0; i<20; i +=2 ) { agcd[i].gd.pos.x = 10; agcd[i].gd.pos.y = i==0?12: agcd[i-1].gd.pos.y+24+6; alabel[i].text = (unichar_t *) anames[i/2]; alabel[i].text_in_resource = true; agcd[i].gd.label = &alabel[i]; agcd[i].gd.flags = gg_visible | gg_enabled; agcd[i].creator = GLabelCreate; sprintf( aligns[i/2], "%d", (short) tgetushort(tab,10+i) ); alabel[i+1].text = (unichar_t *) aligns[i/2]; alabel[i+1].text_is_1byte = true; agcd[i+1].gd.label = &alabel[i+1]; agcd[i+1].gd.pos.x = 80; agcd[i+1].gd.pos.y = agcd[i].gd.pos.y-6; agcd[i+1].gd.flags = gg_enabled|gg_visible; agcd[i+1].gd.cid = CID_SubXSize + i/2; agcd[i+1].creator = GTextFieldCreate; } /******************************************************************************/ memset(&panlabel,0,sizeof(panlabel)); memset(&pangcd,0,sizeof(pangcd)); pangcd[0].gd.pos.x = 10; pangcd[0].gd.pos.y = 12; panlabel[0].text = (unichar_t *) _STR_Family; panlabel[0].text_in_resource = true; pangcd[0].gd.label = &panlabel[0]; pangcd[0].gd.flags = gg_visible | gg_enabled; pangcd[0].creator = GLabelCreate; pangcd[1].gd.pos.x = 100; pangcd[1].gd.pos.y = pangcd[0].gd.pos.y-6; pangcd[1].gd.pos.width = 120; pangcd[1].gd.flags = gg_visible | gg_enabled; pangcd[1].gd.cid = CID_PanFamily; pangcd[1].gd.u.list = panfamily; pangcd[1].creator = GListButtonCreate; pangcd[2].gd.pos.x = 10; pangcd[2].gd.pos.y = pangcd[1].gd.pos.y+24+6; panlabel[2].text = (unichar_t *) _STR_Serifs; panlabel[2].text_in_resource = true; pangcd[2].gd.label = &panlabel[2]; pangcd[2].gd.flags = gg_visible | gg_enabled; pangcd[2].creator = GLabelCreate; pangcd[3].gd.pos.x = 100; pangcd[3].gd.pos.y = pangcd[2].gd.pos.y-6; pangcd[3].gd.pos.width = 120; pangcd[3].gd.flags = gg_visible | gg_enabled; pangcd[3].gd.cid = CID_PanSerifs; pangcd[3].gd.u.list = panserifs; pangcd[3].creator = GListButtonCreate; pangcd[4].gd.pos.x = 10; pangcd[4].gd.pos.y = pangcd[3].gd.pos.y+24+6; panlabel[4].text = (unichar_t *) _STR_Weight; panlabel[4].text_in_resource = true; pangcd[4].gd.label = &panlabel[4]; pangcd[4].gd.flags = gg_visible | gg_enabled; pangcd[4].creator = GLabelCreate; pangcd[5].gd.pos.x = 100; pangcd[5].gd.pos.y = pangcd[4].gd.pos.y-6; pangcd[5].gd.pos.width = 120; pangcd[5].gd.flags = gg_visible | gg_enabled; pangcd[5].gd.cid = CID_PanWeight; pangcd[5].gd.u.list = panweight; pangcd[5].creator = GListButtonCreate; pangcd[6].gd.pos.x = 10; pangcd[6].gd.pos.y = pangcd[5].gd.pos.y+24+6; panlabel[6].text = (unichar_t *) _STR_Proportion; panlabel[6].text_in_resource = true; pangcd[6].gd.label = &panlabel[6]; pangcd[6].gd.flags = gg_visible | gg_enabled; pangcd[6].creator = GLabelCreate; pangcd[7].gd.pos.x = 100; pangcd[7].gd.pos.y = pangcd[6].gd.pos.y-6; pangcd[7].gd.pos.width = 120; pangcd[7].gd.flags = gg_visible | gg_enabled; pangcd[7].gd.cid = CID_PanProp; pangcd[7].gd.u.list = panprop; pangcd[7].creator = GListButtonCreate; pangcd[8].gd.pos.x = 10; pangcd[8].gd.pos.y = pangcd[7].gd.pos.y+24+6; panlabel[8].text = (unichar_t *) _STR_Contrast; panlabel[8].text_in_resource = true; pangcd[8].gd.label = &panlabel[8]; pangcd[8].gd.flags = gg_visible | gg_enabled; pangcd[8].creator = GLabelCreate; pangcd[9].gd.pos.x = 100; pangcd[9].gd.pos.y = pangcd[8].gd.pos.y-6; pangcd[9].gd.pos.width = 120; pangcd[9].gd.flags = gg_visible | gg_enabled; pangcd[9].gd.cid = CID_PanContrast; pangcd[9].gd.u.list = pancontrast; pangcd[9].creator = GListButtonCreate; pangcd[10].gd.pos.x = 10; pangcd[10].gd.pos.y = pangcd[9].gd.pos.y+24+6; panlabel[10].text = (unichar_t *) _STR_StrokeVar; panlabel[10].text_in_resource = true; pangcd[10].gd.label = &panlabel[10]; pangcd[10].gd.flags = gg_visible | gg_enabled; pangcd[10].creator = GLabelCreate; pangcd[11].gd.pos.x = 100; pangcd[11].gd.pos.y = pangcd[10].gd.pos.y-6; pangcd[11].gd.pos.width = 120; pangcd[11].gd.flags = gg_visible | gg_enabled; pangcd[11].gd.cid = CID_PanStrokeVar; pangcd[11].gd.u.list = panstrokevar; pangcd[11].creator = GListButtonCreate; pangcd[12].gd.pos.x = 10; pangcd[12].gd.pos.y = pangcd[11].gd.pos.y+24+6; panlabel[12].text = (unichar_t *) _STR_ArmStyle; panlabel[12].text_in_resource = true; pangcd[12].gd.label = &panlabel[12]; pangcd[12].gd.flags = gg_visible | gg_enabled; pangcd[12].creator = GLabelCreate; pangcd[13].gd.pos.x = 100; pangcd[13].gd.pos.y = pangcd[12].gd.pos.y-6; pangcd[13].gd.pos.width = 120; pangcd[13].gd.flags = gg_visible | gg_enabled; pangcd[13].gd.cid = CID_PanArmStyle; pangcd[13].gd.u.list = panarmstyle; pangcd[13].creator = GListButtonCreate; pangcd[14].gd.pos.x = 10; pangcd[14].gd.pos.y = pangcd[13].gd.pos.y+24+6; panlabel[14].text = (unichar_t *) _STR_Letterform; panlabel[14].text_in_resource = true; pangcd[14].gd.label = &panlabel[14]; pangcd[14].gd.flags = gg_visible | gg_enabled; pangcd[14].creator = GLabelCreate; pangcd[15].gd.pos.x = 100; pangcd[15].gd.pos.y = pangcd[14].gd.pos.y-6; pangcd[15].gd.pos.width = 120; pangcd[15].gd.flags = gg_visible | gg_enabled; pangcd[15].gd.cid = CID_PanLetterform; pangcd[15].gd.u.list = panletterform; pangcd[15].creator = GListButtonCreate; pangcd[16].gd.pos.x = 10; pangcd[16].gd.pos.y = pangcd[15].gd.pos.y+24+6; panlabel[16].text = (unichar_t *) _STR_MidLine; panlabel[16].text_in_resource = true; pangcd[16].gd.label = &panlabel[16]; pangcd[16].gd.flags = gg_visible | gg_enabled; pangcd[16].creator = GLabelCreate; pangcd[17].gd.pos.x = 100; pangcd[17].gd.pos.y = pangcd[16].gd.pos.y-6; pangcd[17].gd.pos.width = 120; pangcd[17].gd.flags = gg_visible | gg_enabled; pangcd[17].gd.cid = CID_PanMidLine; pangcd[17].gd.u.list = panmidline; pangcd[17].creator = GListButtonCreate; pangcd[18].gd.pos.x = 10; pangcd[18].gd.pos.y = pangcd[17].gd.pos.y+24+6; panlabel[18].text = (unichar_t *) _STR_XHeight; panlabel[18].text_in_resource = true; pangcd[18].gd.label = &panlabel[18]; pangcd[18].gd.flags = gg_visible | gg_enabled; pangcd[18].creator = GLabelCreate; pangcd[19].gd.pos.x = 100; pangcd[19].gd.pos.y = pangcd[18].gd.pos.y-6; pangcd[19].gd.pos.width = 120; pangcd[19].gd.flags = gg_visible | gg_enabled; pangcd[19].gd.cid = CID_PanXHeight; pangcd[19].gd.u.list = panxheight; pangcd[19].creator = GListButtonCreate; for ( i=1; i<=19; i+=2 ) { for ( j=0; pangcd[i].gd.u.list[j].text!=NULL; ++j ) pangcd[i].gd.u.list[j].selected = false; j = tab->data[32+(i-1)/2]; if ( j>15 ) j = 1; pangcd[i].gd.u.list[j].selected = true; } /******************************************************************************/ memset(&clabel,0,sizeof(clabel)); memset(&cgcd,0,sizeof(cgcd)); cgcd[0].gd.pos.x = 10; cgcd[0].gd.pos.y = 6; clabel[0].text = (unichar_t *) _STR_UnicodeRanges; clabel[0].text_in_resource = true; cgcd[0].gd.label = &clabel[0]; cgcd[0].gd.flags = gg_visible | gg_enabled; cgcd[0].creator = GLabelCreate; sprintf( ranges, "%08x.%08x.%08x.%08x", tgetlong(tab,54), tgetlong(tab,50), tgetlong(tab,46), tgetlong(tab,42) ); clabel[1].text = (unichar_t *) ranges; clabel[1].text_is_1byte = true; cgcd[1].gd.label = &clabel[1]; cgcd[1].gd.pos.x = 10; cgcd[1].gd.pos.y = cgcd[0].gd.pos.y+13; cgcd[1].gd.pos.width = 270; cgcd[1].gd.flags = gg_visible | gg_enabled; cgcd[1].gd.cid = CID_UnicodeRanges; cgcd[1].gd.handle_controlevent = OS2_UnicodeChange; cgcd[1].creator = GTextFieldCreate; cgcd[2].gd.pos.x = 20; cgcd[2].gd.pos.y = cgcd[1].gd.pos.y+24; cgcd[2].gd.pos.width = 220; cgcd[2].gd.pos.height = 6*12+10; cgcd[2].gd.flags = gg_visible | gg_enabled | gg_list_multiplesel; cgcd[2].gd.cid = CID_UnicodeList; cgcd[2].gd.u.list = unicoderangelist; cgcd[2].gd.handle_controlevent = OS2_UnicodeChange; cgcd[2].creator = GListCreate; cgcd[3].gd.pos.x = 10; cgcd[3].gd.pos.y = cgcd[2].gd.pos.y+cgcd[2].gd.pos.height+4+6; clabel[3].text = (unichar_t *) _STR_FirstUnicode; clabel[3].text_in_resource = true; cgcd[3].gd.label = &clabel[3]; cgcd[3].gd.flags = gg_visible | gg_enabled; cgcd[3].creator = GLabelCreate; sprintf( first, "U+%04x", tgetushort(tab,64)); clabel[4].text = (unichar_t *) first; clabel[4].text_is_1byte = true; cgcd[4].gd.label = &clabel[4]; cgcd[4].gd.pos.x = 80; cgcd[4].gd.pos.y = cgcd[3].gd.pos.y-6; cgcd[4].gd.pos.width = 60; cgcd[4].gd.flags = gg_visible | gg_enabled; cgcd[4].gd.cid = CID_FirstUnicode; cgcd[4].creator = GTextFieldCreate; cgcd[5].gd.pos.x = 155; cgcd[5].gd.pos.y = cgcd[3].gd.pos.y; clabel[5].text = (unichar_t *) _STR_LastUnicode; clabel[5].text_in_resource = true; cgcd[5].gd.label = &clabel[5]; cgcd[5].gd.flags = gg_visible | gg_enabled; cgcd[5].creator = GLabelCreate; sprintf( last, "U+%04x", tgetushort(tab,66)); clabel[6].text = (unichar_t *) last; clabel[6].text_is_1byte = true; cgcd[6].gd.label = &clabel[6]; cgcd[6].gd.pos.x = 190; cgcd[6].gd.pos.y = cgcd[4].gd.pos.y; cgcd[6].gd.pos.width = 60; cgcd[6].gd.flags = gg_visible | gg_enabled; cgcd[6].gd.cid = CID_LastUnicode; cgcd[6].creator = GTextFieldCreate; cgcd[7].gd.pos.x = 10; cgcd[7].gd.pos.y = cgcd[6].gd.pos.y+24; clabel[7].text = (unichar_t *) _STR_CodePages; clabel[7].text_in_resource = true; cgcd[7].gd.label = &clabel[7]; cgcd[7].gd.flags = gg_visible | gg_enabled; cgcd[7].gd.cid = CID_CodePageLab; cgcd[7].creator = GLabelCreate; sprintf( codepages, "%08x.%08x", tgetlong(tab,82), tgetlong(tab,78)); clabel[8].text = (unichar_t *) codepages; clabel[8].text_is_1byte = true; cgcd[8].gd.label = &clabel[8]; cgcd[8].gd.pos.x = 10; cgcd[8].gd.pos.y = cgcd[7].gd.pos.y+13; cgcd[8].gd.pos.width = 140; cgcd[8].gd.flags = gg_visible | gg_enabled; cgcd[8].gd.cid = CID_CodePageRanges; cgcd[8].gd.handle_controlevent = OS2_CodePageChange; cgcd[8].creator = GTextFieldCreate; cgcd[9].gd.pos.x = 160; cgcd[9].gd.pos.y = cgcd[8].gd.pos.y; cgcd[9].gd.pos.width = 135; cgcd[9].gd.pos.height = 7*12+10; cgcd[9].gd.flags = gg_visible | gg_enabled | gg_list_multiplesel; cgcd[9].gd.cid = CID_CodePageList; cgcd[9].gd.u.list = codepagelist; cgcd[9].gd.handle_controlevent = OS2_CodePageChange; cgcd[9].creator = GListCreate; if ( vnum==0 ) { codepages[0] = '\0'; cgcd[7].gd.flags &= ~gg_enabled; cgcd[8].gd.flags &= ~gg_enabled; cgcd[9].gd.flags &= ~gg_enabled; } /******************************************************************************/ memset(&tlabel,0,sizeof(tlabel)); memset(&tgcd,0,sizeof(tgcd)); tgcd[22].gd.pos.x = 10; tgcd[22].gd.pos.y = 12; tlabel[22].text = (unichar_t *) _STR_AvgWidth; tlabel[22].text_in_resource = true; tgcd[22].gd.label = &tlabel[22]; tgcd[22].gd.flags = gg_visible | gg_enabled; tgcd[22].creator = GLabelCreate; sprintf( avgwidth, "%d", tgetushort(tab,2) ); tlabel[23].text = (unichar_t *) avgwidth; tlabel[23].text_is_1byte = true; tgcd[23].gd.label = &tlabel[23]; tgcd[23].gd.pos.x = 82; tgcd[23].gd.pos.y = tgcd[22].gd.pos.y-6; tgcd[23].gd.pos.width = 60; tgcd[23].gd.flags = gg_enabled|gg_visible; tgcd[23].gd.cid = CID_AvgWidth; tgcd[23].creator = GTextFieldCreate; tgcd[0].gd.pos.x = 10; tgcd[0].gd.pos.y = tgcd[22].gd.pos.y+24; tlabel[0].text = (unichar_t *) _STR_TypoAscender; tlabel[0].text_in_resource = true; tgcd[0].gd.label = &tlabel[0]; tgcd[0].gd.flags = gg_visible | gg_enabled; tgcd[0].creator = GLabelCreate; sprintf( asndr, "%d", (short) tgetushort(tab,68) ); tlabel[1].text = (unichar_t *) asndr; tlabel[1].text_is_1byte = true; tgcd[1].gd.label = &tlabel[1]; tgcd[1].gd.pos.x = 82; tgcd[1].gd.pos.y = tgcd[0].gd.pos.y-6; tgcd[1].gd.pos.width = 60; tgcd[1].gd.flags = gg_enabled|gg_visible; tgcd[1].gd.cid = CID_TypoAscender; tgcd[1].creator = GTextFieldCreate; tgcd[2].gd.pos.x = 10; tgcd[2].gd.pos.y = tgcd[0].gd.pos.y+24; tlabel[2].text = (unichar_t *) _STR_TypoDescender; tlabel[2].text_in_resource = true; tgcd[2].gd.label = &tlabel[2]; tgcd[2].gd.flags = gg_visible | gg_enabled; tgcd[2].creator = GLabelCreate; sprintf( dsndr, "%d", (short) tgetushort(tab,70) ); tlabel[3].text = (unichar_t *) dsndr; tlabel[3].text_is_1byte = true; tgcd[3].gd.label = &tlabel[3]; tgcd[3].gd.pos.x = tgcd[1].gd.pos.x; tgcd[3].gd.pos.y = tgcd[2].gd.pos.y-6; tgcd[3].gd.pos.width = 60; tgcd[3].gd.flags = gg_enabled|gg_visible; tgcd[3].gd.cid = CID_TypoDescender; tgcd[3].creator = GTextFieldCreate; tgcd[4].gd.pos.x = 10; tgcd[4].gd.pos.y = tgcd[2].gd.pos.y+24; tlabel[4].text = (unichar_t *) _STR_TypoLineGap; tlabel[4].text_in_resource = true; tgcd[4].gd.label = &tlabel[4]; tgcd[4].gd.flags = gg_visible | gg_enabled; tgcd[4].creator = GLabelCreate; sprintf( linegap, "%d", (short) tgetushort(tab,72) ); tlabel[5].text = (unichar_t *) linegap; tlabel[5].text_is_1byte = true; tgcd[5].gd.label = &tlabel[5]; tgcd[5].gd.pos.x = tgcd[1].gd.pos.x; tgcd[5].gd.pos.y = tgcd[4].gd.pos.y-6; tgcd[5].gd.pos.width = 60; tgcd[5].gd.flags = gg_enabled|gg_visible; tgcd[5].gd.cid = CID_TypoLineGap; tgcd[5].creator = GTextFieldCreate; tgcd[6].gd.pos.x = 150; tgcd[6].gd.pos.y = tgcd[0].gd.pos.y; tlabel[6].text = (unichar_t *) _STR_WinAscent; tlabel[6].text_in_resource = true; tgcd[6].gd.label = &tlabel[6]; tgcd[6].gd.flags = gg_visible | gg_enabled; tgcd[6].creator = GLabelCreate; sprintf( asnt, "%d", (short) tgetushort(tab,74) ); tlabel[7].text = (unichar_t *) asnt; tlabel[7].text_is_1byte = true; tgcd[7].gd.label = &tlabel[7]; tgcd[7].gd.pos.x = 213; tgcd[7].gd.pos.y = tgcd[6].gd.pos.y-6; tgcd[7].gd.pos.width = 60; tgcd[7].gd.flags = gg_enabled|gg_visible; tgcd[7].gd.cid = CID_WinAscent; tgcd[7].creator = GTextFieldCreate; tgcd[8].gd.pos.x = tgcd[6].gd.pos.x; tgcd[8].gd.pos.y = tgcd[2].gd.pos.y; tlabel[8].text = (unichar_t *) _STR_WinDescent; tlabel[8].text_in_resource = true; tgcd[8].gd.label = &tlabel[8]; tgcd[8].gd.flags = gg_visible | gg_enabled; tgcd[8].creator = GLabelCreate; sprintf( dsnt, "%d", (short) tgetushort(tab,76) ); tlabel[9].text = (unichar_t *) dsnt; tlabel[9].text_is_1byte = true; tgcd[9].gd.label = &tlabel[9]; tgcd[9].gd.pos.x = tgcd[7].gd.pos.x; tgcd[9].gd.pos.y = tgcd[8].gd.pos.y-6; tgcd[9].gd.pos.width = 60; tgcd[9].gd.flags = gg_enabled|gg_visible; tgcd[9].gd.cid = CID_WinDescent; tgcd[9].creator = GTextFieldCreate; tgcd[10].gd.pos.x = 10; tgcd[10].gd.pos.y = tgcd[4].gd.pos.y+24; tlabel[10].text = (unichar_t *) _STR_XHeightC; tlabel[10].text_in_resource = true; tgcd[10].gd.label = &tlabel[10]; tgcd[10].gd.flags = gg_visible | gg_enabled; tgcd[10].gd.cid = CID_XHeightLab; tgcd[10].creator = GLabelCreate; sprintf( xh, "%d", (short) tgetushort(tab,86) ); tlabel[11].text = (unichar_t *) xh; tlabel[11].text_is_1byte = true; tgcd[11].gd.label = &tlabel[11]; tgcd[11].gd.pos.x = tgcd[1].gd.pos.x; tgcd[11].gd.pos.y = tgcd[10].gd.pos.y-6; tgcd[11].gd.pos.width = 60; tgcd[11].gd.flags = gg_enabled|gg_visible; tgcd[11].gd.cid = CID_XHeight; tgcd[11].creator = GTextFieldCreate; tgcd[12].gd.pos.x = tgcd[6].gd.pos.x; tgcd[12].gd.pos.y = tgcd[10].gd.pos.y; tlabel[12].text = (unichar_t *) _STR_CapHeightC; tlabel[12].text_in_resource = true; tgcd[12].gd.label = &tlabel[12]; tgcd[12].gd.flags = gg_visible | gg_enabled; tgcd[12].gd.cid = CID_CapHeightLab; tgcd[12].creator = GLabelCreate; sprintf( ch, "%d", (short) tgetushort(tab,88) ); tlabel[13].text = (unichar_t *) ch; tlabel[13].text_is_1byte = true; tgcd[13].gd.label = &tlabel[13]; tgcd[13].gd.pos.x = tgcd[7].gd.pos.x; tgcd[13].gd.pos.y = tgcd[12].gd.pos.y-6; tgcd[13].gd.pos.width = 60; tgcd[13].gd.flags = gg_enabled|gg_visible; tgcd[13].gd.cid = CID_CapHeight; tgcd[13].creator = GTextFieldCreate; tgcd[14].gd.pos.x = 10; tgcd[14].gd.pos.y = tgcd[10].gd.pos.y+24; tlabel[14].text = (unichar_t *) _STR_DefaultChar; tlabel[14].text_in_resource = true; tgcd[14].gd.label = &tlabel[14]; tgcd[14].gd.flags = gg_visible | gg_enabled; tgcd[14].gd.cid = CID_DefCharLab; tgcd[14].creator = GLabelCreate; sprintf( dc, "%d", _dc[0] = tgetushort(tab,90) ); tlabel[15].text = (unichar_t *) dc; tlabel[15].text_is_1byte = true; tgcd[15].gd.label = &tlabel[15]; tgcd[15].gd.pos.x = tgcd[1].gd.pos.x; tgcd[15].gd.pos.y = tgcd[14].gd.pos.y-6; tgcd[15].gd.pos.width = 60; tgcd[15].gd.flags = gg_enabled|gg_visible; tgcd[15].gd.cid = CID_DefChar; tgcd[15].gd.handle_controlevent = OS2_DefBrkChange; tgcd[15].creator = GTextFieldCreate; tgcd[16].gd.pos.x = tgcd[15].gd.pos.x+tgcd[15].gd.pos.width+10; tgcd[16].gd.pos.y = tgcd[14].gd.pos.y; tgcd[16].gd.pos.width = 10; _dc[1] = 0; tlabel[16].text = _dc; tgcd[16].gd.label = &tlabel[16]; tgcd[16].gd.flags = gg_visible | gg_enabled; tgcd[16].gd.cid = CID_DefCharS; tgcd[16].creator = GLabelCreate; tgcd[17].gd.pos.x = 10; tgcd[17].gd.pos.y = tgcd[14].gd.pos.y+24; tlabel[17].text = (unichar_t *) _STR_BreakChar; tlabel[17].text_in_resource = true; tgcd[17].gd.label = &tlabel[17]; tgcd[17].gd.flags = gg_visible | gg_enabled; tgcd[17].gd.cid = CID_BrkCharLab; tgcd[17].creator = GLabelCreate; sprintf( bc, "%d", _bc[0] = tgetushort(tab,92) ); tlabel[18].text = (unichar_t *) bc; tlabel[18].text_is_1byte = true; tgcd[18].gd.label = &tlabel[18]; tgcd[18].gd.pos.x = tgcd[1].gd.pos.x; tgcd[18].gd.pos.y = tgcd[17].gd.pos.y-6; tgcd[18].gd.pos.width = 60; tgcd[18].gd.flags = gg_enabled|gg_visible; tgcd[18].gd.cid = CID_BrkChar; tgcd[18].gd.handle_controlevent = OS2_DefBrkChange; tgcd[18].creator = GTextFieldCreate; tgcd[19].gd.pos.x = tgcd[18].gd.pos.x+tgcd[18].gd.pos.width+10; tgcd[19].gd.pos.y = tgcd[17].gd.pos.y; tgcd[19].gd.pos.width = 10; _bc[1] = 0; tlabel[19].text = _bc; tgcd[19].gd.label = &tlabel[19]; tgcd[19].gd.flags = gg_visible | gg_enabled; tgcd[19].gd.cid = CID_BrkCharS; tgcd[19].creator = GLabelCreate; tgcd[20].gd.pos.x = 10; tgcd[20].gd.pos.y = tgcd[17].gd.pos.y+24; tlabel[20].text = (unichar_t *) _STR_MaxContext; tlabel[20].text_in_resource = true; tgcd[20].gd.label = &tlabel[20]; tgcd[20].gd.flags = gg_visible | gg_enabled; tgcd[20].gd.cid = CID_MaxContextLab; tgcd[20].creator = GLabelCreate; sprintf( mcontext, "%d", tgetushort(tab,94) ); tlabel[21].text = (unichar_t *) mcontext; tlabel[21].text_is_1byte = true; tgcd[21].gd.label = &tlabel[21]; tgcd[21].gd.pos.x = tgcd[1].gd.pos.x; tgcd[21].gd.pos.y = tgcd[20].gd.pos.y-6; tgcd[21].gd.pos.width = 60; tgcd[21].gd.flags = gg_enabled|gg_visible; tgcd[21].gd.cid = CID_MaxContext; tgcd[21].creator = GTextFieldCreate; /* 22&23 added at top */ if ( vnum==0 || vnum==1 ) { xh[0] = ch[0] = mcontext[0] = bc[0] = dc[0] = _bc[0] = _dc[0] = '\0'; tgcd[10].gd.flags &= ~gg_enabled; tgcd[11].gd.flags &= ~gg_enabled; tgcd[12].gd.flags &= ~gg_enabled; tgcd[13].gd.flags &= ~gg_enabled; tgcd[14].gd.flags &= ~gg_enabled; tgcd[15].gd.flags &= ~gg_enabled; tgcd[16].gd.flags &= ~gg_enabled; tgcd[17].gd.flags &= ~gg_enabled; tgcd[18].gd.flags &= ~gg_enabled; tgcd[19].gd.flags &= ~gg_enabled; tgcd[20].gd.flags &= ~gg_enabled; tgcd[21].gd.flags &= ~gg_enabled; } /******************************************************************************/ memset(&mlabel,0,sizeof(mlabel)); memset(&mgcd,0,sizeof(mgcd)); memset(&aspects,'\0',sizeof(aspects)); i = 0; aspects[i].text = (unichar_t *) _STR_General; aspects[i].selected = true; os2v->old_aspect = 0; aspects[i].text_in_resource = true; aspects[i++].gcd = ggcd; aspects[i].text = (unichar_t *) _STR_Alignment; aspects[i].text_in_resource = true; aspects[i++].gcd = agcd; aspects[i].text = (unichar_t *) _STR_Panose; aspects[i].text_in_resource = true; aspects[i++].gcd = pangcd; aspects[i].text = (unichar_t *) _STR_Charsets; aspects[i].text_in_resource = true; aspects[i++].gcd = cgcd; aspects[i].text = (unichar_t *) _STR_Typography; aspects[i].text_in_resource = true; aspects[i++].gcd = tgcd; mgcd[0].gd.pos.x = 5; mgcd[0].gd.pos.y = 5; mgcd[0].gd.pos.width = 302; mgcd[0].gd.pos.height = 292; mgcd[0].gd.u.tabs = aspects; mgcd[0].gd.flags = gg_visible | gg_enabled; mgcd[0].gd.handle_controlevent = OS2_AspectChange; mgcd[0].creator = GTabSetCreate; mgcd[1].gd.pos.x = 30-3; mgcd[1].gd.pos.y = mgcd[0].gd.pos.y+mgcd[0].gd.pos.height+8-3; mgcd[1].gd.pos.width = -1; mgcd[1].gd.pos.height = 0; mgcd[1].gd.flags = gg_visible | gg_enabled | gg_but_default; mlabel[1].text = (unichar_t *) _STR_OK; mlabel[1].text_in_resource = true; mgcd[1].gd.label = &mlabel[1]; mgcd[1].gd.handle_controlevent = OS2_OK; mgcd[1].creator = GButtonCreate; mgcd[2].gd.pos.x = 312-GIntGetResource(_NUM_Buttonsize)-30; mgcd[2].gd.pos.y = mgcd[1].gd.pos.y+3; mgcd[2].gd.pos.width = -1; mgcd[2].gd.pos.height = 0; mgcd[2].gd.flags = gg_visible | gg_enabled | gg_but_cancel; mlabel[2].text = (unichar_t *) _STR_Cancel; mlabel[2].text_in_resource = true; mgcd[2].gd.label = &mlabel[2]; mgcd[2].gd.handle_controlevent = OS2_Cancel; mgcd[2].creator = GButtonCreate; mgcd[3].gd.pos.x = 2; mgcd[3].gd.pos.y = 2; mgcd[3].gd.pos.width = pos.width-4; mgcd[3].gd.pos.height = pos.height-4; mgcd[3].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; mgcd[3].creator = GGroupCreate; GGadgetsCreate(gw,mgcd); OS2_UnicodeChange(cgcd[1].ret,NULL); /* Initialize unicoderanges */ OS2_CodePageChange(cgcd[8].ret,NULL); /* Initialize codepages */ OS2_SelectionChange(ggcd[19].ret,NULL); /* Initialize fsselection */ GDrawSetVisible(gw,true); } mensis-080507/PCLT.c0100664000076500007650000000406111010406101012213 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include TableFillup(tab); table version = tgetfixed(tab,0); fontnumber = tgetlong(tab,4); /* hex */ pitch = tgetushort(tab,8); /* width of space */ xHeight = tgetushort(tab,10); style = tgetushort(tab,12); /* hex */ typefamily = tgetushort(tab,14); /* hex */ capheight = tgetushort(tab,16); symbolset = tgetushort(tab,18); typeface = tgetstring(tab,20,16); charactercomplement = tgetstring(tab,36,8); /* hex */ filename = tgetstring(tab,44,6); strokeweight = tab->data[50]; /* signed */ widthtype = tab->data[51]; /* signed */ serifstyle = tab->data[52]; /* hex */ mbz = tab->data[53]; mensis-080507/post.c0100664000076500007650000011642011010406101012441 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include extern struct lconv localeinfo; extern int _GScrollBar_Width; #define CID_Tabs 999 #define CID_Version 1000 #define CID_ItalicAngle 1001 #define CID_UnderlinePos 1002 #define CID_UnderlineHeight 1003 #define CID_IsFixed 1004 #define CID_minMemType42 1005 #define CID_maxMemType42 1006 #define CID_minMemType1 1007 #define CID_maxMemType1 1008 const char *ttfstandardnames[258] = { ".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat" }; static unichar_t one[] = { '1', '\0' }; static unichar_t two[] = { '2', '\0' }; static unichar_t two_five[] = { '2','.','5', '\0' }; static unichar_t three[] = { '3', '\0' }; static unichar_t four[] = { '4', '\0' }; static GTextInfo postversions[] = { { (unichar_t *) one, NULL, 0, 0, (void *) 10}, { (unichar_t *) two, NULL, 0, 0, (void *) 20}, { (unichar_t *) two_five, NULL, 0, 0, (void *) 25}, { (unichar_t *) three, NULL, 0, 0, (void *) 30}, { (unichar_t *) four, NULL, 0, 0, (void *) 40}, { NULL }}; typedef struct postview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* post specials */ int16 old_aspect; GWindow nv, ev; GGadget *nsb, *esb; GGadget *ntf, *etf; GGadget *tabs, *box; GGadget *ok, *cancel; GFont *gfont; int16 fh, as, sbw; int ntop, etop; int addrend; int16 vheight, vwidth; int16 nactive, eactive; double oldversion; } postView; struct postdata { int32 len; uint8 *data; int numnames; /* could differ from numglyphs */ char **names; /* there are numnames entries */ uint16 *enc; /* there are numglyphs of these */ char **editnames; uint16 *editenc; }; #define EDGE_SPACER 2 static int efinishup(postView *postv) { const unichar_t *ret = _GGadgetGetTitle(postv->etf); unichar_t *end; struct postdata *pd = (postv->table->table_data); int val; if ( postv->eactive==-1 ) return( true ); val = u_strtol(ret,&end,10); if ( *ret=='\0' || *end!='\0' ) { GWidgetErrorR(_STR_BadNumber,_STR_BadNumber); return( false ); } else if ( val<0 || val>postv->font->glyph_cnt ) { GWidgetErrorR(_STR_BadNumber,_STR_NumberOutOfRange,0,postv->font->glyph_cnt); return( false ); } if ( val != (pd->editenc==NULL?pd->enc[postv->eactive]:pd->editenc[postv->eactive]) ) { if ( pd->editenc==NULL ) { pd->editenc = gcalloc(postv->font->glyph_cnt,sizeof(unichar_t)); memcpy(pd->editenc,pd->enc,postv->font->glyph_cnt*sizeof(unichar_t)); } pd->editenc[postv->eactive] = val; } postv->eactive = -1; GGadgetMove(postv->etf,postv->addrend+EDGE_SPACER,-100); return( true ); } static int nfinishup(postView *postv) { const unichar_t *ret = _GGadgetGetTitle(postv->ntf), *pt; unichar_t *temp=NULL, *tpt, *end; struct postdata *pd = (postv->table->table_data); if ( postv->nactive==-1 ) return( true ); if ( *ret=='\0' ) { GWidgetErrorR(_STR_BadPSName,_STR_BadPSNameEmpty); temp = uc_copy(".notdef"); } else { for ( pt = ret; *pt; ++pt ) { if ( *pt<' ' || *pt>=0x7f || *pt=='(' || *pt=='[' || *pt=='{' || *pt=='<' || *pt==')' || *pt==']' || *pt=='}' || *pt=='>' || *pt=='%' || *pt=='/' ) break; } if ( *pt ) { GWidgetErrorR(_STR_BadPSName,_STR_BadPSNameChar); temp = u_copy(ret); for ( pt=ret, tpt=temp; *pt ; ++pt ) { if ( *pt<' ' || *pt>=0x7f || *pt=='(' || *pt=='[' || *pt=='{' || *pt=='<' || *pt==')' || *pt==']' || *pt=='}' || *pt=='>' || *pt=='%' || *pt=='/' ) /* Do Nothing */; else *tpt++ = *pt; } *tpt='\0'; if ( *temp=='\0' ) { free( temp ); temp = uc_copy(".notdef"); } } else { u_strtod(ret,&end); if ( *end=='\0' || (*end=='#' && *ret!='#')) { GWidgetErrorR(_STR_BadPSName,_STR_BadPSNameNotNumber); temp = uc_copy(".notdef"); } } } if ( temp!=NULL ) { GGadgetSetTitle(postv->ntf,temp); free(temp); return( false ); } if ( uc_strcmp(ret,pd->editnames==NULL || pd->editnames[postv->nactive]==NULL? pd->names[postv->nactive]:pd->editnames[postv->nactive])!= 0 ) { if ( pd->editnames==NULL ) pd->editnames = gcalloc(pd->numnames,sizeof(char *)); if ( pd->editnames[postv->nactive]!=NULL ) free( pd->editnames[postv->nactive] ); pd->editnames[postv->nactive] = cu_copy(ret); } postv->nactive = -1; GGadgetMove(postv->ntf,postv->addrend+EDGE_SPACER,-100); return( true ); } static int post_processdata(TableView *tv) { postView *postv = (postView *) tv; struct postdata *pd = (postv->table->table_data); int err = false; real version, ia; int upos, usize, isfixed, min42, max42, min1, max1; int i; version = GetRealR(tv->gw,CID_Version,_STR_Version,&err); ia = GetRealR(tv->gw,CID_ItalicAngle,_STR_ItalicAngle,&err); upos = GetIntR(tv->gw,CID_UnderlinePos,_STR_UnderlinePos,&err); usize = GetIntR(tv->gw,CID_UnderlineHeight,_STR_UnderlineHeight,&err); isfixed = GetIntR(tv->gw,CID_IsFixed,_STR_IsFixed,&err); min42 = GetIntR(tv->gw,CID_minMemType42,_STR_MinMemType42,&err); max42 = GetIntR(tv->gw,CID_maxMemType42,_STR_MaxMemType42,&err); min1 = GetIntR(tv->gw,CID_minMemType1,_STR_MinMemType1,&err); max1 = GetIntR(tv->gw,CID_maxMemType1,_STR_MaxMemType1,&err); if ( err ) return( false ); if ( !nfinishup(postv) || !efinishup(postv)) return( false ); ptputvfixed(pd->data,version); ptputfixed(pd->data+4,ia); ptputushort(pd->data+8,upos); ptputushort(pd->data+10,usize); ptputlong(pd->data+12,isfixed); ptputlong(pd->data+16,min42); ptputlong(pd->data+20,max42); ptputlong(pd->data+24,min1); ptputlong(pd->data+28,max1); if ( pd->editnames!=NULL ) { if ( version>=3 ) { for ( i=0; inumnames; ++i ) free( pd->editnames[i]); free(pd->editnames); } else if ( pd->names==NULL ) pd->names = pd->editnames; else { for ( i=0; inumnames; ++i ) if ( pd->editnames[i]!=NULL ) { free(pd->names[i]); pd->names[i] = pd->editnames[i]; } free(pd->editnames); } pd->editnames = NULL; } if ( pd->names!=NULL && version>=3 ) { for ( i=0; inumnames; ++i ) free( pd->names[i]); free(pd->names); pd->names = NULL; pd->numnames = 0; } if ( pd->editenc!=NULL && version==4 ) { free(pd->enc); pd->enc = pd->editenc; } else if ( version!=4 ) { free(pd->editenc); free(pd->enc); pd->enc = NULL; } pd->editenc = NULL; if ( !postv->table->changed ) { postv->table->changed = true; postv->table->td_changed = true; postv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int post_close(TableView *tv) { if ( post_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs postfuncs = { post_close, post_processdata }; static int JustMacNames(struct postdata *pd, int exact) { int i,j; char *name; if ( exact ) { for ( i=0; i<258 && inumnames; ++i ) { name = pd->editnames!=NULL && pd->editnames[i]!=NULL ? pd->editnames[i] : pd->names[i]; if ( strcmp(name,ttfstandardnames[i])!=0 ) return( false ); } /* I'm going to allow extra glyphs which can't be named */ return( true ); } else { for ( i=0; inumnames; ++i ) { name = pd->editnames!=NULL && pd->editnames[i]!=NULL ? pd->editnames[i] : pd->names[i]; for ( j=0; j<258; ++j ) if ( strcmp(name,ttfstandardnames[j])==0 ) break; if ( j==258 ) return( false ); } return( true ); } } static int post_VersionChange(GGadget *g, GEvent *e) { GWindow gw = GDrawGetParentWindow(GGadgetGetWindow(g)); const unichar_t *ret = _GGadgetGetTitle(g); double val = u_strtod(ret,NULL); postView *postv = GDrawGetUserData(gw); struct postdata *pd = (postv->table->table_data); int revert = false; struct enctab *enc; static int buts[] = { _STR_Yes, _STR_Cancel, 0 }; char buf[100]; unichar_t ubuf[10]; int i; if ( e->u.control.subtype!=et_textchanged ) return( true ); if ( val==4.0 && pd->enc==NULL ) { if ( GWidgetAskR( _STR_PostNamesLost,buts,0,1,_STR_PostVersion4)==1 ) { revert = 1; } else { pd->editenc = gcalloc(postv->font->glyph_cnt,sizeof(uint16)); if ( (enc = postv->font->enc)!=NULL ) for ( i=0; ifont->glyph_cnt && icnt; ++i ) pd->editenc[i] = enc->uenc[i]==0xffffffff?0:enc->uenc[i]; GScrollBarSetBounds(postv->esb,0,postv->font->glyph_cnt,postv->vheight/postv->fh); } } else if ( val!=4.0 && pd->names==NULL && pd->enc!=NULL ) { if ( GWidgetAskR( _STR_PostEncLost,buts,0,1,_STR_PostNotVersion4)==1 ) revert = 1; else if ( val==1.0 ) { if ( GWidgetAskR( _STR_PostVersionFailure,buts,0,1,_STR_PostVersion1Len)==1 ) pd->numnames = postv->font->glyph_cnt<258 ? postv->font->glyph_cnt : 258; pd->editnames = gcalloc(pd->numnames,sizeof(char *)); for ( i=0; inumnames; ++i ) pd->editnames[i] = copy(ttfstandardnames[i]); } else if ( val==2.5 ) { /* !!!! */ } else if ( val==2.0 ) { pd->numnames = postv->font->glyph_cnt; pd->editnames = gcalloc(postv->font->glyph_cnt,sizeof(char *)); if ( (enc = postv->font->enc)!=NULL ) { for ( i=0; inumnames; ++i ) { if ( enc->uenc[i]==0xffffffff ) pd->editnames[i] = copy(".notdef"); else if ( psunicodenames[enc->uenc[i]]!=NULL ) pd->editnames[i] = copy(psunicodenames[enc->uenc[i]]); else { sprintf(buf,"uni%04X", enc->uenc[i]); pd->editnames[i] = copy(buf); } } } else { for ( i=0; inumnames; ++i ) pd->editnames[i] = copy(".notdef"); } } GScrollBarSetBounds(postv->nsb,0,pd->numnames,postv->vheight/postv->fh); } else if ( val==3.0 && pd->names!=NULL ) { if ( GWidgetAskR( _STR_PostNamesLost,buts,0,1,_STR_PostVersion3)==1 ) revert = 1; } else if ( val==1.0 && !JustMacNames(pd,true) ) { GWidgetErrorR( _STR_PostNamesLost,_STR_PostVersion1); revert = 1; } else if ( val==2.5 && !JustMacNames(pd,false) ) { GWidgetErrorR( _STR_PostNamesLost,_STR_PostVersion2_5); revert = 1; } if ( revert ) { sprintf( buf, "%g", postv->oldversion ); uc_strcpy(ubuf,buf); GGadgetSetTitle(g,ubuf); return( true ); } if ( val!=0 ) postv->oldversion = val; GTabSetSetEnabled(GWidgetGetControl(gw,CID_Tabs),2,val==4.0); GTabSetSetEnabled(GWidgetGetControl(gw,CID_Tabs),1,val<3.0); return( true ); } static int post_AspectChange(GGadget *g, GEvent *e) { return( true ); } static int post_Cancel(GGadget *g, GEvent *e) { GWindow gw; postView *postv; struct postdata *pd; int i; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); postv = GDrawGetUserData(gw); pd = (postv->table->table_data); if ( pd->editnames!=NULL ) { for ( i=0;inumnames; ++i ) free(pd->editnames[i]); free(pd->editnames); pd->editnames = NULL; } free(pd->editenc); pd->editenc = NULL; GDrawDestroyWindow(gw); } return( true ); } static int post_OK(GGadget *g, GEvent *e) { GWindow gw; postView *postv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); postv = GDrawGetUserData(gw); post_close((TableView *) postv); } return( true ); } static int post_e_h(GWindow gw, GEvent *event) { postView *postv = GDrawGetUserData(gw); if ( event->type==et_close ) { GDrawDestroyWindow(postv->gw); } else if ( event->type == et_destroy ) { postv->table->tv = NULL; free(postv); } else if ( event->type == et_resize ) { GRect pos; GGadgetResize(postv->tabs, event->u.resize.size.width-GDrawPointsToPixels(NULL,352-343), event->u.resize.size.height-GDrawPointsToPixels(NULL,340-292)); postv->vheight += event->u.resize.dheight; postv->vwidth += event->u.resize.dwidth; GGadgetGetSize(postv->ok,&pos); GGadgetMove(postv->ok,pos.x,pos.y+event->u.resize.dheight); GGadgetGetSize(postv->cancel,&pos); GGadgetMove(postv->cancel,pos.x+event->u.resize.dwidth, pos.y+event->u.resize.dheight); GGadgetGetSize(postv->box,&pos); GGadgetResize(postv->box,pos.width+event->u.resize.dwidth, pos.height+event->u.resize.dheight); GDrawRequestExpose(gw,NULL,false); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(postv->table->name); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } static void postv_expose(postView *postv,GWindow pixmap,GRect *rect, int is_n) { int low, high; int x,y; struct postdata *pd = (postv->table->table_data); char caddr[8], cval[20]; unichar_t uval[129], uaddr[8]; int index, max = is_n? pd->numnames : pd->enc==NULL && pd->editenc ==NULL ? 0 : postv->font->glyph_cnt; Color col; GRect old, size; if ( rect->y<0 ) { if ( rect->y+rect->height<0 ) return; rect->height += rect->y; rect->y = 0; } size = *rect; if ( rect->x+rect->width>=postv->vwidth-postv->sbw ) size.width = postv->vwidth-postv->sbw-rect->x; GDrawPushClip(pixmap,&size,&old); GDrawSetFont(pixmap,postv->gfont); low = ( (rect->y-EDGE_SPACER)/postv->fh ) * postv->fh +2; high = ( (rect->y+rect->height+postv->fh-1-EDGE_SPACER)/postv->fh ) * postv->fh +EDGE_SPACER; if ( high>postv->vheight-EDGE_SPACER ) high = postv->vheight-EDGE_SPACER; GDrawDrawLine( pixmap, postv->addrend,0,postv->addrend,0x7fff,0x000000); index = ((is_n?postv->ntop:postv->etop)+(low-EDGE_SPACER)/postv->fh); y = low; for ( ; y<=high && indexfont->enc!=NULL ) { int p = strlen(caddr); uaddr[p] = ' '; if ( postv->font->enc->uenc[index]!=0xffffffff ) uaddr[p+1] = postv->font->enc->uenc[index]; else { uaddr[p+1] = '?'; col = 0xff0000; } uaddr[p+2] = '\0'; } x = postv->addrend - EDGE_SPACER - GDrawGetTextWidth(pixmap,uaddr,-1,NULL); GDrawDrawText(pixmap,x,y+postv->as,uaddr,-1,NULL,col); if ( is_n ) { if ( pd->names!=NULL ) { uc_strcpy(uval, pd->editnames!=NULL && pd->editnames[index]!=NULL? pd->editnames[index]: pd->names[index] ); GDrawDrawText(pixmap,postv->addrend+EDGE_SPACER,y+postv->as,uval,-1,NULL,0x000000); } } else { if ( pd->enc!=NULL || pd->editenc ) { sprintf(cval, "%d", pd->editenc!=NULL ? pd->editenc[index]: pd->enc[index] ); uc_strcpy(uval,cval); } } GDrawDrawText(pixmap,postv->addrend+EDGE_SPACER,y+postv->as,uval,-1,NULL,0x000000); y += postv->fh; } GDrawPopClip(pixmap,&old); } static void post_scroll(postView *postv,struct sbevent *sb,int is_n) { int newpos = is_n?postv->ntop:postv->etop, oldpos = newpos; struct postdata *pd = postv->table->table_data; int lheight = is_n ? pd->numnames : postv->font->glyph_cnt; GRect size; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= postv->vheight/postv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += postv->vheight/postv->fh; break; case et_sb_bottom: newpos = lheight-postv->vheight/postv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>lheight-postv->vheight/postv->fh ) newpos = lheight-postv->vheight/postv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=oldpos ) { int diff = newpos-oldpos; if ( is_n ) postv->ntop = newpos; else postv->etop = newpos; size.x = size.y = 0; size.width = postv->vwidth-postv->sbw; size.height = postv->vheight; GScrollBarSetPos(is_n ? postv->nsb : postv->esb,newpos); if ( (is_n && postv->nactive!=-1) || (!is_n && postv->eactive!=-1) ) { GGadget *tf = is_n ? postv->ntf : postv->etf; GRect pos; GGadgetGetSize(tf,&pos); GGadgetMove(tf,postv->addrend+EDGE_SPACER,pos.y+diff*postv->fh); } GDrawScroll(is_n ? postv->nv : postv->ev,&size,0,diff*postv->fh); } } static int ev_e_h(GWindow gw, GEvent *event) { postView *postv = GDrawGetUserData(gw); struct postdata *pd = postv->table->table_data; int width; if ( event->type == et_resize ) { struct postdata *pd = postv->table->table_data; int lheight = pd->enc==NULL && pd->editenc==NULL ? 0 : postv->font->glyph_cnt; GGadgetMove(postv->esb,event->u.resize.size.width-postv->sbw,0); GGadgetResize(postv->esb,postv->sbw,event->u.resize.size.height); GScrollBarSetBounds(postv->esb,0,lheight,postv->vheight/postv->fh); if ( postv->etop + postv->vheight/postv->fh > lheight ) postv->etop = lheight-postv->vheight/postv->fh; if ( postv->etop<0 ) postv->etop = 0; GScrollBarSetPos(postv->esb,postv->etop); width = event->u.resize.size.width-postv->addrend-EDGE_SPACER - postv->sbw; if ( width < 5 ) width = 5; GGadgetResize(postv->etf,width,postv->fh); GDrawRequestExpose(gw,NULL,false); } else if ( event->type == et_expose ) { postv_expose(postv,gw,&event->u.expose.rect,false); } else if ( event->type == et_char ) { post_e_h(postv->gw,event); } else if ( event->type == et_controlevent ) { switch ( event->u.control.subtype ) { case et_scrollbarchange: post_scroll(postv,&event->u.control.u.sb,false); break; } } else if ( event->type == et_mousedown ) { int l = (event->u.mouse.y-EDGE_SPACER)/postv->fh + postv->etop; unichar_t ubuf[20]; char buf[20]; if ( efinishup(postv) && event->u.mouse.x>postv->addrend+EDGE_SPACER && lfont->glyph_cnt && l!=postv->eactive ) { postv->eactive = l; GGadgetMove(postv->etf, postv->addrend+EDGE_SPACER, (l-postv->etop)*postv->fh+EDGE_SPACER+1); sprintf( buf, "%d", pd->editenc==NULL ? pd->enc[l] : pd->editenc[l]); uc_strcpy(ubuf,buf); GGadgetSetTitle(postv->etf,ubuf); GDrawPostEvent(event); /* And we hope the tf catches it this time */ } } return( true ); } static int nv_e_h(GWindow gw, GEvent *event) { postView *postv = GDrawGetUserData(gw); struct postdata *pd = postv->table->table_data; int width; if ( event->type == et_resize ) { GGadgetMove(postv->nsb,event->u.resize.size.width-postv->sbw,0); GGadgetResize(postv->nsb,postv->sbw,event->u.resize.size.height); GScrollBarSetBounds(postv->nsb,0,pd->numnames,postv->vheight/postv->fh); if ( postv->ntop + postv->vheight/postv->fh > pd->numnames ) postv->ntop = pd->numnames-postv->vheight/postv->fh; if ( postv->ntop<0 ) postv->etop = 0; GScrollBarSetPos(postv->nsb,postv->ntop); width = event->u.resize.size.width-postv->addrend-EDGE_SPACER - postv->sbw; if ( width < 5 ) width = 5; GGadgetResize(postv->ntf,width,postv->fh); GDrawRequestExpose(gw,NULL,false); } else if ( event->type == et_expose ) { postv_expose(postv,gw,&event->u.expose.rect,true); return( false ); } else if ( event->type == et_char ) { post_e_h(postv->gw,event); } else if ( event->type == et_controlevent ) { switch ( event->u.control.subtype ) { case et_scrollbarchange: post_scroll(postv,&event->u.control.u.sb,true); break; } } else if ( event->type == et_mousedown ) { int l = (event->u.mouse.y-EDGE_SPACER)/postv->fh + postv->ntop; unichar_t *temp; if ( nfinishup(postv) && event->u.mouse.x>postv->addrend+EDGE_SPACER && lnumnames && l!=postv->nactive ) { postv->nactive = l; GGadgetMove(postv->ntf, postv->addrend+EDGE_SPACER, (l-postv->ntop)*postv->fh+EDGE_SPACER+1); temp = uc_copy(pd->editnames!=NULL && pd->editnames[l]!=NULL ? pd->editnames[l]:pd->names[l]); GGadgetSetTitle(postv->ntf,temp); free(temp); GDrawPostEvent(event); /* And we hope the tf catches it this time */ } } return( true ); } static void free_posttabledata(void *_data) { struct postdata *pd = _data; int i; if ( pd==NULL ) return; free(pd->data); free(pd->enc); if ( pd->names!=NULL ) for ( i=0; inumnames; ++i ) free( pd->names[i] ); free( pd->names ); free( pd ); } static void write_posttabledata(FILE *tottf,Table *post) { /* !!!! */ } static void postTableFillup(Table *tab,TtfFont *font) { int i, gcbig, len, j; struct postdata *pd; FILE *ttf = tab->container->file; uint16 *sids; char **names; if ( tab->table_data!=NULL ) return; /* Already done */ if ( tab->data!=NULL && tab->changed ) { GWidgetErrorR(_STR_BinaryEdit,_STR_BinaryEditSave); return; } if ( tab->data ) { free(tab->data); tab->data = NULL; } fseek(ttf,tab->start,SEEK_SET); pd = gcalloc(1,sizeof(struct postdata)); pd->len = 32; pd->data = galloc(32); fread(pd->data,1,32,ttf); if ( ptgetlong(pd->data)== 0x10000 ) { /* No name data. It defaults to standard ttf names */ pd->numnames = font->glyph_cnt>258?258:font->glyph_cnt; pd->names = gcalloc(pd->numnames,sizeof(char *)); for ( i=0; inumnames; ++i ) pd->names[i] = copy(ttfstandardnames[i]); } else if ( ptgetlong(pd->data)==0x20000 ) { /* Normal name tables with an array of pointers to strings */ pd->numnames = getushort(ttf); pd->names = gcalloc(pd->numnames,sizeof(char *)); sids = gcalloc(pd->numnames,sizeof(uint16)); /* the index table is backwards from the way I want to use it */ gcbig = 257; for ( i=0; inumnames; ++i ) { sids[i] = getushort(ttf); if ( sids[i]>gcbig ) gcbig = sids[i]; } if ( gcbig>257 ) { names = gcalloc(gcbig+1,sizeof(char *)); for ( i=258; i<=gcbig; ++i ) { char *nm; len = getc(ttf); nm = galloc(len+1); for ( j=0; jnumnames; ++i ) { if ( sids[i]<258 ) pd->names[i] = copy(ttfstandardnames[sids[i]]); else pd->names[i] = copy(names[sids[i]]); } free(sids); if ( gcbig>257 ) { for ( i=258; i<=gcbig; ++i ) free(names[i]); free(names); } } else if ( ptgetlong(pd->data)==0x25000 ) { /* Depreciated. Just a reordering of the standard names */ pd->numnames = font->glyph_cnt; pd->names = gcalloc(pd->numnames,sizeof(char *)); for ( i=0; inumnames; ++i ) pd->names[i] = copy(ttfstandardnames[getc(ttf)]); } else if ( ptgetlong(pd->data)==0x30000 ) { /* No data, no tables */ } else if ( ptgetlong(pd->data)==0x40000 ) { /* Some sort of encoding table */ pd->enc = galloc(font->glyph_cnt*sizeof(unichar_t)); for ( i=0; iglyph_cnt; ++i ) pd->enc[i] = getushort(ttf); } tab->table_data = pd; tab->free_tabledata = free_posttabledata; tab->write_tabledata = write_posttabledata; } void postCreateEditor(Table *tab,TtfView *tfv) { postView *postv = gcalloc(1,sizeof(postView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GTabInfo aspects[8]; GGadgetCreateData mgcd[6], ggcd[20], ngcd[3], egcd[3]; GTextInfo mlabel[6], glabel[20], tf; static unichar_t title[60]; char version[12], ital[12], upos[12], usize[12], fixed[12], min42[12], max42[12], min1[12], max1[12]; int i; real vnum; struct postdata *pd; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; static unichar_t num[] = { '0', '\0' }; int numlen; int as, ds, ld; static GBox tfbox; postv->table = tab; postv->virtuals = &postfuncs; postv->owner = tfv; postv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) postv; postTableFillup(tab,postv->font); pd = tab->table_data; title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, postv->font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,post_e_h,postv,&wattrs); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; postv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(postv->gw,postv->gfont); GDrawFontMetrics(postv->gfont,&as,&ds,&ld); postv->as = as+1; postv->fh = postv->as+ds; numlen = GDrawGetTextWidth(postv->gw,num,1,NULL); postv->addrend = 6*numlen + 2*EDGE_SPACER; /******************************************************************************/ postv->oldversion = vnum = ptgetvfixed(pd->data); memset(&mlabel,0,sizeof(mlabel)); memset(&mgcd,0,sizeof(mgcd)); memset(&aspects,'\0',sizeof(aspects)); i = 0; aspects[i].text = (unichar_t *) _STR_General; aspects[i].selected = true; postv->old_aspect = 0; aspects[i].text_in_resource = true; aspects[i++].gcd = ggcd; aspects[i].text = (unichar_t *) _STR_Names; aspects[i].text_in_resource = true; aspects[i].disabled = vnum>=3.0; aspects[i++].gcd = ngcd; aspects[i].text = (unichar_t *) _STR_Encoding; aspects[i].text_in_resource = true; aspects[i].disabled = vnum!=4.0; aspects[i++].gcd = egcd; mgcd[0].gd.pos.x = 5; mgcd[0].gd.pos.y = 5; mgcd[0].gd.pos.width = 242; mgcd[0].gd.pos.height = 292; mgcd[0].gd.u.tabs = aspects; mgcd[0].gd.flags = gg_visible | gg_enabled; mgcd[0].gd.cid = CID_Tabs; mgcd[0].gd.handle_controlevent = post_AspectChange; mgcd[0].creator = GTabSetCreate; mgcd[1].gd.pos.x = 30-3; mgcd[1].gd.pos.y = mgcd[0].gd.pos.y+mgcd[0].gd.pos.height+8-3; mgcd[1].gd.pos.width = -1; mgcd[1].gd.pos.height = 0; mgcd[1].gd.flags = gg_visible | gg_enabled | gg_but_default; mlabel[1].text = (unichar_t *) _STR_OK; mlabel[1].text_in_resource = true; mgcd[1].gd.label = &mlabel[1]; mgcd[1].gd.handle_controlevent = post_OK; mgcd[1].creator = GButtonCreate; mgcd[2].gd.pos.x = 252-GIntGetResource(_NUM_Buttonsize)-30; mgcd[2].gd.pos.y = mgcd[1].gd.pos.y+3; mgcd[2].gd.pos.width = -1; mgcd[2].gd.pos.height = 0; mgcd[2].gd.flags = gg_visible | gg_enabled | gg_but_cancel; mlabel[2].text = (unichar_t *) _STR_Cancel; mlabel[2].text_in_resource = true; mgcd[2].gd.label = &mlabel[2]; mgcd[2].gd.handle_controlevent = post_Cancel; mgcd[2].creator = GButtonCreate; mgcd[3].gd.pos.x = 2; mgcd[3].gd.pos.y = 2; mgcd[3].gd.pos.width = pos.width-4; mgcd[3].gd.pos.height = pos.height-4; mgcd[3].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; mgcd[3].creator = GGroupCreate; /******************************************************************************/ memset(&glabel,0,sizeof(glabel)); memset(&ggcd,0,sizeof(ggcd)); ggcd[0].gd.pos.x = 10; ggcd[0].gd.pos.y = 12; glabel[0].text = (unichar_t *) _STR_Version; glabel[0].text_in_resource = true; ggcd[0].gd.label = &glabel[0]; ggcd[0].gd.flags = gg_visible | gg_enabled; ggcd[0].creator = GLabelCreate; sprintf( version, "%g", vnum ); two_five[1] = localeinfo.decimal_point[0]; glabel[1].text = (unichar_t *) version; glabel[1].text_is_1byte = true; ggcd[1].gd.label = &glabel[1]; ggcd[1].gd.pos.x = 80; ggcd[1].gd.pos.y = ggcd[0].gd.pos.y-6; ggcd[1].gd.flags = gg_enabled|gg_visible; ggcd[1].gd.cid = CID_Version; ggcd[1].gd.u.list = postversions; ggcd[1].gd.handle_controlevent = post_VersionChange; ggcd[1].creator = GListFieldCreate; ggcd[2].gd.pos.x = 10; ggcd[2].gd.pos.y = ggcd[1].gd.pos.y+24+6; glabel[2].text = (unichar_t *) _STR_ItalicAngle; glabel[2].text_in_resource = true; ggcd[2].gd.label = &glabel[2]; ggcd[2].gd.flags = gg_visible | gg_enabled; ggcd[2].creator = GLabelCreate; sprintf( ital, "%g", ptgetfixed(pd->data+4) ); glabel[3].text = (unichar_t *) ital; glabel[3].text_is_1byte = true; ggcd[3].gd.label = &glabel[3]; ggcd[3].gd.pos.x = 80; ggcd[3].gd.pos.y = ggcd[2].gd.pos.y-6; ggcd[3].gd.pos.width = 60; ggcd[3].gd.flags = gg_enabled|gg_visible; ggcd[3].gd.cid = CID_ItalicAngle; ggcd[3].creator = GTextFieldCreate; ggcd[4].gd.pos.x = 10; ggcd[4].gd.pos.y = ggcd[3].gd.pos.y+24+6; glabel[4].text = (unichar_t *) _STR_UnderlinePos; glabel[4].text_in_resource = true; ggcd[4].gd.label = &glabel[4]; ggcd[4].gd.flags = gg_visible | gg_enabled; ggcd[4].creator = GLabelCreate; sprintf( upos, "%d", (short) ptgetushort(pd->data+8) ); glabel[5].text = (unichar_t *) upos; glabel[5].text_is_1byte = true; ggcd[5].gd.label = &glabel[5]; ggcd[5].gd.pos.x = 80; ggcd[5].gd.pos.y = ggcd[4].gd.pos.y-6; ggcd[5].gd.pos.width = 60; ggcd[5].gd.flags = gg_enabled|gg_visible; ggcd[5].gd.cid = CID_UnderlinePos; ggcd[5].creator = GTextFieldCreate; ggcd[6].gd.pos.x = 150; ggcd[6].gd.pos.y = ggcd[3].gd.pos.y+24+6; glabel[6].text = (unichar_t *) _STR_UnderlineHeight; glabel[6].text_in_resource = true; ggcd[6].gd.label = &glabel[6]; ggcd[6].gd.flags = gg_visible | gg_enabled; ggcd[6].creator = GLabelCreate; sprintf( usize, "%d", ptgetushort(pd->data+10) ); glabel[7].text = (unichar_t *) usize; glabel[7].text_is_1byte = true; ggcd[7].gd.label = &glabel[7]; ggcd[7].gd.pos.x = 175; ggcd[7].gd.pos.y = ggcd[6].gd.pos.y-6; ggcd[7].gd.pos.width = 60; ggcd[7].gd.flags = gg_enabled|gg_visible; ggcd[7].gd.cid = CID_UnderlineHeight; ggcd[7].creator = GTextFieldCreate; ggcd[8].gd.pos.x = 10; ggcd[8].gd.pos.y = ggcd[6].gd.pos.y+24+6; glabel[8].text = (unichar_t *) _STR_IsFixed; glabel[8].text_in_resource = true; ggcd[8].gd.label = &glabel[8]; ggcd[8].gd.flags = gg_visible | gg_enabled; ggcd[8].creator = GLabelCreate; sprintf( fixed, "%d", ptgetlong(pd->data+12) ); glabel[9].text = (unichar_t *) fixed; glabel[9].text_is_1byte = true; ggcd[9].gd.label = &glabel[9]; ggcd[9].gd.pos.x = 80; ggcd[9].gd.pos.y = ggcd[8].gd.pos.y-6; ggcd[9].gd.pos.width = 60; ggcd[9].gd.flags = gg_enabled|gg_visible; ggcd[9].gd.cid = CID_IsFixed; ggcd[9].creator = GTextFieldCreate; ggcd[10].gd.pos.x = 10; ggcd[10].gd.pos.y = ggcd[8].gd.pos.y+24+6; glabel[10].text = (unichar_t *) _STR_MinMemType42; glabel[10].text_in_resource = true; ggcd[10].gd.label = &glabel[10]; ggcd[10].gd.flags = gg_visible | gg_enabled; ggcd[10].creator = GLabelCreate; sprintf( min42, "%d", ptgetlong(pd->data+16) ); glabel[11].text = (unichar_t *) min42; glabel[11].text_is_1byte = true; ggcd[11].gd.label = &glabel[11]; ggcd[11].gd.pos.x = 120; ggcd[11].gd.pos.y = ggcd[10].gd.pos.y-6; ggcd[11].gd.pos.width = 60; ggcd[11].gd.flags = gg_enabled|gg_visible; ggcd[11].gd.cid = CID_minMemType42; ggcd[11].creator = GTextFieldCreate; ggcd[12].gd.pos.x = 70; ggcd[12].gd.pos.y = ggcd[10].gd.pos.y+24; glabel[12].text = (unichar_t *) _STR_MaxMemType42; glabel[12].text_in_resource = true; ggcd[12].gd.label = &glabel[12]; ggcd[12].gd.flags = gg_visible | gg_enabled; ggcd[12].creator = GLabelCreate; sprintf( max42, "%d", ptgetlong(pd->data+20) ); glabel[13].text = (unichar_t *) max42; glabel[13].text_is_1byte = true; ggcd[13].gd.label = &glabel[13]; ggcd[13].gd.pos.x = 100; ggcd[13].gd.pos.y = ggcd[12].gd.pos.y-6; ggcd[13].gd.pos.width = 60; ggcd[13].gd.flags = gg_enabled|gg_visible; ggcd[13].gd.cid = CID_maxMemType42; ggcd[13].creator = GTextFieldCreate; ggcd[14].gd.pos.x = 10; ggcd[14].gd.pos.y = ggcd[12].gd.pos.y+24; glabel[14].text = (unichar_t *) _STR_MinMemType1; glabel[14].text_in_resource = true; ggcd[14].gd.label = &glabel[14]; ggcd[14].gd.flags = gg_visible | gg_enabled; ggcd[14].creator = GLabelCreate; sprintf( min1, "%d", ptgetlong(pd->data+24) ); glabel[15].text = (unichar_t *) min1; glabel[15].text_is_1byte = true; ggcd[15].gd.label = &glabel[15]; ggcd[15].gd.pos.x = ggcd[11].gd.pos.x; ggcd[15].gd.pos.y = ggcd[14].gd.pos.y-6; ggcd[15].gd.pos.width = 60; ggcd[15].gd.flags = gg_enabled|gg_visible; ggcd[15].gd.cid = CID_minMemType1; ggcd[15].creator = GTextFieldCreate; ggcd[16].gd.pos.x = ggcd[12].gd.pos.x; ggcd[16].gd.pos.y = ggcd[14].gd.pos.y+24; glabel[16].text = (unichar_t *) _STR_MaxMemType1; glabel[16].text_in_resource = true; ggcd[16].gd.label = &glabel[16]; ggcd[16].gd.flags = gg_visible | gg_enabled; ggcd[16].creator = GLabelCreate; sprintf( max1, "%d", ptgetlong(pd->data+28) ); glabel[17].text = (unichar_t *) max1; glabel[17].text_is_1byte = true; ggcd[17].gd.label = &glabel[17]; ggcd[17].gd.pos.x = ggcd[13].gd.pos.x; ggcd[17].gd.pos.y = ggcd[16].gd.pos.y-6; ggcd[17].gd.pos.width = 60; ggcd[17].gd.flags = gg_enabled|gg_visible; ggcd[17].gd.cid = CID_maxMemType1; ggcd[17].creator = GTextFieldCreate; /******************************************************************************/ memset(&ngcd,0,sizeof(ngcd)); memset(&tf,0,sizeof(tf)); ngcd[0].gd.pos.y = 0; ngcd[0].gd.pos.height = mgcd[0].gd.pos.height; ngcd[0].gd.pos.width = _GScrollBar_Width; ngcd[0].gd.pos.x = mgcd[0].gd.pos.width-ngcd[0].gd.pos.width; ngcd[0].gd.flags = gg_visible|gg_enabled|gg_sb_vert; ngcd[0].creator = GScrollBarCreate; tfbox.main_background = tfbox.main_foreground = COLOR_DEFAULT; ngcd[1].gd.pos.y = -100; ngcd[0].gd.pos.height = postv->fh; ngcd[1].gd.pos.x = postv->addrend+EDGE_SPACER; tf.text = num+1; tf.font = postv->gfont; ngcd[1].gd.label = &tf; ngcd[1].gd.box = &tfbox; ngcd[1].gd.flags = gg_visible|gg_enabled|gg_sb_vert|gg_dontcopybox; ngcd[1].creator = GTextFieldCreate; /******************************************************************************/ memset(&egcd,0,sizeof(egcd)); egcd[0].gd.pos.y = 0; egcd[0].gd.pos.height = mgcd[0].gd.pos.height; egcd[0].gd.pos.width = _GScrollBar_Width; egcd[0].gd.pos.x = mgcd[0].gd.pos.width-egcd[0].gd.pos.width; egcd[0].gd.flags = gg_visible|gg_enabled|gg_sb_vert; egcd[0].creator = GScrollBarCreate; egcd[1] = ngcd[1]; /******************************************************************************/ GGadgetsCreate(gw,mgcd); postv->tabs = mgcd[0].ret; postv->ok = mgcd[1].ret; postv->cancel = mgcd[2].ret; postv->box = mgcd[3].ret; postv->nsb = ngcd[0].ret; postv->esb = egcd[0].ret; postv->ntf = ngcd[1].ret; postv->etf = egcd[1].ret; postv->nv = GTabSetGetSubwindow(postv->tabs,1); postv->ev = GTabSetGetSubwindow(postv->tabs,2); postv->sbw = GDrawPointsToPixels(postv->ev,_GScrollBar_Width); postv->nactive = postv->eactive = -1; GWidgetSetEH(postv->nv,nv_e_h); GWidgetSetEH(postv->ev,ev_e_h); GDrawGetSize(postv->ev,&pos); GGadgetMove(postv->nsb,pos.width-postv->sbw,0); GGadgetMove(postv->esb,pos.width-postv->sbw,0); GGadgetResize(postv->nsb,postv->sbw,pos.height); GGadgetResize(postv->esb,postv->sbw,pos.height); postv->vheight = pos.height; postv->vwidth = pos.width; GDrawSetVisible(gw,true); } mensis-080507/prefs.c0100664000076500007650000001435411010405162012604 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #include #include #include #include #include char *RecentFiles[RECENT_MAX]; /* int local_encoding; */ /* in gresource.c *//* not a charset */ char *helpdir = NULL; static char *gethomedir(void) { static char *dir=NULL; int uid; struct passwd *pw; if ( dir!=NULL ) return( dir ); if ( (dir=getenv("HOME"))!=NULL ) return( (dir=copy(dir)) ); uid = getuid(); while ( (pw=getpwent())!=NULL ) { if ( pw->pw_uid==uid ) { dir = copy(pw->pw_dir); endpwent(); return( dir ); } } endpwent(); return( NULL ); } char *getPfaEditDir(char *buffer) { static char *dir=NULL; if ( dir!=NULL ) return( dir ); if ( gethomedir()==NULL ) return( NULL ); sprintf(buffer,"%s/.PfaEdit", gethomedir()); if ( access(buffer,F_OK)==-1 ) if ( mkdir(buffer,0700)==-1 ) return( NULL ); dir = copy(buffer); return( dir ); } static char *getMensisPrefs(void) { static char *prefs=NULL; char buffer[1025]; if ( prefs!=NULL ) return( prefs ); if ( getPfaEditDir(buffer)==NULL ) return( NULL ); sprintf(buffer,"%s/ttfprefs", getPfaEditDir(buffer)); prefs = copy(buffer); return( prefs ); } static char *getMensisShareDir(void) { static char *sharedir=NULL; static int set=false; char *pt; int len; if ( set ) return( sharedir ); set = true; pt = strstr(GResourceProgramDir,"/bin"); if ( pt==NULL ) return( NULL ); len = (pt-GResourceProgramDir)+strlen("/share/ttfmod")+1; sharedir = galloc(len); strncpy(sharedir,GResourceProgramDir,pt-GResourceProgramDir); strcpy(sharedir+(pt-GResourceProgramDir),"/share/ttfmod"); return( sharedir ); } static int CheckLangDir(char *full,int sizefull,char *dir, const char *loc) { char buffer[100]; if ( loc==NULL || dir==NULL ) return(false); strcpy(buffer,"mensis-"); strcat(buffer,loc); strcat(buffer,".ui"); /*first look for full locale string (pfaedit.en_us.iso8859-1.ui) */ GFileBuildName(dir,buffer,full,sizefull); /* Look for language_territory */ if ( GFileExists(full)) return( true ); if ( strlen(loc)>5 ) { strcpy(buffer+13,".ui"); GFileBuildName(dir,buffer,full,sizefull); if ( GFileExists(full)) return( true ); } /* Look for language */ if ( strlen(loc)>2 ) { strcpy(buffer+10,".ui"); GFileBuildName(dir,buffer,full,sizefull); if ( GFileExists(full)) return( true ); } return( false ); } static void CheckLang(void) { /*const char *loc = setlocale(LC_MESSAGES,NULL);*/ /* This always returns "C" for me, even when it shouldn't be */ const char *loc = getenv("LC_ALL"); char buffer[100], full[1024]; if ( loc==NULL ) loc = getenv("LC_MESSAGES"); if ( loc==NULL ) loc = getenv("LANG"); if ( loc==NULL ) return; strcpy(buffer,"pfaedit."); strcat(buffer,loc); strcat(buffer,".ui"); if ( !CheckLangDir(full,sizeof(full),GResourceProgramDir,loc) && #ifdef SHAREDIR !CheckLangDir(full,sizeof(full),SHAREDIR,loc) && #endif !CheckLangDir(full,sizeof(full),getMensisShareDir(),loc) && !CheckLangDir(full,sizeof(full),"/usr/share/mensis",loc) ) return; GStringSetResourceFile(full); } void LoadPrefs(void) { char *prefs = getMensisPrefs(); FILE *p; char line[1100]; int ri=0; char *pt; MensisSetFallback(); CheckLang(); if ( prefs==NULL ) return; if ( (p=fopen(prefs,"r"))==NULL ) return; while ( fgets(line,sizeof(line),p)!=NULL ) { if ( *line=='#' ) continue; pt = strchr(line,':'); if ( pt==NULL ) continue; for ( ++pt; *pt=='\t'; ++pt ); if ( line[strlen(line)-1]=='\n' ) line[strlen(line)-1] = '\0'; if ( line[strlen(line)-1]=='\r' ) line[strlen(line)-1] = '\0'; if ( strncmp(line,"Recent:",strlen("Recent:"))==0 && ri0; --i ) RecentFiles[i] = RecentFiles[i-1]; RecentFiles[0] = copy(filename); } SavePrefs(); } mensis-080507/psunicodenames.c0100664000076500007650000467622707757511670014554 0ustar gwwgww#include /* Glyph Names for New Fonts 1.3 v1.1 (aglfn13.txt) */ /* http://partners.adobe.com/asn/tech/type/aglfn13.txt */ const int psunicodenames_cnt = 65536; const char *psunicodenames[65536] = { /* 0000 */ NULL, /* 0001 */ NULL, /* 0002 */ NULL, /* 0003 */ NULL, /* 0004 */ NULL, /* 0005 */ NULL, /* 0006 */ NULL, /* 0007 */ NULL, /* 0008 */ NULL, /* 0009 */ NULL, /* 000a */ NULL, /* 000b */ NULL, /* 000c */ NULL, /* 000d */ NULL, /* 000e */ NULL, /* 000f */ NULL, /* 0010 */ NULL, /* 0011 */ NULL, /* 0012 */ NULL, /* 0013 */ NULL, /* 0014 */ NULL, /* 0015 */ NULL, /* 0016 */ NULL, /* 0017 */ NULL, /* 0018 */ NULL, /* 0019 */ NULL, /* 001a */ NULL, /* 001b */ NULL, /* 001c */ NULL, /* 001d */ NULL, /* 001e */ NULL, /* 001f */ NULL, /* 0020 */ "space", /* 0021 */ "exclam", /* 0022 */ "quotedbl", /* 0023 */ "numbersign", /* 0024 */ "dollar", /* 0025 */ "percent", /* 0026 */ "ampersand", /* 0027 */ "quotesingle", /* 0028 */ "parenleft", /* 0029 */ "parenright", /* 002a */ "asterisk", /* 002b */ "plus", /* 002c */ "comma", /* 002d */ "hyphen", /* 002e */ "period", /* 002f */ "slash", /* 0030 */ "zero", /* 0031 */ "one", /* 0032 */ "two", /* 0033 */ "three", /* 0034 */ "four", /* 0035 */ "five", /* 0036 */ "six", /* 0037 */ "seven", /* 0038 */ "eight", /* 0039 */ "nine", /* 003a */ "colon", /* 003b */ "semicolon", /* 003c */ "less", /* 003d */ "equal", /* 003e */ "greater", /* 003f */ "question", /* 0040 */ "at", /* 0041 */ "A", /* 0042 */ "B", /* 0043 */ "C", /* 0044 */ "D", /* 0045 */ "E", /* 0046 */ "F", /* 0047 */ "G", /* 0048 */ "H", /* 0049 */ "I", /* 004a */ "J", /* 004b */ "K", /* 004c */ "L", /* 004d */ "M", /* 004e */ "N", /* 004f */ "O", /* 0050 */ "P", /* 0051 */ "Q", /* 0052 */ "R", /* 0053 */ "S", /* 0054 */ "T", /* 0055 */ "U", /* 0056 */ "V", /* 0057 */ "W", /* 0058 */ "X", /* 0059 */ "Y", /* 005a */ "Z", /* 005b */ "bracketleft", /* 005c */ "backslash", /* 005d */ "bracketright", /* 005e */ "asciicircum", /* 005f */ "underscore", /* 0060 */ "grave", /* 0061 */ "a", /* 0062 */ "b", /* 0063 */ "c", /* 0064 */ "d", /* 0065 */ "e", /* 0066 */ "f", /* 0067 */ "g", /* 0068 */ "h", /* 0069 */ "i", /* 006a */ "j", /* 006b */ "k", /* 006c */ "l", /* 006d */ "m", /* 006e */ "n", /* 006f */ "o", /* 0070 */ "p", /* 0071 */ "q", /* 0072 */ "r", /* 0073 */ "s", /* 0074 */ "t", /* 0075 */ "u", /* 0076 */ "v", /* 0077 */ "w", /* 0078 */ "x", /* 0079 */ "y", /* 007a */ "z", /* 007b */ "braceleft", /* 007c */ "bar", /* 007d */ "braceright", /* 007e */ "asciitilde", /* 007f */ NULL, /* 0080 */ NULL, /* 0081 */ NULL, /* 0082 */ NULL, /* 0083 */ NULL, /* 0084 */ NULL, /* 0085 */ NULL, /* 0086 */ NULL, /* 0087 */ NULL, /* 0088 */ NULL, /* 0089 */ NULL, /* 008a */ NULL, /* 008b */ NULL, /* 008c */ NULL, /* 008d */ NULL, /* 008e */ NULL, /* 008f */ NULL, /* 0090 */ NULL, /* 0091 */ NULL, /* 0092 */ NULL, /* 0093 */ NULL, /* 0094 */ NULL, /* 0095 */ NULL, /* 0096 */ NULL, /* 0097 */ NULL, /* 0098 */ NULL, /* 0099 */ NULL, /* 009a */ NULL, /* 009b */ NULL, /* 009c */ NULL, /* 009d */ NULL, /* 009e */ NULL, /* 009f */ NULL, /* 00a0 */ NULL, /* 00a1 */ "exclamdown", /* 00a2 */ "cent", /* 00a3 */ "sterling", /* 00a4 */ "currency", /* 00a5 */ "yen", /* 00a6 */ "brokenbar", /* 00a7 */ "section", /* 00a8 */ "dieresis", /* 00a9 */ "copyright", /* 00aa */ "ordfeminine", /* 00ab */ "guillemotleft", /* 00ac */ "logicalnot", /* 00ad */ NULL, /* 00ae */ "registered", /* 00af */ "macron", /* 00b0 */ "degree", /* 00b1 */ "plusminus", /* 00b2 */ NULL, /* 00b3 */ NULL, /* 00b4 */ "acute", /* 00b5 */ "mu", /* 00b6 */ "paragraph", /* 00b7 */ "periodcentered", /* 00b8 */ "cedilla", /* 00b9 */ NULL, /* 00ba */ "ordmasculine", /* 00bb */ "guillemotright", /* 00bc */ "onequarter", /* 00bd */ "onehalf", /* 00be */ "threequarters", /* 00bf */ "questiondown", /* 00c0 */ "Agrave", /* 00c1 */ "Aacute", /* 00c2 */ "Acircumflex", /* 00c3 */ "Atilde", /* 00c4 */ "Adieresis", /* 00c5 */ "Aring", /* 00c6 */ "AE", /* 00c7 */ "Ccedilla", /* 00c8 */ "Egrave", /* 00c9 */ "Eacute", /* 00ca */ "Ecircumflex", /* 00cb */ "Edieresis", /* 00cc */ "Igrave", /* 00cd */ "Iacute", /* 00ce */ "Icircumflex", /* 00cf */ "Idieresis", /* 00d0 */ "Eth", /* 00d1 */ "Ntilde", /* 00d2 */ "Ograve", /* 00d3 */ "Oacute", /* 00d4 */ "Ocircumflex", /* 00d5 */ "Otilde", /* 00d6 */ "Odieresis", /* 00d7 */ "multiply", /* 00d8 */ "Oslash", /* 00d9 */ "Ugrave", /* 00da */ "Uacute", /* 00db */ "Ucircumflex", /* 00dc */ "Udieresis", /* 00dd */ "Yacute", /* 00de */ "Thorn", /* 00df */ "germandbls", /* 00e0 */ "agrave", /* 00e1 */ "aacute", /* 00e2 */ "acircumflex", /* 00e3 */ "atilde", /* 00e4 */ "adieresis", /* 00e5 */ "aring", /* 00e6 */ "ae", /* 00e7 */ "ccedilla", /* 00e8 */ "egrave", /* 00e9 */ "eacute", /* 00ea */ "ecircumflex", /* 00eb */ "edieresis", /* 00ec */ "igrave", /* 00ed */ "iacute", /* 00ee */ "icircumflex", /* 00ef */ "idieresis", /* 00f0 */ "eth", /* 00f1 */ "ntilde", /* 00f2 */ "ograve", /* 00f3 */ "oacute", /* 00f4 */ "ocircumflex", /* 00f5 */ "otilde", /* 00f6 */ "odieresis", /* 00f7 */ "divide", /* 00f8 */ "oslash", /* 00f9 */ "ugrave", /* 00fa */ "uacute", /* 00fb */ "ucircumflex", /* 00fc */ "udieresis", /* 00fd */ "yacute", /* 00fe */ "thorn", /* 00ff */ "ydieresis", /* 0100 */ "Amacron", /* 0101 */ "amacron", /* 0102 */ "Abreve", /* 0103 */ "abreve", /* 0104 */ "Aogonek", /* 0105 */ "aogonek", /* 0106 */ "Cacute", /* 0107 */ "cacute", /* 0108 */ "Ccircumflex", /* 0109 */ "ccircumflex", /* 010a */ "Cdotaccent", /* 010b */ "cdotaccent", /* 010c */ "Ccaron", /* 010d */ "ccaron", /* 010e */ "Dcaron", /* 010f */ "dcaron", /* 0110 */ "Dcroat", /* 0111 */ "dcroat", /* 0112 */ "Emacron", /* 0113 */ "emacron", /* 0114 */ "Ebreve", /* 0115 */ "ebreve", /* 0116 */ "Edotaccent", /* 0117 */ "edotaccent", /* 0118 */ "Eogonek", /* 0119 */ "eogonek", /* 011a */ "Ecaron", /* 011b */ "ecaron", /* 011c */ "Gcircumflex", /* 011d */ "gcircumflex", /* 011e */ "Gbreve", /* 011f */ "gbreve", /* 0120 */ "Gdotaccent", /* 0121 */ "gdotaccent", /* 0122 */ "Gcommaaccent", /* 0123 */ "gcommaaccent", /* 0124 */ "Hcircumflex", /* 0125 */ "hcircumflex", /* 0126 */ "Hbar", /* 0127 */ "hbar", /* 0128 */ "Itilde", /* 0129 */ "itilde", /* 012a */ "Imacron", /* 012b */ "imacron", /* 012c */ "Ibreve", /* 012d */ "ibreve", /* 012e */ "Iogonek", /* 012f */ "iogonek", /* 0130 */ "Idotaccent", /* 0131 */ "dotlessi", /* 0132 */ "IJ", /* 0133 */ "ij", /* 0134 */ "Jcircumflex", /* 0135 */ "jcircumflex", /* 0136 */ "Kcommaaccent", /* 0137 */ "kcommaaccent", /* 0138 */ "kgreenlandic", /* 0139 */ "Lacute", /* 013a */ "lacute", /* 013b */ "Lcommaaccent", /* 013c */ "lcommaaccent", /* 013d */ "Lcaron", /* 013e */ "lcaron", /* 013f */ "Ldot", /* 0140 */ "ldot", /* 0141 */ "Lslash", /* 0142 */ "lslash", /* 0143 */ "Nacute", /* 0144 */ "nacute", /* 0145 */ "Ncommaaccent", /* 0146 */ "ncommaaccent", /* 0147 */ "Ncaron", /* 0148 */ "ncaron", /* 0149 */ "napostrophe", /* 014a */ "Eng", /* 014b */ "eng", /* 014c */ "Omacron", /* 014d */ "omacron", /* 014e */ "Obreve", /* 014f */ "obreve", /* 0150 */ "Ohungarumlaut", /* 0151 */ "ohungarumlaut", /* 0152 */ "OE", /* 0153 */ "oe", /* 0154 */ "Racute", /* 0155 */ "racute", /* 0156 */ "Rcommaaccent", /* 0157 */ "rcommaaccent", /* 0158 */ "Rcaron", /* 0159 */ "rcaron", /* 015a */ "Sacute", /* 015b */ "sacute", /* 015c */ "Scircumflex", /* 015d */ "scircumflex", /* 015e */ "Scedilla", /* 015f */ "scedilla", /* 0160 */ "Scaron", /* 0161 */ "scaron", /* 0162 */ "Tcommaaccent", /* 0163 */ "tcommaaccent", /* 0164 */ "Tcaron", /* 0165 */ "tcaron", /* 0166 */ "Tbar", /* 0167 */ "tbar", /* 0168 */ "Utilde", /* 0169 */ "utilde", /* 016a */ "Umacron", /* 016b */ "umacron", /* 016c */ "Ubreve", /* 016d */ "ubreve", /* 016e */ "Uring", /* 016f */ "uring", /* 0170 */ "Uhungarumlaut", /* 0171 */ "uhungarumlaut", /* 0172 */ "Uogonek", /* 0173 */ "uogonek", /* 0174 */ "Wcircumflex", /* 0175 */ "wcircumflex", /* 0176 */ "Ycircumflex", /* 0177 */ "ycircumflex", /* 0178 */ "Ydieresis", /* 0179 */ "Zacute", /* 017a */ "zacute", /* 017b */ "Zdotaccent", /* 017c */ "zdotaccent", /* 017d */ "Zcaron", /* 017e */ "zcaron", /* 017f */ "longs", /* 0180 */ NULL, /* 0181 */ NULL, /* 0182 */ NULL, /* 0183 */ NULL, /* 0184 */ NULL, /* 0185 */ NULL, /* 0186 */ NULL, /* 0187 */ NULL, /* 0188 */ NULL, /* 0189 */ NULL, /* 018a */ NULL, /* 018b */ NULL, /* 018c */ NULL, /* 018d */ NULL, /* 018e */ NULL, /* 018f */ NULL, /* 0190 */ NULL, /* 0191 */ NULL, /* 0192 */ "florin", /* 0193 */ NULL, /* 0194 */ NULL, /* 0195 */ NULL, /* 0196 */ NULL, /* 0197 */ NULL, /* 0198 */ NULL, /* 0199 */ NULL, /* 019a */ NULL, /* 019b */ NULL, /* 019c */ NULL, /* 019d */ NULL, /* 019e */ NULL, /* 019f */ NULL, /* 01a0 */ "Ohorn", /* 01a1 */ "ohorn", /* 01a2 */ NULL, /* 01a3 */ NULL, /* 01a4 */ NULL, /* 01a5 */ NULL, /* 01a6 */ NULL, /* 01a7 */ NULL, /* 01a8 */ NULL, /* 01a9 */ NULL, /* 01aa */ NULL, /* 01ab */ NULL, /* 01ac */ NULL, /* 01ad */ NULL, /* 01ae */ NULL, /* 01af */ "Uhorn", /* 01b0 */ "uhorn", /* 01b1 */ NULL, /* 01b2 */ NULL, /* 01b3 */ NULL, /* 01b4 */ NULL, /* 01b5 */ NULL, /* 01b6 */ NULL, /* 01b7 */ NULL, /* 01b8 */ NULL, /* 01b9 */ NULL, /* 01ba */ NULL, /* 01bb */ NULL, /* 01bc */ NULL, /* 01bd */ NULL, /* 01be */ NULL, /* 01bf */ NULL, /* 01c0 */ NULL, /* 01c1 */ NULL, /* 01c2 */ NULL, /* 01c3 */ NULL, /* 01c4 */ NULL, /* 01c5 */ NULL, /* 01c6 */ NULL, /* 01c7 */ NULL, /* 01c8 */ NULL, /* 01c9 */ NULL, /* 01ca */ NULL, /* 01cb */ NULL, /* 01cc */ NULL, /* 01cd */ NULL, /* 01ce */ NULL, /* 01cf */ NULL, /* 01d0 */ NULL, /* 01d1 */ NULL, /* 01d2 */ NULL, /* 01d3 */ NULL, /* 01d4 */ NULL, /* 01d5 */ NULL, /* 01d6 */ NULL, /* 01d7 */ NULL, /* 01d8 */ NULL, /* 01d9 */ NULL, /* 01da */ NULL, /* 01db */ NULL, /* 01dc */ NULL, /* 01dd */ NULL, /* 01de */ NULL, /* 01df */ NULL, /* 01e0 */ NULL, /* 01e1 */ NULL, /* 01e2 */ NULL, /* 01e3 */ NULL, /* 01e4 */ NULL, /* 01e5 */ NULL, /* 01e6 */ "Gcaron", /* 01e7 */ "gcaron", /* 01e8 */ NULL, /* 01e9 */ NULL, /* 01ea */ NULL, /* 01eb */ NULL, /* 01ec */ NULL, /* 01ed */ NULL, /* 01ee */ NULL, /* 01ef */ NULL, /* 01f0 */ NULL, /* 01f1 */ NULL, /* 01f2 */ NULL, /* 01f3 */ NULL, /* 01f4 */ NULL, /* 01f5 */ NULL, /* 01f6 */ NULL, /* 01f7 */ NULL, /* 01f8 */ NULL, /* 01f9 */ NULL, /* 01fa */ "Aringacute", /* 01fb */ "aringacute", /* 01fc */ "AEacute", /* 01fd */ "aeacute", /* 01fe */ "Oslashacute", /* 01ff */ "oslashacute", /* 0200 */ NULL, /* 0201 */ NULL, /* 0202 */ NULL, /* 0203 */ NULL, /* 0204 */ NULL, /* 0205 */ NULL, /* 0206 */ NULL, /* 0207 */ NULL, /* 0208 */ NULL, /* 0209 */ NULL, /* 020a */ NULL, /* 020b */ NULL, /* 020c */ NULL, /* 020d */ NULL, /* 020e */ NULL, /* 020f */ NULL, /* 0210 */ NULL, /* 0211 */ NULL, /* 0212 */ NULL, /* 0213 */ NULL, /* 0214 */ NULL, /* 0215 */ NULL, /* 0216 */ NULL, /* 0217 */ NULL, /* 0218 */ "Scommaaccent", /* 0219 */ "scommaaccent", /* 021a */ NULL, /* 021b */ NULL, /* 021c */ NULL, /* 021d */ NULL, /* 021e */ NULL, /* 021f */ NULL, /* 0220 */ NULL, /* 0221 */ NULL, /* 0222 */ NULL, /* 0223 */ NULL, /* 0224 */ NULL, /* 0225 */ NULL, /* 0226 */ NULL, /* 0227 */ NULL, /* 0228 */ NULL, /* 0229 */ NULL, /* 022a */ NULL, /* 022b */ NULL, /* 022c */ NULL, /* 022d */ NULL, /* 022e */ NULL, /* 022f */ NULL, /* 0230 */ NULL, /* 0231 */ NULL, /* 0232 */ NULL, /* 0233 */ NULL, /* 0234 */ NULL, /* 0235 */ NULL, /* 0236 */ NULL, /* 0237 */ NULL, /* 0238 */ NULL, /* 0239 */ NULL, /* 023a */ NULL, /* 023b */ NULL, /* 023c */ NULL, /* 023d */ NULL, /* 023e */ NULL, /* 023f */ NULL, /* 0240 */ NULL, /* 0241 */ NULL, /* 0242 */ NULL, /* 0243 */ NULL, /* 0244 */ NULL, /* 0245 */ NULL, /* 0246 */ NULL, /* 0247 */ NULL, /* 0248 */ NULL, /* 0249 */ NULL, /* 024a */ NULL, /* 024b */ NULL, /* 024c */ NULL, /* 024d */ NULL, /* 024e */ NULL, /* 024f */ NULL, /* 0250 */ NULL, /* 0251 */ NULL, /* 0252 */ NULL, /* 0253 */ NULL, /* 0254 */ NULL, /* 0255 */ NULL, /* 0256 */ NULL, /* 0257 */ NULL, /* 0258 */ NULL, /* 0259 */ NULL, /* 025a */ NULL, /* 025b */ NULL, /* 025c */ NULL, /* 025d */ NULL, /* 025e */ NULL, /* 025f */ NULL, /* 0260 */ NULL, /* 0261 */ NULL, /* 0262 */ NULL, /* 0263 */ NULL, /* 0264 */ NULL, /* 0265 */ NULL, /* 0266 */ NULL, /* 0267 */ NULL, /* 0268 */ NULL, /* 0269 */ NULL, /* 026a */ NULL, /* 026b */ NULL, /* 026c */ NULL, /* 026d */ NULL, /* 026e */ NULL, /* 026f */ NULL, /* 0270 */ NULL, /* 0271 */ NULL, /* 0272 */ NULL, /* 0273 */ NULL, /* 0274 */ NULL, /* 0275 */ NULL, /* 0276 */ NULL, /* 0277 */ NULL, /* 0278 */ NULL, /* 0279 */ NULL, /* 027a */ NULL, /* 027b */ NULL, /* 027c */ NULL, /* 027d */ NULL, /* 027e */ NULL, /* 027f */ NULL, /* 0280 */ NULL, /* 0281 */ NULL, /* 0282 */ NULL, /* 0283 */ NULL, /* 0284 */ NULL, /* 0285 */ NULL, /* 0286 */ NULL, /* 0287 */ NULL, /* 0288 */ NULL, /* 0289 */ NULL, /* 028a */ NULL, /* 028b */ NULL, /* 028c */ NULL, /* 028d */ NULL, /* 028e */ NULL, /* 028f */ NULL, /* 0290 */ NULL, /* 0291 */ NULL, /* 0292 */ NULL, /* 0293 */ NULL, /* 0294 */ NULL, /* 0295 */ NULL, /* 0296 */ NULL, /* 0297 */ NULL, /* 0298 */ NULL, /* 0299 */ NULL, /* 029a */ NULL, /* 029b */ NULL, /* 029c */ NULL, /* 029d */ NULL, /* 029e */ NULL, /* 029f */ NULL, /* 02a0 */ NULL, /* 02a1 */ NULL, /* 02a2 */ NULL, /* 02a3 */ NULL, /* 02a4 */ NULL, /* 02a5 */ NULL, /* 02a6 */ NULL, /* 02a7 */ NULL, /* 02a8 */ NULL, /* 02a9 */ NULL, /* 02aa */ NULL, /* 02ab */ NULL, /* 02ac */ NULL, /* 02ad */ NULL, /* 02ae */ NULL, /* 02af */ NULL, /* 02b0 */ NULL, /* 02b1 */ NULL, /* 02b2 */ NULL, /* 02b3 */ NULL, /* 02b4 */ NULL, /* 02b5 */ NULL, /* 02b6 */ NULL, /* 02b7 */ NULL, /* 02b8 */ NULL, /* 02b9 */ NULL, /* 02ba */ NULL, /* 02bb */ NULL, /* 02bc */ "afii57929", /* 02bd */ "afii64937", /* 02be */ NULL, /* 02bf */ NULL, /* 02c0 */ NULL, /* 02c1 */ NULL, /* 02c2 */ NULL, /* 02c3 */ NULL, /* 02c4 */ NULL, /* 02c5 */ NULL, /* 02c6 */ "circumflex", /* 02c7 */ "caron", /* 02c8 */ NULL, /* 02c9 */ NULL, /* 02ca */ NULL, /* 02cb */ NULL, /* 02cc */ NULL, /* 02cd */ NULL, /* 02ce */ NULL, /* 02cf */ NULL, /* 02d0 */ NULL, /* 02d1 */ NULL, /* 02d2 */ NULL, /* 02d3 */ NULL, /* 02d4 */ NULL, /* 02d5 */ NULL, /* 02d6 */ NULL, /* 02d7 */ NULL, /* 02d8 */ "breve", /* 02d9 */ "dotaccent", /* 02da */ "ring", /* 02db */ "ogonek", /* 02dc */ "tilde", /* 02dd */ "hungarumlaut", /* 02de */ NULL, /* 02df */ NULL, /* 02e0 */ NULL, /* 02e1 */ NULL, /* 02e2 */ NULL, /* 02e3 */ NULL, /* 02e4 */ NULL, /* 02e5 */ NULL, /* 02e6 */ NULL, /* 02e7 */ NULL, /* 02e8 */ NULL, /* 02e9 */ NULL, /* 02ea */ NULL, /* 02eb */ NULL, /* 02ec */ NULL, /* 02ed */ NULL, /* 02ee */ NULL, /* 02ef */ NULL, /* 02f0 */ NULL, /* 02f1 */ NULL, /* 02f2 */ NULL, /* 02f3 */ NULL, /* 02f4 */ NULL, /* 02f5 */ NULL, /* 02f6 */ NULL, /* 02f7 */ NULL, /* 02f8 */ NULL, /* 02f9 */ NULL, /* 02fa */ NULL, /* 02fb */ NULL, /* 02fc */ NULL, /* 02fd */ NULL, /* 02fe */ NULL, /* 02ff */ NULL, /* 0300 */ "gravecomb", /* 0301 */ "acutecomb", /* 0302 */ NULL, /* 0303 */ "tildecomb", /* 0304 */ NULL, /* 0305 */ NULL, /* 0306 */ NULL, /* 0307 */ NULL, /* 0308 */ NULL, /* 0309 */ "hookabovecomb", /* 030a */ NULL, /* 030b */ NULL, /* 030c */ NULL, /* 030d */ NULL, /* 030e */ NULL, /* 030f */ NULL, /* 0310 */ NULL, /* 0311 */ NULL, /* 0312 */ NULL, /* 0313 */ NULL, /* 0314 */ NULL, /* 0315 */ NULL, /* 0316 */ NULL, /* 0317 */ NULL, /* 0318 */ NULL, /* 0319 */ NULL, /* 031a */ NULL, /* 031b */ NULL, /* 031c */ NULL, /* 031d */ NULL, /* 031e */ NULL, /* 031f */ NULL, /* 0320 */ NULL, /* 0321 */ NULL, /* 0322 */ NULL, /* 0323 */ "dotbelowcomb", /* 0324 */ NULL, /* 0325 */ NULL, /* 0326 */ NULL, /* 0327 */ NULL, /* 0328 */ NULL, /* 0329 */ NULL, /* 032a */ NULL, /* 032b */ NULL, /* 032c */ NULL, /* 032d */ NULL, /* 032e */ NULL, /* 032f */ NULL, /* 0330 */ NULL, /* 0331 */ NULL, /* 0332 */ NULL, /* 0333 */ NULL, /* 0334 */ NULL, /* 0335 */ NULL, /* 0336 */ NULL, /* 0337 */ NULL, /* 0338 */ NULL, /* 0339 */ NULL, /* 033a */ NULL, /* 033b */ NULL, /* 033c */ NULL, /* 033d */ NULL, /* 033e */ NULL, /* 033f */ NULL, /* 0340 */ NULL, /* 0341 */ NULL, /* 0342 */ NULL, /* 0343 */ NULL, /* 0344 */ NULL, /* 0345 */ NULL, /* 0346 */ NULL, /* 0347 */ NULL, /* 0348 */ NULL, /* 0349 */ NULL, /* 034a */ NULL, /* 034b */ NULL, /* 034c */ NULL, /* 034d */ NULL, /* 034e */ NULL, /* 034f */ NULL, /* 0350 */ NULL, /* 0351 */ NULL, /* 0352 */ NULL, /* 0353 */ NULL, /* 0354 */ NULL, /* 0355 */ NULL, /* 0356 */ NULL, /* 0357 */ NULL, /* 0358 */ NULL, /* 0359 */ NULL, /* 035a */ NULL, /* 035b */ NULL, /* 035c */ NULL, /* 035d */ NULL, /* 035e */ NULL, /* 035f */ NULL, /* 0360 */ NULL, /* 0361 */ NULL, /* 0362 */ NULL, /* 0363 */ NULL, /* 0364 */ NULL, /* 0365 */ NULL, /* 0366 */ NULL, /* 0367 */ NULL, /* 0368 */ NULL, /* 0369 */ NULL, /* 036a */ NULL, /* 036b */ NULL, /* 036c */ NULL, /* 036d */ NULL, /* 036e */ NULL, /* 036f */ NULL, /* 0370 */ NULL, /* 0371 */ NULL, /* 0372 */ NULL, /* 0373 */ NULL, /* 0374 */ NULL, /* 0375 */ NULL, /* 0376 */ NULL, /* 0377 */ NULL, /* 0378 */ NULL, /* 0379 */ NULL, /* 037a */ NULL, /* 037b */ NULL, /* 037c */ NULL, /* 037d */ NULL, /* 037e */ NULL, /* 037f */ NULL, /* 0380 */ NULL, /* 0381 */ NULL, /* 0382 */ NULL, /* 0383 */ NULL, /* 0384 */ "tonos", /* 0385 */ "dieresistonos", /* 0386 */ "Alphatonos", /* 0387 */ "anoteleia", /* 0388 */ "Epsilontonos", /* 0389 */ "Etatonos", /* 038a */ "Iotatonos", /* 038b */ NULL, /* 038c */ "Omicrontonos", /* 038d */ NULL, /* 038e */ "Upsilontonos", /* 038f */ "Omegatonos", /* 0390 */ "iotadieresistonos", /* 0391 */ "Alpha", /* 0392 */ "Beta", /* 0393 */ "Gamma", /* 0394 */ NULL, /* 0395 */ "Epsilon", /* 0396 */ "Zeta", /* 0397 */ "Eta", /* 0398 */ "Theta", /* 0399 */ "Iota", /* 039a */ "Kappa", /* 039b */ "Lambda", /* 039c */ "Mu", /* 039d */ "Nu", /* 039e */ "Xi", /* 039f */ "Omicron", /* 03a0 */ "Pi", /* 03a1 */ "Rho", /* 03a2 */ NULL, /* 03a3 */ "Sigma", /* 03a4 */ "Tau", /* 03a5 */ "Upsilon", /* 03a6 */ "Phi", /* 03a7 */ "Chi", /* 03a8 */ "Psi", /* 03a9 */ NULL, /* 03aa */ "Iotadieresis", /* 03ab */ "Upsilondieresis", /* 03ac */ "alphatonos", /* 03ad */ "epsilontonos", /* 03ae */ "etatonos", /* 03af */ "iotatonos", /* 03b0 */ "upsilondieresistonos", /* 03b1 */ "alpha", /* 03b2 */ "beta", /* 03b3 */ "gamma", /* 03b4 */ "delta", /* 03b5 */ "epsilon", /* 03b6 */ "zeta", /* 03b7 */ "eta", /* 03b8 */ "theta", /* 03b9 */ "iota", /* 03ba */ "kappa", /* 03bb */ "lambda", /* 03bc */ NULL, /* 03bd */ "nu", /* 03be */ "xi", /* 03bf */ "omicron", /* 03c0 */ "pi", /* 03c1 */ "rho", /* 03c2 */ "sigma1", /* 03c3 */ "sigma", /* 03c4 */ "tau", /* 03c5 */ "upsilon", /* 03c6 */ "phi", /* 03c7 */ "chi", /* 03c8 */ "psi", /* 03c9 */ "omega", /* 03ca */ "iotadieresis", /* 03cb */ "upsilondieresis", /* 03cc */ "omicrontonos", /* 03cd */ "upsilontonos", /* 03ce */ "omegatonos", /* 03cf */ NULL, /* 03d0 */ NULL, /* 03d1 */ "theta1", /* 03d2 */ "Upsilon1", /* 03d3 */ NULL, /* 03d4 */ NULL, /* 03d5 */ "phi1", /* 03d6 */ "omega1", /* 03d7 */ NULL, /* 03d8 */ NULL, /* 03d9 */ NULL, /* 03da */ NULL, /* 03db */ NULL, /* 03dc */ NULL, /* 03dd */ NULL, /* 03de */ NULL, /* 03df */ NULL, /* 03e0 */ NULL, /* 03e1 */ NULL, /* 03e2 */ NULL, /* 03e3 */ NULL, /* 03e4 */ NULL, /* 03e5 */ NULL, /* 03e6 */ NULL, /* 03e7 */ NULL, /* 03e8 */ NULL, /* 03e9 */ NULL, /* 03ea */ NULL, /* 03eb */ NULL, /* 03ec */ NULL, /* 03ed */ NULL, /* 03ee */ NULL, /* 03ef */ NULL, /* 03f0 */ NULL, /* 03f1 */ NULL, /* 03f2 */ NULL, /* 03f3 */ NULL, /* 03f4 */ NULL, /* 03f5 */ NULL, /* 03f6 */ NULL, /* 03f7 */ NULL, /* 03f8 */ NULL, /* 03f9 */ NULL, /* 03fa */ NULL, /* 03fb */ NULL, /* 03fc */ NULL, /* 03fd */ NULL, /* 03fe */ NULL, /* 03ff */ NULL, /* 0400 */ NULL, /* 0401 */ "afii10023", /* 0402 */ "afii10051", /* 0403 */ "afii10052", /* 0404 */ "afii10053", /* 0405 */ "afii10054", /* 0406 */ "afii10055", /* 0407 */ "afii10056", /* 0408 */ "afii10057", /* 0409 */ "afii10058", /* 040a */ "afii10059", /* 040b */ "afii10060", /* 040c */ "afii10061", /* 040d */ NULL, /* 040e */ "afii10062", /* 040f */ "afii10145", /* 0410 */ "afii10017", /* 0411 */ "afii10018", /* 0412 */ "afii10019", /* 0413 */ "afii10020", /* 0414 */ "afii10021", /* 0415 */ "afii10022", /* 0416 */ "afii10024", /* 0417 */ "afii10025", /* 0418 */ "afii10026", /* 0419 */ "afii10027", /* 041a */ "afii10028", /* 041b */ "afii10029", /* 041c */ "afii10030", /* 041d */ "afii10031", /* 041e */ "afii10032", /* 041f */ "afii10033", /* 0420 */ "afii10034", /* 0421 */ "afii10035", /* 0422 */ "afii10036", /* 0423 */ "afii10037", /* 0424 */ "afii10038", /* 0425 */ "afii10039", /* 0426 */ "afii10040", /* 0427 */ "afii10041", /* 0428 */ "afii10042", /* 0429 */ "afii10043", /* 042a */ "afii10044", /* 042b */ "afii10045", /* 042c */ "afii10046", /* 042d */ "afii10047", /* 042e */ "afii10048", /* 042f */ "afii10049", /* 0430 */ "afii10065", /* 0431 */ "afii10066", /* 0432 */ "afii10067", /* 0433 */ "afii10068", /* 0434 */ "afii10069", /* 0435 */ "afii10070", /* 0436 */ "afii10072", /* 0437 */ "afii10073", /* 0438 */ "afii10074", /* 0439 */ "afii10075", /* 043a */ "afii10076", /* 043b */ "afii10077", /* 043c */ "afii10078", /* 043d */ "afii10079", /* 043e */ "afii10080", /* 043f */ "afii10081", /* 0440 */ "afii10082", /* 0441 */ "afii10083", /* 0442 */ "afii10084", /* 0443 */ "afii10085", /* 0444 */ "afii10086", /* 0445 */ "afii10087", /* 0446 */ "afii10088", /* 0447 */ "afii10089", /* 0448 */ "afii10090", /* 0449 */ "afii10091", /* 044a */ "afii10092", /* 044b */ "afii10093", /* 044c */ "afii10094", /* 044d */ "afii10095", /* 044e */ "afii10096", /* 044f */ "afii10097", /* 0450 */ NULL, /* 0451 */ "afii10071", /* 0452 */ "afii10099", /* 0453 */ "afii10100", /* 0454 */ "afii10101", /* 0455 */ "afii10102", /* 0456 */ "afii10103", /* 0457 */ "afii10104", /* 0458 */ "afii10105", /* 0459 */ "afii10106", /* 045a */ "afii10107", /* 045b */ "afii10108", /* 045c */ "afii10109", /* 045d */ NULL, /* 045e */ "afii10110", /* 045f */ "afii10193", /* 0460 */ NULL, /* 0461 */ NULL, /* 0462 */ "afii10146", /* 0463 */ "afii10194", /* 0464 */ NULL, /* 0465 */ NULL, /* 0466 */ NULL, /* 0467 */ NULL, /* 0468 */ NULL, /* 0469 */ NULL, /* 046a */ NULL, /* 046b */ NULL, /* 046c */ NULL, /* 046d */ NULL, /* 046e */ NULL, /* 046f */ NULL, /* 0470 */ NULL, /* 0471 */ NULL, /* 0472 */ "afii10147", /* 0473 */ "afii10195", /* 0474 */ "afii10148", /* 0475 */ "afii10196", /* 0476 */ NULL, /* 0477 */ NULL, /* 0478 */ NULL, /* 0479 */ NULL, /* 047a */ NULL, /* 047b */ NULL, /* 047c */ NULL, /* 047d */ NULL, /* 047e */ NULL, /* 047f */ NULL, /* 0480 */ NULL, /* 0481 */ NULL, /* 0482 */ NULL, /* 0483 */ NULL, /* 0484 */ NULL, /* 0485 */ NULL, /* 0486 */ NULL, /* 0487 */ NULL, /* 0488 */ NULL, /* 0489 */ NULL, /* 048a */ NULL, /* 048b */ NULL, /* 048c */ NULL, /* 048d */ NULL, /* 048e */ NULL, /* 048f */ NULL, /* 0490 */ "afii10050", /* 0491 */ "afii10098", /* 0492 */ NULL, /* 0493 */ NULL, /* 0494 */ NULL, /* 0495 */ NULL, /* 0496 */ NULL, /* 0497 */ NULL, /* 0498 */ NULL, /* 0499 */ NULL, /* 049a */ NULL, /* 049b */ NULL, /* 049c */ NULL, /* 049d */ NULL, /* 049e */ NULL, /* 049f */ NULL, /* 04a0 */ NULL, /* 04a1 */ NULL, /* 04a2 */ NULL, /* 04a3 */ NULL, /* 04a4 */ NULL, /* 04a5 */ NULL, /* 04a6 */ NULL, /* 04a7 */ NULL, /* 04a8 */ NULL, /* 04a9 */ NULL, /* 04aa */ NULL, /* 04ab */ NULL, /* 04ac */ NULL, /* 04ad */ NULL, /* 04ae */ NULL, /* 04af */ NULL, /* 04b0 */ NULL, /* 04b1 */ NULL, /* 04b2 */ NULL, /* 04b3 */ NULL, /* 04b4 */ NULL, /* 04b5 */ NULL, /* 04b6 */ NULL, /* 04b7 */ NULL, /* 04b8 */ NULL, /* 04b9 */ NULL, /* 04ba */ NULL, /* 04bb */ NULL, /* 04bc */ NULL, /* 04bd */ NULL, /* 04be */ NULL, /* 04bf */ NULL, /* 04c0 */ NULL, /* 04c1 */ NULL, /* 04c2 */ NULL, /* 04c3 */ NULL, /* 04c4 */ NULL, /* 04c5 */ NULL, /* 04c6 */ NULL, /* 04c7 */ NULL, /* 04c8 */ NULL, /* 04c9 */ NULL, /* 04ca */ NULL, /* 04cb */ NULL, /* 04cc */ NULL, /* 04cd */ NULL, /* 04ce */ NULL, /* 04cf */ NULL, /* 04d0 */ NULL, /* 04d1 */ NULL, /* 04d2 */ NULL, /* 04d3 */ NULL, /* 04d4 */ NULL, /* 04d5 */ NULL, /* 04d6 */ NULL, /* 04d7 */ NULL, /* 04d8 */ NULL, /* 04d9 */ "afii10846", /* 04da */ NULL, /* 04db */ NULL, /* 04dc */ NULL, /* 04dd */ NULL, /* 04de */ NULL, /* 04df */ NULL, /* 04e0 */ NULL, /* 04e1 */ NULL, /* 04e2 */ NULL, /* 04e3 */ NULL, /* 04e4 */ NULL, /* 04e5 */ NULL, /* 04e6 */ NULL, /* 04e7 */ NULL, /* 04e8 */ NULL, /* 04e9 */ NULL, /* 04ea */ NULL, /* 04eb */ NULL, /* 04ec */ NULL, /* 04ed */ NULL, /* 04ee */ NULL, /* 04ef */ NULL, /* 04f0 */ NULL, /* 04f1 */ NULL, /* 04f2 */ NULL, /* 04f3 */ NULL, /* 04f4 */ NULL, /* 04f5 */ NULL, /* 04f6 */ NULL, /* 04f7 */ NULL, /* 04f8 */ NULL, /* 04f9 */ NULL, /* 04fa */ NULL, /* 04fb */ NULL, /* 04fc */ NULL, /* 04fd */ NULL, /* 04fe */ NULL, /* 04ff */ NULL, /* 0500 */ NULL, /* 0501 */ NULL, /* 0502 */ NULL, /* 0503 */ NULL, /* 0504 */ NULL, /* 0505 */ NULL, /* 0506 */ NULL, /* 0507 */ NULL, /* 0508 */ NULL, /* 0509 */ NULL, /* 050a */ NULL, /* 050b */ NULL, /* 050c */ NULL, /* 050d */ NULL, /* 050e */ NULL, /* 050f */ NULL, /* 0510 */ NULL, /* 0511 */ NULL, /* 0512 */ NULL, /* 0513 */ NULL, /* 0514 */ NULL, /* 0515 */ NULL, /* 0516 */ NULL, /* 0517 */ NULL, /* 0518 */ NULL, /* 0519 */ NULL, /* 051a */ NULL, /* 051b */ NULL, /* 051c */ NULL, /* 051d */ NULL, /* 051e */ NULL, /* 051f */ NULL, /* 0520 */ NULL, /* 0521 */ NULL, /* 0522 */ NULL, /* 0523 */ NULL, /* 0524 */ NULL, /* 0525 */ NULL, /* 0526 */ NULL, /* 0527 */ NULL, /* 0528 */ NULL, /* 0529 */ NULL, /* 052a */ NULL, /* 052b */ NULL, /* 052c */ NULL, /* 052d */ NULL, /* 052e */ NULL, /* 052f */ NULL, /* 0530 */ NULL, /* 0531 */ NULL, /* 0532 */ NULL, /* 0533 */ NULL, /* 0534 */ NULL, /* 0535 */ NULL, /* 0536 */ NULL, /* 0537 */ NULL, /* 0538 */ NULL, /* 0539 */ NULL, /* 053a */ NULL, /* 053b */ NULL, /* 053c */ NULL, /* 053d */ NULL, /* 053e */ NULL, /* 053f */ NULL, /* 0540 */ NULL, /* 0541 */ NULL, /* 0542 */ NULL, /* 0543 */ NULL, /* 0544 */ NULL, /* 0545 */ NULL, /* 0546 */ NULL, /* 0547 */ NULL, /* 0548 */ NULL, /* 0549 */ NULL, /* 054a */ NULL, /* 054b */ NULL, /* 054c */ NULL, /* 054d */ NULL, /* 054e */ NULL, /* 054f */ NULL, /* 0550 */ NULL, /* 0551 */ NULL, /* 0552 */ NULL, /* 0553 */ NULL, /* 0554 */ NULL, /* 0555 */ NULL, /* 0556 */ NULL, /* 0557 */ NULL, /* 0558 */ NULL, /* 0559 */ NULL, /* 055a */ NULL, /* 055b */ NULL, /* 055c */ NULL, /* 055d */ NULL, /* 055e */ NULL, /* 055f */ NULL, /* 0560 */ NULL, /* 0561 */ NULL, /* 0562 */ NULL, /* 0563 */ NULL, /* 0564 */ NULL, /* 0565 */ NULL, /* 0566 */ NULL, /* 0567 */ NULL, /* 0568 */ NULL, /* 0569 */ NULL, /* 056a */ NULL, /* 056b */ NULL, /* 056c */ NULL, /* 056d */ NULL, /* 056e */ NULL, /* 056f */ NULL, /* 0570 */ NULL, /* 0571 */ NULL, /* 0572 */ NULL, /* 0573 */ NULL, /* 0574 */ NULL, /* 0575 */ NULL, /* 0576 */ NULL, /* 0577 */ NULL, /* 0578 */ NULL, /* 0579 */ NULL, /* 057a */ NULL, /* 057b */ NULL, /* 057c */ NULL, /* 057d */ NULL, /* 057e */ NULL, /* 057f */ NULL, /* 0580 */ NULL, /* 0581 */ NULL, /* 0582 */ NULL, /* 0583 */ NULL, /* 0584 */ NULL, /* 0585 */ NULL, /* 0586 */ NULL, /* 0587 */ NULL, /* 0588 */ NULL, /* 0589 */ NULL, /* 058a */ NULL, /* 058b */ NULL, /* 058c */ NULL, /* 058d */ NULL, /* 058e */ NULL, /* 058f */ NULL, /* 0590 */ NULL, /* 0591 */ NULL, /* 0592 */ NULL, /* 0593 */ NULL, /* 0594 */ NULL, /* 0595 */ NULL, /* 0596 */ NULL, /* 0597 */ NULL, /* 0598 */ NULL, /* 0599 */ NULL, /* 059a */ NULL, /* 059b */ NULL, /* 059c */ NULL, /* 059d */ NULL, /* 059e */ NULL, /* 059f */ NULL, /* 05a0 */ NULL, /* 05a1 */ NULL, /* 05a2 */ NULL, /* 05a3 */ NULL, /* 05a4 */ NULL, /* 05a5 */ NULL, /* 05a6 */ NULL, /* 05a7 */ NULL, /* 05a8 */ NULL, /* 05a9 */ NULL, /* 05aa */ NULL, /* 05ab */ NULL, /* 05ac */ NULL, /* 05ad */ NULL, /* 05ae */ NULL, /* 05af */ NULL, /* 05b0 */ "afii57799", /* 05b1 */ "afii57801", /* 05b2 */ "afii57800", /* 05b3 */ "afii57802", /* 05b4 */ "afii57793", /* 05b5 */ "afii57794", /* 05b6 */ "afii57795", /* 05b7 */ "afii57798", /* 05b8 */ "afii57797", /* 05b9 */ "afii57806", /* 05ba */ NULL, /* 05bb */ "afii57796", /* 05bc */ "afii57807", /* 05bd */ "afii57839", /* 05be */ "afii57645", /* 05bf */ "afii57841", /* 05c0 */ "afii57842", /* 05c1 */ "afii57804", /* 05c2 */ "afii57803", /* 05c3 */ "afii57658", /* 05c4 */ NULL, /* 05c5 */ NULL, /* 05c6 */ NULL, /* 05c7 */ NULL, /* 05c8 */ NULL, /* 05c9 */ NULL, /* 05ca */ NULL, /* 05cb */ NULL, /* 05cc */ NULL, /* 05cd */ NULL, /* 05ce */ NULL, /* 05cf */ NULL, /* 05d0 */ "afii57664", /* 05d1 */ "afii57665", /* 05d2 */ "afii57666", /* 05d3 */ "afii57667", /* 05d4 */ "afii57668", /* 05d5 */ "afii57669", /* 05d6 */ "afii57670", /* 05d7 */ "afii57671", /* 05d8 */ "afii57672", /* 05d9 */ "afii57673", /* 05da */ "afii57674", /* 05db */ "afii57675", /* 05dc */ "afii57676", /* 05dd */ "afii57677", /* 05de */ "afii57678", /* 05df */ "afii57679", /* 05e0 */ "afii57680", /* 05e1 */ "afii57681", /* 05e2 */ "afii57682", /* 05e3 */ "afii57683", /* 05e4 */ "afii57684", /* 05e5 */ "afii57685", /* 05e6 */ "afii57686", /* 05e7 */ "afii57687", /* 05e8 */ "afii57688", /* 05e9 */ "afii57689", /* 05ea */ "afii57690", /* 05eb */ NULL, /* 05ec */ NULL, /* 05ed */ NULL, /* 05ee */ NULL, /* 05ef */ NULL, /* 05f0 */ "afii57716", /* 05f1 */ "afii57717", /* 05f2 */ "afii57718", /* 05f3 */ NULL, /* 05f4 */ NULL, /* 05f5 */ NULL, /* 05f6 */ NULL, /* 05f7 */ NULL, /* 05f8 */ NULL, /* 05f9 */ NULL, /* 05fa */ NULL, /* 05fb */ NULL, /* 05fc */ NULL, /* 05fd */ NULL, /* 05fe */ NULL, /* 05ff */ NULL, /* 0600 */ NULL, /* 0601 */ NULL, /* 0602 */ NULL, /* 0603 */ NULL, /* 0604 */ NULL, /* 0605 */ NULL, /* 0606 */ NULL, /* 0607 */ NULL, /* 0608 */ NULL, /* 0609 */ NULL, /* 060a */ NULL, /* 060b */ NULL, /* 060c */ "afii57388", /* 060d */ NULL, /* 060e */ NULL, /* 060f */ NULL, /* 0610 */ NULL, /* 0611 */ NULL, /* 0612 */ NULL, /* 0613 */ NULL, /* 0614 */ NULL, /* 0615 */ NULL, /* 0616 */ NULL, /* 0617 */ NULL, /* 0618 */ NULL, /* 0619 */ NULL, /* 061a */ NULL, /* 061b */ "afii57403", /* 061c */ NULL, /* 061d */ NULL, /* 061e */ NULL, /* 061f */ "afii57407", /* 0620 */ NULL, /* 0621 */ "afii57409", /* 0622 */ "afii57410", /* 0623 */ "afii57411", /* 0624 */ "afii57412", /* 0625 */ "afii57413", /* 0626 */ "afii57414", /* 0627 */ "afii57415", /* 0628 */ "afii57416", /* 0629 */ "afii57417", /* 062a */ "afii57418", /* 062b */ "afii57419", /* 062c */ "afii57420", /* 062d */ "afii57421", /* 062e */ "afii57422", /* 062f */ "afii57423", /* 0630 */ "afii57424", /* 0631 */ "afii57425", /* 0632 */ "afii57426", /* 0633 */ "afii57427", /* 0634 */ "afii57428", /* 0635 */ "afii57429", /* 0636 */ "afii57430", /* 0637 */ "afii57431", /* 0638 */ "afii57432", /* 0639 */ "afii57433", /* 063a */ "afii57434", /* 063b */ NULL, /* 063c */ NULL, /* 063d */ NULL, /* 063e */ NULL, /* 063f */ NULL, /* 0640 */ "afii57440", /* 0641 */ "afii57441", /* 0642 */ "afii57442", /* 0643 */ "afii57443", /* 0644 */ "afii57444", /* 0645 */ "afii57445", /* 0646 */ "afii57446", /* 0647 */ "afii57470", /* 0648 */ "afii57448", /* 0649 */ "afii57449", /* 064a */ "afii57450", /* 064b */ "afii57451", /* 064c */ "afii57452", /* 064d */ "afii57453", /* 064e */ "afii57454", /* 064f */ "afii57455", /* 0650 */ "afii57456", /* 0651 */ "afii57457", /* 0652 */ "afii57458", /* 0653 */ NULL, /* 0654 */ NULL, /* 0655 */ NULL, /* 0656 */ NULL, /* 0657 */ NULL, /* 0658 */ NULL, /* 0659 */ NULL, /* 065a */ NULL, /* 065b */ NULL, /* 065c */ NULL, /* 065d */ NULL, /* 065e */ NULL, /* 065f */ NULL, /* 0660 */ "afii57392", /* 0661 */ "afii57393", /* 0662 */ "afii57394", /* 0663 */ "afii57395", /* 0664 */ "afii57396", /* 0665 */ "afii57397", /* 0666 */ "afii57398", /* 0667 */ "afii57399", /* 0668 */ "afii57400", /* 0669 */ "afii57401", /* 066a */ "afii57381", /* 066b */ NULL, /* 066c */ NULL, /* 066d */ "afii63167", /* 066e */ NULL, /* 066f */ NULL, /* 0670 */ NULL, /* 0671 */ NULL, /* 0672 */ NULL, /* 0673 */ NULL, /* 0674 */ NULL, /* 0675 */ NULL, /* 0676 */ NULL, /* 0677 */ NULL, /* 0678 */ NULL, /* 0679 */ "afii57511", /* 067a */ NULL, /* 067b */ NULL, /* 067c */ NULL, /* 067d */ NULL, /* 067e */ "afii57506", /* 067f */ NULL, /* 0680 */ NULL, /* 0681 */ NULL, /* 0682 */ NULL, /* 0683 */ NULL, /* 0684 */ NULL, /* 0685 */ NULL, /* 0686 */ "afii57507", /* 0687 */ NULL, /* 0688 */ "afii57512", /* 0689 */ NULL, /* 068a */ NULL, /* 068b */ NULL, /* 068c */ NULL, /* 068d */ NULL, /* 068e */ NULL, /* 068f */ NULL, /* 0690 */ NULL, /* 0691 */ "afii57513", /* 0692 */ NULL, /* 0693 */ NULL, /* 0694 */ NULL, /* 0695 */ NULL, /* 0696 */ NULL, /* 0697 */ NULL, /* 0698 */ "afii57508", /* 0699 */ NULL, /* 069a */ NULL, /* 069b */ NULL, /* 069c */ NULL, /* 069d */ NULL, /* 069e */ NULL, /* 069f */ NULL, /* 06a0 */ NULL, /* 06a1 */ NULL, /* 06a2 */ NULL, /* 06a3 */ NULL, /* 06a4 */ "afii57505", /* 06a5 */ NULL, /* 06a6 */ NULL, /* 06a7 */ NULL, /* 06a8 */ NULL, /* 06a9 */ NULL, /* 06aa */ NULL, /* 06ab */ NULL, /* 06ac */ NULL, /* 06ad */ NULL, /* 06ae */ NULL, /* 06af */ "afii57509", /* 06b0 */ NULL, /* 06b1 */ NULL, /* 06b2 */ NULL, /* 06b3 */ NULL, /* 06b4 */ NULL, /* 06b5 */ NULL, /* 06b6 */ NULL, /* 06b7 */ NULL, /* 06b8 */ NULL, /* 06b9 */ NULL, /* 06ba */ "afii57514", /* 06bb */ NULL, /* 06bc */ NULL, /* 06bd */ NULL, /* 06be */ NULL, /* 06bf */ NULL, /* 06c0 */ NULL, /* 06c1 */ NULL, /* 06c2 */ NULL, /* 06c3 */ NULL, /* 06c4 */ NULL, /* 06c5 */ NULL, /* 06c6 */ NULL, /* 06c7 */ NULL, /* 06c8 */ NULL, /* 06c9 */ NULL, /* 06ca */ NULL, /* 06cb */ NULL, /* 06cc */ NULL, /* 06cd */ NULL, /* 06ce */ NULL, /* 06cf */ NULL, /* 06d0 */ NULL, /* 06d1 */ NULL, /* 06d2 */ "afii57519", /* 06d3 */ NULL, /* 06d4 */ NULL, /* 06d5 */ "afii57534", /* 06d6 */ NULL, /* 06d7 */ NULL, /* 06d8 */ NULL, /* 06d9 */ NULL, /* 06da */ NULL, /* 06db */ NULL, /* 06dc */ NULL, /* 06dd */ NULL, /* 06de */ NULL, /* 06df */ NULL, /* 06e0 */ NULL, /* 06e1 */ NULL, /* 06e2 */ NULL, /* 06e3 */ NULL, /* 06e4 */ NULL, /* 06e5 */ NULL, /* 06e6 */ NULL, /* 06e7 */ NULL, /* 06e8 */ NULL, /* 06e9 */ NULL, /* 06ea */ NULL, /* 06eb */ NULL, /* 06ec */ NULL, /* 06ed */ NULL, /* 06ee */ NULL, /* 06ef */ NULL, /* 06f0 */ NULL, /* 06f1 */ NULL, /* 06f2 */ NULL, /* 06f3 */ NULL, /* 06f4 */ NULL, /* 06f5 */ NULL, /* 06f6 */ NULL, /* 06f7 */ NULL, /* 06f8 */ NULL, /* 06f9 */ NULL, /* 06fa */ NULL, /* 06fb */ NULL, /* 06fc */ NULL, /* 06fd */ NULL, /* 06fe */ NULL, /* 06ff */ NULL, /* 0700 */ NULL, /* 0701 */ NULL, /* 0702 */ NULL, /* 0703 */ NULL, /* 0704 */ NULL, /* 0705 */ NULL, /* 0706 */ NULL, /* 0707 */ NULL, /* 0708 */ NULL, /* 0709 */ NULL, /* 070a */ NULL, /* 070b */ NULL, /* 070c */ NULL, /* 070d */ NULL, /* 070e */ NULL, /* 070f */ NULL, /* 0710 */ NULL, /* 0711 */ NULL, /* 0712 */ NULL, /* 0713 */ NULL, /* 0714 */ NULL, /* 0715 */ NULL, /* 0716 */ NULL, /* 0717 */ NULL, /* 0718 */ NULL, /* 0719 */ NULL, /* 071a */ NULL, /* 071b */ NULL, /* 071c */ NULL, /* 071d */ NULL, /* 071e */ NULL, /* 071f */ NULL, /* 0720 */ NULL, /* 0721 */ NULL, /* 0722 */ NULL, /* 0723 */ NULL, /* 0724 */ NULL, /* 0725 */ NULL, /* 0726 */ NULL, /* 0727 */ NULL, /* 0728 */ NULL, /* 0729 */ NULL, /* 072a */ NULL, /* 072b */ NULL, /* 072c */ NULL, /* 072d */ NULL, /* 072e */ NULL, /* 072f */ NULL, /* 0730 */ NULL, /* 0731 */ NULL, /* 0732 */ NULL, /* 0733 */ NULL, /* 0734 */ NULL, /* 0735 */ NULL, /* 0736 */ NULL, /* 0737 */ NULL, /* 0738 */ NULL, /* 0739 */ NULL, /* 073a */ NULL, /* 073b */ NULL, /* 073c */ NULL, /* 073d */ NULL, /* 073e */ NULL, /* 073f */ NULL, /* 0740 */ NULL, /* 0741 */ NULL, /* 0742 */ NULL, /* 0743 */ NULL, /* 0744 */ NULL, /* 0745 */ NULL, /* 0746 */ NULL, /* 0747 */ NULL, /* 0748 */ NULL, /* 0749 */ NULL, /* 074a */ NULL, /* 074b */ NULL, /* 074c */ NULL, /* 074d */ NULL, /* 074e */ NULL, /* 074f */ NULL, /* 0750 */ NULL, /* 0751 */ NULL, /* 0752 */ NULL, /* 0753 */ NULL, /* 0754 */ NULL, /* 0755 */ NULL, /* 0756 */ NULL, /* 0757 */ NULL, /* 0758 */ NULL, /* 0759 */ NULL, /* 075a */ NULL, /* 075b */ NULL, /* 075c */ NULL, /* 075d */ NULL, /* 075e */ NULL, /* 075f */ NULL, /* 0760 */ NULL, /* 0761 */ NULL, /* 0762 */ NULL, /* 0763 */ NULL, /* 0764 */ NULL, /* 0765 */ NULL, /* 0766 */ NULL, /* 0767 */ NULL, /* 0768 */ NULL, /* 0769 */ NULL, /* 076a */ NULL, /* 076b */ NULL, /* 076c */ NULL, /* 076d */ NULL, /* 076e */ NULL, /* 076f */ NULL, /* 0770 */ NULL, /* 0771 */ NULL, /* 0772 */ NULL, /* 0773 */ NULL, /* 0774 */ NULL, /* 0775 */ NULL, /* 0776 */ NULL, /* 0777 */ NULL, /* 0778 */ NULL, /* 0779 */ NULL, /* 077a */ NULL, /* 077b */ NULL, /* 077c */ NULL, /* 077d */ NULL, /* 077e */ NULL, /* 077f */ NULL, /* 0780 */ NULL, /* 0781 */ NULL, /* 0782 */ NULL, /* 0783 */ NULL, /* 0784 */ NULL, /* 0785 */ NULL, /* 0786 */ NULL, /* 0787 */ NULL, /* 0788 */ NULL, /* 0789 */ NULL, /* 078a */ NULL, /* 078b */ NULL, /* 078c */ NULL, /* 078d */ NULL, /* 078e */ NULL, /* 078f */ NULL, /* 0790 */ NULL, /* 0791 */ NULL, /* 0792 */ NULL, /* 0793 */ NULL, /* 0794 */ NULL, /* 0795 */ NULL, /* 0796 */ NULL, /* 0797 */ NULL, /* 0798 */ NULL, /* 0799 */ NULL, /* 079a */ NULL, /* 079b */ NULL, /* 079c */ NULL, /* 079d */ NULL, /* 079e */ NULL, /* 079f */ NULL, /* 07a0 */ NULL, /* 07a1 */ NULL, /* 07a2 */ NULL, /* 07a3 */ NULL, /* 07a4 */ NULL, /* 07a5 */ NULL, /* 07a6 */ NULL, /* 07a7 */ NULL, /* 07a8 */ NULL, /* 07a9 */ NULL, /* 07aa */ NULL, /* 07ab */ NULL, /* 07ac */ NULL, /* 07ad */ NULL, /* 07ae */ NULL, /* 07af */ NULL, /* 07b0 */ NULL, /* 07b1 */ NULL, /* 07b2 */ NULL, /* 07b3 */ NULL, /* 07b4 */ NULL, /* 07b5 */ NULL, /* 07b6 */ NULL, /* 07b7 */ NULL, /* 07b8 */ NULL, /* 07b9 */ NULL, /* 07ba */ NULL, /* 07bb */ NULL, /* 07bc */ NULL, /* 07bd */ NULL, /* 07be */ NULL, /* 07bf */ NULL, /* 07c0 */ NULL, /* 07c1 */ NULL, /* 07c2 */ NULL, /* 07c3 */ NULL, /* 07c4 */ NULL, /* 07c5 */ NULL, /* 07c6 */ NULL, /* 07c7 */ NULL, /* 07c8 */ NULL, /* 07c9 */ NULL, /* 07ca */ NULL, /* 07cb */ NULL, /* 07cc */ NULL, /* 07cd */ NULL, /* 07ce */ NULL, /* 07cf */ NULL, /* 07d0 */ NULL, /* 07d1 */ NULL, /* 07d2 */ NULL, /* 07d3 */ NULL, /* 07d4 */ NULL, /* 07d5 */ NULL, /* 07d6 */ NULL, /* 07d7 */ NULL, /* 07d8 */ NULL, /* 07d9 */ NULL, /* 07da */ NULL, /* 07db */ NULL, /* 07dc */ NULL, /* 07dd */ NULL, /* 07de */ NULL, /* 07df */ NULL, /* 07e0 */ NULL, /* 07e1 */ NULL, /* 07e2 */ NULL, /* 07e3 */ NULL, /* 07e4 */ NULL, /* 07e5 */ NULL, /* 07e6 */ NULL, /* 07e7 */ NULL, /* 07e8 */ NULL, /* 07e9 */ NULL, /* 07ea */ NULL, /* 07eb */ NULL, /* 07ec */ NULL, /* 07ed */ NULL, /* 07ee */ NULL, /* 07ef */ NULL, /* 07f0 */ NULL, /* 07f1 */ NULL, /* 07f2 */ NULL, /* 07f3 */ NULL, /* 07f4 */ NULL, /* 07f5 */ NULL, /* 07f6 */ NULL, /* 07f7 */ NULL, /* 07f8 */ NULL, /* 07f9 */ NULL, /* 07fa */ NULL, /* 07fb */ NULL, /* 07fc */ NULL, /* 07fd */ NULL, /* 07fe */ NULL, /* 07ff */ NULL, /* 0800 */ NULL, /* 0801 */ NULL, /* 0802 */ NULL, /* 0803 */ NULL, /* 0804 */ NULL, /* 0805 */ NULL, /* 0806 */ NULL, /* 0807 */ NULL, /* 0808 */ NULL, /* 0809 */ NULL, /* 080a */ NULL, /* 080b */ NULL, /* 080c */ NULL, /* 080d */ NULL, /* 080e */ NULL, /* 080f */ NULL, /* 0810 */ NULL, /* 0811 */ NULL, /* 0812 */ NULL, /* 0813 */ NULL, /* 0814 */ NULL, /* 0815 */ NULL, /* 0816 */ NULL, /* 0817 */ NULL, /* 0818 */ NULL, /* 0819 */ NULL, /* 081a */ NULL, /* 081b */ NULL, /* 081c */ NULL, /* 081d */ NULL, /* 081e */ NULL, /* 081f */ NULL, /* 0820 */ NULL, /* 0821 */ NULL, /* 0822 */ NULL, /* 0823 */ NULL, /* 0824 */ NULL, /* 0825 */ NULL, /* 0826 */ NULL, /* 0827 */ NULL, /* 0828 */ NULL, /* 0829 */ NULL, /* 082a */ NULL, /* 082b */ NULL, /* 082c */ NULL, /* 082d */ NULL, /* 082e */ NULL, /* 082f */ NULL, /* 0830 */ NULL, /* 0831 */ NULL, /* 0832 */ NULL, /* 0833 */ NULL, /* 0834 */ NULL, /* 0835 */ NULL, /* 0836 */ NULL, /* 0837 */ NULL, /* 0838 */ NULL, /* 0839 */ NULL, /* 083a */ NULL, /* 083b */ NULL, /* 083c */ NULL, /* 083d */ NULL, /* 083e */ NULL, /* 083f */ NULL, /* 0840 */ NULL, /* 0841 */ NULL, /* 0842 */ NULL, /* 0843 */ NULL, /* 0844 */ NULL, /* 0845 */ NULL, /* 0846 */ NULL, /* 0847 */ NULL, /* 0848 */ NULL, /* 0849 */ NULL, /* 084a */ NULL, /* 084b */ NULL, /* 084c */ NULL, /* 084d */ NULL, /* 084e */ NULL, /* 084f */ NULL, /* 0850 */ NULL, /* 0851 */ NULL, /* 0852 */ NULL, /* 0853 */ NULL, /* 0854 */ NULL, /* 0855 */ NULL, /* 0856 */ NULL, /* 0857 */ NULL, /* 0858 */ NULL, /* 0859 */ NULL, /* 085a */ NULL, /* 085b */ NULL, /* 085c */ NULL, /* 085d */ NULL, /* 085e */ NULL, /* 085f */ NULL, /* 0860 */ NULL, /* 0861 */ NULL, /* 0862 */ NULL, /* 0863 */ NULL, /* 0864 */ NULL, /* 0865 */ NULL, /* 0866 */ NULL, /* 0867 */ NULL, /* 0868 */ NULL, /* 0869 */ NULL, /* 086a */ NULL, /* 086b */ NULL, /* 086c */ NULL, /* 086d */ NULL, /* 086e */ NULL, /* 086f */ NULL, /* 0870 */ NULL, /* 0871 */ NULL, /* 0872 */ NULL, /* 0873 */ NULL, /* 0874 */ NULL, /* 0875 */ NULL, /* 0876 */ NULL, /* 0877 */ NULL, /* 0878 */ NULL, /* 0879 */ NULL, /* 087a */ NULL, /* 087b */ NULL, /* 087c */ NULL, /* 087d */ NULL, /* 087e */ NULL, /* 087f */ NULL, /* 0880 */ NULL, /* 0881 */ NULL, /* 0882 */ NULL, /* 0883 */ NULL, /* 0884 */ NULL, /* 0885 */ NULL, /* 0886 */ NULL, /* 0887 */ NULL, /* 0888 */ NULL, /* 0889 */ NULL, /* 088a */ NULL, /* 088b */ NULL, /* 088c */ NULL, /* 088d */ NULL, /* 088e */ NULL, /* 088f */ NULL, /* 0890 */ NULL, /* 0891 */ NULL, /* 0892 */ NULL, /* 0893 */ NULL, /* 0894 */ NULL, /* 0895 */ NULL, /* 0896 */ NULL, /* 0897 */ NULL, /* 0898 */ NULL, /* 0899 */ NULL, /* 089a */ NULL, /* 089b */ NULL, /* 089c */ NULL, /* 089d */ NULL, /* 089e */ NULL, /* 089f */ NULL, /* 08a0 */ NULL, /* 08a1 */ NULL, /* 08a2 */ NULL, /* 08a3 */ NULL, /* 08a4 */ NULL, /* 08a5 */ NULL, /* 08a6 */ NULL, /* 08a7 */ NULL, /* 08a8 */ NULL, /* 08a9 */ NULL, /* 08aa */ NULL, /* 08ab */ NULL, /* 08ac */ NULL, /* 08ad */ NULL, /* 08ae */ NULL, /* 08af */ NULL, /* 08b0 */ NULL, /* 08b1 */ NULL, /* 08b2 */ NULL, /* 08b3 */ NULL, /* 08b4 */ NULL, /* 08b5 */ NULL, /* 08b6 */ NULL, /* 08b7 */ NULL, /* 08b8 */ NULL, /* 08b9 */ NULL, /* 08ba */ NULL, /* 08bb */ NULL, /* 08bc */ NULL, /* 08bd */ NULL, /* 08be */ NULL, /* 08bf */ NULL, /* 08c0 */ NULL, /* 08c1 */ NULL, /* 08c2 */ NULL, /* 08c3 */ NULL, /* 08c4 */ NULL, /* 08c5 */ NULL, /* 08c6 */ NULL, /* 08c7 */ NULL, /* 08c8 */ NULL, /* 08c9 */ NULL, /* 08ca */ NULL, /* 08cb */ NULL, /* 08cc */ NULL, /* 08cd */ NULL, /* 08ce */ NULL, /* 08cf */ NULL, /* 08d0 */ NULL, /* 08d1 */ NULL, /* 08d2 */ NULL, /* 08d3 */ NULL, /* 08d4 */ NULL, /* 08d5 */ NULL, /* 08d6 */ NULL, /* 08d7 */ NULL, /* 08d8 */ NULL, /* 08d9 */ NULL, /* 08da */ NULL, /* 08db */ NULL, /* 08dc */ NULL, /* 08dd */ NULL, /* 08de */ NULL, /* 08df */ NULL, /* 08e0 */ NULL, /* 08e1 */ NULL, /* 08e2 */ NULL, /* 08e3 */ NULL, /* 08e4 */ NULL, /* 08e5 */ NULL, /* 08e6 */ NULL, /* 08e7 */ NULL, /* 08e8 */ NULL, /* 08e9 */ NULL, /* 08ea */ NULL, /* 08eb */ NULL, /* 08ec */ NULL, /* 08ed */ NULL, /* 08ee */ NULL, /* 08ef */ NULL, /* 08f0 */ NULL, /* 08f1 */ NULL, /* 08f2 */ NULL, /* 08f3 */ NULL, /* 08f4 */ NULL, /* 08f5 */ NULL, /* 08f6 */ NULL, /* 08f7 */ NULL, /* 08f8 */ NULL, /* 08f9 */ NULL, /* 08fa */ NULL, /* 08fb */ NULL, /* 08fc */ NULL, /* 08fd */ NULL, /* 08fe */ NULL, /* 08ff */ NULL, /* 0900 */ NULL, /* 0901 */ NULL, /* 0902 */ NULL, /* 0903 */ NULL, /* 0904 */ NULL, /* 0905 */ NULL, /* 0906 */ NULL, /* 0907 */ NULL, /* 0908 */ NULL, /* 0909 */ NULL, /* 090a */ NULL, /* 090b */ NULL, /* 090c */ NULL, /* 090d */ NULL, /* 090e */ NULL, /* 090f */ NULL, /* 0910 */ NULL, /* 0911 */ NULL, /* 0912 */ NULL, /* 0913 */ NULL, /* 0914 */ NULL, /* 0915 */ NULL, /* 0916 */ NULL, /* 0917 */ NULL, /* 0918 */ NULL, /* 0919 */ NULL, /* 091a */ NULL, /* 091b */ NULL, /* 091c */ NULL, /* 091d */ NULL, /* 091e */ NULL, /* 091f */ NULL, /* 0920 */ NULL, /* 0921 */ NULL, /* 0922 */ NULL, /* 0923 */ NULL, /* 0924 */ NULL, /* 0925 */ NULL, /* 0926 */ NULL, /* 0927 */ NULL, /* 0928 */ NULL, /* 0929 */ NULL, /* 092a */ NULL, /* 092b */ NULL, /* 092c */ NULL, /* 092d */ NULL, /* 092e */ NULL, /* 092f */ NULL, /* 0930 */ NULL, /* 0931 */ NULL, /* 0932 */ NULL, /* 0933 */ NULL, /* 0934 */ NULL, /* 0935 */ NULL, /* 0936 */ NULL, /* 0937 */ NULL, /* 0938 */ NULL, /* 0939 */ NULL, /* 093a */ NULL, /* 093b */ NULL, /* 093c */ NULL, /* 093d */ NULL, /* 093e */ NULL, /* 093f */ NULL, /* 0940 */ NULL, /* 0941 */ NULL, /* 0942 */ NULL, /* 0943 */ NULL, /* 0944 */ NULL, /* 0945 */ NULL, /* 0946 */ NULL, /* 0947 */ NULL, /* 0948 */ NULL, /* 0949 */ NULL, /* 094a */ NULL, /* 094b */ NULL, /* 094c */ NULL, /* 094d */ NULL, /* 094e */ NULL, /* 094f */ NULL, /* 0950 */ NULL, /* 0951 */ NULL, /* 0952 */ NULL, /* 0953 */ NULL, /* 0954 */ NULL, /* 0955 */ NULL, /* 0956 */ NULL, /* 0957 */ NULL, /* 0958 */ NULL, /* 0959 */ NULL, /* 095a */ NULL, /* 095b */ NULL, /* 095c */ NULL, /* 095d */ NULL, /* 095e */ NULL, /* 095f */ NULL, /* 0960 */ NULL, /* 0961 */ NULL, /* 0962 */ NULL, /* 0963 */ NULL, /* 0964 */ NULL, /* 0965 */ NULL, /* 0966 */ NULL, /* 0967 */ NULL, /* 0968 */ NULL, /* 0969 */ NULL, /* 096a */ NULL, /* 096b */ NULL, /* 096c */ NULL, /* 096d */ NULL, /* 096e */ NULL, /* 096f */ NULL, /* 0970 */ NULL, /* 0971 */ NULL, /* 0972 */ NULL, /* 0973 */ NULL, /* 0974 */ NULL, /* 0975 */ NULL, /* 0976 */ NULL, /* 0977 */ NULL, /* 0978 */ NULL, /* 0979 */ NULL, /* 097a */ NULL, /* 097b */ NULL, /* 097c */ NULL, /* 097d */ NULL, /* 097e */ NULL, /* 097f */ NULL, /* 0980 */ NULL, /* 0981 */ NULL, /* 0982 */ NULL, /* 0983 */ NULL, /* 0984 */ NULL, /* 0985 */ NULL, /* 0986 */ NULL, /* 0987 */ NULL, /* 0988 */ NULL, /* 0989 */ NULL, /* 098a */ NULL, /* 098b */ NULL, /* 098c */ NULL, /* 098d */ NULL, /* 098e */ NULL, /* 098f */ NULL, /* 0990 */ NULL, /* 0991 */ NULL, /* 0992 */ NULL, /* 0993 */ NULL, /* 0994 */ NULL, /* 0995 */ NULL, /* 0996 */ NULL, /* 0997 */ NULL, /* 0998 */ NULL, /* 0999 */ NULL, /* 099a */ NULL, /* 099b */ NULL, /* 099c */ NULL, /* 099d */ NULL, /* 099e */ NULL, /* 099f */ NULL, /* 09a0 */ NULL, /* 09a1 */ NULL, /* 09a2 */ NULL, /* 09a3 */ NULL, /* 09a4 */ NULL, /* 09a5 */ NULL, /* 09a6 */ NULL, /* 09a7 */ NULL, /* 09a8 */ NULL, /* 09a9 */ NULL, /* 09aa */ NULL, /* 09ab */ NULL, /* 09ac */ NULL, /* 09ad */ NULL, /* 09ae */ NULL, /* 09af */ NULL, /* 09b0 */ NULL, /* 09b1 */ NULL, /* 09b2 */ NULL, /* 09b3 */ NULL, /* 09b4 */ NULL, /* 09b5 */ NULL, /* 09b6 */ NULL, /* 09b7 */ NULL, /* 09b8 */ NULL, /* 09b9 */ NULL, /* 09ba */ NULL, /* 09bb */ NULL, /* 09bc */ NULL, /* 09bd */ NULL, /* 09be */ NULL, /* 09bf */ NULL, /* 09c0 */ NULL, /* 09c1 */ NULL, /* 09c2 */ NULL, /* 09c3 */ NULL, /* 09c4 */ NULL, /* 09c5 */ NULL, /* 09c6 */ NULL, /* 09c7 */ NULL, /* 09c8 */ NULL, /* 09c9 */ NULL, /* 09ca */ NULL, /* 09cb */ NULL, /* 09cc */ NULL, /* 09cd */ NULL, /* 09ce */ NULL, /* 09cf */ NULL, /* 09d0 */ NULL, /* 09d1 */ NULL, /* 09d2 */ NULL, /* 09d3 */ NULL, /* 09d4 */ NULL, /* 09d5 */ NULL, /* 09d6 */ NULL, /* 09d7 */ NULL, /* 09d8 */ NULL, /* 09d9 */ NULL, /* 09da */ NULL, /* 09db */ NULL, /* 09dc */ NULL, /* 09dd */ NULL, /* 09de */ NULL, /* 09df */ NULL, /* 09e0 */ NULL, /* 09e1 */ NULL, /* 09e2 */ NULL, /* 09e3 */ NULL, /* 09e4 */ NULL, /* 09e5 */ NULL, /* 09e6 */ NULL, /* 09e7 */ NULL, /* 09e8 */ NULL, /* 09e9 */ NULL, /* 09ea */ NULL, /* 09eb */ NULL, /* 09ec */ NULL, /* 09ed */ NULL, /* 09ee */ NULL, /* 09ef */ NULL, /* 09f0 */ NULL, /* 09f1 */ NULL, /* 09f2 */ NULL, /* 09f3 */ NULL, /* 09f4 */ NULL, /* 09f5 */ NULL, /* 09f6 */ NULL, /* 09f7 */ NULL, /* 09f8 */ NULL, /* 09f9 */ NULL, /* 09fa */ NULL, /* 09fb */ NULL, /* 09fc */ NULL, /* 09fd */ NULL, /* 09fe */ NULL, /* 09ff */ NULL, /* 0a00 */ NULL, /* 0a01 */ NULL, /* 0a02 */ NULL, /* 0a03 */ NULL, /* 0a04 */ NULL, /* 0a05 */ NULL, /* 0a06 */ NULL, /* 0a07 */ NULL, /* 0a08 */ NULL, /* 0a09 */ NULL, /* 0a0a */ NULL, /* 0a0b */ NULL, /* 0a0c */ NULL, /* 0a0d */ NULL, /* 0a0e */ NULL, /* 0a0f */ NULL, /* 0a10 */ NULL, /* 0a11 */ NULL, /* 0a12 */ NULL, /* 0a13 */ NULL, /* 0a14 */ NULL, /* 0a15 */ NULL, /* 0a16 */ NULL, /* 0a17 */ NULL, /* 0a18 */ NULL, /* 0a19 */ NULL, /* 0a1a */ NULL, /* 0a1b */ NULL, /* 0a1c */ NULL, /* 0a1d */ NULL, /* 0a1e */ NULL, /* 0a1f */ NULL, /* 0a20 */ NULL, /* 0a21 */ NULL, /* 0a22 */ NULL, /* 0a23 */ NULL, /* 0a24 */ NULL, /* 0a25 */ NULL, /* 0a26 */ NULL, /* 0a27 */ NULL, /* 0a28 */ NULL, /* 0a29 */ NULL, /* 0a2a */ NULL, /* 0a2b */ NULL, /* 0a2c */ NULL, /* 0a2d */ NULL, /* 0a2e */ NULL, /* 0a2f */ NULL, /* 0a30 */ NULL, /* 0a31 */ NULL, /* 0a32 */ NULL, /* 0a33 */ NULL, /* 0a34 */ NULL, /* 0a35 */ NULL, /* 0a36 */ NULL, /* 0a37 */ NULL, /* 0a38 */ NULL, /* 0a39 */ NULL, /* 0a3a */ NULL, /* 0a3b */ NULL, /* 0a3c */ NULL, /* 0a3d */ NULL, /* 0a3e */ NULL, /* 0a3f */ NULL, /* 0a40 */ NULL, /* 0a41 */ NULL, /* 0a42 */ NULL, /* 0a43 */ NULL, /* 0a44 */ NULL, /* 0a45 */ NULL, /* 0a46 */ NULL, /* 0a47 */ NULL, /* 0a48 */ NULL, /* 0a49 */ NULL, /* 0a4a */ NULL, /* 0a4b */ NULL, /* 0a4c */ NULL, /* 0a4d */ NULL, /* 0a4e */ NULL, /* 0a4f */ NULL, /* 0a50 */ NULL, /* 0a51 */ NULL, /* 0a52 */ NULL, /* 0a53 */ NULL, /* 0a54 */ NULL, /* 0a55 */ NULL, /* 0a56 */ NULL, /* 0a57 */ NULL, /* 0a58 */ NULL, /* 0a59 */ NULL, /* 0a5a */ NULL, /* 0a5b */ NULL, /* 0a5c */ NULL, /* 0a5d */ NULL, /* 0a5e */ NULL, /* 0a5f */ NULL, /* 0a60 */ NULL, /* 0a61 */ NULL, /* 0a62 */ NULL, /* 0a63 */ NULL, /* 0a64 */ NULL, /* 0a65 */ NULL, /* 0a66 */ NULL, /* 0a67 */ NULL, /* 0a68 */ NULL, /* 0a69 */ NULL, /* 0a6a */ NULL, /* 0a6b */ NULL, /* 0a6c */ NULL, /* 0a6d */ NULL, /* 0a6e */ NULL, /* 0a6f */ NULL, /* 0a70 */ NULL, /* 0a71 */ NULL, /* 0a72 */ NULL, /* 0a73 */ NULL, /* 0a74 */ NULL, /* 0a75 */ NULL, /* 0a76 */ NULL, /* 0a77 */ NULL, /* 0a78 */ NULL, /* 0a79 */ NULL, /* 0a7a */ NULL, /* 0a7b */ NULL, /* 0a7c */ NULL, /* 0a7d */ NULL, /* 0a7e */ NULL, /* 0a7f */ NULL, /* 0a80 */ NULL, /* 0a81 */ NULL, /* 0a82 */ NULL, /* 0a83 */ NULL, /* 0a84 */ NULL, /* 0a85 */ NULL, /* 0a86 */ NULL, /* 0a87 */ NULL, /* 0a88 */ NULL, /* 0a89 */ NULL, /* 0a8a */ NULL, /* 0a8b */ NULL, /* 0a8c */ NULL, /* 0a8d */ NULL, /* 0a8e */ NULL, /* 0a8f */ NULL, /* 0a90 */ NULL, /* 0a91 */ NULL, /* 0a92 */ NULL, /* 0a93 */ NULL, /* 0a94 */ NULL, /* 0a95 */ NULL, /* 0a96 */ NULL, /* 0a97 */ NULL, /* 0a98 */ NULL, /* 0a99 */ NULL, /* 0a9a */ NULL, /* 0a9b */ NULL, /* 0a9c */ NULL, /* 0a9d */ NULL, /* 0a9e */ NULL, /* 0a9f */ NULL, /* 0aa0 */ NULL, /* 0aa1 */ NULL, /* 0aa2 */ NULL, /* 0aa3 */ NULL, /* 0aa4 */ NULL, /* 0aa5 */ NULL, /* 0aa6 */ NULL, /* 0aa7 */ NULL, /* 0aa8 */ NULL, /* 0aa9 */ NULL, /* 0aaa */ NULL, /* 0aab */ NULL, /* 0aac */ NULL, /* 0aad */ NULL, /* 0aae */ NULL, /* 0aaf */ NULL, /* 0ab0 */ NULL, /* 0ab1 */ NULL, /* 0ab2 */ NULL, /* 0ab3 */ NULL, /* 0ab4 */ NULL, /* 0ab5 */ NULL, /* 0ab6 */ NULL, /* 0ab7 */ NULL, /* 0ab8 */ NULL, /* 0ab9 */ NULL, /* 0aba */ NULL, /* 0abb */ NULL, /* 0abc */ NULL, /* 0abd */ NULL, /* 0abe */ NULL, /* 0abf */ NULL, /* 0ac0 */ NULL, /* 0ac1 */ NULL, /* 0ac2 */ NULL, /* 0ac3 */ NULL, /* 0ac4 */ NULL, /* 0ac5 */ NULL, /* 0ac6 */ NULL, /* 0ac7 */ NULL, /* 0ac8 */ NULL, /* 0ac9 */ NULL, /* 0aca */ NULL, /* 0acb */ NULL, /* 0acc */ NULL, /* 0acd */ NULL, /* 0ace */ NULL, /* 0acf */ NULL, /* 0ad0 */ NULL, /* 0ad1 */ NULL, /* 0ad2 */ NULL, /* 0ad3 */ NULL, /* 0ad4 */ NULL, /* 0ad5 */ NULL, /* 0ad6 */ NULL, /* 0ad7 */ NULL, /* 0ad8 */ NULL, /* 0ad9 */ NULL, /* 0ada */ NULL, /* 0adb */ NULL, /* 0adc */ NULL, /* 0add */ NULL, /* 0ade */ NULL, /* 0adf */ NULL, /* 0ae0 */ NULL, /* 0ae1 */ NULL, /* 0ae2 */ NULL, /* 0ae3 */ NULL, /* 0ae4 */ NULL, /* 0ae5 */ NULL, /* 0ae6 */ NULL, /* 0ae7 */ NULL, /* 0ae8 */ NULL, /* 0ae9 */ NULL, /* 0aea */ NULL, /* 0aeb */ NULL, /* 0aec */ NULL, /* 0aed */ NULL, /* 0aee */ NULL, /* 0aef */ NULL, /* 0af0 */ NULL, /* 0af1 */ NULL, /* 0af2 */ NULL, /* 0af3 */ NULL, /* 0af4 */ NULL, /* 0af5 */ NULL, /* 0af6 */ NULL, /* 0af7 */ NULL, /* 0af8 */ NULL, /* 0af9 */ NULL, /* 0afa */ NULL, /* 0afb */ NULL, /* 0afc */ NULL, /* 0afd */ NULL, /* 0afe */ NULL, /* 0aff */ NULL, /* 0b00 */ NULL, /* 0b01 */ NULL, /* 0b02 */ NULL, /* 0b03 */ NULL, /* 0b04 */ NULL, /* 0b05 */ NULL, /* 0b06 */ NULL, /* 0b07 */ NULL, /* 0b08 */ NULL, /* 0b09 */ NULL, /* 0b0a */ NULL, /* 0b0b */ NULL, /* 0b0c */ NULL, /* 0b0d */ NULL, /* 0b0e */ NULL, /* 0b0f */ NULL, /* 0b10 */ NULL, /* 0b11 */ NULL, /* 0b12 */ NULL, /* 0b13 */ NULL, /* 0b14 */ NULL, /* 0b15 */ NULL, /* 0b16 */ NULL, /* 0b17 */ NULL, /* 0b18 */ NULL, /* 0b19 */ NULL, /* 0b1a */ NULL, /* 0b1b */ NULL, /* 0b1c */ NULL, /* 0b1d */ NULL, /* 0b1e */ NULL, /* 0b1f */ NULL, /* 0b20 */ NULL, /* 0b21 */ NULL, /* 0b22 */ NULL, /* 0b23 */ NULL, /* 0b24 */ NULL, /* 0b25 */ NULL, /* 0b26 */ NULL, /* 0b27 */ NULL, /* 0b28 */ NULL, /* 0b29 */ NULL, /* 0b2a */ NULL, /* 0b2b */ NULL, /* 0b2c */ NULL, /* 0b2d */ NULL, /* 0b2e */ NULL, /* 0b2f */ NULL, /* 0b30 */ NULL, /* 0b31 */ NULL, /* 0b32 */ NULL, /* 0b33 */ NULL, /* 0b34 */ NULL, /* 0b35 */ NULL, /* 0b36 */ NULL, /* 0b37 */ NULL, /* 0b38 */ NULL, /* 0b39 */ NULL, /* 0b3a */ NULL, /* 0b3b */ NULL, /* 0b3c */ NULL, /* 0b3d */ NULL, /* 0b3e */ NULL, /* 0b3f */ NULL, /* 0b40 */ NULL, /* 0b41 */ NULL, /* 0b42 */ NULL, /* 0b43 */ NULL, /* 0b44 */ NULL, /* 0b45 */ NULL, /* 0b46 */ NULL, /* 0b47 */ NULL, /* 0b48 */ NULL, /* 0b49 */ NULL, /* 0b4a */ NULL, /* 0b4b */ NULL, /* 0b4c */ NULL, /* 0b4d */ NULL, /* 0b4e */ NULL, /* 0b4f */ NULL, /* 0b50 */ NULL, /* 0b51 */ NULL, /* 0b52 */ NULL, /* 0b53 */ NULL, /* 0b54 */ NULL, /* 0b55 */ NULL, /* 0b56 */ NULL, /* 0b57 */ NULL, /* 0b58 */ NULL, /* 0b59 */ NULL, /* 0b5a */ NULL, /* 0b5b */ NULL, /* 0b5c */ NULL, /* 0b5d */ NULL, /* 0b5e */ NULL, /* 0b5f */ NULL, /* 0b60 */ NULL, /* 0b61 */ NULL, /* 0b62 */ NULL, /* 0b63 */ NULL, /* 0b64 */ NULL, /* 0b65 */ NULL, /* 0b66 */ NULL, /* 0b67 */ NULL, /* 0b68 */ NULL, /* 0b69 */ NULL, /* 0b6a */ NULL, /* 0b6b */ NULL, /* 0b6c */ NULL, /* 0b6d */ NULL, /* 0b6e */ NULL, /* 0b6f */ NULL, /* 0b70 */ NULL, /* 0b71 */ NULL, /* 0b72 */ NULL, /* 0b73 */ NULL, /* 0b74 */ NULL, /* 0b75 */ NULL, /* 0b76 */ NULL, /* 0b77 */ NULL, /* 0b78 */ NULL, /* 0b79 */ NULL, /* 0b7a */ NULL, /* 0b7b */ NULL, /* 0b7c */ NULL, /* 0b7d */ NULL, /* 0b7e */ NULL, /* 0b7f */ NULL, /* 0b80 */ NULL, /* 0b81 */ NULL, /* 0b82 */ NULL, /* 0b83 */ NULL, /* 0b84 */ NULL, /* 0b85 */ NULL, /* 0b86 */ NULL, /* 0b87 */ NULL, /* 0b88 */ NULL, /* 0b89 */ NULL, /* 0b8a */ NULL, /* 0b8b */ NULL, /* 0b8c */ NULL, /* 0b8d */ NULL, /* 0b8e */ NULL, /* 0b8f */ NULL, /* 0b90 */ NULL, /* 0b91 */ NULL, /* 0b92 */ NULL, /* 0b93 */ NULL, /* 0b94 */ NULL, /* 0b95 */ NULL, /* 0b96 */ NULL, /* 0b97 */ NULL, /* 0b98 */ NULL, /* 0b99 */ NULL, /* 0b9a */ NULL, /* 0b9b */ NULL, /* 0b9c */ NULL, /* 0b9d */ NULL, /* 0b9e */ NULL, /* 0b9f */ NULL, /* 0ba0 */ NULL, /* 0ba1 */ NULL, /* 0ba2 */ NULL, /* 0ba3 */ NULL, /* 0ba4 */ NULL, /* 0ba5 */ NULL, /* 0ba6 */ NULL, /* 0ba7 */ NULL, /* 0ba8 */ NULL, /* 0ba9 */ NULL, /* 0baa */ NULL, /* 0bab */ NULL, /* 0bac */ NULL, /* 0bad */ NULL, /* 0bae */ NULL, /* 0baf */ NULL, /* 0bb0 */ NULL, /* 0bb1 */ NULL, /* 0bb2 */ NULL, /* 0bb3 */ NULL, /* 0bb4 */ NULL, /* 0bb5 */ NULL, /* 0bb6 */ NULL, /* 0bb7 */ NULL, /* 0bb8 */ NULL, /* 0bb9 */ NULL, /* 0bba */ NULL, /* 0bbb */ NULL, /* 0bbc */ NULL, /* 0bbd */ NULL, /* 0bbe */ NULL, /* 0bbf */ NULL, /* 0bc0 */ NULL, /* 0bc1 */ NULL, /* 0bc2 */ NULL, /* 0bc3 */ NULL, /* 0bc4 */ NULL, /* 0bc5 */ NULL, /* 0bc6 */ NULL, /* 0bc7 */ NULL, /* 0bc8 */ NULL, /* 0bc9 */ NULL, /* 0bca */ NULL, /* 0bcb */ NULL, /* 0bcc */ NULL, /* 0bcd */ NULL, /* 0bce */ NULL, /* 0bcf */ NULL, /* 0bd0 */ NULL, /* 0bd1 */ NULL, /* 0bd2 */ NULL, /* 0bd3 */ NULL, /* 0bd4 */ NULL, /* 0bd5 */ NULL, /* 0bd6 */ NULL, /* 0bd7 */ NULL, /* 0bd8 */ NULL, /* 0bd9 */ NULL, /* 0bda */ NULL, /* 0bdb */ NULL, /* 0bdc */ NULL, /* 0bdd */ NULL, /* 0bde */ NULL, /* 0bdf */ NULL, /* 0be0 */ NULL, /* 0be1 */ NULL, /* 0be2 */ NULL, /* 0be3 */ NULL, /* 0be4 */ NULL, /* 0be5 */ NULL, /* 0be6 */ NULL, /* 0be7 */ NULL, /* 0be8 */ NULL, /* 0be9 */ NULL, /* 0bea */ NULL, /* 0beb */ NULL, /* 0bec */ NULL, /* 0bed */ NULL, /* 0bee */ NULL, /* 0bef */ NULL, /* 0bf0 */ NULL, /* 0bf1 */ NULL, /* 0bf2 */ NULL, /* 0bf3 */ NULL, /* 0bf4 */ NULL, /* 0bf5 */ NULL, /* 0bf6 */ NULL, /* 0bf7 */ NULL, /* 0bf8 */ NULL, /* 0bf9 */ NULL, /* 0bfa */ NULL, /* 0bfb */ NULL, /* 0bfc */ NULL, /* 0bfd */ NULL, /* 0bfe */ NULL, /* 0bff */ NULL, /* 0c00 */ NULL, /* 0c01 */ NULL, /* 0c02 */ NULL, /* 0c03 */ NULL, /* 0c04 */ NULL, /* 0c05 */ NULL, /* 0c06 */ NULL, /* 0c07 */ NULL, /* 0c08 */ NULL, /* 0c09 */ NULL, /* 0c0a */ NULL, /* 0c0b */ NULL, /* 0c0c */ NULL, /* 0c0d */ NULL, /* 0c0e */ NULL, /* 0c0f */ NULL, /* 0c10 */ NULL, /* 0c11 */ NULL, /* 0c12 */ NULL, /* 0c13 */ NULL, /* 0c14 */ NULL, /* 0c15 */ NULL, /* 0c16 */ NULL, /* 0c17 */ NULL, /* 0c18 */ NULL, /* 0c19 */ NULL, /* 0c1a */ NULL, /* 0c1b */ NULL, /* 0c1c */ NULL, /* 0c1d */ NULL, /* 0c1e */ NULL, /* 0c1f */ NULL, /* 0c20 */ NULL, /* 0c21 */ NULL, /* 0c22 */ NULL, /* 0c23 */ NULL, /* 0c24 */ NULL, /* 0c25 */ NULL, /* 0c26 */ NULL, /* 0c27 */ NULL, /* 0c28 */ NULL, /* 0c29 */ NULL, /* 0c2a */ NULL, /* 0c2b */ NULL, /* 0c2c */ NULL, /* 0c2d */ NULL, /* 0c2e */ NULL, /* 0c2f */ NULL, /* 0c30 */ NULL, /* 0c31 */ NULL, /* 0c32 */ NULL, /* 0c33 */ NULL, /* 0c34 */ NULL, /* 0c35 */ NULL, /* 0c36 */ NULL, /* 0c37 */ NULL, /* 0c38 */ NULL, /* 0c39 */ NULL, /* 0c3a */ NULL, /* 0c3b */ NULL, /* 0c3c */ NULL, /* 0c3d */ NULL, /* 0c3e */ NULL, /* 0c3f */ NULL, /* 0c40 */ NULL, /* 0c41 */ NULL, /* 0c42 */ NULL, /* 0c43 */ NULL, /* 0c44 */ NULL, /* 0c45 */ NULL, /* 0c46 */ NULL, /* 0c47 */ NULL, /* 0c48 */ NULL, /* 0c49 */ NULL, /* 0c4a */ NULL, /* 0c4b */ NULL, /* 0c4c */ NULL, /* 0c4d */ NULL, /* 0c4e */ NULL, /* 0c4f */ NULL, /* 0c50 */ NULL, /* 0c51 */ NULL, /* 0c52 */ NULL, /* 0c53 */ NULL, /* 0c54 */ NULL, /* 0c55 */ NULL, /* 0c56 */ NULL, /* 0c57 */ NULL, /* 0c58 */ NULL, /* 0c59 */ NULL, /* 0c5a */ NULL, /* 0c5b */ NULL, /* 0c5c */ NULL, /* 0c5d */ NULL, /* 0c5e */ NULL, /* 0c5f */ NULL, /* 0c60 */ NULL, /* 0c61 */ NULL, /* 0c62 */ NULL, /* 0c63 */ NULL, /* 0c64 */ NULL, /* 0c65 */ NULL, /* 0c66 */ NULL, /* 0c67 */ NULL, /* 0c68 */ NULL, /* 0c69 */ NULL, /* 0c6a */ NULL, /* 0c6b */ NULL, /* 0c6c */ NULL, /* 0c6d */ NULL, /* 0c6e */ NULL, /* 0c6f */ NULL, /* 0c70 */ NULL, /* 0c71 */ NULL, /* 0c72 */ NULL, /* 0c73 */ NULL, /* 0c74 */ NULL, /* 0c75 */ NULL, /* 0c76 */ NULL, /* 0c77 */ NULL, /* 0c78 */ NULL, /* 0c79 */ NULL, /* 0c7a */ NULL, /* 0c7b */ NULL, /* 0c7c */ NULL, /* 0c7d */ NULL, /* 0c7e */ NULL, /* 0c7f */ NULL, /* 0c80 */ NULL, /* 0c81 */ NULL, /* 0c82 */ NULL, /* 0c83 */ NULL, /* 0c84 */ NULL, /* 0c85 */ NULL, /* 0c86 */ NULL, /* 0c87 */ NULL, /* 0c88 */ NULL, /* 0c89 */ NULL, /* 0c8a */ NULL, /* 0c8b */ NULL, /* 0c8c */ NULL, /* 0c8d */ NULL, /* 0c8e */ NULL, /* 0c8f */ NULL, /* 0c90 */ NULL, /* 0c91 */ NULL, /* 0c92 */ NULL, /* 0c93 */ NULL, /* 0c94 */ NULL, /* 0c95 */ NULL, /* 0c96 */ NULL, /* 0c97 */ NULL, /* 0c98 */ NULL, /* 0c99 */ NULL, /* 0c9a */ NULL, /* 0c9b */ NULL, /* 0c9c */ NULL, /* 0c9d */ NULL, /* 0c9e */ NULL, /* 0c9f */ NULL, /* 0ca0 */ NULL, /* 0ca1 */ NULL, /* 0ca2 */ NULL, /* 0ca3 */ NULL, /* 0ca4 */ NULL, /* 0ca5 */ NULL, /* 0ca6 */ NULL, /* 0ca7 */ NULL, /* 0ca8 */ NULL, /* 0ca9 */ NULL, /* 0caa */ NULL, /* 0cab */ NULL, /* 0cac */ NULL, /* 0cad */ NULL, /* 0cae */ NULL, /* 0caf */ NULL, /* 0cb0 */ NULL, /* 0cb1 */ NULL, /* 0cb2 */ NULL, /* 0cb3 */ NULL, /* 0cb4 */ NULL, /* 0cb5 */ NULL, /* 0cb6 */ NULL, /* 0cb7 */ NULL, /* 0cb8 */ NULL, /* 0cb9 */ NULL, /* 0cba */ NULL, /* 0cbb */ NULL, /* 0cbc */ NULL, /* 0cbd */ NULL, /* 0cbe */ NULL, /* 0cbf */ NULL, /* 0cc0 */ NULL, /* 0cc1 */ NULL, /* 0cc2 */ NULL, /* 0cc3 */ NULL, /* 0cc4 */ NULL, /* 0cc5 */ NULL, /* 0cc6 */ NULL, /* 0cc7 */ NULL, /* 0cc8 */ NULL, /* 0cc9 */ NULL, /* 0cca */ NULL, /* 0ccb */ NULL, /* 0ccc */ NULL, /* 0ccd */ NULL, /* 0cce */ NULL, /* 0ccf */ NULL, /* 0cd0 */ NULL, /* 0cd1 */ NULL, /* 0cd2 */ NULL, /* 0cd3 */ NULL, /* 0cd4 */ NULL, /* 0cd5 */ NULL, /* 0cd6 */ NULL, /* 0cd7 */ NULL, /* 0cd8 */ NULL, /* 0cd9 */ NULL, /* 0cda */ NULL, /* 0cdb */ NULL, /* 0cdc */ NULL, /* 0cdd */ NULL, /* 0cde */ NULL, /* 0cdf */ NULL, /* 0ce0 */ NULL, /* 0ce1 */ NULL, /* 0ce2 */ NULL, /* 0ce3 */ NULL, /* 0ce4 */ NULL, /* 0ce5 */ NULL, /* 0ce6 */ NULL, /* 0ce7 */ NULL, /* 0ce8 */ NULL, /* 0ce9 */ NULL, /* 0cea */ NULL, /* 0ceb */ NULL, /* 0cec */ NULL, /* 0ced */ NULL, /* 0cee */ NULL, /* 0cef */ NULL, /* 0cf0 */ NULL, /* 0cf1 */ NULL, /* 0cf2 */ NULL, /* 0cf3 */ NULL, /* 0cf4 */ NULL, /* 0cf5 */ NULL, /* 0cf6 */ NULL, /* 0cf7 */ NULL, /* 0cf8 */ NULL, /* 0cf9 */ NULL, /* 0cfa */ NULL, /* 0cfb */ NULL, /* 0cfc */ NULL, /* 0cfd */ NULL, /* 0cfe */ NULL, /* 0cff */ NULL, /* 0d00 */ NULL, /* 0d01 */ NULL, /* 0d02 */ NULL, /* 0d03 */ NULL, /* 0d04 */ NULL, /* 0d05 */ NULL, /* 0d06 */ NULL, /* 0d07 */ NULL, /* 0d08 */ NULL, /* 0d09 */ NULL, /* 0d0a */ NULL, /* 0d0b */ NULL, /* 0d0c */ NULL, /* 0d0d */ NULL, /* 0d0e */ NULL, /* 0d0f */ NULL, /* 0d10 */ NULL, /* 0d11 */ NULL, /* 0d12 */ NULL, /* 0d13 */ NULL, /* 0d14 */ NULL, /* 0d15 */ NULL, /* 0d16 */ NULL, /* 0d17 */ NULL, /* 0d18 */ NULL, /* 0d19 */ NULL, /* 0d1a */ NULL, /* 0d1b */ NULL, /* 0d1c */ NULL, /* 0d1d */ NULL, /* 0d1e */ NULL, /* 0d1f */ NULL, /* 0d20 */ NULL, /* 0d21 */ NULL, /* 0d22 */ NULL, /* 0d23 */ NULL, /* 0d24 */ NULL, /* 0d25 */ NULL, /* 0d26 */ NULL, /* 0d27 */ NULL, /* 0d28 */ NULL, /* 0d29 */ NULL, /* 0d2a */ NULL, /* 0d2b */ NULL, /* 0d2c */ NULL, /* 0d2d */ NULL, /* 0d2e */ NULL, /* 0d2f */ NULL, /* 0d30 */ NULL, /* 0d31 */ NULL, /* 0d32 */ NULL, /* 0d33 */ NULL, /* 0d34 */ NULL, /* 0d35 */ NULL, /* 0d36 */ NULL, /* 0d37 */ NULL, /* 0d38 */ NULL, /* 0d39 */ NULL, /* 0d3a */ NULL, /* 0d3b */ NULL, /* 0d3c */ NULL, /* 0d3d */ NULL, /* 0d3e */ NULL, /* 0d3f */ NULL, /* 0d40 */ NULL, /* 0d41 */ NULL, /* 0d42 */ NULL, /* 0d43 */ NULL, /* 0d44 */ NULL, /* 0d45 */ NULL, /* 0d46 */ NULL, /* 0d47 */ NULL, /* 0d48 */ NULL, /* 0d49 */ NULL, /* 0d4a */ NULL, /* 0d4b */ NULL, /* 0d4c */ NULL, /* 0d4d */ NULL, /* 0d4e */ NULL, /* 0d4f */ NULL, /* 0d50 */ NULL, /* 0d51 */ NULL, /* 0d52 */ NULL, /* 0d53 */ NULL, /* 0d54 */ NULL, /* 0d55 */ NULL, /* 0d56 */ NULL, /* 0d57 */ NULL, /* 0d58 */ NULL, /* 0d59 */ NULL, /* 0d5a */ NULL, /* 0d5b */ NULL, /* 0d5c */ NULL, /* 0d5d */ NULL, /* 0d5e */ NULL, /* 0d5f */ NULL, /* 0d60 */ NULL, /* 0d61 */ NULL, /* 0d62 */ NULL, /* 0d63 */ NULL, /* 0d64 */ NULL, /* 0d65 */ NULL, /* 0d66 */ NULL, /* 0d67 */ NULL, /* 0d68 */ NULL, /* 0d69 */ NULL, /* 0d6a */ NULL, /* 0d6b */ NULL, /* 0d6c */ NULL, /* 0d6d */ NULL, /* 0d6e */ NULL, /* 0d6f */ NULL, /* 0d70 */ NULL, /* 0d71 */ NULL, /* 0d72 */ NULL, /* 0d73 */ NULL, /* 0d74 */ NULL, /* 0d75 */ NULL, /* 0d76 */ NULL, /* 0d77 */ NULL, /* 0d78 */ NULL, /* 0d79 */ NULL, /* 0d7a */ NULL, /* 0d7b */ NULL, /* 0d7c */ NULL, /* 0d7d */ NULL, /* 0d7e */ NULL, /* 0d7f */ NULL, /* 0d80 */ NULL, /* 0d81 */ NULL, /* 0d82 */ NULL, /* 0d83 */ NULL, /* 0d84 */ NULL, /* 0d85 */ NULL, /* 0d86 */ NULL, /* 0d87 */ NULL, /* 0d88 */ NULL, /* 0d89 */ NULL, /* 0d8a */ NULL, /* 0d8b */ NULL, /* 0d8c */ NULL, /* 0d8d */ NULL, /* 0d8e */ NULL, /* 0d8f */ NULL, /* 0d90 */ NULL, /* 0d91 */ NULL, /* 0d92 */ NULL, /* 0d93 */ NULL, /* 0d94 */ NULL, /* 0d95 */ NULL, /* 0d96 */ NULL, /* 0d97 */ NULL, /* 0d98 */ NULL, /* 0d99 */ NULL, /* 0d9a */ NULL, /* 0d9b */ NULL, /* 0d9c */ NULL, /* 0d9d */ NULL, /* 0d9e */ NULL, /* 0d9f */ NULL, /* 0da0 */ NULL, /* 0da1 */ NULL, /* 0da2 */ NULL, /* 0da3 */ NULL, /* 0da4 */ NULL, /* 0da5 */ NULL, /* 0da6 */ NULL, /* 0da7 */ NULL, /* 0da8 */ NULL, /* 0da9 */ NULL, /* 0daa */ NULL, /* 0dab */ NULL, /* 0dac */ NULL, /* 0dad */ NULL, /* 0dae */ NULL, /* 0daf */ NULL, /* 0db0 */ NULL, /* 0db1 */ NULL, /* 0db2 */ NULL, /* 0db3 */ NULL, /* 0db4 */ NULL, /* 0db5 */ NULL, /* 0db6 */ NULL, /* 0db7 */ NULL, /* 0db8 */ NULL, /* 0db9 */ NULL, /* 0dba */ NULL, /* 0dbb */ NULL, /* 0dbc */ NULL, /* 0dbd */ NULL, /* 0dbe */ NULL, /* 0dbf */ NULL, /* 0dc0 */ NULL, /* 0dc1 */ NULL, /* 0dc2 */ NULL, /* 0dc3 */ NULL, /* 0dc4 */ NULL, /* 0dc5 */ NULL, /* 0dc6 */ NULL, /* 0dc7 */ NULL, /* 0dc8 */ NULL, /* 0dc9 */ NULL, /* 0dca */ NULL, /* 0dcb */ NULL, /* 0dcc */ NULL, /* 0dcd */ NULL, /* 0dce */ NULL, /* 0dcf */ NULL, /* 0dd0 */ NULL, /* 0dd1 */ NULL, /* 0dd2 */ NULL, /* 0dd3 */ NULL, /* 0dd4 */ NULL, /* 0dd5 */ NULL, /* 0dd6 */ NULL, /* 0dd7 */ NULL, /* 0dd8 */ NULL, /* 0dd9 */ NULL, /* 0dda */ NULL, /* 0ddb */ NULL, /* 0ddc */ NULL, /* 0ddd */ NULL, /* 0dde */ NULL, /* 0ddf */ NULL, /* 0de0 */ NULL, /* 0de1 */ NULL, /* 0de2 */ NULL, /* 0de3 */ NULL, /* 0de4 */ NULL, /* 0de5 */ NULL, /* 0de6 */ NULL, /* 0de7 */ NULL, /* 0de8 */ NULL, /* 0de9 */ NULL, /* 0dea */ NULL, /* 0deb */ NULL, /* 0dec */ NULL, /* 0ded */ NULL, /* 0dee */ NULL, /* 0def */ NULL, /* 0df0 */ NULL, /* 0df1 */ NULL, /* 0df2 */ NULL, /* 0df3 */ NULL, /* 0df4 */ NULL, /* 0df5 */ NULL, /* 0df6 */ NULL, /* 0df7 */ NULL, /* 0df8 */ NULL, /* 0df9 */ NULL, /* 0dfa */ NULL, /* 0dfb */ NULL, /* 0dfc */ NULL, /* 0dfd */ NULL, /* 0dfe */ NULL, /* 0dff */ NULL, /* 0e00 */ NULL, /* 0e01 */ NULL, /* 0e02 */ NULL, /* 0e03 */ NULL, /* 0e04 */ NULL, /* 0e05 */ NULL, /* 0e06 */ NULL, /* 0e07 */ NULL, /* 0e08 */ NULL, /* 0e09 */ NULL, /* 0e0a */ NULL, /* 0e0b */ NULL, /* 0e0c */ NULL, /* 0e0d */ NULL, /* 0e0e */ NULL, /* 0e0f */ NULL, /* 0e10 */ NULL, /* 0e11 */ NULL, /* 0e12 */ NULL, /* 0e13 */ NULL, /* 0e14 */ NULL, /* 0e15 */ NULL, /* 0e16 */ NULL, /* 0e17 */ NULL, /* 0e18 */ NULL, /* 0e19 */ NULL, /* 0e1a */ NULL, /* 0e1b */ NULL, /* 0e1c */ NULL, /* 0e1d */ NULL, /* 0e1e */ NULL, /* 0e1f */ NULL, /* 0e20 */ NULL, /* 0e21 */ NULL, /* 0e22 */ NULL, /* 0e23 */ NULL, /* 0e24 */ NULL, /* 0e25 */ NULL, /* 0e26 */ NULL, /* 0e27 */ NULL, /* 0e28 */ NULL, /* 0e29 */ NULL, /* 0e2a */ NULL, /* 0e2b */ NULL, /* 0e2c */ NULL, /* 0e2d */ NULL, /* 0e2e */ NULL, /* 0e2f */ NULL, /* 0e30 */ NULL, /* 0e31 */ NULL, /* 0e32 */ NULL, /* 0e33 */ NULL, /* 0e34 */ NULL, /* 0e35 */ NULL, /* 0e36 */ NULL, /* 0e37 */ NULL, /* 0e38 */ NULL, /* 0e39 */ NULL, /* 0e3a */ NULL, /* 0e3b */ NULL, /* 0e3c */ NULL, /* 0e3d */ NULL, /* 0e3e */ NULL, /* 0e3f */ NULL, /* 0e40 */ NULL, /* 0e41 */ NULL, /* 0e42 */ NULL, /* 0e43 */ NULL, /* 0e44 */ NULL, /* 0e45 */ NULL, /* 0e46 */ NULL, /* 0e47 */ NULL, /* 0e48 */ NULL, /* 0e49 */ NULL, /* 0e4a */ NULL, /* 0e4b */ NULL, /* 0e4c */ NULL, /* 0e4d */ NULL, /* 0e4e */ NULL, /* 0e4f */ NULL, /* 0e50 */ NULL, /* 0e51 */ NULL, /* 0e52 */ NULL, /* 0e53 */ NULL, /* 0e54 */ NULL, /* 0e55 */ NULL, /* 0e56 */ NULL, /* 0e57 */ NULL, /* 0e58 */ NULL, /* 0e59 */ NULL, /* 0e5a */ NULL, /* 0e5b */ NULL, /* 0e5c */ NULL, /* 0e5d */ NULL, /* 0e5e */ NULL, /* 0e5f */ NULL, /* 0e60 */ NULL, /* 0e61 */ NULL, /* 0e62 */ NULL, /* 0e63 */ NULL, /* 0e64 */ NULL, /* 0e65 */ NULL, /* 0e66 */ NULL, /* 0e67 */ NULL, /* 0e68 */ NULL, /* 0e69 */ NULL, /* 0e6a */ NULL, /* 0e6b */ NULL, /* 0e6c */ NULL, /* 0e6d */ NULL, /* 0e6e */ NULL, /* 0e6f */ NULL, /* 0e70 */ NULL, /* 0e71 */ NULL, /* 0e72 */ NULL, /* 0e73 */ NULL, /* 0e74 */ NULL, /* 0e75 */ NULL, /* 0e76 */ NULL, /* 0e77 */ NULL, /* 0e78 */ NULL, /* 0e79 */ NULL, /* 0e7a */ NULL, /* 0e7b */ NULL, /* 0e7c */ NULL, /* 0e7d */ NULL, /* 0e7e */ NULL, /* 0e7f */ NULL, /* 0e80 */ NULL, /* 0e81 */ NULL, /* 0e82 */ NULL, /* 0e83 */ NULL, /* 0e84 */ NULL, /* 0e85 */ NULL, /* 0e86 */ NULL, /* 0e87 */ NULL, /* 0e88 */ NULL, /* 0e89 */ NULL, /* 0e8a */ NULL, /* 0e8b */ NULL, /* 0e8c */ NULL, /* 0e8d */ NULL, /* 0e8e */ NULL, /* 0e8f */ NULL, /* 0e90 */ NULL, /* 0e91 */ NULL, /* 0e92 */ NULL, /* 0e93 */ NULL, /* 0e94 */ NULL, /* 0e95 */ NULL, /* 0e96 */ NULL, /* 0e97 */ NULL, /* 0e98 */ NULL, /* 0e99 */ NULL, /* 0e9a */ NULL, /* 0e9b */ NULL, /* 0e9c */ NULL, /* 0e9d */ NULL, /* 0e9e */ NULL, /* 0e9f */ NULL, /* 0ea0 */ NULL, /* 0ea1 */ NULL, /* 0ea2 */ NULL, /* 0ea3 */ NULL, /* 0ea4 */ NULL, /* 0ea5 */ NULL, /* 0ea6 */ NULL, /* 0ea7 */ NULL, /* 0ea8 */ NULL, /* 0ea9 */ NULL, /* 0eaa */ NULL, /* 0eab */ NULL, /* 0eac */ NULL, /* 0ead */ NULL, /* 0eae */ NULL, /* 0eaf */ NULL, /* 0eb0 */ NULL, /* 0eb1 */ NULL, /* 0eb2 */ NULL, /* 0eb3 */ NULL, /* 0eb4 */ NULL, /* 0eb5 */ NULL, /* 0eb6 */ NULL, /* 0eb7 */ NULL, /* 0eb8 */ NULL, /* 0eb9 */ NULL, /* 0eba */ NULL, /* 0ebb */ NULL, /* 0ebc */ NULL, /* 0ebd */ NULL, /* 0ebe */ NULL, /* 0ebf */ NULL, /* 0ec0 */ NULL, /* 0ec1 */ NULL, /* 0ec2 */ NULL, /* 0ec3 */ NULL, /* 0ec4 */ NULL, /* 0ec5 */ NULL, /* 0ec6 */ NULL, /* 0ec7 */ NULL, /* 0ec8 */ NULL, /* 0ec9 */ NULL, /* 0eca */ NULL, /* 0ecb */ NULL, /* 0ecc */ NULL, /* 0ecd */ NULL, /* 0ece */ NULL, /* 0ecf */ NULL, /* 0ed0 */ NULL, /* 0ed1 */ NULL, /* 0ed2 */ NULL, /* 0ed3 */ NULL, /* 0ed4 */ NULL, /* 0ed5 */ NULL, /* 0ed6 */ NULL, /* 0ed7 */ NULL, /* 0ed8 */ NULL, /* 0ed9 */ NULL, /* 0eda */ NULL, /* 0edb */ NULL, /* 0edc */ NULL, /* 0edd */ NULL, /* 0ede */ NULL, /* 0edf */ NULL, /* 0ee0 */ NULL, /* 0ee1 */ NULL, /* 0ee2 */ NULL, /* 0ee3 */ NULL, /* 0ee4 */ NULL, /* 0ee5 */ NULL, /* 0ee6 */ NULL, /* 0ee7 */ NULL, /* 0ee8 */ NULL, /* 0ee9 */ NULL, /* 0eea */ NULL, /* 0eeb */ NULL, /* 0eec */ NULL, /* 0eed */ NULL, /* 0eee */ NULL, /* 0eef */ NULL, /* 0ef0 */ NULL, /* 0ef1 */ NULL, /* 0ef2 */ NULL, /* 0ef3 */ NULL, /* 0ef4 */ NULL, /* 0ef5 */ NULL, /* 0ef6 */ NULL, /* 0ef7 */ NULL, /* 0ef8 */ NULL, /* 0ef9 */ NULL, /* 0efa */ NULL, /* 0efb */ NULL, /* 0efc */ NULL, /* 0efd */ NULL, /* 0efe */ NULL, /* 0eff */ NULL, /* 0f00 */ NULL, /* 0f01 */ NULL, /* 0f02 */ NULL, /* 0f03 */ NULL, /* 0f04 */ NULL, /* 0f05 */ NULL, /* 0f06 */ NULL, /* 0f07 */ NULL, /* 0f08 */ NULL, /* 0f09 */ NULL, /* 0f0a */ NULL, /* 0f0b */ NULL, /* 0f0c */ NULL, /* 0f0d */ NULL, /* 0f0e */ NULL, /* 0f0f */ NULL, /* 0f10 */ NULL, /* 0f11 */ NULL, /* 0f12 */ NULL, /* 0f13 */ NULL, /* 0f14 */ NULL, /* 0f15 */ NULL, /* 0f16 */ NULL, /* 0f17 */ NULL, /* 0f18 */ NULL, /* 0f19 */ NULL, /* 0f1a */ NULL, /* 0f1b */ NULL, /* 0f1c */ NULL, /* 0f1d */ NULL, /* 0f1e */ NULL, /* 0f1f */ NULL, /* 0f20 */ NULL, /* 0f21 */ NULL, /* 0f22 */ NULL, /* 0f23 */ NULL, /* 0f24 */ NULL, /* 0f25 */ NULL, /* 0f26 */ NULL, /* 0f27 */ NULL, /* 0f28 */ NULL, /* 0f29 */ NULL, /* 0f2a */ NULL, /* 0f2b */ NULL, /* 0f2c */ NULL, /* 0f2d */ NULL, /* 0f2e */ NULL, /* 0f2f */ NULL, /* 0f30 */ NULL, /* 0f31 */ NULL, /* 0f32 */ NULL, /* 0f33 */ NULL, /* 0f34 */ NULL, /* 0f35 */ NULL, /* 0f36 */ NULL, /* 0f37 */ NULL, /* 0f38 */ NULL, /* 0f39 */ NULL, /* 0f3a */ NULL, /* 0f3b */ NULL, /* 0f3c */ NULL, /* 0f3d */ NULL, /* 0f3e */ NULL, /* 0f3f */ NULL, /* 0f40 */ NULL, /* 0f41 */ NULL, /* 0f42 */ NULL, /* 0f43 */ NULL, /* 0f44 */ NULL, /* 0f45 */ NULL, /* 0f46 */ NULL, /* 0f47 */ NULL, /* 0f48 */ NULL, /* 0f49 */ NULL, /* 0f4a */ NULL, /* 0f4b */ NULL, /* 0f4c */ NULL, /* 0f4d */ NULL, /* 0f4e */ NULL, /* 0f4f */ NULL, /* 0f50 */ NULL, /* 0f51 */ NULL, /* 0f52 */ NULL, /* 0f53 */ NULL, /* 0f54 */ NULL, /* 0f55 */ NULL, /* 0f56 */ NULL, /* 0f57 */ NULL, /* 0f58 */ NULL, /* 0f59 */ NULL, /* 0f5a */ NULL, /* 0f5b */ NULL, /* 0f5c */ NULL, /* 0f5d */ NULL, /* 0f5e */ NULL, /* 0f5f */ NULL, /* 0f60 */ NULL, /* 0f61 */ NULL, /* 0f62 */ NULL, /* 0f63 */ NULL, /* 0f64 */ NULL, /* 0f65 */ NULL, /* 0f66 */ NULL, /* 0f67 */ NULL, /* 0f68 */ NULL, /* 0f69 */ NULL, /* 0f6a */ NULL, /* 0f6b */ NULL, /* 0f6c */ NULL, /* 0f6d */ NULL, /* 0f6e */ NULL, /* 0f6f */ NULL, /* 0f70 */ NULL, /* 0f71 */ NULL, /* 0f72 */ NULL, /* 0f73 */ NULL, /* 0f74 */ NULL, /* 0f75 */ NULL, /* 0f76 */ NULL, /* 0f77 */ NULL, /* 0f78 */ NULL, /* 0f79 */ NULL, /* 0f7a */ NULL, /* 0f7b */ NULL, /* 0f7c */ NULL, /* 0f7d */ NULL, /* 0f7e */ NULL, /* 0f7f */ NULL, /* 0f80 */ NULL, /* 0f81 */ NULL, /* 0f82 */ NULL, /* 0f83 */ NULL, /* 0f84 */ NULL, /* 0f85 */ NULL, /* 0f86 */ NULL, /* 0f87 */ NULL, /* 0f88 */ NULL, /* 0f89 */ NULL, /* 0f8a */ NULL, /* 0f8b */ NULL, /* 0f8c */ NULL, /* 0f8d */ NULL, /* 0f8e */ NULL, /* 0f8f */ NULL, /* 0f90 */ NULL, /* 0f91 */ NULL, /* 0f92 */ NULL, /* 0f93 */ NULL, /* 0f94 */ NULL, /* 0f95 */ NULL, /* 0f96 */ NULL, /* 0f97 */ NULL, /* 0f98 */ NULL, /* 0f99 */ NULL, /* 0f9a */ NULL, /* 0f9b */ NULL, /* 0f9c */ NULL, /* 0f9d */ NULL, /* 0f9e */ NULL, /* 0f9f */ NULL, /* 0fa0 */ NULL, /* 0fa1 */ NULL, /* 0fa2 */ NULL, /* 0fa3 */ NULL, /* 0fa4 */ NULL, /* 0fa5 */ NULL, /* 0fa6 */ NULL, /* 0fa7 */ NULL, /* 0fa8 */ NULL, /* 0fa9 */ NULL, /* 0faa */ NULL, /* 0fab */ NULL, /* 0fac */ NULL, /* 0fad */ NULL, /* 0fae */ NULL, /* 0faf */ NULL, /* 0fb0 */ NULL, /* 0fb1 */ NULL, /* 0fb2 */ NULL, /* 0fb3 */ NULL, /* 0fb4 */ NULL, /* 0fb5 */ NULL, /* 0fb6 */ NULL, /* 0fb7 */ NULL, /* 0fb8 */ NULL, /* 0fb9 */ NULL, /* 0fba */ NULL, /* 0fbb */ NULL, /* 0fbc */ NULL, /* 0fbd */ NULL, /* 0fbe */ NULL, /* 0fbf */ NULL, /* 0fc0 */ NULL, /* 0fc1 */ NULL, /* 0fc2 */ NULL, /* 0fc3 */ NULL, /* 0fc4 */ NULL, /* 0fc5 */ NULL, /* 0fc6 */ NULL, /* 0fc7 */ NULL, /* 0fc8 */ NULL, /* 0fc9 */ NULL, /* 0fca */ NULL, /* 0fcb */ NULL, /* 0fcc */ NULL, /* 0fcd */ NULL, /* 0fce */ NULL, /* 0fcf */ NULL, /* 0fd0 */ NULL, /* 0fd1 */ NULL, /* 0fd2 */ NULL, /* 0fd3 */ NULL, /* 0fd4 */ NULL, /* 0fd5 */ NULL, /* 0fd6 */ NULL, /* 0fd7 */ NULL, /* 0fd8 */ NULL, /* 0fd9 */ NULL, /* 0fda */ NULL, /* 0fdb */ NULL, /* 0fdc */ NULL, /* 0fdd */ NULL, /* 0fde */ NULL, /* 0fdf */ NULL, /* 0fe0 */ NULL, /* 0fe1 */ NULL, /* 0fe2 */ NULL, /* 0fe3 */ NULL, /* 0fe4 */ NULL, /* 0fe5 */ NULL, /* 0fe6 */ NULL, /* 0fe7 */ NULL, /* 0fe8 */ NULL, /* 0fe9 */ NULL, /* 0fea */ NULL, /* 0feb */ NULL, /* 0fec */ NULL, /* 0fed */ NULL, /* 0fee */ NULL, /* 0fef */ NULL, /* 0ff0 */ NULL, /* 0ff1 */ NULL, /* 0ff2 */ NULL, /* 0ff3 */ NULL, /* 0ff4 */ NULL, /* 0ff5 */ NULL, /* 0ff6 */ NULL, /* 0ff7 */ NULL, /* 0ff8 */ NULL, /* 0ff9 */ NULL, /* 0ffa */ NULL, /* 0ffb */ NULL, /* 0ffc */ NULL, /* 0ffd */ NULL, /* 0ffe */ NULL, /* 0fff */ NULL, /* 1000 */ NULL, /* 1001 */ NULL, /* 1002 */ NULL, /* 1003 */ NULL, /* 1004 */ NULL, /* 1005 */ NULL, /* 1006 */ NULL, /* 1007 */ NULL, /* 1008 */ NULL, /* 1009 */ NULL, /* 100a */ NULL, /* 100b */ NULL, /* 100c */ NULL, /* 100d */ NULL, /* 100e */ NULL, /* 100f */ NULL, /* 1010 */ NULL, /* 1011 */ NULL, /* 1012 */ NULL, /* 1013 */ NULL, /* 1014 */ NULL, /* 1015 */ NULL, /* 1016 */ NULL, /* 1017 */ NULL, /* 1018 */ NULL, /* 1019 */ NULL, /* 101a */ NULL, /* 101b */ NULL, /* 101c */ NULL, /* 101d */ NULL, /* 101e */ NULL, /* 101f */ NULL, /* 1020 */ NULL, /* 1021 */ NULL, /* 1022 */ NULL, /* 1023 */ NULL, /* 1024 */ NULL, /* 1025 */ NULL, /* 1026 */ NULL, /* 1027 */ NULL, /* 1028 */ NULL, /* 1029 */ NULL, /* 102a */ NULL, /* 102b */ NULL, /* 102c */ NULL, /* 102d */ NULL, /* 102e */ NULL, /* 102f */ NULL, /* 1030 */ NULL, /* 1031 */ NULL, /* 1032 */ NULL, /* 1033 */ NULL, /* 1034 */ NULL, /* 1035 */ NULL, /* 1036 */ NULL, /* 1037 */ NULL, /* 1038 */ NULL, /* 1039 */ NULL, /* 103a */ NULL, /* 103b */ NULL, /* 103c */ NULL, /* 103d */ NULL, /* 103e */ NULL, /* 103f */ NULL, /* 1040 */ NULL, /* 1041 */ NULL, /* 1042 */ NULL, /* 1043 */ NULL, /* 1044 */ NULL, /* 1045 */ NULL, /* 1046 */ NULL, /* 1047 */ NULL, /* 1048 */ NULL, /* 1049 */ NULL, /* 104a */ NULL, /* 104b */ NULL, /* 104c */ NULL, /* 104d */ NULL, /* 104e */ NULL, /* 104f */ NULL, /* 1050 */ NULL, /* 1051 */ NULL, /* 1052 */ NULL, /* 1053 */ NULL, /* 1054 */ NULL, /* 1055 */ NULL, /* 1056 */ NULL, /* 1057 */ NULL, /* 1058 */ NULL, /* 1059 */ NULL, /* 105a */ NULL, /* 105b */ NULL, /* 105c */ NULL, /* 105d */ NULL, /* 105e */ NULL, /* 105f */ NULL, /* 1060 */ NULL, /* 1061 */ NULL, /* 1062 */ NULL, /* 1063 */ NULL, /* 1064 */ NULL, /* 1065 */ NULL, /* 1066 */ NULL, /* 1067 */ NULL, /* 1068 */ NULL, /* 1069 */ NULL, /* 106a */ NULL, /* 106b */ NULL, /* 106c */ NULL, /* 106d */ NULL, /* 106e */ NULL, /* 106f */ NULL, /* 1070 */ NULL, /* 1071 */ NULL, /* 1072 */ NULL, /* 1073 */ NULL, /* 1074 */ NULL, /* 1075 */ NULL, /* 1076 */ NULL, /* 1077 */ NULL, /* 1078 */ NULL, /* 1079 */ NULL, /* 107a */ NULL, /* 107b */ NULL, /* 107c */ NULL, /* 107d */ NULL, /* 107e */ NULL, /* 107f */ NULL, /* 1080 */ NULL, /* 1081 */ NULL, /* 1082 */ NULL, /* 1083 */ NULL, /* 1084 */ NULL, /* 1085 */ NULL, /* 1086 */ NULL, /* 1087 */ NULL, /* 1088 */ NULL, /* 1089 */ NULL, /* 108a */ NULL, /* 108b */ NULL, /* 108c */ NULL, /* 108d */ NULL, /* 108e */ NULL, /* 108f */ NULL, /* 1090 */ NULL, /* 1091 */ NULL, /* 1092 */ NULL, /* 1093 */ NULL, /* 1094 */ NULL, /* 1095 */ NULL, /* 1096 */ NULL, /* 1097 */ NULL, /* 1098 */ NULL, /* 1099 */ NULL, /* 109a */ NULL, /* 109b */ NULL, /* 109c */ NULL, /* 109d */ NULL, /* 109e */ NULL, /* 109f */ NULL, /* 10a0 */ NULL, /* 10a1 */ NULL, /* 10a2 */ NULL, /* 10a3 */ NULL, /* 10a4 */ NULL, /* 10a5 */ NULL, /* 10a6 */ NULL, /* 10a7 */ NULL, /* 10a8 */ NULL, /* 10a9 */ NULL, /* 10aa */ NULL, /* 10ab */ NULL, /* 10ac */ NULL, /* 10ad */ NULL, /* 10ae */ NULL, /* 10af */ NULL, /* 10b0 */ NULL, /* 10b1 */ NULL, /* 10b2 */ NULL, /* 10b3 */ NULL, /* 10b4 */ NULL, /* 10b5 */ NULL, /* 10b6 */ NULL, /* 10b7 */ NULL, /* 10b8 */ NULL, /* 10b9 */ NULL, /* 10ba */ NULL, /* 10bb */ NULL, /* 10bc */ NULL, /* 10bd */ NULL, /* 10be */ NULL, /* 10bf */ NULL, /* 10c0 */ NULL, /* 10c1 */ NULL, /* 10c2 */ NULL, /* 10c3 */ NULL, /* 10c4 */ NULL, /* 10c5 */ NULL, /* 10c6 */ NULL, /* 10c7 */ NULL, /* 10c8 */ NULL, /* 10c9 */ NULL, /* 10ca */ NULL, /* 10cb */ NULL, /* 10cc */ NULL, /* 10cd */ NULL, /* 10ce */ NULL, /* 10cf */ NULL, /* 10d0 */ NULL, /* 10d1 */ NULL, /* 10d2 */ NULL, /* 10d3 */ NULL, /* 10d4 */ NULL, /* 10d5 */ NULL, /* 10d6 */ NULL, /* 10d7 */ NULL, /* 10d8 */ NULL, /* 10d9 */ NULL, /* 10da */ NULL, /* 10db */ NULL, /* 10dc */ NULL, /* 10dd */ NULL, /* 10de */ NULL, /* 10df */ NULL, /* 10e0 */ NULL, /* 10e1 */ NULL, /* 10e2 */ NULL, /* 10e3 */ NULL, /* 10e4 */ NULL, /* 10e5 */ NULL, /* 10e6 */ NULL, /* 10e7 */ NULL, /* 10e8 */ NULL, /* 10e9 */ NULL, /* 10ea */ NULL, /* 10eb */ NULL, /* 10ec */ NULL, /* 10ed */ NULL, /* 10ee */ NULL, /* 10ef */ NULL, /* 10f0 */ NULL, /* 10f1 */ NULL, /* 10f2 */ NULL, /* 10f3 */ NULL, /* 10f4 */ NULL, /* 10f5 */ NULL, /* 10f6 */ NULL, /* 10f7 */ NULL, /* 10f8 */ NULL, /* 10f9 */ NULL, /* 10fa */ NULL, /* 10fb */ NULL, /* 10fc */ NULL, /* 10fd */ NULL, /* 10fe */ NULL, /* 10ff */ NULL, /* 1100 */ NULL, /* 1101 */ NULL, /* 1102 */ NULL, /* 1103 */ NULL, /* 1104 */ NULL, /* 1105 */ NULL, /* 1106 */ NULL, /* 1107 */ NULL, /* 1108 */ NULL, /* 1109 */ NULL, /* 110a */ NULL, /* 110b */ NULL, /* 110c */ NULL, /* 110d */ NULL, /* 110e */ NULL, /* 110f */ NULL, /* 1110 */ NULL, /* 1111 */ NULL, /* 1112 */ NULL, /* 1113 */ NULL, /* 1114 */ NULL, /* 1115 */ NULL, /* 1116 */ NULL, /* 1117 */ NULL, /* 1118 */ NULL, /* 1119 */ NULL, /* 111a */ NULL, /* 111b */ NULL, /* 111c */ NULL, /* 111d */ NULL, /* 111e */ NULL, /* 111f */ NULL, /* 1120 */ NULL, /* 1121 */ NULL, /* 1122 */ NULL, /* 1123 */ NULL, /* 1124 */ NULL, /* 1125 */ NULL, /* 1126 */ NULL, /* 1127 */ NULL, /* 1128 */ NULL, /* 1129 */ NULL, /* 112a */ NULL, /* 112b */ NULL, /* 112c */ NULL, /* 112d */ NULL, /* 112e */ NULL, /* 112f */ NULL, /* 1130 */ NULL, /* 1131 */ NULL, /* 1132 */ NULL, /* 1133 */ NULL, /* 1134 */ NULL, /* 1135 */ NULL, /* 1136 */ NULL, /* 1137 */ NULL, /* 1138 */ NULL, /* 1139 */ NULL, /* 113a */ NULL, /* 113b */ NULL, /* 113c */ NULL, /* 113d */ NULL, /* 113e */ NULL, /* 113f */ NULL, /* 1140 */ NULL, /* 1141 */ NULL, /* 1142 */ NULL, /* 1143 */ NULL, /* 1144 */ NULL, /* 1145 */ NULL, /* 1146 */ NULL, /* 1147 */ NULL, /* 1148 */ NULL, /* 1149 */ NULL, /* 114a */ NULL, /* 114b */ NULL, /* 114c */ NULL, /* 114d */ NULL, /* 114e */ NULL, /* 114f */ NULL, /* 1150 */ NULL, /* 1151 */ NULL, /* 1152 */ NULL, /* 1153 */ NULL, /* 1154 */ NULL, /* 1155 */ NULL, /* 1156 */ NULL, /* 1157 */ NULL, /* 1158 */ NULL, /* 1159 */ NULL, /* 115a */ NULL, /* 115b */ NULL, /* 115c */ NULL, /* 115d */ NULL, /* 115e */ NULL, /* 115f */ NULL, /* 1160 */ NULL, /* 1161 */ NULL, /* 1162 */ NULL, /* 1163 */ NULL, /* 1164 */ NULL, /* 1165 */ NULL, /* 1166 */ NULL, /* 1167 */ NULL, /* 1168 */ NULL, /* 1169 */ NULL, /* 116a */ NULL, /* 116b */ NULL, /* 116c */ NULL, /* 116d */ NULL, /* 116e */ NULL, /* 116f */ NULL, /* 1170 */ NULL, /* 1171 */ NULL, /* 1172 */ NULL, /* 1173 */ NULL, /* 1174 */ NULL, /* 1175 */ NULL, /* 1176 */ NULL, /* 1177 */ NULL, /* 1178 */ NULL, /* 1179 */ NULL, /* 117a */ NULL, /* 117b */ NULL, /* 117c */ NULL, /* 117d */ NULL, /* 117e */ NULL, /* 117f */ NULL, /* 1180 */ NULL, /* 1181 */ NULL, /* 1182 */ NULL, /* 1183 */ NULL, /* 1184 */ NULL, /* 1185 */ NULL, /* 1186 */ NULL, /* 1187 */ NULL, /* 1188 */ NULL, /* 1189 */ NULL, /* 118a */ NULL, /* 118b */ NULL, /* 118c */ NULL, /* 118d */ NULL, /* 118e */ NULL, /* 118f */ NULL, /* 1190 */ NULL, /* 1191 */ NULL, /* 1192 */ NULL, /* 1193 */ NULL, /* 1194 */ NULL, /* 1195 */ NULL, /* 1196 */ NULL, /* 1197 */ NULL, /* 1198 */ NULL, /* 1199 */ NULL, /* 119a */ NULL, /* 119b */ NULL, /* 119c */ NULL, /* 119d */ NULL, /* 119e */ NULL, /* 119f */ NULL, /* 11a0 */ NULL, /* 11a1 */ NULL, /* 11a2 */ NULL, /* 11a3 */ NULL, /* 11a4 */ NULL, /* 11a5 */ NULL, /* 11a6 */ NULL, /* 11a7 */ NULL, /* 11a8 */ NULL, /* 11a9 */ NULL, /* 11aa */ NULL, /* 11ab */ NULL, /* 11ac */ NULL, /* 11ad */ NULL, /* 11ae */ NULL, /* 11af */ NULL, /* 11b0 */ NULL, /* 11b1 */ NULL, /* 11b2 */ NULL, /* 11b3 */ NULL, /* 11b4 */ NULL, /* 11b5 */ NULL, /* 11b6 */ NULL, /* 11b7 */ NULL, /* 11b8 */ NULL, /* 11b9 */ NULL, /* 11ba */ NULL, /* 11bb */ NULL, /* 11bc */ NULL, /* 11bd */ NULL, /* 11be */ NULL, /* 11bf */ NULL, /* 11c0 */ NULL, /* 11c1 */ NULL, /* 11c2 */ NULL, /* 11c3 */ NULL, /* 11c4 */ NULL, /* 11c5 */ NULL, /* 11c6 */ NULL, /* 11c7 */ NULL, /* 11c8 */ NULL, /* 11c9 */ NULL, /* 11ca */ NULL, /* 11cb */ NULL, /* 11cc */ NULL, /* 11cd */ NULL, /* 11ce */ NULL, /* 11cf */ NULL, /* 11d0 */ NULL, /* 11d1 */ NULL, /* 11d2 */ NULL, /* 11d3 */ NULL, /* 11d4 */ NULL, /* 11d5 */ NULL, /* 11d6 */ NULL, /* 11d7 */ NULL, /* 11d8 */ NULL, /* 11d9 */ NULL, /* 11da */ NULL, /* 11db */ NULL, /* 11dc */ NULL, /* 11dd */ NULL, /* 11de */ NULL, /* 11df */ NULL, /* 11e0 */ NULL, /* 11e1 */ NULL, /* 11e2 */ NULL, /* 11e3 */ NULL, /* 11e4 */ NULL, /* 11e5 */ NULL, /* 11e6 */ NULL, /* 11e7 */ NULL, /* 11e8 */ NULL, /* 11e9 */ NULL, /* 11ea */ NULL, /* 11eb */ NULL, /* 11ec */ NULL, /* 11ed */ NULL, /* 11ee */ NULL, /* 11ef */ NULL, /* 11f0 */ NULL, /* 11f1 */ NULL, /* 11f2 */ NULL, /* 11f3 */ NULL, /* 11f4 */ NULL, /* 11f5 */ NULL, /* 11f6 */ NULL, /* 11f7 */ NULL, /* 11f8 */ NULL, /* 11f9 */ NULL, /* 11fa */ NULL, /* 11fb */ NULL, /* 11fc */ NULL, /* 11fd */ NULL, /* 11fe */ NULL, /* 11ff */ NULL, /* 1200 */ NULL, /* 1201 */ NULL, /* 1202 */ NULL, /* 1203 */ NULL, /* 1204 */ NULL, /* 1205 */ NULL, /* 1206 */ NULL, /* 1207 */ NULL, /* 1208 */ NULL, /* 1209 */ NULL, /* 120a */ NULL, /* 120b */ NULL, /* 120c */ NULL, /* 120d */ NULL, /* 120e */ NULL, /* 120f */ NULL, /* 1210 */ NULL, /* 1211 */ NULL, /* 1212 */ NULL, /* 1213 */ NULL, /* 1214 */ NULL, /* 1215 */ NULL, /* 1216 */ NULL, /* 1217 */ NULL, /* 1218 */ NULL, /* 1219 */ NULL, /* 121a */ NULL, /* 121b */ NULL, /* 121c */ NULL, /* 121d */ NULL, /* 121e */ NULL, /* 121f */ NULL, /* 1220 */ NULL, /* 1221 */ NULL, /* 1222 */ NULL, /* 1223 */ NULL, /* 1224 */ NULL, /* 1225 */ NULL, /* 1226 */ NULL, /* 1227 */ NULL, /* 1228 */ NULL, /* 1229 */ NULL, /* 122a */ NULL, /* 122b */ NULL, /* 122c */ NULL, /* 122d */ NULL, /* 122e */ NULL, /* 122f */ NULL, /* 1230 */ NULL, /* 1231 */ NULL, /* 1232 */ NULL, /* 1233 */ NULL, /* 1234 */ NULL, /* 1235 */ NULL, /* 1236 */ NULL, /* 1237 */ NULL, /* 1238 */ NULL, /* 1239 */ NULL, /* 123a */ NULL, /* 123b */ NULL, /* 123c */ NULL, /* 123d */ NULL, /* 123e */ NULL, /* 123f */ NULL, /* 1240 */ NULL, /* 1241 */ NULL, /* 1242 */ NULL, /* 1243 */ NULL, /* 1244 */ NULL, /* 1245 */ NULL, /* 1246 */ NULL, /* 1247 */ NULL, /* 1248 */ NULL, /* 1249 */ NULL, /* 124a */ NULL, /* 124b */ NULL, /* 124c */ NULL, /* 124d */ NULL, /* 124e */ NULL, /* 124f */ NULL, /* 1250 */ NULL, /* 1251 */ NULL, /* 1252 */ NULL, /* 1253 */ NULL, /* 1254 */ NULL, /* 1255 */ NULL, /* 1256 */ NULL, /* 1257 */ NULL, /* 1258 */ NULL, /* 1259 */ NULL, /* 125a */ NULL, /* 125b */ NULL, /* 125c */ NULL, /* 125d */ NULL, /* 125e */ NULL, /* 125f */ NULL, /* 1260 */ NULL, /* 1261 */ NULL, /* 1262 */ NULL, /* 1263 */ NULL, /* 1264 */ NULL, /* 1265 */ NULL, /* 1266 */ NULL, /* 1267 */ NULL, /* 1268 */ NULL, /* 1269 */ NULL, /* 126a */ NULL, /* 126b */ NULL, /* 126c */ NULL, /* 126d */ NULL, /* 126e */ NULL, /* 126f */ NULL, /* 1270 */ NULL, /* 1271 */ NULL, /* 1272 */ NULL, /* 1273 */ NULL, /* 1274 */ NULL, /* 1275 */ NULL, /* 1276 */ NULL, /* 1277 */ NULL, /* 1278 */ NULL, /* 1279 */ NULL, /* 127a */ NULL, /* 127b */ NULL, /* 127c */ NULL, /* 127d */ NULL, /* 127e */ NULL, /* 127f */ NULL, /* 1280 */ NULL, /* 1281 */ NULL, /* 1282 */ NULL, /* 1283 */ NULL, /* 1284 */ NULL, /* 1285 */ NULL, /* 1286 */ NULL, /* 1287 */ NULL, /* 1288 */ NULL, /* 1289 */ NULL, /* 128a */ NULL, /* 128b */ NULL, /* 128c */ NULL, /* 128d */ NULL, /* 128e */ NULL, /* 128f */ NULL, /* 1290 */ NULL, /* 1291 */ NULL, /* 1292 */ NULL, /* 1293 */ NULL, /* 1294 */ NULL, /* 1295 */ NULL, /* 1296 */ NULL, /* 1297 */ NULL, /* 1298 */ NULL, /* 1299 */ NULL, /* 129a */ NULL, /* 129b */ NULL, /* 129c */ NULL, /* 129d */ NULL, /* 129e */ NULL, /* 129f */ NULL, /* 12a0 */ NULL, /* 12a1 */ NULL, /* 12a2 */ NULL, /* 12a3 */ NULL, /* 12a4 */ NULL, /* 12a5 */ NULL, /* 12a6 */ NULL, /* 12a7 */ NULL, /* 12a8 */ NULL, /* 12a9 */ NULL, /* 12aa */ NULL, /* 12ab */ NULL, /* 12ac */ NULL, /* 12ad */ NULL, /* 12ae */ NULL, /* 12af */ NULL, /* 12b0 */ NULL, /* 12b1 */ NULL, /* 12b2 */ NULL, /* 12b3 */ NULL, /* 12b4 */ NULL, /* 12b5 */ NULL, /* 12b6 */ NULL, /* 12b7 */ NULL, /* 12b8 */ NULL, /* 12b9 */ NULL, /* 12ba */ NULL, /* 12bb */ NULL, /* 12bc */ NULL, /* 12bd */ NULL, /* 12be */ NULL, /* 12bf */ NULL, /* 12c0 */ NULL, /* 12c1 */ NULL, /* 12c2 */ NULL, /* 12c3 */ NULL, /* 12c4 */ NULL, /* 12c5 */ NULL, /* 12c6 */ NULL, /* 12c7 */ NULL, /* 12c8 */ NULL, /* 12c9 */ NULL, /* 12ca */ NULL, /* 12cb */ NULL, /* 12cc */ NULL, /* 12cd */ NULL, /* 12ce */ NULL, /* 12cf */ NULL, /* 12d0 */ NULL, /* 12d1 */ NULL, /* 12d2 */ NULL, /* 12d3 */ NULL, /* 12d4 */ NULL, /* 12d5 */ NULL, /* 12d6 */ NULL, /* 12d7 */ NULL, /* 12d8 */ NULL, /* 12d9 */ NULL, /* 12da */ NULL, /* 12db */ NULL, /* 12dc */ NULL, /* 12dd */ NULL, /* 12de */ NULL, /* 12df */ NULL, /* 12e0 */ NULL, /* 12e1 */ NULL, /* 12e2 */ NULL, /* 12e3 */ NULL, /* 12e4 */ NULL, /* 12e5 */ NULL, /* 12e6 */ NULL, /* 12e7 */ NULL, /* 12e8 */ NULL, /* 12e9 */ NULL, /* 12ea */ NULL, /* 12eb */ NULL, /* 12ec */ NULL, /* 12ed */ NULL, /* 12ee */ NULL, /* 12ef */ NULL, /* 12f0 */ NULL, /* 12f1 */ NULL, /* 12f2 */ NULL, /* 12f3 */ NULL, /* 12f4 */ NULL, /* 12f5 */ NULL, /* 12f6 */ NULL, /* 12f7 */ NULL, /* 12f8 */ NULL, /* 12f9 */ NULL, /* 12fa */ NULL, /* 12fb */ NULL, /* 12fc */ NULL, /* 12fd */ NULL, /* 12fe */ NULL, /* 12ff */ NULL, /* 1300 */ NULL, /* 1301 */ NULL, /* 1302 */ NULL, /* 1303 */ NULL, /* 1304 */ NULL, /* 1305 */ NULL, /* 1306 */ NULL, /* 1307 */ NULL, /* 1308 */ NULL, /* 1309 */ NULL, /* 130a */ NULL, /* 130b */ NULL, /* 130c */ NULL, /* 130d */ NULL, /* 130e */ NULL, /* 130f */ NULL, /* 1310 */ NULL, /* 1311 */ NULL, /* 1312 */ NULL, /* 1313 */ NULL, /* 1314 */ NULL, /* 1315 */ NULL, /* 1316 */ NULL, /* 1317 */ NULL, /* 1318 */ NULL, /* 1319 */ NULL, /* 131a */ NULL, /* 131b */ NULL, /* 131c */ NULL, /* 131d */ NULL, /* 131e */ NULL, /* 131f */ NULL, /* 1320 */ NULL, /* 1321 */ NULL, /* 1322 */ NULL, /* 1323 */ NULL, /* 1324 */ NULL, /* 1325 */ NULL, /* 1326 */ NULL, /* 1327 */ NULL, /* 1328 */ NULL, /* 1329 */ NULL, /* 132a */ NULL, /* 132b */ NULL, /* 132c */ NULL, /* 132d */ NULL, /* 132e */ NULL, /* 132f */ NULL, /* 1330 */ NULL, /* 1331 */ NULL, /* 1332 */ NULL, /* 1333 */ NULL, /* 1334 */ NULL, /* 1335 */ NULL, /* 1336 */ NULL, /* 1337 */ NULL, /* 1338 */ NULL, /* 1339 */ NULL, /* 133a */ NULL, /* 133b */ NULL, /* 133c */ NULL, /* 133d */ NULL, /* 133e */ NULL, /* 133f */ NULL, /* 1340 */ NULL, /* 1341 */ NULL, /* 1342 */ NULL, /* 1343 */ NULL, /* 1344 */ NULL, /* 1345 */ NULL, /* 1346 */ NULL, /* 1347 */ NULL, /* 1348 */ NULL, /* 1349 */ NULL, /* 134a */ NULL, /* 134b */ NULL, /* 134c */ NULL, /* 134d */ NULL, /* 134e */ NULL, /* 134f */ NULL, /* 1350 */ NULL, /* 1351 */ NULL, /* 1352 */ NULL, /* 1353 */ NULL, /* 1354 */ NULL, /* 1355 */ NULL, /* 1356 */ NULL, /* 1357 */ NULL, /* 1358 */ NULL, /* 1359 */ NULL, /* 135a */ NULL, /* 135b */ NULL, /* 135c */ NULL, /* 135d */ NULL, /* 135e */ NULL, /* 135f */ NULL, /* 1360 */ NULL, /* 1361 */ NULL, /* 1362 */ NULL, /* 1363 */ NULL, /* 1364 */ NULL, /* 1365 */ NULL, /* 1366 */ NULL, /* 1367 */ NULL, /* 1368 */ NULL, /* 1369 */ NULL, /* 136a */ NULL, /* 136b */ NULL, /* 136c */ NULL, /* 136d */ NULL, /* 136e */ NULL, /* 136f */ NULL, /* 1370 */ NULL, /* 1371 */ NULL, /* 1372 */ NULL, /* 1373 */ NULL, /* 1374 */ NULL, /* 1375 */ NULL, /* 1376 */ NULL, /* 1377 */ NULL, /* 1378 */ NULL, /* 1379 */ NULL, /* 137a */ NULL, /* 137b */ NULL, /* 137c */ NULL, /* 137d */ NULL, /* 137e */ NULL, /* 137f */ NULL, /* 1380 */ NULL, /* 1381 */ NULL, /* 1382 */ NULL, /* 1383 */ NULL, /* 1384 */ NULL, /* 1385 */ NULL, /* 1386 */ NULL, /* 1387 */ NULL, /* 1388 */ NULL, /* 1389 */ NULL, /* 138a */ NULL, /* 138b */ NULL, /* 138c */ NULL, /* 138d */ NULL, /* 138e */ NULL, /* 138f */ NULL, /* 1390 */ NULL, /* 1391 */ NULL, /* 1392 */ NULL, /* 1393 */ NULL, /* 1394 */ NULL, /* 1395 */ NULL, /* 1396 */ NULL, /* 1397 */ NULL, /* 1398 */ NULL, /* 1399 */ NULL, /* 139a */ NULL, /* 139b */ NULL, /* 139c */ NULL, /* 139d */ NULL, /* 139e */ NULL, /* 139f */ NULL, /* 13a0 */ NULL, /* 13a1 */ NULL, /* 13a2 */ NULL, /* 13a3 */ NULL, /* 13a4 */ NULL, /* 13a5 */ NULL, /* 13a6 */ NULL, /* 13a7 */ NULL, /* 13a8 */ NULL, /* 13a9 */ NULL, /* 13aa */ NULL, /* 13ab */ NULL, /* 13ac */ NULL, /* 13ad */ NULL, /* 13ae */ NULL, /* 13af */ NULL, /* 13b0 */ NULL, /* 13b1 */ NULL, /* 13b2 */ NULL, /* 13b3 */ NULL, /* 13b4 */ NULL, /* 13b5 */ NULL, /* 13b6 */ NULL, /* 13b7 */ NULL, /* 13b8 */ NULL, /* 13b9 */ NULL, /* 13ba */ NULL, /* 13bb */ NULL, /* 13bc */ NULL, /* 13bd */ NULL, /* 13be */ NULL, /* 13bf */ NULL, /* 13c0 */ NULL, /* 13c1 */ NULL, /* 13c2 */ NULL, /* 13c3 */ NULL, /* 13c4 */ NULL, /* 13c5 */ NULL, /* 13c6 */ NULL, /* 13c7 */ NULL, /* 13c8 */ NULL, /* 13c9 */ NULL, /* 13ca */ NULL, /* 13cb */ NULL, /* 13cc */ NULL, /* 13cd */ NULL, /* 13ce */ NULL, /* 13cf */ NULL, /* 13d0 */ NULL, /* 13d1 */ NULL, /* 13d2 */ NULL, /* 13d3 */ NULL, /* 13d4 */ NULL, /* 13d5 */ NULL, /* 13d6 */ NULL, /* 13d7 */ NULL, /* 13d8 */ NULL, /* 13d9 */ NULL, /* 13da */ NULL, /* 13db */ NULL, /* 13dc */ NULL, /* 13dd */ NULL, /* 13de */ NULL, /* 13df */ NULL, /* 13e0 */ NULL, /* 13e1 */ NULL, /* 13e2 */ NULL, /* 13e3 */ NULL, /* 13e4 */ NULL, /* 13e5 */ NULL, /* 13e6 */ NULL, /* 13e7 */ NULL, /* 13e8 */ NULL, /* 13e9 */ NULL, /* 13ea */ NULL, /* 13eb */ NULL, /* 13ec */ NULL, /* 13ed */ NULL, /* 13ee */ NULL, /* 13ef */ NULL, /* 13f0 */ NULL, /* 13f1 */ NULL, /* 13f2 */ NULL, /* 13f3 */ NULL, /* 13f4 */ NULL, /* 13f5 */ NULL, /* 13f6 */ NULL, /* 13f7 */ NULL, /* 13f8 */ NULL, /* 13f9 */ NULL, /* 13fa */ NULL, /* 13fb */ NULL, /* 13fc */ NULL, /* 13fd */ NULL, /* 13fe */ NULL, /* 13ff */ NULL, /* 1400 */ NULL, /* 1401 */ NULL, /* 1402 */ NULL, /* 1403 */ NULL, /* 1404 */ NULL, /* 1405 */ NULL, /* 1406 */ NULL, /* 1407 */ NULL, /* 1408 */ NULL, /* 1409 */ NULL, /* 140a */ NULL, /* 140b */ NULL, /* 140c */ NULL, /* 140d */ NULL, /* 140e */ NULL, /* 140f */ NULL, /* 1410 */ NULL, /* 1411 */ NULL, /* 1412 */ NULL, /* 1413 */ NULL, /* 1414 */ NULL, /* 1415 */ NULL, /* 1416 */ NULL, /* 1417 */ NULL, /* 1418 */ NULL, /* 1419 */ NULL, /* 141a */ NULL, /* 141b */ NULL, /* 141c */ NULL, /* 141d */ NULL, /* 141e */ NULL, /* 141f */ NULL, /* 1420 */ NULL, /* 1421 */ NULL, /* 1422 */ NULL, /* 1423 */ NULL, /* 1424 */ NULL, /* 1425 */ NULL, /* 1426 */ NULL, /* 1427 */ NULL, /* 1428 */ NULL, /* 1429 */ NULL, /* 142a */ NULL, /* 142b */ NULL, /* 142c */ NULL, /* 142d */ NULL, /* 142e */ NULL, /* 142f */ NULL, /* 1430 */ NULL, /* 1431 */ NULL, /* 1432 */ NULL, /* 1433 */ NULL, /* 1434 */ NULL, /* 1435 */ NULL, /* 1436 */ NULL, /* 1437 */ NULL, /* 1438 */ NULL, /* 1439 */ NULL, /* 143a */ NULL, /* 143b */ NULL, /* 143c */ NULL, /* 143d */ NULL, /* 143e */ NULL, /* 143f */ NULL, /* 1440 */ NULL, /* 1441 */ NULL, /* 1442 */ NULL, /* 1443 */ NULL, /* 1444 */ NULL, /* 1445 */ NULL, /* 1446 */ NULL, /* 1447 */ NULL, /* 1448 */ NULL, /* 1449 */ NULL, /* 144a */ NULL, /* 144b */ NULL, /* 144c */ NULL, /* 144d */ NULL, /* 144e */ NULL, /* 144f */ NULL, /* 1450 */ NULL, /* 1451 */ NULL, /* 1452 */ NULL, /* 1453 */ NULL, /* 1454 */ NULL, /* 1455 */ NULL, /* 1456 */ NULL, /* 1457 */ NULL, /* 1458 */ NULL, /* 1459 */ NULL, /* 145a */ NULL, /* 145b */ NULL, /* 145c */ NULL, /* 145d */ NULL, /* 145e */ NULL, /* 145f */ NULL, /* 1460 */ NULL, /* 1461 */ NULL, /* 1462 */ NULL, /* 1463 */ NULL, /* 1464 */ NULL, /* 1465 */ NULL, /* 1466 */ NULL, /* 1467 */ NULL, /* 1468 */ NULL, /* 1469 */ NULL, /* 146a */ NULL, /* 146b */ NULL, /* 146c */ NULL, /* 146d */ NULL, /* 146e */ NULL, /* 146f */ NULL, /* 1470 */ NULL, /* 1471 */ NULL, /* 1472 */ NULL, /* 1473 */ NULL, /* 1474 */ NULL, /* 1475 */ NULL, /* 1476 */ NULL, /* 1477 */ NULL, /* 1478 */ NULL, /* 1479 */ NULL, /* 147a */ NULL, /* 147b */ NULL, /* 147c */ NULL, /* 147d */ NULL, /* 147e */ NULL, /* 147f */ NULL, /* 1480 */ NULL, /* 1481 */ NULL, /* 1482 */ NULL, /* 1483 */ NULL, /* 1484 */ NULL, /* 1485 */ NULL, /* 1486 */ NULL, /* 1487 */ NULL, /* 1488 */ NULL, /* 1489 */ NULL, /* 148a */ NULL, /* 148b */ NULL, /* 148c */ NULL, /* 148d */ NULL, /* 148e */ NULL, /* 148f */ NULL, /* 1490 */ NULL, /* 1491 */ NULL, /* 1492 */ NULL, /* 1493 */ NULL, /* 1494 */ NULL, /* 1495 */ NULL, /* 1496 */ NULL, /* 1497 */ NULL, /* 1498 */ NULL, /* 1499 */ NULL, /* 149a */ NULL, /* 149b */ NULL, /* 149c */ NULL, /* 149d */ NULL, /* 149e */ NULL, /* 149f */ NULL, /* 14a0 */ NULL, /* 14a1 */ NULL, /* 14a2 */ NULL, /* 14a3 */ NULL, /* 14a4 */ NULL, /* 14a5 */ NULL, /* 14a6 */ NULL, /* 14a7 */ NULL, /* 14a8 */ NULL, /* 14a9 */ NULL, /* 14aa */ NULL, /* 14ab */ NULL, /* 14ac */ NULL, /* 14ad */ NULL, /* 14ae */ NULL, /* 14af */ NULL, /* 14b0 */ NULL, /* 14b1 */ NULL, /* 14b2 */ NULL, /* 14b3 */ NULL, /* 14b4 */ NULL, /* 14b5 */ NULL, /* 14b6 */ NULL, /* 14b7 */ NULL, /* 14b8 */ NULL, /* 14b9 */ NULL, /* 14ba */ NULL, /* 14bb */ NULL, /* 14bc */ NULL, /* 14bd */ NULL, /* 14be */ NULL, /* 14bf */ NULL, /* 14c0 */ NULL, /* 14c1 */ NULL, /* 14c2 */ NULL, /* 14c3 */ NULL, /* 14c4 */ NULL, /* 14c5 */ NULL, /* 14c6 */ NULL, /* 14c7 */ NULL, /* 14c8 */ NULL, /* 14c9 */ NULL, /* 14ca */ NULL, /* 14cb */ NULL, /* 14cc */ NULL, /* 14cd */ NULL, /* 14ce */ NULL, /* 14cf */ NULL, /* 14d0 */ NULL, /* 14d1 */ NULL, /* 14d2 */ NULL, /* 14d3 */ NULL, /* 14d4 */ NULL, /* 14d5 */ NULL, /* 14d6 */ NULL, /* 14d7 */ NULL, /* 14d8 */ NULL, /* 14d9 */ NULL, /* 14da */ NULL, /* 14db */ NULL, /* 14dc */ NULL, /* 14dd */ NULL, /* 14de */ NULL, /* 14df */ NULL, /* 14e0 */ NULL, /* 14e1 */ NULL, /* 14e2 */ NULL, /* 14e3 */ NULL, /* 14e4 */ NULL, /* 14e5 */ NULL, /* 14e6 */ NULL, /* 14e7 */ NULL, /* 14e8 */ NULL, /* 14e9 */ NULL, /* 14ea */ NULL, /* 14eb */ NULL, /* 14ec */ NULL, /* 14ed */ NULL, /* 14ee */ NULL, /* 14ef */ NULL, /* 14f0 */ NULL, /* 14f1 */ NULL, /* 14f2 */ NULL, /* 14f3 */ NULL, /* 14f4 */ NULL, /* 14f5 */ NULL, /* 14f6 */ NULL, /* 14f7 */ NULL, /* 14f8 */ NULL, /* 14f9 */ NULL, /* 14fa */ NULL, /* 14fb */ NULL, /* 14fc */ NULL, /* 14fd */ NULL, /* 14fe */ NULL, /* 14ff */ NULL, /* 1500 */ NULL, /* 1501 */ NULL, /* 1502 */ NULL, /* 1503 */ NULL, /* 1504 */ NULL, /* 1505 */ NULL, /* 1506 */ NULL, /* 1507 */ NULL, /* 1508 */ NULL, /* 1509 */ NULL, /* 150a */ NULL, /* 150b */ NULL, /* 150c */ NULL, /* 150d */ NULL, /* 150e */ NULL, /* 150f */ NULL, /* 1510 */ NULL, /* 1511 */ NULL, /* 1512 */ NULL, /* 1513 */ NULL, /* 1514 */ NULL, /* 1515 */ NULL, /* 1516 */ NULL, /* 1517 */ NULL, /* 1518 */ NULL, /* 1519 */ NULL, /* 151a */ NULL, /* 151b */ NULL, /* 151c */ NULL, /* 151d */ NULL, /* 151e */ NULL, /* 151f */ NULL, /* 1520 */ NULL, /* 1521 */ NULL, /* 1522 */ NULL, /* 1523 */ NULL, /* 1524 */ NULL, /* 1525 */ NULL, /* 1526 */ NULL, /* 1527 */ NULL, /* 1528 */ NULL, /* 1529 */ NULL, /* 152a */ NULL, /* 152b */ NULL, /* 152c */ NULL, /* 152d */ NULL, /* 152e */ NULL, /* 152f */ NULL, /* 1530 */ NULL, /* 1531 */ NULL, /* 1532 */ NULL, /* 1533 */ NULL, /* 1534 */ NULL, /* 1535 */ NULL, /* 1536 */ NULL, /* 1537 */ NULL, /* 1538 */ NULL, /* 1539 */ NULL, /* 153a */ NULL, /* 153b */ NULL, /* 153c */ NULL, /* 153d */ NULL, /* 153e */ NULL, /* 153f */ NULL, /* 1540 */ NULL, /* 1541 */ NULL, /* 1542 */ NULL, /* 1543 */ NULL, /* 1544 */ NULL, /* 1545 */ NULL, /* 1546 */ NULL, /* 1547 */ NULL, /* 1548 */ NULL, /* 1549 */ NULL, /* 154a */ NULL, /* 154b */ NULL, /* 154c */ NULL, /* 154d */ NULL, /* 154e */ NULL, /* 154f */ NULL, /* 1550 */ NULL, /* 1551 */ NULL, /* 1552 */ NULL, /* 1553 */ NULL, /* 1554 */ NULL, /* 1555 */ NULL, /* 1556 */ NULL, /* 1557 */ NULL, /* 1558 */ NULL, /* 1559 */ NULL, /* 155a */ NULL, /* 155b */ NULL, /* 155c */ NULL, /* 155d */ NULL, /* 155e */ NULL, /* 155f */ NULL, /* 1560 */ NULL, /* 1561 */ NULL, /* 1562 */ NULL, /* 1563 */ NULL, /* 1564 */ NULL, /* 1565 */ NULL, /* 1566 */ NULL, /* 1567 */ NULL, /* 1568 */ NULL, /* 1569 */ NULL, /* 156a */ NULL, /* 156b */ NULL, /* 156c */ NULL, /* 156d */ NULL, /* 156e */ NULL, /* 156f */ NULL, /* 1570 */ NULL, /* 1571 */ NULL, /* 1572 */ NULL, /* 1573 */ NULL, /* 1574 */ NULL, /* 1575 */ NULL, /* 1576 */ NULL, /* 1577 */ NULL, /* 1578 */ NULL, /* 1579 */ NULL, /* 157a */ NULL, /* 157b */ NULL, /* 157c */ NULL, /* 157d */ NULL, /* 157e */ NULL, /* 157f */ NULL, /* 1580 */ NULL, /* 1581 */ NULL, /* 1582 */ NULL, /* 1583 */ NULL, /* 1584 */ NULL, /* 1585 */ NULL, /* 1586 */ NULL, /* 1587 */ NULL, /* 1588 */ NULL, /* 1589 */ NULL, /* 158a */ NULL, /* 158b */ NULL, /* 158c */ NULL, /* 158d */ NULL, /* 158e */ NULL, /* 158f */ NULL, /* 1590 */ NULL, /* 1591 */ NULL, /* 1592 */ NULL, /* 1593 */ NULL, /* 1594 */ NULL, /* 1595 */ NULL, /* 1596 */ NULL, /* 1597 */ NULL, /* 1598 */ NULL, /* 1599 */ NULL, /* 159a */ NULL, /* 159b */ NULL, /* 159c */ NULL, /* 159d */ NULL, /* 159e */ NULL, /* 159f */ NULL, /* 15a0 */ NULL, /* 15a1 */ NULL, /* 15a2 */ NULL, /* 15a3 */ NULL, /* 15a4 */ NULL, /* 15a5 */ NULL, /* 15a6 */ NULL, /* 15a7 */ NULL, /* 15a8 */ NULL, /* 15a9 */ NULL, /* 15aa */ NULL, /* 15ab */ NULL, /* 15ac */ NULL, /* 15ad */ NULL, /* 15ae */ NULL, /* 15af */ NULL, /* 15b0 */ NULL, /* 15b1 */ NULL, /* 15b2 */ NULL, /* 15b3 */ NULL, /* 15b4 */ NULL, /* 15b5 */ NULL, /* 15b6 */ NULL, /* 15b7 */ NULL, /* 15b8 */ NULL, /* 15b9 */ NULL, /* 15ba */ NULL, /* 15bb */ NULL, /* 15bc */ NULL, /* 15bd */ NULL, /* 15be */ NULL, /* 15bf */ NULL, /* 15c0 */ NULL, /* 15c1 */ NULL, /* 15c2 */ NULL, /* 15c3 */ NULL, /* 15c4 */ NULL, /* 15c5 */ NULL, /* 15c6 */ NULL, /* 15c7 */ NULL, /* 15c8 */ NULL, /* 15c9 */ NULL, /* 15ca */ NULL, /* 15cb */ NULL, /* 15cc */ NULL, /* 15cd */ NULL, /* 15ce */ NULL, /* 15cf */ NULL, /* 15d0 */ NULL, /* 15d1 */ NULL, /* 15d2 */ NULL, /* 15d3 */ NULL, /* 15d4 */ NULL, /* 15d5 */ NULL, /* 15d6 */ NULL, /* 15d7 */ NULL, /* 15d8 */ NULL, /* 15d9 */ NULL, /* 15da */ NULL, /* 15db */ NULL, /* 15dc */ NULL, /* 15dd */ NULL, /* 15de */ NULL, /* 15df */ NULL, /* 15e0 */ NULL, /* 15e1 */ NULL, /* 15e2 */ NULL, /* 15e3 */ NULL, /* 15e4 */ NULL, /* 15e5 */ NULL, /* 15e6 */ NULL, /* 15e7 */ NULL, /* 15e8 */ NULL, /* 15e9 */ NULL, /* 15ea */ NULL, /* 15eb */ NULL, /* 15ec */ NULL, /* 15ed */ NULL, /* 15ee */ NULL, /* 15ef */ NULL, /* 15f0 */ NULL, /* 15f1 */ NULL, /* 15f2 */ NULL, /* 15f3 */ NULL, /* 15f4 */ NULL, /* 15f5 */ NULL, /* 15f6 */ NULL, /* 15f7 */ NULL, /* 15f8 */ NULL, /* 15f9 */ NULL, /* 15fa */ NULL, /* 15fb */ NULL, /* 15fc */ NULL, /* 15fd */ NULL, /* 15fe */ NULL, /* 15ff */ NULL, /* 1600 */ NULL, /* 1601 */ NULL, /* 1602 */ NULL, /* 1603 */ NULL, /* 1604 */ NULL, /* 1605 */ NULL, /* 1606 */ NULL, /* 1607 */ NULL, /* 1608 */ NULL, /* 1609 */ NULL, /* 160a */ NULL, /* 160b */ NULL, /* 160c */ NULL, /* 160d */ NULL, /* 160e */ NULL, /* 160f */ NULL, /* 1610 */ NULL, /* 1611 */ NULL, /* 1612 */ NULL, /* 1613 */ NULL, /* 1614 */ NULL, /* 1615 */ NULL, /* 1616 */ NULL, /* 1617 */ NULL, /* 1618 */ NULL, /* 1619 */ NULL, /* 161a */ NULL, /* 161b */ NULL, /* 161c */ NULL, /* 161d */ NULL, /* 161e */ NULL, /* 161f */ NULL, /* 1620 */ NULL, /* 1621 */ NULL, /* 1622 */ NULL, /* 1623 */ NULL, /* 1624 */ NULL, /* 1625 */ NULL, /* 1626 */ NULL, /* 1627 */ NULL, /* 1628 */ NULL, /* 1629 */ NULL, /* 162a */ NULL, /* 162b */ NULL, /* 162c */ NULL, /* 162d */ NULL, /* 162e */ NULL, /* 162f */ NULL, /* 1630 */ NULL, /* 1631 */ NULL, /* 1632 */ NULL, /* 1633 */ NULL, /* 1634 */ NULL, /* 1635 */ NULL, /* 1636 */ NULL, /* 1637 */ NULL, /* 1638 */ NULL, /* 1639 */ NULL, /* 163a */ NULL, /* 163b */ NULL, /* 163c */ NULL, /* 163d */ NULL, /* 163e */ NULL, /* 163f */ NULL, /* 1640 */ NULL, /* 1641 */ NULL, /* 1642 */ NULL, /* 1643 */ NULL, /* 1644 */ NULL, /* 1645 */ NULL, /* 1646 */ NULL, /* 1647 */ NULL, /* 1648 */ NULL, /* 1649 */ NULL, /* 164a */ NULL, /* 164b */ NULL, /* 164c */ NULL, /* 164d */ NULL, /* 164e */ NULL, /* 164f */ NULL, /* 1650 */ NULL, /* 1651 */ NULL, /* 1652 */ NULL, /* 1653 */ NULL, /* 1654 */ NULL, /* 1655 */ NULL, /* 1656 */ NULL, /* 1657 */ NULL, /* 1658 */ NULL, /* 1659 */ NULL, /* 165a */ NULL, /* 165b */ NULL, /* 165c */ NULL, /* 165d */ NULL, /* 165e */ NULL, /* 165f */ NULL, /* 1660 */ NULL, /* 1661 */ NULL, /* 1662 */ NULL, /* 1663 */ NULL, /* 1664 */ NULL, /* 1665 */ NULL, /* 1666 */ NULL, /* 1667 */ NULL, /* 1668 */ NULL, /* 1669 */ NULL, /* 166a */ NULL, /* 166b */ NULL, /* 166c */ NULL, /* 166d */ NULL, /* 166e */ NULL, /* 166f */ NULL, /* 1670 */ NULL, /* 1671 */ NULL, /* 1672 */ NULL, /* 1673 */ NULL, /* 1674 */ NULL, /* 1675 */ NULL, /* 1676 */ NULL, /* 1677 */ NULL, /* 1678 */ NULL, /* 1679 */ NULL, /* 167a */ NULL, /* 167b */ NULL, /* 167c */ NULL, /* 167d */ NULL, /* 167e */ NULL, /* 167f */ NULL, /* 1680 */ NULL, /* 1681 */ NULL, /* 1682 */ NULL, /* 1683 */ NULL, /* 1684 */ NULL, /* 1685 */ NULL, /* 1686 */ NULL, /* 1687 */ NULL, /* 1688 */ NULL, /* 1689 */ NULL, /* 168a */ NULL, /* 168b */ NULL, /* 168c */ NULL, /* 168d */ NULL, /* 168e */ NULL, /* 168f */ NULL, /* 1690 */ NULL, /* 1691 */ NULL, /* 1692 */ NULL, /* 1693 */ NULL, /* 1694 */ NULL, /* 1695 */ NULL, /* 1696 */ NULL, /* 1697 */ NULL, /* 1698 */ NULL, /* 1699 */ NULL, /* 169a */ NULL, /* 169b */ NULL, /* 169c */ NULL, /* 169d */ NULL, /* 169e */ NULL, /* 169f */ NULL, /* 16a0 */ NULL, /* 16a1 */ NULL, /* 16a2 */ NULL, /* 16a3 */ NULL, /* 16a4 */ NULL, /* 16a5 */ NULL, /* 16a6 */ NULL, /* 16a7 */ NULL, /* 16a8 */ NULL, /* 16a9 */ NULL, /* 16aa */ NULL, /* 16ab */ NULL, /* 16ac */ NULL, /* 16ad */ NULL, /* 16ae */ NULL, /* 16af */ NULL, /* 16b0 */ NULL, /* 16b1 */ NULL, /* 16b2 */ NULL, /* 16b3 */ NULL, /* 16b4 */ NULL, /* 16b5 */ NULL, /* 16b6 */ NULL, /* 16b7 */ NULL, /* 16b8 */ NULL, /* 16b9 */ NULL, /* 16ba */ NULL, /* 16bb */ NULL, /* 16bc */ NULL, /* 16bd */ NULL, /* 16be */ NULL, /* 16bf */ NULL, /* 16c0 */ NULL, /* 16c1 */ NULL, /* 16c2 */ NULL, /* 16c3 */ NULL, /* 16c4 */ NULL, /* 16c5 */ NULL, /* 16c6 */ NULL, /* 16c7 */ NULL, /* 16c8 */ NULL, /* 16c9 */ NULL, /* 16ca */ NULL, /* 16cb */ NULL, /* 16cc */ NULL, /* 16cd */ NULL, /* 16ce */ NULL, /* 16cf */ NULL, /* 16d0 */ NULL, /* 16d1 */ NULL, /* 16d2 */ NULL, /* 16d3 */ NULL, /* 16d4 */ NULL, /* 16d5 */ NULL, /* 16d6 */ NULL, /* 16d7 */ NULL, /* 16d8 */ NULL, /* 16d9 */ NULL, /* 16da */ NULL, /* 16db */ NULL, /* 16dc */ NULL, /* 16dd */ NULL, /* 16de */ NULL, /* 16df */ NULL, /* 16e0 */ NULL, /* 16e1 */ NULL, /* 16e2 */ NULL, /* 16e3 */ NULL, /* 16e4 */ NULL, /* 16e5 */ NULL, /* 16e6 */ NULL, /* 16e7 */ NULL, /* 16e8 */ NULL, /* 16e9 */ NULL, /* 16ea */ NULL, /* 16eb */ NULL, /* 16ec */ NULL, /* 16ed */ NULL, /* 16ee */ NULL, /* 16ef */ NULL, /* 16f0 */ NULL, /* 16f1 */ NULL, /* 16f2 */ NULL, /* 16f3 */ NULL, /* 16f4 */ NULL, /* 16f5 */ NULL, /* 16f6 */ NULL, /* 16f7 */ NULL, /* 16f8 */ NULL, /* 16f9 */ NULL, /* 16fa */ NULL, /* 16fb */ NULL, /* 16fc */ NULL, /* 16fd */ NULL, /* 16fe */ NULL, /* 16ff */ NULL, /* 1700 */ NULL, /* 1701 */ NULL, /* 1702 */ NULL, /* 1703 */ NULL, /* 1704 */ NULL, /* 1705 */ NULL, /* 1706 */ NULL, /* 1707 */ NULL, /* 1708 */ NULL, /* 1709 */ NULL, /* 170a */ NULL, /* 170b */ NULL, /* 170c */ NULL, /* 170d */ NULL, /* 170e */ NULL, /* 170f */ NULL, /* 1710 */ NULL, /* 1711 */ NULL, /* 1712 */ NULL, /* 1713 */ NULL, /* 1714 */ NULL, /* 1715 */ NULL, /* 1716 */ NULL, /* 1717 */ NULL, /* 1718 */ NULL, /* 1719 */ NULL, /* 171a */ NULL, /* 171b */ NULL, /* 171c */ NULL, /* 171d */ NULL, /* 171e */ NULL, /* 171f */ NULL, /* 1720 */ NULL, /* 1721 */ NULL, /* 1722 */ NULL, /* 1723 */ NULL, /* 1724 */ NULL, /* 1725 */ NULL, /* 1726 */ NULL, /* 1727 */ NULL, /* 1728 */ NULL, /* 1729 */ NULL, /* 172a */ NULL, /* 172b */ NULL, /* 172c */ NULL, /* 172d */ NULL, /* 172e */ NULL, /* 172f */ NULL, /* 1730 */ NULL, /* 1731 */ NULL, /* 1732 */ NULL, /* 1733 */ NULL, /* 1734 */ NULL, /* 1735 */ NULL, /* 1736 */ NULL, /* 1737 */ NULL, /* 1738 */ NULL, /* 1739 */ NULL, /* 173a */ NULL, /* 173b */ NULL, /* 173c */ NULL, /* 173d */ NULL, /* 173e */ NULL, /* 173f */ NULL, /* 1740 */ NULL, /* 1741 */ NULL, /* 1742 */ NULL, /* 1743 */ NULL, /* 1744 */ NULL, /* 1745 */ NULL, /* 1746 */ NULL, /* 1747 */ NULL, /* 1748 */ NULL, /* 1749 */ NULL, /* 174a */ NULL, /* 174b */ NULL, /* 174c */ NULL, /* 174d */ NULL, /* 174e */ NULL, /* 174f */ NULL, /* 1750 */ NULL, /* 1751 */ NULL, /* 1752 */ NULL, /* 1753 */ NULL, /* 1754 */ NULL, /* 1755 */ NULL, /* 1756 */ NULL, /* 1757 */ NULL, /* 1758 */ NULL, /* 1759 */ NULL, /* 175a */ NULL, /* 175b */ NULL, /* 175c */ NULL, /* 175d */ NULL, /* 175e */ NULL, /* 175f */ NULL, /* 1760 */ NULL, /* 1761 */ NULL, /* 1762 */ NULL, /* 1763 */ NULL, /* 1764 */ NULL, /* 1765 */ NULL, /* 1766 */ NULL, /* 1767 */ NULL, /* 1768 */ NULL, /* 1769 */ NULL, /* 176a */ NULL, /* 176b */ NULL, /* 176c */ NULL, /* 176d */ NULL, /* 176e */ NULL, /* 176f */ NULL, /* 1770 */ NULL, /* 1771 */ NULL, /* 1772 */ NULL, /* 1773 */ NULL, /* 1774 */ NULL, /* 1775 */ NULL, /* 1776 */ NULL, /* 1777 */ NULL, /* 1778 */ NULL, /* 1779 */ NULL, /* 177a */ NULL, /* 177b */ NULL, /* 177c */ NULL, /* 177d */ NULL, /* 177e */ NULL, /* 177f */ NULL, /* 1780 */ NULL, /* 1781 */ NULL, /* 1782 */ NULL, /* 1783 */ NULL, /* 1784 */ NULL, /* 1785 */ NULL, /* 1786 */ NULL, /* 1787 */ NULL, /* 1788 */ NULL, /* 1789 */ NULL, /* 178a */ NULL, /* 178b */ NULL, /* 178c */ NULL, /* 178d */ NULL, /* 178e */ NULL, /* 178f */ NULL, /* 1790 */ NULL, /* 1791 */ NULL, /* 1792 */ NULL, /* 1793 */ NULL, /* 1794 */ NULL, /* 1795 */ NULL, /* 1796 */ NULL, /* 1797 */ NULL, /* 1798 */ NULL, /* 1799 */ NULL, /* 179a */ NULL, /* 179b */ NULL, /* 179c */ NULL, /* 179d */ NULL, /* 179e */ NULL, /* 179f */ NULL, /* 17a0 */ NULL, /* 17a1 */ NULL, /* 17a2 */ NULL, /* 17a3 */ NULL, /* 17a4 */ NULL, /* 17a5 */ NULL, /* 17a6 */ NULL, /* 17a7 */ NULL, /* 17a8 */ NULL, /* 17a9 */ NULL, /* 17aa */ NULL, /* 17ab */ NULL, /* 17ac */ NULL, /* 17ad */ NULL, /* 17ae */ NULL, /* 17af */ NULL, /* 17b0 */ NULL, /* 17b1 */ NULL, /* 17b2 */ NULL, /* 17b3 */ NULL, /* 17b4 */ NULL, /* 17b5 */ NULL, /* 17b6 */ NULL, /* 17b7 */ NULL, /* 17b8 */ NULL, /* 17b9 */ NULL, /* 17ba */ NULL, /* 17bb */ NULL, /* 17bc */ NULL, /* 17bd */ NULL, /* 17be */ NULL, /* 17bf */ NULL, /* 17c0 */ NULL, /* 17c1 */ NULL, /* 17c2 */ NULL, /* 17c3 */ NULL, /* 17c4 */ NULL, /* 17c5 */ NULL, /* 17c6 */ NULL, /* 17c7 */ NULL, /* 17c8 */ NULL, /* 17c9 */ NULL, /* 17ca */ NULL, /* 17cb */ NULL, /* 17cc */ NULL, /* 17cd */ NULL, /* 17ce */ NULL, /* 17cf */ NULL, /* 17d0 */ NULL, /* 17d1 */ NULL, /* 17d2 */ NULL, /* 17d3 */ NULL, /* 17d4 */ NULL, /* 17d5 */ NULL, /* 17d6 */ NULL, /* 17d7 */ NULL, /* 17d8 */ NULL, /* 17d9 */ NULL, /* 17da */ NULL, /* 17db */ NULL, /* 17dc */ NULL, /* 17dd */ NULL, /* 17de */ NULL, /* 17df */ NULL, /* 17e0 */ NULL, /* 17e1 */ NULL, /* 17e2 */ NULL, /* 17e3 */ NULL, /* 17e4 */ NULL, /* 17e5 */ NULL, /* 17e6 */ NULL, /* 17e7 */ NULL, /* 17e8 */ NULL, /* 17e9 */ NULL, /* 17ea */ NULL, /* 17eb */ NULL, /* 17ec */ NULL, /* 17ed */ NULL, /* 17ee */ NULL, /* 17ef */ NULL, /* 17f0 */ NULL, /* 17f1 */ NULL, /* 17f2 */ NULL, /* 17f3 */ NULL, /* 17f4 */ NULL, /* 17f5 */ NULL, /* 17f6 */ NULL, /* 17f7 */ NULL, /* 17f8 */ NULL, /* 17f9 */ NULL, /* 17fa */ NULL, /* 17fb */ NULL, /* 17fc */ NULL, /* 17fd */ NULL, /* 17fe */ NULL, /* 17ff */ NULL, /* 1800 */ NULL, /* 1801 */ NULL, /* 1802 */ NULL, /* 1803 */ NULL, /* 1804 */ NULL, /* 1805 */ NULL, /* 1806 */ NULL, /* 1807 */ NULL, /* 1808 */ NULL, /* 1809 */ NULL, /* 180a */ NULL, /* 180b */ NULL, /* 180c */ NULL, /* 180d */ NULL, /* 180e */ NULL, /* 180f */ NULL, /* 1810 */ NULL, /* 1811 */ NULL, /* 1812 */ NULL, /* 1813 */ NULL, /* 1814 */ NULL, /* 1815 */ NULL, /* 1816 */ NULL, /* 1817 */ NULL, /* 1818 */ NULL, /* 1819 */ NULL, /* 181a */ NULL, /* 181b */ NULL, /* 181c */ NULL, /* 181d */ NULL, /* 181e */ NULL, /* 181f */ NULL, /* 1820 */ NULL, /* 1821 */ NULL, /* 1822 */ NULL, /* 1823 */ NULL, /* 1824 */ NULL, /* 1825 */ NULL, /* 1826 */ NULL, /* 1827 */ NULL, /* 1828 */ NULL, /* 1829 */ NULL, /* 182a */ NULL, /* 182b */ NULL, /* 182c */ NULL, /* 182d */ NULL, /* 182e */ NULL, /* 182f */ NULL, /* 1830 */ NULL, /* 1831 */ NULL, /* 1832 */ NULL, /* 1833 */ NULL, /* 1834 */ NULL, /* 1835 */ NULL, /* 1836 */ NULL, /* 1837 */ NULL, /* 1838 */ NULL, /* 1839 */ NULL, /* 183a */ NULL, /* 183b */ NULL, /* 183c */ NULL, /* 183d */ NULL, /* 183e */ NULL, /* 183f */ NULL, /* 1840 */ NULL, /* 1841 */ NULL, /* 1842 */ NULL, /* 1843 */ NULL, /* 1844 */ NULL, /* 1845 */ NULL, /* 1846 */ NULL, /* 1847 */ NULL, /* 1848 */ NULL, /* 1849 */ NULL, /* 184a */ NULL, /* 184b */ NULL, /* 184c */ NULL, /* 184d */ NULL, /* 184e */ NULL, /* 184f */ NULL, /* 1850 */ NULL, /* 1851 */ NULL, /* 1852 */ NULL, /* 1853 */ NULL, /* 1854 */ NULL, /* 1855 */ NULL, /* 1856 */ NULL, /* 1857 */ NULL, /* 1858 */ NULL, /* 1859 */ NULL, /* 185a */ NULL, /* 185b */ NULL, /* 185c */ NULL, /* 185d */ NULL, /* 185e */ NULL, /* 185f */ NULL, /* 1860 */ NULL, /* 1861 */ NULL, /* 1862 */ NULL, /* 1863 */ NULL, /* 1864 */ NULL, /* 1865 */ NULL, /* 1866 */ NULL, /* 1867 */ NULL, /* 1868 */ NULL, /* 1869 */ NULL, /* 186a */ NULL, /* 186b */ NULL, /* 186c */ NULL, /* 186d */ NULL, /* 186e */ NULL, /* 186f */ NULL, /* 1870 */ NULL, /* 1871 */ NULL, /* 1872 */ NULL, /* 1873 */ NULL, /* 1874 */ NULL, /* 1875 */ NULL, /* 1876 */ NULL, /* 1877 */ NULL, /* 1878 */ NULL, /* 1879 */ NULL, /* 187a */ NULL, /* 187b */ NULL, /* 187c */ NULL, /* 187d */ NULL, /* 187e */ NULL, /* 187f */ NULL, /* 1880 */ NULL, /* 1881 */ NULL, /* 1882 */ NULL, /* 1883 */ NULL, /* 1884 */ NULL, /* 1885 */ NULL, /* 1886 */ NULL, /* 1887 */ NULL, /* 1888 */ NULL, /* 1889 */ NULL, /* 188a */ NULL, /* 188b */ NULL, /* 188c */ NULL, /* 188d */ NULL, /* 188e */ NULL, /* 188f */ NULL, /* 1890 */ NULL, /* 1891 */ NULL, /* 1892 */ NULL, /* 1893 */ NULL, /* 1894 */ NULL, /* 1895 */ NULL, /* 1896 */ NULL, /* 1897 */ NULL, /* 1898 */ NULL, /* 1899 */ NULL, /* 189a */ NULL, /* 189b */ NULL, /* 189c */ NULL, /* 189d */ NULL, /* 189e */ NULL, /* 189f */ NULL, /* 18a0 */ NULL, /* 18a1 */ NULL, /* 18a2 */ NULL, /* 18a3 */ NULL, /* 18a4 */ NULL, /* 18a5 */ NULL, /* 18a6 */ NULL, /* 18a7 */ NULL, /* 18a8 */ NULL, /* 18a9 */ NULL, /* 18aa */ NULL, /* 18ab */ NULL, /* 18ac */ NULL, /* 18ad */ NULL, /* 18ae */ NULL, /* 18af */ NULL, /* 18b0 */ NULL, /* 18b1 */ NULL, /* 18b2 */ NULL, /* 18b3 */ NULL, /* 18b4 */ NULL, /* 18b5 */ NULL, /* 18b6 */ NULL, /* 18b7 */ NULL, /* 18b8 */ NULL, /* 18b9 */ NULL, /* 18ba */ NULL, /* 18bb */ NULL, /* 18bc */ NULL, /* 18bd */ NULL, /* 18be */ NULL, /* 18bf */ NULL, /* 18c0 */ NULL, /* 18c1 */ NULL, /* 18c2 */ NULL, /* 18c3 */ NULL, /* 18c4 */ NULL, /* 18c5 */ NULL, /* 18c6 */ NULL, /* 18c7 */ NULL, /* 18c8 */ NULL, /* 18c9 */ NULL, /* 18ca */ NULL, /* 18cb */ NULL, /* 18cc */ NULL, /* 18cd */ NULL, /* 18ce */ NULL, /* 18cf */ NULL, /* 18d0 */ NULL, /* 18d1 */ NULL, /* 18d2 */ NULL, /* 18d3 */ NULL, /* 18d4 */ NULL, /* 18d5 */ NULL, /* 18d6 */ NULL, /* 18d7 */ NULL, /* 18d8 */ NULL, /* 18d9 */ NULL, /* 18da */ NULL, /* 18db */ NULL, /* 18dc */ NULL, /* 18dd */ NULL, /* 18de */ NULL, /* 18df */ NULL, /* 18e0 */ NULL, /* 18e1 */ NULL, /* 18e2 */ NULL, /* 18e3 */ NULL, /* 18e4 */ NULL, /* 18e5 */ NULL, /* 18e6 */ NULL, /* 18e7 */ NULL, /* 18e8 */ NULL, /* 18e9 */ NULL, /* 18ea */ NULL, /* 18eb */ NULL, /* 18ec */ NULL, /* 18ed */ NULL, /* 18ee */ NULL, /* 18ef */ NULL, /* 18f0 */ NULL, /* 18f1 */ NULL, /* 18f2 */ NULL, /* 18f3 */ NULL, /* 18f4 */ NULL, /* 18f5 */ NULL, /* 18f6 */ NULL, /* 18f7 */ NULL, /* 18f8 */ NULL, /* 18f9 */ NULL, /* 18fa */ NULL, /* 18fb */ NULL, /* 18fc */ NULL, /* 18fd */ NULL, /* 18fe */ NULL, /* 18ff */ NULL, /* 1900 */ NULL, /* 1901 */ NULL, /* 1902 */ NULL, /* 1903 */ NULL, /* 1904 */ NULL, /* 1905 */ NULL, /* 1906 */ NULL, /* 1907 */ NULL, /* 1908 */ NULL, /* 1909 */ NULL, /* 190a */ NULL, /* 190b */ NULL, /* 190c */ NULL, /* 190d */ NULL, /* 190e */ NULL, /* 190f */ NULL, /* 1910 */ NULL, /* 1911 */ NULL, /* 1912 */ NULL, /* 1913 */ NULL, /* 1914 */ NULL, /* 1915 */ NULL, /* 1916 */ NULL, /* 1917 */ NULL, /* 1918 */ NULL, /* 1919 */ NULL, /* 191a */ NULL, /* 191b */ NULL, /* 191c */ NULL, /* 191d */ NULL, /* 191e */ NULL, /* 191f */ NULL, /* 1920 */ NULL, /* 1921 */ NULL, /* 1922 */ NULL, /* 1923 */ NULL, /* 1924 */ NULL, /* 1925 */ NULL, /* 1926 */ NULL, /* 1927 */ NULL, /* 1928 */ NULL, /* 1929 */ NULL, /* 192a */ NULL, /* 192b */ NULL, /* 192c */ NULL, /* 192d */ NULL, /* 192e */ NULL, /* 192f */ NULL, /* 1930 */ NULL, /* 1931 */ NULL, /* 1932 */ NULL, /* 1933 */ NULL, /* 1934 */ NULL, /* 1935 */ NULL, /* 1936 */ NULL, /* 1937 */ NULL, /* 1938 */ NULL, /* 1939 */ NULL, /* 193a */ NULL, /* 193b */ NULL, /* 193c */ NULL, /* 193d */ NULL, /* 193e */ NULL, /* 193f */ NULL, /* 1940 */ NULL, /* 1941 */ NULL, /* 1942 */ NULL, /* 1943 */ NULL, /* 1944 */ NULL, /* 1945 */ NULL, /* 1946 */ NULL, /* 1947 */ NULL, /* 1948 */ NULL, /* 1949 */ NULL, /* 194a */ NULL, /* 194b */ NULL, /* 194c */ NULL, /* 194d */ NULL, /* 194e */ NULL, /* 194f */ NULL, /* 1950 */ NULL, /* 1951 */ NULL, /* 1952 */ NULL, /* 1953 */ NULL, /* 1954 */ NULL, /* 1955 */ NULL, /* 1956 */ NULL, /* 1957 */ NULL, /* 1958 */ NULL, /* 1959 */ NULL, /* 195a */ NULL, /* 195b */ NULL, /* 195c */ NULL, /* 195d */ NULL, /* 195e */ NULL, /* 195f */ NULL, /* 1960 */ NULL, /* 1961 */ NULL, /* 1962 */ NULL, /* 1963 */ NULL, /* 1964 */ NULL, /* 1965 */ NULL, /* 1966 */ NULL, /* 1967 */ NULL, /* 1968 */ NULL, /* 1969 */ NULL, /* 196a */ NULL, /* 196b */ NULL, /* 196c */ NULL, /* 196d */ NULL, /* 196e */ NULL, /* 196f */ NULL, /* 1970 */ NULL, /* 1971 */ NULL, /* 1972 */ NULL, /* 1973 */ NULL, /* 1974 */ NULL, /* 1975 */ NULL, /* 1976 */ NULL, /* 1977 */ NULL, /* 1978 */ NULL, /* 1979 */ NULL, /* 197a */ NULL, /* 197b */ NULL, /* 197c */ NULL, /* 197d */ NULL, /* 197e */ NULL, /* 197f */ NULL, /* 1980 */ NULL, /* 1981 */ NULL, /* 1982 */ NULL, /* 1983 */ NULL, /* 1984 */ NULL, /* 1985 */ NULL, /* 1986 */ NULL, /* 1987 */ NULL, /* 1988 */ NULL, /* 1989 */ NULL, /* 198a */ NULL, /* 198b */ NULL, /* 198c */ NULL, /* 198d */ NULL, /* 198e */ NULL, /* 198f */ NULL, /* 1990 */ NULL, /* 1991 */ NULL, /* 1992 */ NULL, /* 1993 */ NULL, /* 1994 */ NULL, /* 1995 */ NULL, /* 1996 */ NULL, /* 1997 */ NULL, /* 1998 */ NULL, /* 1999 */ NULL, /* 199a */ NULL, /* 199b */ NULL, /* 199c */ NULL, /* 199d */ NULL, /* 199e */ NULL, /* 199f */ NULL, /* 19a0 */ NULL, /* 19a1 */ NULL, /* 19a2 */ NULL, /* 19a3 */ NULL, /* 19a4 */ NULL, /* 19a5 */ NULL, /* 19a6 */ NULL, /* 19a7 */ NULL, /* 19a8 */ NULL, /* 19a9 */ NULL, /* 19aa */ NULL, /* 19ab */ NULL, /* 19ac */ NULL, /* 19ad */ NULL, /* 19ae */ NULL, /* 19af */ NULL, /* 19b0 */ NULL, /* 19b1 */ NULL, /* 19b2 */ NULL, /* 19b3 */ NULL, /* 19b4 */ NULL, /* 19b5 */ NULL, /* 19b6 */ NULL, /* 19b7 */ NULL, /* 19b8 */ NULL, /* 19b9 */ NULL, /* 19ba */ NULL, /* 19bb */ NULL, /* 19bc */ NULL, /* 19bd */ NULL, /* 19be */ NULL, /* 19bf */ NULL, /* 19c0 */ NULL, /* 19c1 */ NULL, /* 19c2 */ NULL, /* 19c3 */ NULL, /* 19c4 */ NULL, /* 19c5 */ NULL, /* 19c6 */ NULL, /* 19c7 */ NULL, /* 19c8 */ NULL, /* 19c9 */ NULL, /* 19ca */ NULL, /* 19cb */ NULL, /* 19cc */ NULL, /* 19cd */ NULL, /* 19ce */ NULL, /* 19cf */ NULL, /* 19d0 */ NULL, /* 19d1 */ NULL, /* 19d2 */ NULL, /* 19d3 */ NULL, /* 19d4 */ NULL, /* 19d5 */ NULL, /* 19d6 */ NULL, /* 19d7 */ NULL, /* 19d8 */ NULL, /* 19d9 */ NULL, /* 19da */ NULL, /* 19db */ NULL, /* 19dc */ NULL, /* 19dd */ NULL, /* 19de */ NULL, /* 19df */ NULL, /* 19e0 */ NULL, /* 19e1 */ NULL, /* 19e2 */ NULL, /* 19e3 */ NULL, /* 19e4 */ NULL, /* 19e5 */ NULL, /* 19e6 */ NULL, /* 19e7 */ NULL, /* 19e8 */ NULL, /* 19e9 */ NULL, /* 19ea */ NULL, /* 19eb */ NULL, /* 19ec */ NULL, /* 19ed */ NULL, /* 19ee */ NULL, /* 19ef */ NULL, /* 19f0 */ NULL, /* 19f1 */ NULL, /* 19f2 */ NULL, /* 19f3 */ NULL, /* 19f4 */ NULL, /* 19f5 */ NULL, /* 19f6 */ NULL, /* 19f7 */ NULL, /* 19f8 */ NULL, /* 19f9 */ NULL, /* 19fa */ NULL, /* 19fb */ NULL, /* 19fc */ NULL, /* 19fd */ NULL, /* 19fe */ NULL, /* 19ff */ NULL, /* 1a00 */ NULL, /* 1a01 */ NULL, /* 1a02 */ NULL, /* 1a03 */ NULL, /* 1a04 */ NULL, /* 1a05 */ NULL, /* 1a06 */ NULL, /* 1a07 */ NULL, /* 1a08 */ NULL, /* 1a09 */ NULL, /* 1a0a */ NULL, /* 1a0b */ NULL, /* 1a0c */ NULL, /* 1a0d */ NULL, /* 1a0e */ NULL, /* 1a0f */ NULL, /* 1a10 */ NULL, /* 1a11 */ NULL, /* 1a12 */ NULL, /* 1a13 */ NULL, /* 1a14 */ NULL, /* 1a15 */ NULL, /* 1a16 */ NULL, /* 1a17 */ NULL, /* 1a18 */ NULL, /* 1a19 */ NULL, /* 1a1a */ NULL, /* 1a1b */ NULL, /* 1a1c */ NULL, /* 1a1d */ NULL, /* 1a1e */ NULL, /* 1a1f */ NULL, /* 1a20 */ NULL, /* 1a21 */ NULL, /* 1a22 */ NULL, /* 1a23 */ NULL, /* 1a24 */ NULL, /* 1a25 */ NULL, /* 1a26 */ NULL, /* 1a27 */ NULL, /* 1a28 */ NULL, /* 1a29 */ NULL, /* 1a2a */ NULL, /* 1a2b */ NULL, /* 1a2c */ NULL, /* 1a2d */ NULL, /* 1a2e */ NULL, /* 1a2f */ NULL, /* 1a30 */ NULL, /* 1a31 */ NULL, /* 1a32 */ NULL, /* 1a33 */ NULL, /* 1a34 */ NULL, /* 1a35 */ NULL, /* 1a36 */ NULL, /* 1a37 */ NULL, /* 1a38 */ NULL, /* 1a39 */ NULL, /* 1a3a */ NULL, /* 1a3b */ NULL, /* 1a3c */ NULL, /* 1a3d */ NULL, /* 1a3e */ NULL, /* 1a3f */ NULL, /* 1a40 */ NULL, /* 1a41 */ NULL, /* 1a42 */ NULL, /* 1a43 */ NULL, /* 1a44 */ NULL, /* 1a45 */ NULL, /* 1a46 */ NULL, /* 1a47 */ NULL, /* 1a48 */ NULL, /* 1a49 */ NULL, /* 1a4a */ NULL, /* 1a4b */ NULL, /* 1a4c */ NULL, /* 1a4d */ NULL, /* 1a4e */ NULL, /* 1a4f */ NULL, /* 1a50 */ NULL, /* 1a51 */ NULL, /* 1a52 */ NULL, /* 1a53 */ NULL, /* 1a54 */ NULL, /* 1a55 */ NULL, /* 1a56 */ NULL, /* 1a57 */ NULL, /* 1a58 */ NULL, /* 1a59 */ NULL, /* 1a5a */ NULL, /* 1a5b */ NULL, /* 1a5c */ NULL, /* 1a5d */ NULL, /* 1a5e */ NULL, /* 1a5f */ NULL, /* 1a60 */ NULL, /* 1a61 */ NULL, /* 1a62 */ NULL, /* 1a63 */ NULL, /* 1a64 */ NULL, /* 1a65 */ NULL, /* 1a66 */ NULL, /* 1a67 */ NULL, /* 1a68 */ NULL, /* 1a69 */ NULL, /* 1a6a */ NULL, /* 1a6b */ NULL, /* 1a6c */ NULL, /* 1a6d */ NULL, /* 1a6e */ NULL, /* 1a6f */ NULL, /* 1a70 */ NULL, /* 1a71 */ NULL, /* 1a72 */ NULL, /* 1a73 */ NULL, /* 1a74 */ NULL, /* 1a75 */ NULL, /* 1a76 */ NULL, /* 1a77 */ NULL, /* 1a78 */ NULL, /* 1a79 */ NULL, /* 1a7a */ NULL, /* 1a7b */ NULL, /* 1a7c */ NULL, /* 1a7d */ NULL, /* 1a7e */ NULL, /* 1a7f */ NULL, /* 1a80 */ NULL, /* 1a81 */ NULL, /* 1a82 */ NULL, /* 1a83 */ NULL, /* 1a84 */ NULL, /* 1a85 */ NULL, /* 1a86 */ NULL, /* 1a87 */ NULL, /* 1a88 */ NULL, /* 1a89 */ NULL, /* 1a8a */ NULL, /* 1a8b */ NULL, /* 1a8c */ NULL, /* 1a8d */ NULL, /* 1a8e */ NULL, /* 1a8f */ NULL, /* 1a90 */ NULL, /* 1a91 */ NULL, /* 1a92 */ NULL, /* 1a93 */ NULL, /* 1a94 */ NULL, /* 1a95 */ NULL, /* 1a96 */ NULL, /* 1a97 */ NULL, /* 1a98 */ NULL, /* 1a99 */ NULL, /* 1a9a */ NULL, /* 1a9b */ NULL, /* 1a9c */ NULL, /* 1a9d */ NULL, /* 1a9e */ NULL, /* 1a9f */ NULL, /* 1aa0 */ NULL, /* 1aa1 */ NULL, /* 1aa2 */ NULL, /* 1aa3 */ NULL, /* 1aa4 */ NULL, /* 1aa5 */ NULL, /* 1aa6 */ NULL, /* 1aa7 */ NULL, /* 1aa8 */ NULL, /* 1aa9 */ NULL, /* 1aaa */ NULL, /* 1aab */ NULL, /* 1aac */ NULL, /* 1aad */ NULL, /* 1aae */ NULL, /* 1aaf */ NULL, /* 1ab0 */ NULL, /* 1ab1 */ NULL, /* 1ab2 */ NULL, /* 1ab3 */ NULL, /* 1ab4 */ NULL, /* 1ab5 */ NULL, /* 1ab6 */ NULL, /* 1ab7 */ NULL, /* 1ab8 */ NULL, /* 1ab9 */ NULL, /* 1aba */ NULL, /* 1abb */ NULL, /* 1abc */ NULL, /* 1abd */ NULL, /* 1abe */ NULL, /* 1abf */ NULL, /* 1ac0 */ NULL, /* 1ac1 */ NULL, /* 1ac2 */ NULL, /* 1ac3 */ NULL, /* 1ac4 */ NULL, /* 1ac5 */ NULL, /* 1ac6 */ NULL, /* 1ac7 */ NULL, /* 1ac8 */ NULL, /* 1ac9 */ NULL, /* 1aca */ NULL, /* 1acb */ NULL, /* 1acc */ NULL, /* 1acd */ NULL, /* 1ace */ NULL, /* 1acf */ NULL, /* 1ad0 */ NULL, /* 1ad1 */ NULL, /* 1ad2 */ NULL, /* 1ad3 */ NULL, /* 1ad4 */ NULL, /* 1ad5 */ NULL, /* 1ad6 */ NULL, /* 1ad7 */ NULL, /* 1ad8 */ NULL, /* 1ad9 */ NULL, /* 1ada */ NULL, /* 1adb */ NULL, /* 1adc */ NULL, /* 1add */ NULL, /* 1ade */ NULL, /* 1adf */ NULL, /* 1ae0 */ NULL, /* 1ae1 */ NULL, /* 1ae2 */ NULL, /* 1ae3 */ NULL, /* 1ae4 */ NULL, /* 1ae5 */ NULL, /* 1ae6 */ NULL, /* 1ae7 */ NULL, /* 1ae8 */ NULL, /* 1ae9 */ NULL, /* 1aea */ NULL, /* 1aeb */ NULL, /* 1aec */ NULL, /* 1aed */ NULL, /* 1aee */ NULL, /* 1aef */ NULL, /* 1af0 */ NULL, /* 1af1 */ NULL, /* 1af2 */ NULL, /* 1af3 */ NULL, /* 1af4 */ NULL, /* 1af5 */ NULL, /* 1af6 */ NULL, /* 1af7 */ NULL, /* 1af8 */ NULL, /* 1af9 */ NULL, /* 1afa */ NULL, /* 1afb */ NULL, /* 1afc */ NULL, /* 1afd */ NULL, /* 1afe */ NULL, /* 1aff */ NULL, /* 1b00 */ NULL, /* 1b01 */ NULL, /* 1b02 */ NULL, /* 1b03 */ NULL, /* 1b04 */ NULL, /* 1b05 */ NULL, /* 1b06 */ NULL, /* 1b07 */ NULL, /* 1b08 */ NULL, /* 1b09 */ NULL, /* 1b0a */ NULL, /* 1b0b */ NULL, /* 1b0c */ NULL, /* 1b0d */ NULL, /* 1b0e */ NULL, /* 1b0f */ NULL, /* 1b10 */ NULL, /* 1b11 */ NULL, /* 1b12 */ NULL, /* 1b13 */ NULL, /* 1b14 */ NULL, /* 1b15 */ NULL, /* 1b16 */ NULL, /* 1b17 */ NULL, /* 1b18 */ NULL, /* 1b19 */ NULL, /* 1b1a */ NULL, /* 1b1b */ NULL, /* 1b1c */ NULL, /* 1b1d */ NULL, /* 1b1e */ NULL, /* 1b1f */ NULL, /* 1b20 */ NULL, /* 1b21 */ NULL, /* 1b22 */ NULL, /* 1b23 */ NULL, /* 1b24 */ NULL, /* 1b25 */ NULL, /* 1b26 */ NULL, /* 1b27 */ NULL, /* 1b28 */ NULL, /* 1b29 */ NULL, /* 1b2a */ NULL, /* 1b2b */ NULL, /* 1b2c */ NULL, /* 1b2d */ NULL, /* 1b2e */ NULL, /* 1b2f */ NULL, /* 1b30 */ NULL, /* 1b31 */ NULL, /* 1b32 */ NULL, /* 1b33 */ NULL, /* 1b34 */ NULL, /* 1b35 */ NULL, /* 1b36 */ NULL, /* 1b37 */ NULL, /* 1b38 */ NULL, /* 1b39 */ NULL, /* 1b3a */ NULL, /* 1b3b */ NULL, /* 1b3c */ NULL, /* 1b3d */ NULL, /* 1b3e */ NULL, /* 1b3f */ NULL, /* 1b40 */ NULL, /* 1b41 */ NULL, /* 1b42 */ NULL, /* 1b43 */ NULL, /* 1b44 */ NULL, /* 1b45 */ NULL, /* 1b46 */ NULL, /* 1b47 */ NULL, /* 1b48 */ NULL, /* 1b49 */ NULL, /* 1b4a */ NULL, /* 1b4b */ NULL, /* 1b4c */ NULL, /* 1b4d */ NULL, /* 1b4e */ NULL, /* 1b4f */ NULL, /* 1b50 */ NULL, /* 1b51 */ NULL, /* 1b52 */ NULL, /* 1b53 */ NULL, /* 1b54 */ NULL, /* 1b55 */ NULL, /* 1b56 */ NULL, /* 1b57 */ NULL, /* 1b58 */ NULL, /* 1b59 */ NULL, /* 1b5a */ NULL, /* 1b5b */ NULL, /* 1b5c */ NULL, /* 1b5d */ NULL, /* 1b5e */ NULL, /* 1b5f */ NULL, /* 1b60 */ NULL, /* 1b61 */ NULL, /* 1b62 */ NULL, /* 1b63 */ NULL, /* 1b64 */ NULL, /* 1b65 */ NULL, /* 1b66 */ NULL, /* 1b67 */ NULL, /* 1b68 */ NULL, /* 1b69 */ NULL, /* 1b6a */ NULL, /* 1b6b */ NULL, /* 1b6c */ NULL, /* 1b6d */ NULL, /* 1b6e */ NULL, /* 1b6f */ NULL, /* 1b70 */ NULL, /* 1b71 */ NULL, /* 1b72 */ NULL, /* 1b73 */ NULL, /* 1b74 */ NULL, /* 1b75 */ NULL, /* 1b76 */ NULL, /* 1b77 */ NULL, /* 1b78 */ NULL, /* 1b79 */ NULL, /* 1b7a */ NULL, /* 1b7b */ NULL, /* 1b7c */ NULL, /* 1b7d */ NULL, /* 1b7e */ NULL, /* 1b7f */ NULL, /* 1b80 */ NULL, /* 1b81 */ NULL, /* 1b82 */ NULL, /* 1b83 */ NULL, /* 1b84 */ NULL, /* 1b85 */ NULL, /* 1b86 */ NULL, /* 1b87 */ NULL, /* 1b88 */ NULL, /* 1b89 */ NULL, /* 1b8a */ NULL, /* 1b8b */ NULL, /* 1b8c */ NULL, /* 1b8d */ NULL, /* 1b8e */ NULL, /* 1b8f */ NULL, /* 1b90 */ NULL, /* 1b91 */ NULL, /* 1b92 */ NULL, /* 1b93 */ NULL, /* 1b94 */ NULL, /* 1b95 */ NULL, /* 1b96 */ NULL, /* 1b97 */ NULL, /* 1b98 */ NULL, /* 1b99 */ NULL, /* 1b9a */ NULL, /* 1b9b */ NULL, /* 1b9c */ NULL, /* 1b9d */ NULL, /* 1b9e */ NULL, /* 1b9f */ NULL, /* 1ba0 */ NULL, /* 1ba1 */ NULL, /* 1ba2 */ NULL, /* 1ba3 */ NULL, /* 1ba4 */ NULL, /* 1ba5 */ NULL, /* 1ba6 */ NULL, /* 1ba7 */ NULL, /* 1ba8 */ NULL, /* 1ba9 */ NULL, /* 1baa */ NULL, /* 1bab */ NULL, /* 1bac */ NULL, /* 1bad */ NULL, /* 1bae */ NULL, /* 1baf */ NULL, /* 1bb0 */ NULL, /* 1bb1 */ NULL, /* 1bb2 */ NULL, /* 1bb3 */ NULL, /* 1bb4 */ NULL, /* 1bb5 */ NULL, /* 1bb6 */ NULL, /* 1bb7 */ NULL, /* 1bb8 */ NULL, /* 1bb9 */ NULL, /* 1bba */ NULL, /* 1bbb */ NULL, /* 1bbc */ NULL, /* 1bbd */ NULL, /* 1bbe */ NULL, /* 1bbf */ NULL, /* 1bc0 */ NULL, /* 1bc1 */ NULL, /* 1bc2 */ NULL, /* 1bc3 */ NULL, /* 1bc4 */ NULL, /* 1bc5 */ NULL, /* 1bc6 */ NULL, /* 1bc7 */ NULL, /* 1bc8 */ NULL, /* 1bc9 */ NULL, /* 1bca */ NULL, /* 1bcb */ NULL, /* 1bcc */ NULL, /* 1bcd */ NULL, /* 1bce */ NULL, /* 1bcf */ NULL, /* 1bd0 */ NULL, /* 1bd1 */ NULL, /* 1bd2 */ NULL, /* 1bd3 */ NULL, /* 1bd4 */ NULL, /* 1bd5 */ NULL, /* 1bd6 */ NULL, /* 1bd7 */ NULL, /* 1bd8 */ NULL, /* 1bd9 */ NULL, /* 1bda */ NULL, /* 1bdb */ NULL, /* 1bdc */ NULL, /* 1bdd */ NULL, /* 1bde */ NULL, /* 1bdf */ NULL, /* 1be0 */ NULL, /* 1be1 */ NULL, /* 1be2 */ NULL, /* 1be3 */ NULL, /* 1be4 */ NULL, /* 1be5 */ NULL, /* 1be6 */ NULL, /* 1be7 */ NULL, /* 1be8 */ NULL, /* 1be9 */ NULL, /* 1bea */ NULL, /* 1beb */ NULL, /* 1bec */ NULL, /* 1bed */ NULL, /* 1bee */ NULL, /* 1bef */ NULL, /* 1bf0 */ NULL, /* 1bf1 */ NULL, /* 1bf2 */ NULL, /* 1bf3 */ NULL, /* 1bf4 */ NULL, /* 1bf5 */ NULL, /* 1bf6 */ NULL, /* 1bf7 */ NULL, /* 1bf8 */ NULL, /* 1bf9 */ NULL, /* 1bfa */ NULL, /* 1bfb */ NULL, /* 1bfc */ NULL, /* 1bfd */ NULL, /* 1bfe */ NULL, /* 1bff */ NULL, /* 1c00 */ NULL, /* 1c01 */ NULL, /* 1c02 */ NULL, /* 1c03 */ NULL, /* 1c04 */ NULL, /* 1c05 */ NULL, /* 1c06 */ NULL, /* 1c07 */ NULL, /* 1c08 */ NULL, /* 1c09 */ NULL, /* 1c0a */ NULL, /* 1c0b */ NULL, /* 1c0c */ NULL, /* 1c0d */ NULL, /* 1c0e */ NULL, /* 1c0f */ NULL, /* 1c10 */ NULL, /* 1c11 */ NULL, /* 1c12 */ NULL, /* 1c13 */ NULL, /* 1c14 */ NULL, /* 1c15 */ NULL, /* 1c16 */ NULL, /* 1c17 */ NULL, /* 1c18 */ NULL, /* 1c19 */ NULL, /* 1c1a */ NULL, /* 1c1b */ NULL, /* 1c1c */ NULL, /* 1c1d */ NULL, /* 1c1e */ NULL, /* 1c1f */ NULL, /* 1c20 */ NULL, /* 1c21 */ NULL, /* 1c22 */ NULL, /* 1c23 */ NULL, /* 1c24 */ NULL, /* 1c25 */ NULL, /* 1c26 */ NULL, /* 1c27 */ NULL, /* 1c28 */ NULL, /* 1c29 */ NULL, /* 1c2a */ NULL, /* 1c2b */ NULL, /* 1c2c */ NULL, /* 1c2d */ NULL, /* 1c2e */ NULL, /* 1c2f */ NULL, /* 1c30 */ NULL, /* 1c31 */ NULL, /* 1c32 */ NULL, /* 1c33 */ NULL, /* 1c34 */ NULL, /* 1c35 */ NULL, /* 1c36 */ NULL, /* 1c37 */ NULL, /* 1c38 */ NULL, /* 1c39 */ NULL, /* 1c3a */ NULL, /* 1c3b */ NULL, /* 1c3c */ NULL, /* 1c3d */ NULL, /* 1c3e */ NULL, /* 1c3f */ NULL, /* 1c40 */ NULL, /* 1c41 */ NULL, /* 1c42 */ NULL, /* 1c43 */ NULL, /* 1c44 */ NULL, /* 1c45 */ NULL, /* 1c46 */ NULL, /* 1c47 */ NULL, /* 1c48 */ NULL, /* 1c49 */ NULL, /* 1c4a */ NULL, /* 1c4b */ NULL, /* 1c4c */ NULL, /* 1c4d */ NULL, /* 1c4e */ NULL, /* 1c4f */ NULL, /* 1c50 */ NULL, /* 1c51 */ NULL, /* 1c52 */ NULL, /* 1c53 */ NULL, /* 1c54 */ NULL, /* 1c55 */ NULL, /* 1c56 */ NULL, /* 1c57 */ NULL, /* 1c58 */ NULL, /* 1c59 */ NULL, /* 1c5a */ NULL, /* 1c5b */ NULL, /* 1c5c */ NULL, /* 1c5d */ NULL, /* 1c5e */ NULL, /* 1c5f */ NULL, /* 1c60 */ NULL, /* 1c61 */ NULL, /* 1c62 */ NULL, /* 1c63 */ NULL, /* 1c64 */ NULL, /* 1c65 */ NULL, /* 1c66 */ NULL, /* 1c67 */ NULL, /* 1c68 */ NULL, /* 1c69 */ NULL, /* 1c6a */ NULL, /* 1c6b */ NULL, /* 1c6c */ NULL, /* 1c6d */ NULL, /* 1c6e */ NULL, /* 1c6f */ NULL, /* 1c70 */ NULL, /* 1c71 */ NULL, /* 1c72 */ NULL, /* 1c73 */ NULL, /* 1c74 */ NULL, /* 1c75 */ NULL, /* 1c76 */ NULL, /* 1c77 */ NULL, /* 1c78 */ NULL, /* 1c79 */ NULL, /* 1c7a */ NULL, /* 1c7b */ NULL, /* 1c7c */ NULL, /* 1c7d */ NULL, /* 1c7e */ NULL, /* 1c7f */ NULL, /* 1c80 */ NULL, /* 1c81 */ NULL, /* 1c82 */ NULL, /* 1c83 */ NULL, /* 1c84 */ NULL, /* 1c85 */ NULL, /* 1c86 */ NULL, /* 1c87 */ NULL, /* 1c88 */ NULL, /* 1c89 */ NULL, /* 1c8a */ NULL, /* 1c8b */ NULL, /* 1c8c */ NULL, /* 1c8d */ NULL, /* 1c8e */ NULL, /* 1c8f */ NULL, /* 1c90 */ NULL, /* 1c91 */ NULL, /* 1c92 */ NULL, /* 1c93 */ NULL, /* 1c94 */ NULL, /* 1c95 */ NULL, /* 1c96 */ NULL, /* 1c97 */ NULL, /* 1c98 */ NULL, /* 1c99 */ NULL, /* 1c9a */ NULL, /* 1c9b */ NULL, /* 1c9c */ NULL, /* 1c9d */ NULL, /* 1c9e */ NULL, /* 1c9f */ NULL, /* 1ca0 */ NULL, /* 1ca1 */ NULL, /* 1ca2 */ NULL, /* 1ca3 */ NULL, /* 1ca4 */ NULL, /* 1ca5 */ NULL, /* 1ca6 */ NULL, /* 1ca7 */ NULL, /* 1ca8 */ NULL, /* 1ca9 */ NULL, /* 1caa */ NULL, /* 1cab */ NULL, /* 1cac */ NULL, /* 1cad */ NULL, /* 1cae */ NULL, /* 1caf */ NULL, /* 1cb0 */ NULL, /* 1cb1 */ NULL, /* 1cb2 */ NULL, /* 1cb3 */ NULL, /* 1cb4 */ NULL, /* 1cb5 */ NULL, /* 1cb6 */ NULL, /* 1cb7 */ NULL, /* 1cb8 */ NULL, /* 1cb9 */ NULL, /* 1cba */ NULL, /* 1cbb */ NULL, /* 1cbc */ NULL, /* 1cbd */ NULL, /* 1cbe */ NULL, /* 1cbf */ NULL, /* 1cc0 */ NULL, /* 1cc1 */ NULL, /* 1cc2 */ NULL, /* 1cc3 */ NULL, /* 1cc4 */ NULL, /* 1cc5 */ NULL, /* 1cc6 */ NULL, /* 1cc7 */ NULL, /* 1cc8 */ NULL, /* 1cc9 */ NULL, /* 1cca */ NULL, /* 1ccb */ NULL, /* 1ccc */ NULL, /* 1ccd */ NULL, /* 1cce */ NULL, /* 1ccf */ NULL, /* 1cd0 */ NULL, /* 1cd1 */ NULL, /* 1cd2 */ NULL, /* 1cd3 */ NULL, /* 1cd4 */ NULL, /* 1cd5 */ NULL, /* 1cd6 */ NULL, /* 1cd7 */ NULL, /* 1cd8 */ NULL, /* 1cd9 */ NULL, /* 1cda */ NULL, /* 1cdb */ NULL, /* 1cdc */ NULL, /* 1cdd */ NULL, /* 1cde */ NULL, /* 1cdf */ NULL, /* 1ce0 */ NULL, /* 1ce1 */ NULL, /* 1ce2 */ NULL, /* 1ce3 */ NULL, /* 1ce4 */ NULL, /* 1ce5 */ NULL, /* 1ce6 */ NULL, /* 1ce7 */ NULL, /* 1ce8 */ NULL, /* 1ce9 */ NULL, /* 1cea */ NULL, /* 1ceb */ NULL, /* 1cec */ NULL, /* 1ced */ NULL, /* 1cee */ NULL, /* 1cef */ NULL, /* 1cf0 */ NULL, /* 1cf1 */ NULL, /* 1cf2 */ NULL, /* 1cf3 */ NULL, /* 1cf4 */ NULL, /* 1cf5 */ NULL, /* 1cf6 */ NULL, /* 1cf7 */ NULL, /* 1cf8 */ NULL, /* 1cf9 */ NULL, /* 1cfa */ NULL, /* 1cfb */ NULL, /* 1cfc */ NULL, /* 1cfd */ NULL, /* 1cfe */ NULL, /* 1cff */ NULL, /* 1d00 */ NULL, /* 1d01 */ NULL, /* 1d02 */ NULL, /* 1d03 */ NULL, /* 1d04 */ NULL, /* 1d05 */ NULL, /* 1d06 */ NULL, /* 1d07 */ NULL, /* 1d08 */ NULL, /* 1d09 */ NULL, /* 1d0a */ NULL, /* 1d0b */ NULL, /* 1d0c */ NULL, /* 1d0d */ NULL, /* 1d0e */ NULL, /* 1d0f */ NULL, /* 1d10 */ NULL, /* 1d11 */ NULL, /* 1d12 */ NULL, /* 1d13 */ NULL, /* 1d14 */ NULL, /* 1d15 */ NULL, /* 1d16 */ NULL, /* 1d17 */ NULL, /* 1d18 */ NULL, /* 1d19 */ NULL, /* 1d1a */ NULL, /* 1d1b */ NULL, /* 1d1c */ NULL, /* 1d1d */ NULL, /* 1d1e */ NULL, /* 1d1f */ NULL, /* 1d20 */ NULL, /* 1d21 */ NULL, /* 1d22 */ NULL, /* 1d23 */ NULL, /* 1d24 */ NULL, /* 1d25 */ NULL, /* 1d26 */ NULL, /* 1d27 */ NULL, /* 1d28 */ NULL, /* 1d29 */ NULL, /* 1d2a */ NULL, /* 1d2b */ NULL, /* 1d2c */ NULL, /* 1d2d */ NULL, /* 1d2e */ NULL, /* 1d2f */ NULL, /* 1d30 */ NULL, /* 1d31 */ NULL, /* 1d32 */ NULL, /* 1d33 */ NULL, /* 1d34 */ NULL, /* 1d35 */ NULL, /* 1d36 */ NULL, /* 1d37 */ NULL, /* 1d38 */ NULL, /* 1d39 */ NULL, /* 1d3a */ NULL, /* 1d3b */ NULL, /* 1d3c */ NULL, /* 1d3d */ NULL, /* 1d3e */ NULL, /* 1d3f */ NULL, /* 1d40 */ NULL, /* 1d41 */ NULL, /* 1d42 */ NULL, /* 1d43 */ NULL, /* 1d44 */ NULL, /* 1d45 */ NULL, /* 1d46 */ NULL, /* 1d47 */ NULL, /* 1d48 */ NULL, /* 1d49 */ NULL, /* 1d4a */ NULL, /* 1d4b */ NULL, /* 1d4c */ NULL, /* 1d4d */ NULL, /* 1d4e */ NULL, /* 1d4f */ NULL, /* 1d50 */ NULL, /* 1d51 */ NULL, /* 1d52 */ NULL, /* 1d53 */ NULL, /* 1d54 */ NULL, /* 1d55 */ NULL, /* 1d56 */ NULL, /* 1d57 */ NULL, /* 1d58 */ NULL, /* 1d59 */ NULL, /* 1d5a */ NULL, /* 1d5b */ NULL, /* 1d5c */ NULL, /* 1d5d */ NULL, /* 1d5e */ NULL, /* 1d5f */ NULL, /* 1d60 */ NULL, /* 1d61 */ NULL, /* 1d62 */ NULL, /* 1d63 */ NULL, /* 1d64 */ NULL, /* 1d65 */ NULL, /* 1d66 */ NULL, /* 1d67 */ NULL, /* 1d68 */ NULL, /* 1d69 */ NULL, /* 1d6a */ NULL, /* 1d6b */ NULL, /* 1d6c */ NULL, /* 1d6d */ NULL, /* 1d6e */ NULL, /* 1d6f */ NULL, /* 1d70 */ NULL, /* 1d71 */ NULL, /* 1d72 */ NULL, /* 1d73 */ NULL, /* 1d74 */ NULL, /* 1d75 */ NULL, /* 1d76 */ NULL, /* 1d77 */ NULL, /* 1d78 */ NULL, /* 1d79 */ NULL, /* 1d7a */ NULL, /* 1d7b */ NULL, /* 1d7c */ NULL, /* 1d7d */ NULL, /* 1d7e */ NULL, /* 1d7f */ NULL, /* 1d80 */ NULL, /* 1d81 */ NULL, /* 1d82 */ NULL, /* 1d83 */ NULL, /* 1d84 */ NULL, /* 1d85 */ NULL, /* 1d86 */ NULL, /* 1d87 */ NULL, /* 1d88 */ NULL, /* 1d89 */ NULL, /* 1d8a */ NULL, /* 1d8b */ NULL, /* 1d8c */ NULL, /* 1d8d */ NULL, /* 1d8e */ NULL, /* 1d8f */ NULL, /* 1d90 */ NULL, /* 1d91 */ NULL, /* 1d92 */ NULL, /* 1d93 */ NULL, /* 1d94 */ NULL, /* 1d95 */ NULL, /* 1d96 */ NULL, /* 1d97 */ NULL, /* 1d98 */ NULL, /* 1d99 */ NULL, /* 1d9a */ NULL, /* 1d9b */ NULL, /* 1d9c */ NULL, /* 1d9d */ NULL, /* 1d9e */ NULL, /* 1d9f */ NULL, /* 1da0 */ NULL, /* 1da1 */ NULL, /* 1da2 */ NULL, /* 1da3 */ NULL, /* 1da4 */ NULL, /* 1da5 */ NULL, /* 1da6 */ NULL, /* 1da7 */ NULL, /* 1da8 */ NULL, /* 1da9 */ NULL, /* 1daa */ NULL, /* 1dab */ NULL, /* 1dac */ NULL, /* 1dad */ NULL, /* 1dae */ NULL, /* 1daf */ NULL, /* 1db0 */ NULL, /* 1db1 */ NULL, /* 1db2 */ NULL, /* 1db3 */ NULL, /* 1db4 */ NULL, /* 1db5 */ NULL, /* 1db6 */ NULL, /* 1db7 */ NULL, /* 1db8 */ NULL, /* 1db9 */ NULL, /* 1dba */ NULL, /* 1dbb */ NULL, /* 1dbc */ NULL, /* 1dbd */ NULL, /* 1dbe */ NULL, /* 1dbf */ NULL, /* 1dc0 */ NULL, /* 1dc1 */ NULL, /* 1dc2 */ NULL, /* 1dc3 */ NULL, /* 1dc4 */ NULL, /* 1dc5 */ NULL, /* 1dc6 */ NULL, /* 1dc7 */ NULL, /* 1dc8 */ NULL, /* 1dc9 */ NULL, /* 1dca */ NULL, /* 1dcb */ NULL, /* 1dcc */ NULL, /* 1dcd */ NULL, /* 1dce */ NULL, /* 1dcf */ NULL, /* 1dd0 */ NULL, /* 1dd1 */ NULL, /* 1dd2 */ NULL, /* 1dd3 */ NULL, /* 1dd4 */ NULL, /* 1dd5 */ NULL, /* 1dd6 */ NULL, /* 1dd7 */ NULL, /* 1dd8 */ NULL, /* 1dd9 */ NULL, /* 1dda */ NULL, /* 1ddb */ NULL, /* 1ddc */ NULL, /* 1ddd */ NULL, /* 1dde */ NULL, /* 1ddf */ NULL, /* 1de0 */ NULL, /* 1de1 */ NULL, /* 1de2 */ NULL, /* 1de3 */ NULL, /* 1de4 */ NULL, /* 1de5 */ NULL, /* 1de6 */ NULL, /* 1de7 */ NULL, /* 1de8 */ NULL, /* 1de9 */ NULL, /* 1dea */ NULL, /* 1deb */ NULL, /* 1dec */ NULL, /* 1ded */ NULL, /* 1dee */ NULL, /* 1def */ NULL, /* 1df0 */ NULL, /* 1df1 */ NULL, /* 1df2 */ NULL, /* 1df3 */ NULL, /* 1df4 */ NULL, /* 1df5 */ NULL, /* 1df6 */ NULL, /* 1df7 */ NULL, /* 1df8 */ NULL, /* 1df9 */ NULL, /* 1dfa */ NULL, /* 1dfb */ NULL, /* 1dfc */ NULL, /* 1dfd */ NULL, /* 1dfe */ NULL, /* 1dff */ NULL, /* 1e00 */ NULL, /* 1e01 */ NULL, /* 1e02 */ NULL, /* 1e03 */ NULL, /* 1e04 */ NULL, /* 1e05 */ NULL, /* 1e06 */ NULL, /* 1e07 */ NULL, /* 1e08 */ NULL, /* 1e09 */ NULL, /* 1e0a */ NULL, /* 1e0b */ NULL, /* 1e0c */ NULL, /* 1e0d */ NULL, /* 1e0e */ NULL, /* 1e0f */ NULL, /* 1e10 */ NULL, /* 1e11 */ NULL, /* 1e12 */ NULL, /* 1e13 */ NULL, /* 1e14 */ NULL, /* 1e15 */ NULL, /* 1e16 */ NULL, /* 1e17 */ NULL, /* 1e18 */ NULL, /* 1e19 */ NULL, /* 1e1a */ NULL, /* 1e1b */ NULL, /* 1e1c */ NULL, /* 1e1d */ NULL, /* 1e1e */ NULL, /* 1e1f */ NULL, /* 1e20 */ NULL, /* 1e21 */ NULL, /* 1e22 */ NULL, /* 1e23 */ NULL, /* 1e24 */ NULL, /* 1e25 */ NULL, /* 1e26 */ NULL, /* 1e27 */ NULL, /* 1e28 */ NULL, /* 1e29 */ NULL, /* 1e2a */ NULL, /* 1e2b */ NULL, /* 1e2c */ NULL, /* 1e2d */ NULL, /* 1e2e */ NULL, /* 1e2f */ NULL, /* 1e30 */ NULL, /* 1e31 */ NULL, /* 1e32 */ NULL, /* 1e33 */ NULL, /* 1e34 */ NULL, /* 1e35 */ NULL, /* 1e36 */ NULL, /* 1e37 */ NULL, /* 1e38 */ NULL, /* 1e39 */ NULL, /* 1e3a */ NULL, /* 1e3b */ NULL, /* 1e3c */ NULL, /* 1e3d */ NULL, /* 1e3e */ NULL, /* 1e3f */ NULL, /* 1e40 */ NULL, /* 1e41 */ NULL, /* 1e42 */ NULL, /* 1e43 */ NULL, /* 1e44 */ NULL, /* 1e45 */ NULL, /* 1e46 */ NULL, /* 1e47 */ NULL, /* 1e48 */ NULL, /* 1e49 */ NULL, /* 1e4a */ NULL, /* 1e4b */ NULL, /* 1e4c */ NULL, /* 1e4d */ NULL, /* 1e4e */ NULL, /* 1e4f */ NULL, /* 1e50 */ NULL, /* 1e51 */ NULL, /* 1e52 */ NULL, /* 1e53 */ NULL, /* 1e54 */ NULL, /* 1e55 */ NULL, /* 1e56 */ NULL, /* 1e57 */ NULL, /* 1e58 */ NULL, /* 1e59 */ NULL, /* 1e5a */ NULL, /* 1e5b */ NULL, /* 1e5c */ NULL, /* 1e5d */ NULL, /* 1e5e */ NULL, /* 1e5f */ NULL, /* 1e60 */ NULL, /* 1e61 */ NULL, /* 1e62 */ NULL, /* 1e63 */ NULL, /* 1e64 */ NULL, /* 1e65 */ NULL, /* 1e66 */ NULL, /* 1e67 */ NULL, /* 1e68 */ NULL, /* 1e69 */ NULL, /* 1e6a */ NULL, /* 1e6b */ NULL, /* 1e6c */ NULL, /* 1e6d */ NULL, /* 1e6e */ NULL, /* 1e6f */ NULL, /* 1e70 */ NULL, /* 1e71 */ NULL, /* 1e72 */ NULL, /* 1e73 */ NULL, /* 1e74 */ NULL, /* 1e75 */ NULL, /* 1e76 */ NULL, /* 1e77 */ NULL, /* 1e78 */ NULL, /* 1e79 */ NULL, /* 1e7a */ NULL, /* 1e7b */ NULL, /* 1e7c */ NULL, /* 1e7d */ NULL, /* 1e7e */ NULL, /* 1e7f */ NULL, /* 1e80 */ "Wgrave", /* 1e81 */ "wgrave", /* 1e82 */ "Wacute", /* 1e83 */ "wacute", /* 1e84 */ "Wdieresis", /* 1e85 */ "wdieresis", /* 1e86 */ NULL, /* 1e87 */ NULL, /* 1e88 */ NULL, /* 1e89 */ NULL, /* 1e8a */ NULL, /* 1e8b */ NULL, /* 1e8c */ NULL, /* 1e8d */ NULL, /* 1e8e */ NULL, /* 1e8f */ NULL, /* 1e90 */ NULL, /* 1e91 */ NULL, /* 1e92 */ NULL, /* 1e93 */ NULL, /* 1e94 */ NULL, /* 1e95 */ NULL, /* 1e96 */ NULL, /* 1e97 */ NULL, /* 1e98 */ NULL, /* 1e99 */ NULL, /* 1e9a */ NULL, /* 1e9b */ NULL, /* 1e9c */ NULL, /* 1e9d */ NULL, /* 1e9e */ NULL, /* 1e9f */ NULL, /* 1ea0 */ NULL, /* 1ea1 */ NULL, /* 1ea2 */ NULL, /* 1ea3 */ NULL, /* 1ea4 */ NULL, /* 1ea5 */ NULL, /* 1ea6 */ NULL, /* 1ea7 */ NULL, /* 1ea8 */ NULL, /* 1ea9 */ NULL, /* 1eaa */ NULL, /* 1eab */ NULL, /* 1eac */ NULL, /* 1ead */ NULL, /* 1eae */ NULL, /* 1eaf */ NULL, /* 1eb0 */ NULL, /* 1eb1 */ NULL, /* 1eb2 */ NULL, /* 1eb3 */ NULL, /* 1eb4 */ NULL, /* 1eb5 */ NULL, /* 1eb6 */ NULL, /* 1eb7 */ NULL, /* 1eb8 */ NULL, /* 1eb9 */ NULL, /* 1eba */ NULL, /* 1ebb */ NULL, /* 1ebc */ NULL, /* 1ebd */ NULL, /* 1ebe */ NULL, /* 1ebf */ NULL, /* 1ec0 */ NULL, /* 1ec1 */ NULL, /* 1ec2 */ NULL, /* 1ec3 */ NULL, /* 1ec4 */ NULL, /* 1ec5 */ NULL, /* 1ec6 */ NULL, /* 1ec7 */ NULL, /* 1ec8 */ NULL, /* 1ec9 */ NULL, /* 1eca */ NULL, /* 1ecb */ NULL, /* 1ecc */ NULL, /* 1ecd */ NULL, /* 1ece */ NULL, /* 1ecf */ NULL, /* 1ed0 */ NULL, /* 1ed1 */ NULL, /* 1ed2 */ NULL, /* 1ed3 */ NULL, /* 1ed4 */ NULL, /* 1ed5 */ NULL, /* 1ed6 */ NULL, /* 1ed7 */ NULL, /* 1ed8 */ NULL, /* 1ed9 */ NULL, /* 1eda */ NULL, /* 1edb */ NULL, /* 1edc */ NULL, /* 1edd */ NULL, /* 1ede */ NULL, /* 1edf */ NULL, /* 1ee0 */ NULL, /* 1ee1 */ NULL, /* 1ee2 */ NULL, /* 1ee3 */ NULL, /* 1ee4 */ NULL, /* 1ee5 */ NULL, /* 1ee6 */ NULL, /* 1ee7 */ NULL, /* 1ee8 */ NULL, /* 1ee9 */ NULL, /* 1eea */ NULL, /* 1eeb */ NULL, /* 1eec */ NULL, /* 1eed */ NULL, /* 1eee */ NULL, /* 1eef */ NULL, /* 1ef0 */ NULL, /* 1ef1 */ NULL, /* 1ef2 */ "Ygrave", /* 1ef3 */ "ygrave", /* 1ef4 */ NULL, /* 1ef5 */ NULL, /* 1ef6 */ NULL, /* 1ef7 */ NULL, /* 1ef8 */ NULL, /* 1ef9 */ NULL, /* 1efa */ NULL, /* 1efb */ NULL, /* 1efc */ NULL, /* 1efd */ NULL, /* 1efe */ NULL, /* 1eff */ NULL, /* 1f00 */ NULL, /* 1f01 */ NULL, /* 1f02 */ NULL, /* 1f03 */ NULL, /* 1f04 */ NULL, /* 1f05 */ NULL, /* 1f06 */ NULL, /* 1f07 */ NULL, /* 1f08 */ NULL, /* 1f09 */ NULL, /* 1f0a */ NULL, /* 1f0b */ NULL, /* 1f0c */ NULL, /* 1f0d */ NULL, /* 1f0e */ NULL, /* 1f0f */ NULL, /* 1f10 */ NULL, /* 1f11 */ NULL, /* 1f12 */ NULL, /* 1f13 */ NULL, /* 1f14 */ NULL, /* 1f15 */ NULL, /* 1f16 */ NULL, /* 1f17 */ NULL, /* 1f18 */ NULL, /* 1f19 */ NULL, /* 1f1a */ NULL, /* 1f1b */ NULL, /* 1f1c */ NULL, /* 1f1d */ NULL, /* 1f1e */ NULL, /* 1f1f */ NULL, /* 1f20 */ NULL, /* 1f21 */ NULL, /* 1f22 */ NULL, /* 1f23 */ NULL, /* 1f24 */ NULL, /* 1f25 */ NULL, /* 1f26 */ NULL, /* 1f27 */ NULL, /* 1f28 */ NULL, /* 1f29 */ NULL, /* 1f2a */ NULL, /* 1f2b */ NULL, /* 1f2c */ NULL, /* 1f2d */ NULL, /* 1f2e */ NULL, /* 1f2f */ NULL, /* 1f30 */ NULL, /* 1f31 */ NULL, /* 1f32 */ NULL, /* 1f33 */ NULL, /* 1f34 */ NULL, /* 1f35 */ NULL, /* 1f36 */ NULL, /* 1f37 */ NULL, /* 1f38 */ NULL, /* 1f39 */ NULL, /* 1f3a */ NULL, /* 1f3b */ NULL, /* 1f3c */ NULL, /* 1f3d */ NULL, /* 1f3e */ NULL, /* 1f3f */ NULL, /* 1f40 */ NULL, /* 1f41 */ NULL, /* 1f42 */ NULL, /* 1f43 */ NULL, /* 1f44 */ NULL, /* 1f45 */ NULL, /* 1f46 */ NULL, /* 1f47 */ NULL, /* 1f48 */ NULL, /* 1f49 */ NULL, /* 1f4a */ NULL, /* 1f4b */ NULL, /* 1f4c */ NULL, /* 1f4d */ NULL, /* 1f4e */ NULL, /* 1f4f */ NULL, /* 1f50 */ NULL, /* 1f51 */ NULL, /* 1f52 */ NULL, /* 1f53 */ NULL, /* 1f54 */ NULL, /* 1f55 */ NULL, /* 1f56 */ NULL, /* 1f57 */ NULL, /* 1f58 */ NULL, /* 1f59 */ NULL, /* 1f5a */ NULL, /* 1f5b */ NULL, /* 1f5c */ NULL, /* 1f5d */ NULL, /* 1f5e */ NULL, /* 1f5f */ NULL, /* 1f60 */ NULL, /* 1f61 */ NULL, /* 1f62 */ NULL, /* 1f63 */ NULL, /* 1f64 */ NULL, /* 1f65 */ NULL, /* 1f66 */ NULL, /* 1f67 */ NULL, /* 1f68 */ NULL, /* 1f69 */ NULL, /* 1f6a */ NULL, /* 1f6b */ NULL, /* 1f6c */ NULL, /* 1f6d */ NULL, /* 1f6e */ NULL, /* 1f6f */ NULL, /* 1f70 */ NULL, /* 1f71 */ NULL, /* 1f72 */ NULL, /* 1f73 */ NULL, /* 1f74 */ NULL, /* 1f75 */ NULL, /* 1f76 */ NULL, /* 1f77 */ NULL, /* 1f78 */ NULL, /* 1f79 */ NULL, /* 1f7a */ NULL, /* 1f7b */ NULL, /* 1f7c */ NULL, /* 1f7d */ NULL, /* 1f7e */ NULL, /* 1f7f */ NULL, /* 1f80 */ NULL, /* 1f81 */ NULL, /* 1f82 */ NULL, /* 1f83 */ NULL, /* 1f84 */ NULL, /* 1f85 */ NULL, /* 1f86 */ NULL, /* 1f87 */ NULL, /* 1f88 */ NULL, /* 1f89 */ NULL, /* 1f8a */ NULL, /* 1f8b */ NULL, /* 1f8c */ NULL, /* 1f8d */ NULL, /* 1f8e */ NULL, /* 1f8f */ NULL, /* 1f90 */ NULL, /* 1f91 */ NULL, /* 1f92 */ NULL, /* 1f93 */ NULL, /* 1f94 */ NULL, /* 1f95 */ NULL, /* 1f96 */ NULL, /* 1f97 */ NULL, /* 1f98 */ NULL, /* 1f99 */ NULL, /* 1f9a */ NULL, /* 1f9b */ NULL, /* 1f9c */ NULL, /* 1f9d */ NULL, /* 1f9e */ NULL, /* 1f9f */ NULL, /* 1fa0 */ NULL, /* 1fa1 */ NULL, /* 1fa2 */ NULL, /* 1fa3 */ NULL, /* 1fa4 */ NULL, /* 1fa5 */ NULL, /* 1fa6 */ NULL, /* 1fa7 */ NULL, /* 1fa8 */ NULL, /* 1fa9 */ NULL, /* 1faa */ NULL, /* 1fab */ NULL, /* 1fac */ NULL, /* 1fad */ NULL, /* 1fae */ NULL, /* 1faf */ NULL, /* 1fb0 */ NULL, /* 1fb1 */ NULL, /* 1fb2 */ NULL, /* 1fb3 */ NULL, /* 1fb4 */ NULL, /* 1fb5 */ NULL, /* 1fb6 */ NULL, /* 1fb7 */ NULL, /* 1fb8 */ NULL, /* 1fb9 */ NULL, /* 1fba */ NULL, /* 1fbb */ NULL, /* 1fbc */ NULL, /* 1fbd */ NULL, /* 1fbe */ NULL, /* 1fbf */ NULL, /* 1fc0 */ NULL, /* 1fc1 */ NULL, /* 1fc2 */ NULL, /* 1fc3 */ NULL, /* 1fc4 */ NULL, /* 1fc5 */ NULL, /* 1fc6 */ NULL, /* 1fc7 */ NULL, /* 1fc8 */ NULL, /* 1fc9 */ NULL, /* 1fca */ NULL, /* 1fcb */ NULL, /* 1fcc */ NULL, /* 1fcd */ NULL, /* 1fce */ NULL, /* 1fcf */ NULL, /* 1fd0 */ NULL, /* 1fd1 */ NULL, /* 1fd2 */ NULL, /* 1fd3 */ NULL, /* 1fd4 */ NULL, /* 1fd5 */ NULL, /* 1fd6 */ NULL, /* 1fd7 */ NULL, /* 1fd8 */ NULL, /* 1fd9 */ NULL, /* 1fda */ NULL, /* 1fdb */ NULL, /* 1fdc */ NULL, /* 1fdd */ NULL, /* 1fde */ NULL, /* 1fdf */ NULL, /* 1fe0 */ NULL, /* 1fe1 */ NULL, /* 1fe2 */ NULL, /* 1fe3 */ NULL, /* 1fe4 */ NULL, /* 1fe5 */ NULL, /* 1fe6 */ NULL, /* 1fe7 */ NULL, /* 1fe8 */ NULL, /* 1fe9 */ NULL, /* 1fea */ NULL, /* 1feb */ NULL, /* 1fec */ NULL, /* 1fed */ NULL, /* 1fee */ NULL, /* 1fef */ NULL, /* 1ff0 */ NULL, /* 1ff1 */ NULL, /* 1ff2 */ NULL, /* 1ff3 */ NULL, /* 1ff4 */ NULL, /* 1ff5 */ NULL, /* 1ff6 */ NULL, /* 1ff7 */ NULL, /* 1ff8 */ NULL, /* 1ff9 */ NULL, /* 1ffa */ NULL, /* 1ffb */ NULL, /* 1ffc */ NULL, /* 1ffd */ NULL, /* 1ffe */ NULL, /* 1fff */ NULL, /* 2000 */ NULL, /* 2001 */ NULL, /* 2002 */ NULL, /* 2003 */ NULL, /* 2004 */ NULL, /* 2005 */ NULL, /* 2006 */ NULL, /* 2007 */ NULL, /* 2008 */ NULL, /* 2009 */ NULL, /* 200a */ NULL, /* 200b */ NULL, /* 200c */ "afii61664", /* 200d */ "afii301", /* 200e */ "afii299", /* 200f */ "afii300", /* 2010 */ NULL, /* 2011 */ NULL, /* 2012 */ "figuredash", /* 2013 */ "endash", /* 2014 */ "emdash", /* 2015 */ "afii00208", /* 2016 */ NULL, /* 2017 */ "underscoredbl", /* 2018 */ "quoteleft", /* 2019 */ "quoteright", /* 201a */ "quotesinglbase", /* 201b */ "quotereversed", /* 201c */ "quotedblleft", /* 201d */ "quotedblright", /* 201e */ "quotedblbase", /* 201f */ NULL, /* 2020 */ "dagger", /* 2021 */ "daggerdbl", /* 2022 */ "bullet", /* 2023 */ NULL, /* 2024 */ "onedotenleader", /* 2025 */ "twodotenleader", /* 2026 */ "ellipsis", /* 2027 */ NULL, /* 2028 */ NULL, /* 2029 */ NULL, /* 202a */ NULL, /* 202b */ NULL, /* 202c */ "afii61573", /* 202d */ "afii61574", /* 202e */ "afii61575", /* 202f */ NULL, /* 2030 */ "perthousand", /* 2031 */ NULL, /* 2032 */ "minute", /* 2033 */ "second", /* 2034 */ NULL, /* 2035 */ NULL, /* 2036 */ NULL, /* 2037 */ NULL, /* 2038 */ NULL, /* 2039 */ "guilsinglleft", /* 203a */ "guilsinglright", /* 203b */ NULL, /* 203c */ "exclamdbl", /* 203d */ NULL, /* 203e */ NULL, /* 203f */ NULL, /* 2040 */ NULL, /* 2041 */ NULL, /* 2042 */ NULL, /* 2043 */ NULL, /* 2044 */ "fraction", /* 2045 */ NULL, /* 2046 */ NULL, /* 2047 */ NULL, /* 2048 */ NULL, /* 2049 */ NULL, /* 204a */ NULL, /* 204b */ NULL, /* 204c */ NULL, /* 204d */ NULL, /* 204e */ NULL, /* 204f */ NULL, /* 2050 */ NULL, /* 2051 */ NULL, /* 2052 */ NULL, /* 2053 */ NULL, /* 2054 */ NULL, /* 2055 */ NULL, /* 2056 */ NULL, /* 2057 */ NULL, /* 2058 */ NULL, /* 2059 */ NULL, /* 205a */ NULL, /* 205b */ NULL, /* 205c */ NULL, /* 205d */ NULL, /* 205e */ NULL, /* 205f */ NULL, /* 2060 */ NULL, /* 2061 */ NULL, /* 2062 */ NULL, /* 2063 */ NULL, /* 2064 */ NULL, /* 2065 */ NULL, /* 2066 */ NULL, /* 2067 */ NULL, /* 2068 */ NULL, /* 2069 */ NULL, /* 206a */ NULL, /* 206b */ NULL, /* 206c */ NULL, /* 206d */ NULL, /* 206e */ NULL, /* 206f */ NULL, /* 2070 */ NULL, /* 2071 */ NULL, /* 2072 */ NULL, /* 2073 */ NULL, /* 2074 */ NULL, /* 2075 */ NULL, /* 2076 */ NULL, /* 2077 */ NULL, /* 2078 */ NULL, /* 2079 */ NULL, /* 207a */ NULL, /* 207b */ NULL, /* 207c */ NULL, /* 207d */ NULL, /* 207e */ NULL, /* 207f */ NULL, /* 2080 */ NULL, /* 2081 */ NULL, /* 2082 */ NULL, /* 2083 */ NULL, /* 2084 */ NULL, /* 2085 */ NULL, /* 2086 */ NULL, /* 2087 */ NULL, /* 2088 */ NULL, /* 2089 */ NULL, /* 208a */ NULL, /* 208b */ NULL, /* 208c */ NULL, /* 208d */ NULL, /* 208e */ NULL, /* 208f */ NULL, /* 2090 */ NULL, /* 2091 */ NULL, /* 2092 */ NULL, /* 2093 */ NULL, /* 2094 */ NULL, /* 2095 */ NULL, /* 2096 */ NULL, /* 2097 */ NULL, /* 2098 */ NULL, /* 2099 */ NULL, /* 209a */ NULL, /* 209b */ NULL, /* 209c */ NULL, /* 209d */ NULL, /* 209e */ NULL, /* 209f */ NULL, /* 20a0 */ NULL, /* 20a1 */ "colonmonetary", /* 20a2 */ NULL, /* 20a3 */ "franc", /* 20a4 */ "lira", /* 20a5 */ NULL, /* 20a6 */ NULL, /* 20a7 */ "peseta", /* 20a8 */ NULL, /* 20a9 */ NULL, /* 20aa */ "afii57636", /* 20ab */ "dong", /* 20ac */ "Euro", /* 20ad */ NULL, /* 20ae */ NULL, /* 20af */ NULL, /* 20b0 */ NULL, /* 20b1 */ NULL, /* 20b2 */ NULL, /* 20b3 */ NULL, /* 20b4 */ NULL, /* 20b5 */ NULL, /* 20b6 */ NULL, /* 20b7 */ NULL, /* 20b8 */ NULL, /* 20b9 */ NULL, /* 20ba */ NULL, /* 20bb */ NULL, /* 20bc */ NULL, /* 20bd */ NULL, /* 20be */ NULL, /* 20bf */ NULL, /* 20c0 */ NULL, /* 20c1 */ NULL, /* 20c2 */ NULL, /* 20c3 */ NULL, /* 20c4 */ NULL, /* 20c5 */ NULL, /* 20c6 */ NULL, /* 20c7 */ NULL, /* 20c8 */ NULL, /* 20c9 */ NULL, /* 20ca */ NULL, /* 20cb */ NULL, /* 20cc */ NULL, /* 20cd */ NULL, /* 20ce */ NULL, /* 20cf */ NULL, /* 20d0 */ NULL, /* 20d1 */ NULL, /* 20d2 */ NULL, /* 20d3 */ NULL, /* 20d4 */ NULL, /* 20d5 */ NULL, /* 20d6 */ NULL, /* 20d7 */ NULL, /* 20d8 */ NULL, /* 20d9 */ NULL, /* 20da */ NULL, /* 20db */ NULL, /* 20dc */ NULL, /* 20dd */ NULL, /* 20de */ NULL, /* 20df */ NULL, /* 20e0 */ NULL, /* 20e1 */ NULL, /* 20e2 */ NULL, /* 20e3 */ NULL, /* 20e4 */ NULL, /* 20e5 */ NULL, /* 20e6 */ NULL, /* 20e7 */ NULL, /* 20e8 */ NULL, /* 20e9 */ NULL, /* 20ea */ NULL, /* 20eb */ NULL, /* 20ec */ NULL, /* 20ed */ NULL, /* 20ee */ NULL, /* 20ef */ NULL, /* 20f0 */ NULL, /* 20f1 */ NULL, /* 20f2 */ NULL, /* 20f3 */ NULL, /* 20f4 */ NULL, /* 20f5 */ NULL, /* 20f6 */ NULL, /* 20f7 */ NULL, /* 20f8 */ NULL, /* 20f9 */ NULL, /* 20fa */ NULL, /* 20fb */ NULL, /* 20fc */ NULL, /* 20fd */ NULL, /* 20fe */ NULL, /* 20ff */ NULL, /* 2100 */ NULL, /* 2101 */ NULL, /* 2102 */ NULL, /* 2103 */ NULL, /* 2104 */ NULL, /* 2105 */ "afii61248", /* 2106 */ NULL, /* 2107 */ NULL, /* 2108 */ NULL, /* 2109 */ NULL, /* 210a */ NULL, /* 210b */ NULL, /* 210c */ NULL, /* 210d */ NULL, /* 210e */ NULL, /* 210f */ NULL, /* 2110 */ NULL, /* 2111 */ "Ifraktur", /* 2112 */ NULL, /* 2113 */ "afii61289", /* 2114 */ NULL, /* 2115 */ NULL, /* 2116 */ "afii61352", /* 2117 */ NULL, /* 2118 */ "weierstrass", /* 2119 */ NULL, /* 211a */ NULL, /* 211b */ NULL, /* 211c */ "Rfraktur", /* 211d */ NULL, /* 211e */ "prescription", /* 211f */ NULL, /* 2120 */ NULL, /* 2121 */ NULL, /* 2122 */ "trademark", /* 2123 */ NULL, /* 2124 */ NULL, /* 2125 */ NULL, /* 2126 */ "Omega", /* 2127 */ NULL, /* 2128 */ NULL, /* 2129 */ NULL, /* 212a */ NULL, /* 212b */ NULL, /* 212c */ NULL, /* 212d */ NULL, /* 212e */ "estimated", /* 212f */ NULL, /* 2130 */ NULL, /* 2131 */ NULL, /* 2132 */ NULL, /* 2133 */ NULL, /* 2134 */ NULL, /* 2135 */ "aleph", /* 2136 */ NULL, /* 2137 */ NULL, /* 2138 */ NULL, /* 2139 */ NULL, /* 213a */ NULL, /* 213b */ NULL, /* 213c */ NULL, /* 213d */ NULL, /* 213e */ NULL, /* 213f */ NULL, /* 2140 */ NULL, /* 2141 */ NULL, /* 2142 */ NULL, /* 2143 */ NULL, /* 2144 */ NULL, /* 2145 */ NULL, /* 2146 */ NULL, /* 2147 */ NULL, /* 2148 */ NULL, /* 2149 */ NULL, /* 214a */ NULL, /* 214b */ NULL, /* 214c */ NULL, /* 214d */ NULL, /* 214e */ NULL, /* 214f */ NULL, /* 2150 */ NULL, /* 2151 */ NULL, /* 2152 */ NULL, /* 2153 */ "onethird", /* 2154 */ "twothirds", /* 2155 */ NULL, /* 2156 */ NULL, /* 2157 */ NULL, /* 2158 */ NULL, /* 2159 */ NULL, /* 215a */ NULL, /* 215b */ "oneeighth", /* 215c */ "threeeighths", /* 215d */ "fiveeighths", /* 215e */ "seveneighths", /* 215f */ NULL, /* 2160 */ NULL, /* 2161 */ NULL, /* 2162 */ NULL, /* 2163 */ NULL, /* 2164 */ NULL, /* 2165 */ NULL, /* 2166 */ NULL, /* 2167 */ NULL, /* 2168 */ NULL, /* 2169 */ NULL, /* 216a */ NULL, /* 216b */ NULL, /* 216c */ NULL, /* 216d */ NULL, /* 216e */ NULL, /* 216f */ NULL, /* 2170 */ NULL, /* 2171 */ NULL, /* 2172 */ NULL, /* 2173 */ NULL, /* 2174 */ NULL, /* 2175 */ NULL, /* 2176 */ NULL, /* 2177 */ NULL, /* 2178 */ NULL, /* 2179 */ NULL, /* 217a */ NULL, /* 217b */ NULL, /* 217c */ NULL, /* 217d */ NULL, /* 217e */ NULL, /* 217f */ NULL, /* 2180 */ NULL, /* 2181 */ NULL, /* 2182 */ NULL, /* 2183 */ NULL, /* 2184 */ NULL, /* 2185 */ NULL, /* 2186 */ NULL, /* 2187 */ NULL, /* 2188 */ NULL, /* 2189 */ NULL, /* 218a */ NULL, /* 218b */ NULL, /* 218c */ NULL, /* 218d */ NULL, /* 218e */ NULL, /* 218f */ NULL, /* 2190 */ "arrowleft", /* 2191 */ "arrowup", /* 2192 */ "arrowright", /* 2193 */ "arrowdown", /* 2194 */ "arrowboth", /* 2195 */ "arrowupdn", /* 2196 */ NULL, /* 2197 */ NULL, /* 2198 */ NULL, /* 2199 */ NULL, /* 219a */ NULL, /* 219b */ NULL, /* 219c */ NULL, /* 219d */ NULL, /* 219e */ NULL, /* 219f */ NULL, /* 21a0 */ NULL, /* 21a1 */ NULL, /* 21a2 */ NULL, /* 21a3 */ NULL, /* 21a4 */ NULL, /* 21a5 */ NULL, /* 21a6 */ NULL, /* 21a7 */ NULL, /* 21a8 */ "arrowupdnbse", /* 21a9 */ NULL, /* 21aa */ NULL, /* 21ab */ NULL, /* 21ac */ NULL, /* 21ad */ NULL, /* 21ae */ NULL, /* 21af */ NULL, /* 21b0 */ NULL, /* 21b1 */ NULL, /* 21b2 */ NULL, /* 21b3 */ NULL, /* 21b4 */ NULL, /* 21b5 */ "carriagereturn", /* 21b6 */ NULL, /* 21b7 */ NULL, /* 21b8 */ NULL, /* 21b9 */ NULL, /* 21ba */ NULL, /* 21bb */ NULL, /* 21bc */ NULL, /* 21bd */ NULL, /* 21be */ NULL, /* 21bf */ NULL, /* 21c0 */ NULL, /* 21c1 */ NULL, /* 21c2 */ NULL, /* 21c3 */ NULL, /* 21c4 */ NULL, /* 21c5 */ NULL, /* 21c6 */ NULL, /* 21c7 */ NULL, /* 21c8 */ NULL, /* 21c9 */ NULL, /* 21ca */ NULL, /* 21cb */ NULL, /* 21cc */ NULL, /* 21cd */ NULL, /* 21ce */ NULL, /* 21cf */ NULL, /* 21d0 */ "arrowdblleft", /* 21d1 */ "arrowdblup", /* 21d2 */ "arrowdblright", /* 21d3 */ "arrowdbldown", /* 21d4 */ "arrowdblboth", /* 21d5 */ NULL, /* 21d6 */ NULL, /* 21d7 */ NULL, /* 21d8 */ NULL, /* 21d9 */ NULL, /* 21da */ NULL, /* 21db */ NULL, /* 21dc */ NULL, /* 21dd */ NULL, /* 21de */ NULL, /* 21df */ NULL, /* 21e0 */ NULL, /* 21e1 */ NULL, /* 21e2 */ NULL, /* 21e3 */ NULL, /* 21e4 */ NULL, /* 21e5 */ NULL, /* 21e6 */ NULL, /* 21e7 */ NULL, /* 21e8 */ NULL, /* 21e9 */ NULL, /* 21ea */ NULL, /* 21eb */ NULL, /* 21ec */ NULL, /* 21ed */ NULL, /* 21ee */ NULL, /* 21ef */ NULL, /* 21f0 */ NULL, /* 21f1 */ NULL, /* 21f2 */ NULL, /* 21f3 */ NULL, /* 21f4 */ NULL, /* 21f5 */ NULL, /* 21f6 */ NULL, /* 21f7 */ NULL, /* 21f8 */ NULL, /* 21f9 */ NULL, /* 21fa */ NULL, /* 21fb */ NULL, /* 21fc */ NULL, /* 21fd */ NULL, /* 21fe */ NULL, /* 21ff */ NULL, /* 2200 */ "universal", /* 2201 */ NULL, /* 2202 */ "partialdiff", /* 2203 */ "existential", /* 2204 */ NULL, /* 2205 */ "emptyset", /* 2206 */ "Delta", /* 2207 */ "gradient", /* 2208 */ "element", /* 2209 */ "notelement", /* 220a */ NULL, /* 220b */ "suchthat", /* 220c */ NULL, /* 220d */ NULL, /* 220e */ NULL, /* 220f */ "product", /* 2210 */ NULL, /* 2211 */ "summation", /* 2212 */ "minus", /* 2213 */ NULL, /* 2214 */ NULL, /* 2215 */ NULL, /* 2216 */ NULL, /* 2217 */ "asteriskmath", /* 2218 */ NULL, /* 2219 */ NULL, /* 221a */ "radical", /* 221b */ NULL, /* 221c */ NULL, /* 221d */ "proportional", /* 221e */ "infinity", /* 221f */ "orthogonal", /* 2220 */ "angle", /* 2221 */ NULL, /* 2222 */ NULL, /* 2223 */ NULL, /* 2224 */ NULL, /* 2225 */ NULL, /* 2226 */ NULL, /* 2227 */ "logicaland", /* 2228 */ "logicalor", /* 2229 */ "intersection", /* 222a */ "union", /* 222b */ "integral", /* 222c */ NULL, /* 222d */ NULL, /* 222e */ NULL, /* 222f */ NULL, /* 2230 */ NULL, /* 2231 */ NULL, /* 2232 */ NULL, /* 2233 */ NULL, /* 2234 */ "therefore", /* 2235 */ NULL, /* 2236 */ NULL, /* 2237 */ NULL, /* 2238 */ NULL, /* 2239 */ NULL, /* 223a */ NULL, /* 223b */ NULL, /* 223c */ "similar", /* 223d */ NULL, /* 223e */ NULL, /* 223f */ NULL, /* 2240 */ NULL, /* 2241 */ NULL, /* 2242 */ NULL, /* 2243 */ NULL, /* 2244 */ NULL, /* 2245 */ "congruent", /* 2246 */ NULL, /* 2247 */ NULL, /* 2248 */ "approxequal", /* 2249 */ NULL, /* 224a */ NULL, /* 224b */ NULL, /* 224c */ NULL, /* 224d */ NULL, /* 224e */ NULL, /* 224f */ NULL, /* 2250 */ NULL, /* 2251 */ NULL, /* 2252 */ NULL, /* 2253 */ NULL, /* 2254 */ NULL, /* 2255 */ NULL, /* 2256 */ NULL, /* 2257 */ NULL, /* 2258 */ NULL, /* 2259 */ NULL, /* 225a */ NULL, /* 225b */ NULL, /* 225c */ NULL, /* 225d */ NULL, /* 225e */ NULL, /* 225f */ NULL, /* 2260 */ "notequal", /* 2261 */ "equivalence", /* 2262 */ NULL, /* 2263 */ NULL, /* 2264 */ "lessequal", /* 2265 */ "greaterequal", /* 2266 */ NULL, /* 2267 */ NULL, /* 2268 */ NULL, /* 2269 */ NULL, /* 226a */ NULL, /* 226b */ NULL, /* 226c */ NULL, /* 226d */ NULL, /* 226e */ NULL, /* 226f */ NULL, /* 2270 */ NULL, /* 2271 */ NULL, /* 2272 */ NULL, /* 2273 */ NULL, /* 2274 */ NULL, /* 2275 */ NULL, /* 2276 */ NULL, /* 2277 */ NULL, /* 2278 */ NULL, /* 2279 */ NULL, /* 227a */ NULL, /* 227b */ NULL, /* 227c */ NULL, /* 227d */ NULL, /* 227e */ NULL, /* 227f */ NULL, /* 2280 */ NULL, /* 2281 */ NULL, /* 2282 */ "propersubset", /* 2283 */ "propersuperset", /* 2284 */ "notsubset", /* 2285 */ NULL, /* 2286 */ "reflexsubset", /* 2287 */ "reflexsuperset", /* 2288 */ NULL, /* 2289 */ NULL, /* 228a */ NULL, /* 228b */ NULL, /* 228c */ NULL, /* 228d */ NULL, /* 228e */ NULL, /* 228f */ NULL, /* 2290 */ NULL, /* 2291 */ NULL, /* 2292 */ NULL, /* 2293 */ NULL, /* 2294 */ NULL, /* 2295 */ "circleplus", /* 2296 */ NULL, /* 2297 */ "circlemultiply", /* 2298 */ NULL, /* 2299 */ NULL, /* 229a */ NULL, /* 229b */ NULL, /* 229c */ NULL, /* 229d */ NULL, /* 229e */ NULL, /* 229f */ NULL, /* 22a0 */ NULL, /* 22a1 */ NULL, /* 22a2 */ NULL, /* 22a3 */ NULL, /* 22a4 */ NULL, /* 22a5 */ "perpendicular", /* 22a6 */ NULL, /* 22a7 */ NULL, /* 22a8 */ NULL, /* 22a9 */ NULL, /* 22aa */ NULL, /* 22ab */ NULL, /* 22ac */ NULL, /* 22ad */ NULL, /* 22ae */ NULL, /* 22af */ NULL, /* 22b0 */ NULL, /* 22b1 */ NULL, /* 22b2 */ NULL, /* 22b3 */ NULL, /* 22b4 */ NULL, /* 22b5 */ NULL, /* 22b6 */ NULL, /* 22b7 */ NULL, /* 22b8 */ NULL, /* 22b9 */ NULL, /* 22ba */ NULL, /* 22bb */ NULL, /* 22bc */ NULL, /* 22bd */ NULL, /* 22be */ NULL, /* 22bf */ NULL, /* 22c0 */ NULL, /* 22c1 */ NULL, /* 22c2 */ NULL, /* 22c3 */ NULL, /* 22c4 */ NULL, /* 22c5 */ "dotmath", /* 22c6 */ NULL, /* 22c7 */ NULL, /* 22c8 */ NULL, /* 22c9 */ NULL, /* 22ca */ NULL, /* 22cb */ NULL, /* 22cc */ NULL, /* 22cd */ NULL, /* 22ce */ NULL, /* 22cf */ NULL, /* 22d0 */ NULL, /* 22d1 */ NULL, /* 22d2 */ NULL, /* 22d3 */ NULL, /* 22d4 */ NULL, /* 22d5 */ NULL, /* 22d6 */ NULL, /* 22d7 */ NULL, /* 22d8 */ NULL, /* 22d9 */ NULL, /* 22da */ NULL, /* 22db */ NULL, /* 22dc */ NULL, /* 22dd */ NULL, /* 22de */ NULL, /* 22df */ NULL, /* 22e0 */ NULL, /* 22e1 */ NULL, /* 22e2 */ NULL, /* 22e3 */ NULL, /* 22e4 */ NULL, /* 22e5 */ NULL, /* 22e6 */ NULL, /* 22e7 */ NULL, /* 22e8 */ NULL, /* 22e9 */ NULL, /* 22ea */ NULL, /* 22eb */ NULL, /* 22ec */ NULL, /* 22ed */ NULL, /* 22ee */ NULL, /* 22ef */ NULL, /* 22f0 */ NULL, /* 22f1 */ NULL, /* 22f2 */ NULL, /* 22f3 */ NULL, /* 22f4 */ NULL, /* 22f5 */ NULL, /* 22f6 */ NULL, /* 22f7 */ NULL, /* 22f8 */ NULL, /* 22f9 */ NULL, /* 22fa */ NULL, /* 22fb */ NULL, /* 22fc */ NULL, /* 22fd */ NULL, /* 22fe */ NULL, /* 22ff */ NULL, /* 2300 */ NULL, /* 2301 */ NULL, /* 2302 */ "house", /* 2303 */ NULL, /* 2304 */ NULL, /* 2305 */ NULL, /* 2306 */ NULL, /* 2307 */ NULL, /* 2308 */ NULL, /* 2309 */ NULL, /* 230a */ NULL, /* 230b */ NULL, /* 230c */ NULL, /* 230d */ NULL, /* 230e */ NULL, /* 230f */ NULL, /* 2310 */ "revlogicalnot", /* 2311 */ NULL, /* 2312 */ NULL, /* 2313 */ NULL, /* 2314 */ NULL, /* 2315 */ NULL, /* 2316 */ NULL, /* 2317 */ NULL, /* 2318 */ NULL, /* 2319 */ NULL, /* 231a */ NULL, /* 231b */ NULL, /* 231c */ NULL, /* 231d */ NULL, /* 231e */ NULL, /* 231f */ NULL, /* 2320 */ "integraltp", /* 2321 */ "integralbt", /* 2322 */ NULL, /* 2323 */ NULL, /* 2324 */ NULL, /* 2325 */ NULL, /* 2326 */ NULL, /* 2327 */ NULL, /* 2328 */ NULL, /* 2329 */ "angleleft", /* 232a */ "angleright", /* 232b */ NULL, /* 232c */ NULL, /* 232d */ NULL, /* 232e */ NULL, /* 232f */ NULL, /* 2330 */ NULL, /* 2331 */ NULL, /* 2332 */ NULL, /* 2333 */ NULL, /* 2334 */ NULL, /* 2335 */ NULL, /* 2336 */ NULL, /* 2337 */ NULL, /* 2338 */ NULL, /* 2339 */ NULL, /* 233a */ NULL, /* 233b */ NULL, /* 233c */ NULL, /* 233d */ NULL, /* 233e */ NULL, /* 233f */ NULL, /* 2340 */ NULL, /* 2341 */ NULL, /* 2342 */ NULL, /* 2343 */ NULL, /* 2344 */ NULL, /* 2345 */ NULL, /* 2346 */ NULL, /* 2347 */ NULL, /* 2348 */ NULL, /* 2349 */ NULL, /* 234a */ NULL, /* 234b */ NULL, /* 234c */ NULL, /* 234d */ NULL, /* 234e */ NULL, /* 234f */ NULL, /* 2350 */ NULL, /* 2351 */ NULL, /* 2352 */ NULL, /* 2353 */ NULL, /* 2354 */ NULL, /* 2355 */ NULL, /* 2356 */ NULL, /* 2357 */ NULL, /* 2358 */ NULL, /* 2359 */ NULL, /* 235a */ NULL, /* 235b */ NULL, /* 235c */ NULL, /* 235d */ NULL, /* 235e */ NULL, /* 235f */ NULL, /* 2360 */ NULL, /* 2361 */ NULL, /* 2362 */ NULL, /* 2363 */ NULL, /* 2364 */ NULL, /* 2365 */ NULL, /* 2366 */ NULL, /* 2367 */ NULL, /* 2368 */ NULL, /* 2369 */ NULL, /* 236a */ NULL, /* 236b */ NULL, /* 236c */ NULL, /* 236d */ NULL, /* 236e */ NULL, /* 236f */ NULL, /* 2370 */ NULL, /* 2371 */ NULL, /* 2372 */ NULL, /* 2373 */ NULL, /* 2374 */ NULL, /* 2375 */ NULL, /* 2376 */ NULL, /* 2377 */ NULL, /* 2378 */ NULL, /* 2379 */ NULL, /* 237a */ NULL, /* 237b */ NULL, /* 237c */ NULL, /* 237d */ NULL, /* 237e */ NULL, /* 237f */ NULL, /* 2380 */ NULL, /* 2381 */ NULL, /* 2382 */ NULL, /* 2383 */ NULL, /* 2384 */ NULL, /* 2385 */ NULL, /* 2386 */ NULL, /* 2387 */ NULL, /* 2388 */ NULL, /* 2389 */ NULL, /* 238a */ NULL, /* 238b */ NULL, /* 238c */ NULL, /* 238d */ NULL, /* 238e */ NULL, /* 238f */ NULL, /* 2390 */ NULL, /* 2391 */ NULL, /* 2392 */ NULL, /* 2393 */ NULL, /* 2394 */ NULL, /* 2395 */ NULL, /* 2396 */ NULL, /* 2397 */ NULL, /* 2398 */ NULL, /* 2399 */ NULL, /* 239a */ NULL, /* 239b */ NULL, /* 239c */ NULL, /* 239d */ NULL, /* 239e */ NULL, /* 239f */ NULL, /* 23a0 */ NULL, /* 23a1 */ NULL, /* 23a2 */ NULL, /* 23a3 */ NULL, /* 23a4 */ NULL, /* 23a5 */ NULL, /* 23a6 */ NULL, /* 23a7 */ NULL, /* 23a8 */ NULL, /* 23a9 */ NULL, /* 23aa */ NULL, /* 23ab */ NULL, /* 23ac */ NULL, /* 23ad */ NULL, /* 23ae */ NULL, /* 23af */ NULL, /* 23b0 */ NULL, /* 23b1 */ NULL, /* 23b2 */ NULL, /* 23b3 */ NULL, /* 23b4 */ NULL, /* 23b5 */ NULL, /* 23b6 */ NULL, /* 23b7 */ NULL, /* 23b8 */ NULL, /* 23b9 */ NULL, /* 23ba */ NULL, /* 23bb */ NULL, /* 23bc */ NULL, /* 23bd */ NULL, /* 23be */ NULL, /* 23bf */ NULL, /* 23c0 */ NULL, /* 23c1 */ NULL, /* 23c2 */ NULL, /* 23c3 */ NULL, /* 23c4 */ NULL, /* 23c5 */ NULL, /* 23c6 */ NULL, /* 23c7 */ NULL, /* 23c8 */ NULL, /* 23c9 */ NULL, /* 23ca */ NULL, /* 23cb */ NULL, /* 23cc */ NULL, /* 23cd */ NULL, /* 23ce */ NULL, /* 23cf */ NULL, /* 23d0 */ NULL, /* 23d1 */ NULL, /* 23d2 */ NULL, /* 23d3 */ NULL, /* 23d4 */ NULL, /* 23d5 */ NULL, /* 23d6 */ NULL, /* 23d7 */ NULL, /* 23d8 */ NULL, /* 23d9 */ NULL, /* 23da */ NULL, /* 23db */ NULL, /* 23dc */ NULL, /* 23dd */ NULL, /* 23de */ NULL, /* 23df */ NULL, /* 23e0 */ NULL, /* 23e1 */ NULL, /* 23e2 */ NULL, /* 23e3 */ NULL, /* 23e4 */ NULL, /* 23e5 */ NULL, /* 23e6 */ NULL, /* 23e7 */ NULL, /* 23e8 */ NULL, /* 23e9 */ NULL, /* 23ea */ NULL, /* 23eb */ NULL, /* 23ec */ NULL, /* 23ed */ NULL, /* 23ee */ NULL, /* 23ef */ NULL, /* 23f0 */ NULL, /* 23f1 */ NULL, /* 23f2 */ NULL, /* 23f3 */ NULL, /* 23f4 */ NULL, /* 23f5 */ NULL, /* 23f6 */ NULL, /* 23f7 */ NULL, /* 23f8 */ NULL, /* 23f9 */ NULL, /* 23fa */ NULL, /* 23fb */ NULL, /* 23fc */ NULL, /* 23fd */ NULL, /* 23fe */ NULL, /* 23ff */ NULL, /* 2400 */ NULL, /* 2401 */ NULL, /* 2402 */ NULL, /* 2403 */ NULL, /* 2404 */ NULL, /* 2405 */ NULL, /* 2406 */ NULL, /* 2407 */ NULL, /* 2408 */ NULL, /* 2409 */ NULL, /* 240a */ NULL, /* 240b */ NULL, /* 240c */ NULL, /* 240d */ NULL, /* 240e */ NULL, /* 240f */ NULL, /* 2410 */ NULL, /* 2411 */ NULL, /* 2412 */ NULL, /* 2413 */ NULL, /* 2414 */ NULL, /* 2415 */ NULL, /* 2416 */ NULL, /* 2417 */ NULL, /* 2418 */ NULL, /* 2419 */ NULL, /* 241a */ NULL, /* 241b */ NULL, /* 241c */ NULL, /* 241d */ NULL, /* 241e */ NULL, /* 241f */ NULL, /* 2420 */ NULL, /* 2421 */ NULL, /* 2422 */ NULL, /* 2423 */ NULL, /* 2424 */ NULL, /* 2425 */ NULL, /* 2426 */ NULL, /* 2427 */ NULL, /* 2428 */ NULL, /* 2429 */ NULL, /* 242a */ NULL, /* 242b */ NULL, /* 242c */ NULL, /* 242d */ NULL, /* 242e */ NULL, /* 242f */ NULL, /* 2430 */ NULL, /* 2431 */ NULL, /* 2432 */ NULL, /* 2433 */ NULL, /* 2434 */ NULL, /* 2435 */ NULL, /* 2436 */ NULL, /* 2437 */ NULL, /* 2438 */ NULL, /* 2439 */ NULL, /* 243a */ NULL, /* 243b */ NULL, /* 243c */ NULL, /* 243d */ NULL, /* 243e */ NULL, /* 243f */ NULL, /* 2440 */ NULL, /* 2441 */ NULL, /* 2442 */ NULL, /* 2443 */ NULL, /* 2444 */ NULL, /* 2445 */ NULL, /* 2446 */ NULL, /* 2447 */ NULL, /* 2448 */ NULL, /* 2449 */ NULL, /* 244a */ NULL, /* 244b */ NULL, /* 244c */ NULL, /* 244d */ NULL, /* 244e */ NULL, /* 244f */ NULL, /* 2450 */ NULL, /* 2451 */ NULL, /* 2452 */ NULL, /* 2453 */ NULL, /* 2454 */ NULL, /* 2455 */ NULL, /* 2456 */ NULL, /* 2457 */ NULL, /* 2458 */ NULL, /* 2459 */ NULL, /* 245a */ NULL, /* 245b */ NULL, /* 245c */ NULL, /* 245d */ NULL, /* 245e */ NULL, /* 245f */ NULL, /* 2460 */ NULL, /* 2461 */ NULL, /* 2462 */ NULL, /* 2463 */ NULL, /* 2464 */ NULL, /* 2465 */ NULL, /* 2466 */ NULL, /* 2467 */ NULL, /* 2468 */ NULL, /* 2469 */ NULL, /* 246a */ NULL, /* 246b */ NULL, /* 246c */ NULL, /* 246d */ NULL, /* 246e */ NULL, /* 246f */ NULL, /* 2470 */ NULL, /* 2471 */ NULL, /* 2472 */ NULL, /* 2473 */ NULL, /* 2474 */ NULL, /* 2475 */ NULL, /* 2476 */ NULL, /* 2477 */ NULL, /* 2478 */ NULL, /* 2479 */ NULL, /* 247a */ NULL, /* 247b */ NULL, /* 247c */ NULL, /* 247d */ NULL, /* 247e */ NULL, /* 247f */ NULL, /* 2480 */ NULL, /* 2481 */ NULL, /* 2482 */ NULL, /* 2483 */ NULL, /* 2484 */ NULL, /* 2485 */ NULL, /* 2486 */ NULL, /* 2487 */ NULL, /* 2488 */ NULL, /* 2489 */ NULL, /* 248a */ NULL, /* 248b */ NULL, /* 248c */ NULL, /* 248d */ NULL, /* 248e */ NULL, /* 248f */ NULL, /* 2490 */ NULL, /* 2491 */ NULL, /* 2492 */ NULL, /* 2493 */ NULL, /* 2494 */ NULL, /* 2495 */ NULL, /* 2496 */ NULL, /* 2497 */ NULL, /* 2498 */ NULL, /* 2499 */ NULL, /* 249a */ NULL, /* 249b */ NULL, /* 249c */ NULL, /* 249d */ NULL, /* 249e */ NULL, /* 249f */ NULL, /* 24a0 */ NULL, /* 24a1 */ NULL, /* 24a2 */ NULL, /* 24a3 */ NULL, /* 24a4 */ NULL, /* 24a5 */ NULL, /* 24a6 */ NULL, /* 24a7 */ NULL, /* 24a8 */ NULL, /* 24a9 */ NULL, /* 24aa */ NULL, /* 24ab */ NULL, /* 24ac */ NULL, /* 24ad */ NULL, /* 24ae */ NULL, /* 24af */ NULL, /* 24b0 */ NULL, /* 24b1 */ NULL, /* 24b2 */ NULL, /* 24b3 */ NULL, /* 24b4 */ NULL, /* 24b5 */ NULL, /* 24b6 */ NULL, /* 24b7 */ NULL, /* 24b8 */ NULL, /* 24b9 */ NULL, /* 24ba */ NULL, /* 24bb */ NULL, /* 24bc */ NULL, /* 24bd */ NULL, /* 24be */ NULL, /* 24bf */ NULL, /* 24c0 */ NULL, /* 24c1 */ NULL, /* 24c2 */ NULL, /* 24c3 */ NULL, /* 24c4 */ NULL, /* 24c5 */ NULL, /* 24c6 */ NULL, /* 24c7 */ NULL, /* 24c8 */ NULL, /* 24c9 */ NULL, /* 24ca */ NULL, /* 24cb */ NULL, /* 24cc */ NULL, /* 24cd */ NULL, /* 24ce */ NULL, /* 24cf */ NULL, /* 24d0 */ NULL, /* 24d1 */ NULL, /* 24d2 */ NULL, /* 24d3 */ NULL, /* 24d4 */ NULL, /* 24d5 */ NULL, /* 24d6 */ NULL, /* 24d7 */ NULL, /* 24d8 */ NULL, /* 24d9 */ NULL, /* 24da */ NULL, /* 24db */ NULL, /* 24dc */ NULL, /* 24dd */ NULL, /* 24de */ NULL, /* 24df */ NULL, /* 24e0 */ NULL, /* 24e1 */ NULL, /* 24e2 */ NULL, /* 24e3 */ NULL, /* 24e4 */ NULL, /* 24e5 */ NULL, /* 24e6 */ NULL, /* 24e7 */ NULL, /* 24e8 */ NULL, /* 24e9 */ NULL, /* 24ea */ NULL, /* 24eb */ NULL, /* 24ec */ NULL, /* 24ed */ NULL, /* 24ee */ NULL, /* 24ef */ NULL, /* 24f0 */ NULL, /* 24f1 */ NULL, /* 24f2 */ NULL, /* 24f3 */ NULL, /* 24f4 */ NULL, /* 24f5 */ NULL, /* 24f6 */ NULL, /* 24f7 */ NULL, /* 24f8 */ NULL, /* 24f9 */ NULL, /* 24fa */ NULL, /* 24fb */ NULL, /* 24fc */ NULL, /* 24fd */ NULL, /* 24fe */ NULL, /* 24ff */ NULL, /* 2500 */ "SF100000", /* 2501 */ NULL, /* 2502 */ "SF110000", /* 2503 */ NULL, /* 2504 */ NULL, /* 2505 */ NULL, /* 2506 */ NULL, /* 2507 */ NULL, /* 2508 */ NULL, /* 2509 */ NULL, /* 250a */ NULL, /* 250b */ NULL, /* 250c */ "SF010000", /* 250d */ NULL, /* 250e */ NULL, /* 250f */ NULL, /* 2510 */ "SF030000", /* 2511 */ NULL, /* 2512 */ NULL, /* 2513 */ NULL, /* 2514 */ "SF020000", /* 2515 */ NULL, /* 2516 */ NULL, /* 2517 */ NULL, /* 2518 */ "SF040000", /* 2519 */ NULL, /* 251a */ NULL, /* 251b */ NULL, /* 251c */ "SF080000", /* 251d */ NULL, /* 251e */ NULL, /* 251f */ NULL, /* 2520 */ NULL, /* 2521 */ NULL, /* 2522 */ NULL, /* 2523 */ NULL, /* 2524 */ "SF090000", /* 2525 */ NULL, /* 2526 */ NULL, /* 2527 */ NULL, /* 2528 */ NULL, /* 2529 */ NULL, /* 252a */ NULL, /* 252b */ NULL, /* 252c */ "SF060000", /* 252d */ NULL, /* 252e */ NULL, /* 252f */ NULL, /* 2530 */ NULL, /* 2531 */ NULL, /* 2532 */ NULL, /* 2533 */ NULL, /* 2534 */ "SF070000", /* 2535 */ NULL, /* 2536 */ NULL, /* 2537 */ NULL, /* 2538 */ NULL, /* 2539 */ NULL, /* 253a */ NULL, /* 253b */ NULL, /* 253c */ "SF050000", /* 253d */ NULL, /* 253e */ NULL, /* 253f */ NULL, /* 2540 */ NULL, /* 2541 */ NULL, /* 2542 */ NULL, /* 2543 */ NULL, /* 2544 */ NULL, /* 2545 */ NULL, /* 2546 */ NULL, /* 2547 */ NULL, /* 2548 */ NULL, /* 2549 */ NULL, /* 254a */ NULL, /* 254b */ NULL, /* 254c */ NULL, /* 254d */ NULL, /* 254e */ NULL, /* 254f */ NULL, /* 2550 */ "SF430000", /* 2551 */ "SF240000", /* 2552 */ "SF510000", /* 2553 */ "SF520000", /* 2554 */ "SF390000", /* 2555 */ "SF220000", /* 2556 */ "SF210000", /* 2557 */ "SF250000", /* 2558 */ "SF500000", /* 2559 */ "SF490000", /* 255a */ "SF380000", /* 255b */ "SF280000", /* 255c */ "SF270000", /* 255d */ "SF260000", /* 255e */ "SF360000", /* 255f */ "SF370000", /* 2560 */ "SF420000", /* 2561 */ "SF190000", /* 2562 */ "SF200000", /* 2563 */ "SF230000", /* 2564 */ "SF470000", /* 2565 */ "SF480000", /* 2566 */ "SF410000", /* 2567 */ "SF450000", /* 2568 */ "SF460000", /* 2569 */ "SF400000", /* 256a */ "SF540000", /* 256b */ "SF530000", /* 256c */ "SF440000", /* 256d */ NULL, /* 256e */ NULL, /* 256f */ NULL, /* 2570 */ NULL, /* 2571 */ NULL, /* 2572 */ NULL, /* 2573 */ NULL, /* 2574 */ NULL, /* 2575 */ NULL, /* 2576 */ NULL, /* 2577 */ NULL, /* 2578 */ NULL, /* 2579 */ NULL, /* 257a */ NULL, /* 257b */ NULL, /* 257c */ NULL, /* 257d */ NULL, /* 257e */ NULL, /* 257f */ NULL, /* 2580 */ "upblock", /* 2581 */ NULL, /* 2582 */ NULL, /* 2583 */ NULL, /* 2584 */ "dnblock", /* 2585 */ NULL, /* 2586 */ NULL, /* 2587 */ NULL, /* 2588 */ "block", /* 2589 */ NULL, /* 258a */ NULL, /* 258b */ NULL, /* 258c */ "lfblock", /* 258d */ NULL, /* 258e */ NULL, /* 258f */ NULL, /* 2590 */ "rtblock", /* 2591 */ "ltshade", /* 2592 */ "shade", /* 2593 */ "dkshade", /* 2594 */ NULL, /* 2595 */ NULL, /* 2596 */ NULL, /* 2597 */ NULL, /* 2598 */ NULL, /* 2599 */ NULL, /* 259a */ NULL, /* 259b */ NULL, /* 259c */ NULL, /* 259d */ NULL, /* 259e */ NULL, /* 259f */ NULL, /* 25a0 */ "filledbox", /* 25a1 */ "H22073", /* 25a2 */ NULL, /* 25a3 */ NULL, /* 25a4 */ NULL, /* 25a5 */ NULL, /* 25a6 */ NULL, /* 25a7 */ NULL, /* 25a8 */ NULL, /* 25a9 */ NULL, /* 25aa */ "H18543", /* 25ab */ "H18551", /* 25ac */ "filledrect", /* 25ad */ NULL, /* 25ae */ NULL, /* 25af */ NULL, /* 25b0 */ NULL, /* 25b1 */ NULL, /* 25b2 */ "triagup", /* 25b3 */ NULL, /* 25b4 */ NULL, /* 25b5 */ NULL, /* 25b6 */ NULL, /* 25b7 */ NULL, /* 25b8 */ NULL, /* 25b9 */ NULL, /* 25ba */ "triagrt", /* 25bb */ NULL, /* 25bc */ "triagdn", /* 25bd */ NULL, /* 25be */ NULL, /* 25bf */ NULL, /* 25c0 */ NULL, /* 25c1 */ NULL, /* 25c2 */ NULL, /* 25c3 */ NULL, /* 25c4 */ "triaglf", /* 25c5 */ NULL, /* 25c6 */ NULL, /* 25c7 */ NULL, /* 25c8 */ NULL, /* 25c9 */ NULL, /* 25ca */ "lozenge", /* 25cb */ "circle", /* 25cc */ NULL, /* 25cd */ NULL, /* 25ce */ NULL, /* 25cf */ "H18533", /* 25d0 */ NULL, /* 25d1 */ NULL, /* 25d2 */ NULL, /* 25d3 */ NULL, /* 25d4 */ NULL, /* 25d5 */ NULL, /* 25d6 */ NULL, /* 25d7 */ NULL, /* 25d8 */ "invbullet", /* 25d9 */ "invcircle", /* 25da */ NULL, /* 25db */ NULL, /* 25dc */ NULL, /* 25dd */ NULL, /* 25de */ NULL, /* 25df */ NULL, /* 25e0 */ NULL, /* 25e1 */ NULL, /* 25e2 */ NULL, /* 25e3 */ NULL, /* 25e4 */ NULL, /* 25e5 */ NULL, /* 25e6 */ "openbullet", /* 25e7 */ NULL, /* 25e8 */ NULL, /* 25e9 */ NULL, /* 25ea */ NULL, /* 25eb */ NULL, /* 25ec */ NULL, /* 25ed */ NULL, /* 25ee */ NULL, /* 25ef */ NULL, /* 25f0 */ NULL, /* 25f1 */ NULL, /* 25f2 */ NULL, /* 25f3 */ NULL, /* 25f4 */ NULL, /* 25f5 */ NULL, /* 25f6 */ NULL, /* 25f7 */ NULL, /* 25f8 */ NULL, /* 25f9 */ NULL, /* 25fa */ NULL, /* 25fb */ NULL, /* 25fc */ NULL, /* 25fd */ NULL, /* 25fe */ NULL, /* 25ff */ NULL, /* 2600 */ NULL, /* 2601 */ NULL, /* 2602 */ NULL, /* 2603 */ NULL, /* 2604 */ NULL, /* 2605 */ NULL, /* 2606 */ NULL, /* 2607 */ NULL, /* 2608 */ NULL, /* 2609 */ NULL, /* 260a */ NULL, /* 260b */ NULL, /* 260c */ NULL, /* 260d */ NULL, /* 260e */ NULL, /* 260f */ NULL, /* 2610 */ NULL, /* 2611 */ NULL, /* 2612 */ NULL, /* 2613 */ NULL, /* 2614 */ NULL, /* 2615 */ NULL, /* 2616 */ NULL, /* 2617 */ NULL, /* 2618 */ NULL, /* 2619 */ NULL, /* 261a */ NULL, /* 261b */ NULL, /* 261c */ NULL, /* 261d */ NULL, /* 261e */ NULL, /* 261f */ NULL, /* 2620 */ NULL, /* 2621 */ NULL, /* 2622 */ NULL, /* 2623 */ NULL, /* 2624 */ NULL, /* 2625 */ NULL, /* 2626 */ NULL, /* 2627 */ NULL, /* 2628 */ NULL, /* 2629 */ NULL, /* 262a */ NULL, /* 262b */ NULL, /* 262c */ NULL, /* 262d */ NULL, /* 262e */ NULL, /* 262f */ NULL, /* 2630 */ NULL, /* 2631 */ NULL, /* 2632 */ NULL, /* 2633 */ NULL, /* 2634 */ NULL, /* 2635 */ NULL, /* 2636 */ NULL, /* 2637 */ NULL, /* 2638 */ NULL, /* 2639 */ NULL, /* 263a */ "smileface", /* 263b */ "invsmileface", /* 263c */ "sun", /* 263d */ NULL, /* 263e */ NULL, /* 263f */ NULL, /* 2640 */ "female", /* 2641 */ NULL, /* 2642 */ "male", /* 2643 */ NULL, /* 2644 */ NULL, /* 2645 */ NULL, /* 2646 */ NULL, /* 2647 */ NULL, /* 2648 */ NULL, /* 2649 */ NULL, /* 264a */ NULL, /* 264b */ NULL, /* 264c */ NULL, /* 264d */ NULL, /* 264e */ NULL, /* 264f */ NULL, /* 2650 */ NULL, /* 2651 */ NULL, /* 2652 */ NULL, /* 2653 */ NULL, /* 2654 */ NULL, /* 2655 */ NULL, /* 2656 */ NULL, /* 2657 */ NULL, /* 2658 */ NULL, /* 2659 */ NULL, /* 265a */ NULL, /* 265b */ NULL, /* 265c */ NULL, /* 265d */ NULL, /* 265e */ NULL, /* 265f */ NULL, /* 2660 */ "spade", /* 2661 */ NULL, /* 2662 */ NULL, /* 2663 */ "club", /* 2664 */ NULL, /* 2665 */ "heart", /* 2666 */ "diamond", /* 2667 */ NULL, /* 2668 */ NULL, /* 2669 */ NULL, /* 266a */ "musicalnote", /* 266b */ "musicalnotedbl", /* 266c */ NULL, /* 266d */ NULL, /* 266e */ NULL, /* 266f */ NULL, /* 2670 */ NULL, /* 2671 */ NULL, /* 2672 */ NULL, /* 2673 */ NULL, /* 2674 */ NULL, /* 2675 */ NULL, /* 2676 */ NULL, /* 2677 */ NULL, /* 2678 */ NULL, /* 2679 */ NULL, /* 267a */ NULL, /* 267b */ NULL, /* 267c */ NULL, /* 267d */ NULL, /* 267e */ NULL, /* 267f */ NULL, /* 2680 */ NULL, /* 2681 */ NULL, /* 2682 */ NULL, /* 2683 */ NULL, /* 2684 */ NULL, /* 2685 */ NULL, /* 2686 */ NULL, /* 2687 */ NULL, /* 2688 */ NULL, /* 2689 */ NULL, /* 268a */ NULL, /* 268b */ NULL, /* 268c */ NULL, /* 268d */ NULL, /* 268e */ NULL, /* 268f */ NULL, /* 2690 */ NULL, /* 2691 */ NULL, /* 2692 */ NULL, /* 2693 */ NULL, /* 2694 */ NULL, /* 2695 */ NULL, /* 2696 */ NULL, /* 2697 */ NULL, /* 2698 */ NULL, /* 2699 */ NULL, /* 269a */ NULL, /* 269b */ NULL, /* 269c */ NULL, /* 269d */ NULL, /* 269e */ NULL, /* 269f */ NULL, /* 26a0 */ NULL, /* 26a1 */ NULL, /* 26a2 */ NULL, /* 26a3 */ NULL, /* 26a4 */ NULL, /* 26a5 */ NULL, /* 26a6 */ NULL, /* 26a7 */ NULL, /* 26a8 */ NULL, /* 26a9 */ NULL, /* 26aa */ NULL, /* 26ab */ NULL, /* 26ac */ NULL, /* 26ad */ NULL, /* 26ae */ NULL, /* 26af */ NULL, /* 26b0 */ NULL, /* 26b1 */ NULL, /* 26b2 */ NULL, /* 26b3 */ NULL, /* 26b4 */ NULL, /* 26b5 */ NULL, /* 26b6 */ NULL, /* 26b7 */ NULL, /* 26b8 */ NULL, /* 26b9 */ NULL, /* 26ba */ NULL, /* 26bb */ NULL, /* 26bc */ NULL, /* 26bd */ NULL, /* 26be */ NULL, /* 26bf */ NULL, /* 26c0 */ NULL, /* 26c1 */ NULL, /* 26c2 */ NULL, /* 26c3 */ NULL, /* 26c4 */ NULL, /* 26c5 */ NULL, /* 26c6 */ NULL, /* 26c7 */ NULL, /* 26c8 */ NULL, /* 26c9 */ NULL, /* 26ca */ NULL, /* 26cb */ NULL, /* 26cc */ NULL, /* 26cd */ NULL, /* 26ce */ NULL, /* 26cf */ NULL, /* 26d0 */ NULL, /* 26d1 */ NULL, /* 26d2 */ NULL, /* 26d3 */ NULL, /* 26d4 */ NULL, /* 26d5 */ NULL, /* 26d6 */ NULL, /* 26d7 */ NULL, /* 26d8 */ NULL, /* 26d9 */ NULL, /* 26da */ NULL, /* 26db */ NULL, /* 26dc */ NULL, /* 26dd */ NULL, /* 26de */ NULL, /* 26df */ NULL, /* 26e0 */ NULL, /* 26e1 */ NULL, /* 26e2 */ NULL, /* 26e3 */ NULL, /* 26e4 */ NULL, /* 26e5 */ NULL, /* 26e6 */ NULL, /* 26e7 */ NULL, /* 26e8 */ NULL, /* 26e9 */ NULL, /* 26ea */ NULL, /* 26eb */ NULL, /* 26ec */ NULL, /* 26ed */ NULL, /* 26ee */ NULL, /* 26ef */ NULL, /* 26f0 */ NULL, /* 26f1 */ NULL, /* 26f2 */ NULL, /* 26f3 */ NULL, /* 26f4 */ NULL, /* 26f5 */ NULL, /* 26f6 */ NULL, /* 26f7 */ NULL, /* 26f8 */ NULL, /* 26f9 */ NULL, /* 26fa */ NULL, /* 26fb */ NULL, /* 26fc */ NULL, /* 26fd */ NULL, /* 26fe */ NULL, /* 26ff */ NULL, /* 2700 */ NULL, /* 2701 */ NULL, /* 2702 */ NULL, /* 2703 */ NULL, /* 2704 */ NULL, /* 2705 */ NULL, /* 2706 */ NULL, /* 2707 */ NULL, /* 2708 */ NULL, /* 2709 */ NULL, /* 270a */ NULL, /* 270b */ NULL, /* 270c */ NULL, /* 270d */ NULL, /* 270e */ NULL, /* 270f */ NULL, /* 2710 */ NULL, /* 2711 */ NULL, /* 2712 */ NULL, /* 2713 */ NULL, /* 2714 */ NULL, /* 2715 */ NULL, /* 2716 */ NULL, /* 2717 */ NULL, /* 2718 */ NULL, /* 2719 */ NULL, /* 271a */ NULL, /* 271b */ NULL, /* 271c */ NULL, /* 271d */ NULL, /* 271e */ NULL, /* 271f */ NULL, /* 2720 */ NULL, /* 2721 */ NULL, /* 2722 */ NULL, /* 2723 */ NULL, /* 2724 */ NULL, /* 2725 */ NULL, /* 2726 */ NULL, /* 2727 */ NULL, /* 2728 */ NULL, /* 2729 */ NULL, /* 272a */ NULL, /* 272b */ NULL, /* 272c */ NULL, /* 272d */ NULL, /* 272e */ NULL, /* 272f */ NULL, /* 2730 */ NULL, /* 2731 */ NULL, /* 2732 */ NULL, /* 2733 */ NULL, /* 2734 */ NULL, /* 2735 */ NULL, /* 2736 */ NULL, /* 2737 */ NULL, /* 2738 */ NULL, /* 2739 */ NULL, /* 273a */ NULL, /* 273b */ NULL, /* 273c */ NULL, /* 273d */ NULL, /* 273e */ NULL, /* 273f */ NULL, /* 2740 */ NULL, /* 2741 */ NULL, /* 2742 */ NULL, /* 2743 */ NULL, /* 2744 */ NULL, /* 2745 */ NULL, /* 2746 */ NULL, /* 2747 */ NULL, /* 2748 */ NULL, /* 2749 */ NULL, /* 274a */ NULL, /* 274b */ NULL, /* 274c */ NULL, /* 274d */ NULL, /* 274e */ NULL, /* 274f */ NULL, /* 2750 */ NULL, /* 2751 */ NULL, /* 2752 */ NULL, /* 2753 */ NULL, /* 2754 */ NULL, /* 2755 */ NULL, /* 2756 */ NULL, /* 2757 */ NULL, /* 2758 */ NULL, /* 2759 */ NULL, /* 275a */ NULL, /* 275b */ NULL, /* 275c */ NULL, /* 275d */ NULL, /* 275e */ NULL, /* 275f */ NULL, /* 2760 */ NULL, /* 2761 */ NULL, /* 2762 */ NULL, /* 2763 */ NULL, /* 2764 */ NULL, /* 2765 */ NULL, /* 2766 */ NULL, /* 2767 */ NULL, /* 2768 */ NULL, /* 2769 */ NULL, /* 276a */ NULL, /* 276b */ NULL, /* 276c */ NULL, /* 276d */ NULL, /* 276e */ NULL, /* 276f */ NULL, /* 2770 */ NULL, /* 2771 */ NULL, /* 2772 */ NULL, /* 2773 */ NULL, /* 2774 */ NULL, /* 2775 */ NULL, /* 2776 */ NULL, /* 2777 */ NULL, /* 2778 */ NULL, /* 2779 */ NULL, /* 277a */ NULL, /* 277b */ NULL, /* 277c */ NULL, /* 277d */ NULL, /* 277e */ NULL, /* 277f */ NULL, /* 2780 */ NULL, /* 2781 */ NULL, /* 2782 */ NULL, /* 2783 */ NULL, /* 2784 */ NULL, /* 2785 */ NULL, /* 2786 */ NULL, /* 2787 */ NULL, /* 2788 */ NULL, /* 2789 */ NULL, /* 278a */ NULL, /* 278b */ NULL, /* 278c */ NULL, /* 278d */ NULL, /* 278e */ NULL, /* 278f */ NULL, /* 2790 */ NULL, /* 2791 */ NULL, /* 2792 */ NULL, /* 2793 */ NULL, /* 2794 */ NULL, /* 2795 */ NULL, /* 2796 */ NULL, /* 2797 */ NULL, /* 2798 */ NULL, /* 2799 */ NULL, /* 279a */ NULL, /* 279b */ NULL, /* 279c */ NULL, /* 279d */ NULL, /* 279e */ NULL, /* 279f */ NULL, /* 27a0 */ NULL, /* 27a1 */ NULL, /* 27a2 */ NULL, /* 27a3 */ NULL, /* 27a4 */ NULL, /* 27a5 */ NULL, /* 27a6 */ NULL, /* 27a7 */ NULL, /* 27a8 */ NULL, /* 27a9 */ NULL, /* 27aa */ NULL, /* 27ab */ NULL, /* 27ac */ NULL, /* 27ad */ NULL, /* 27ae */ NULL, /* 27af */ NULL, /* 27b0 */ NULL, /* 27b1 */ NULL, /* 27b2 */ NULL, /* 27b3 */ NULL, /* 27b4 */ NULL, /* 27b5 */ NULL, /* 27b6 */ NULL, /* 27b7 */ NULL, /* 27b8 */ NULL, /* 27b9 */ NULL, /* 27ba */ NULL, /* 27bb */ NULL, /* 27bc */ NULL, /* 27bd */ NULL, /* 27be */ NULL, /* 27bf */ NULL, /* 27c0 */ NULL, /* 27c1 */ NULL, /* 27c2 */ NULL, /* 27c3 */ NULL, /* 27c4 */ NULL, /* 27c5 */ NULL, /* 27c6 */ NULL, /* 27c7 */ NULL, /* 27c8 */ NULL, /* 27c9 */ NULL, /* 27ca */ NULL, /* 27cb */ NULL, /* 27cc */ NULL, /* 27cd */ NULL, /* 27ce */ NULL, /* 27cf */ NULL, /* 27d0 */ NULL, /* 27d1 */ NULL, /* 27d2 */ NULL, /* 27d3 */ NULL, /* 27d4 */ NULL, /* 27d5 */ NULL, /* 27d6 */ NULL, /* 27d7 */ NULL, /* 27d8 */ NULL, /* 27d9 */ NULL, /* 27da */ NULL, /* 27db */ NULL, /* 27dc */ NULL, /* 27dd */ NULL, /* 27de */ NULL, /* 27df */ NULL, /* 27e0 */ NULL, /* 27e1 */ NULL, /* 27e2 */ NULL, /* 27e3 */ NULL, /* 27e4 */ NULL, /* 27e5 */ NULL, /* 27e6 */ NULL, /* 27e7 */ NULL, /* 27e8 */ NULL, /* 27e9 */ NULL, /* 27ea */ NULL, /* 27eb */ NULL, /* 27ec */ NULL, /* 27ed */ NULL, /* 27ee */ NULL, /* 27ef */ NULL, /* 27f0 */ NULL, /* 27f1 */ NULL, /* 27f2 */ NULL, /* 27f3 */ NULL, /* 27f4 */ NULL, /* 27f5 */ NULL, /* 27f6 */ NULL, /* 27f7 */ NULL, /* 27f8 */ NULL, /* 27f9 */ NULL, /* 27fa */ NULL, /* 27fb */ NULL, /* 27fc */ NULL, /* 27fd */ NULL, /* 27fe */ NULL, /* 27ff */ NULL, /* 2800 */ NULL, /* 2801 */ NULL, /* 2802 */ NULL, /* 2803 */ NULL, /* 2804 */ NULL, /* 2805 */ NULL, /* 2806 */ NULL, /* 2807 */ NULL, /* 2808 */ NULL, /* 2809 */ NULL, /* 280a */ NULL, /* 280b */ NULL, /* 280c */ NULL, /* 280d */ NULL, /* 280e */ NULL, /* 280f */ NULL, /* 2810 */ NULL, /* 2811 */ NULL, /* 2812 */ NULL, /* 2813 */ NULL, /* 2814 */ NULL, /* 2815 */ NULL, /* 2816 */ NULL, /* 2817 */ NULL, /* 2818 */ NULL, /* 2819 */ NULL, /* 281a */ NULL, /* 281b */ NULL, /* 281c */ NULL, /* 281d */ NULL, /* 281e */ NULL, /* 281f */ NULL, /* 2820 */ NULL, /* 2821 */ NULL, /* 2822 */ NULL, /* 2823 */ NULL, /* 2824 */ NULL, /* 2825 */ NULL, /* 2826 */ NULL, /* 2827 */ NULL, /* 2828 */ NULL, /* 2829 */ NULL, /* 282a */ NULL, /* 282b */ NULL, /* 282c */ NULL, /* 282d */ NULL, /* 282e */ NULL, /* 282f */ NULL, /* 2830 */ NULL, /* 2831 */ NULL, /* 2832 */ NULL, /* 2833 */ NULL, /* 2834 */ NULL, /* 2835 */ NULL, /* 2836 */ NULL, /* 2837 */ NULL, /* 2838 */ NULL, /* 2839 */ NULL, /* 283a */ NULL, /* 283b */ NULL, /* 283c */ NULL, /* 283d */ NULL, /* 283e */ NULL, /* 283f */ NULL, /* 2840 */ NULL, /* 2841 */ NULL, /* 2842 */ NULL, /* 2843 */ NULL, /* 2844 */ NULL, /* 2845 */ NULL, /* 2846 */ NULL, /* 2847 */ NULL, /* 2848 */ NULL, /* 2849 */ NULL, /* 284a */ NULL, /* 284b */ NULL, /* 284c */ NULL, /* 284d */ NULL, /* 284e */ NULL, /* 284f */ NULL, /* 2850 */ NULL, /* 2851 */ NULL, /* 2852 */ NULL, /* 2853 */ NULL, /* 2854 */ NULL, /* 2855 */ NULL, /* 2856 */ NULL, /* 2857 */ NULL, /* 2858 */ NULL, /* 2859 */ NULL, /* 285a */ NULL, /* 285b */ NULL, /* 285c */ NULL, /* 285d */ NULL, /* 285e */ NULL, /* 285f */ NULL, /* 2860 */ NULL, /* 2861 */ NULL, /* 2862 */ NULL, /* 2863 */ NULL, /* 2864 */ NULL, /* 2865 */ NULL, /* 2866 */ NULL, /* 2867 */ NULL, /* 2868 */ NULL, /* 2869 */ NULL, /* 286a */ NULL, /* 286b */ NULL, /* 286c */ NULL, /* 286d */ NULL, /* 286e */ NULL, /* 286f */ NULL, /* 2870 */ NULL, /* 2871 */ NULL, /* 2872 */ NULL, /* 2873 */ NULL, /* 2874 */ NULL, /* 2875 */ NULL, /* 2876 */ NULL, /* 2877 */ NULL, /* 2878 */ NULL, /* 2879 */ NULL, /* 287a */ NULL, /* 287b */ NULL, /* 287c */ NULL, /* 287d */ NULL, /* 287e */ NULL, /* 287f */ NULL, /* 2880 */ NULL, /* 2881 */ NULL, /* 2882 */ NULL, /* 2883 */ NULL, /* 2884 */ NULL, /* 2885 */ NULL, /* 2886 */ NULL, /* 2887 */ NULL, /* 2888 */ NULL, /* 2889 */ NULL, /* 288a */ NULL, /* 288b */ NULL, /* 288c */ NULL, /* 288d */ NULL, /* 288e */ NULL, /* 288f */ NULL, /* 2890 */ NULL, /* 2891 */ NULL, /* 2892 */ NULL, /* 2893 */ NULL, /* 2894 */ NULL, /* 2895 */ NULL, /* 2896 */ NULL, /* 2897 */ NULL, /* 2898 */ NULL, /* 2899 */ NULL, /* 289a */ NULL, /* 289b */ NULL, /* 289c */ NULL, /* 289d */ NULL, /* 289e */ NULL, /* 289f */ NULL, /* 28a0 */ NULL, /* 28a1 */ NULL, /* 28a2 */ NULL, /* 28a3 */ NULL, /* 28a4 */ NULL, /* 28a5 */ NULL, /* 28a6 */ NULL, /* 28a7 */ NULL, /* 28a8 */ NULL, /* 28a9 */ NULL, /* 28aa */ NULL, /* 28ab */ NULL, /* 28ac */ NULL, /* 28ad */ NULL, /* 28ae */ NULL, /* 28af */ NULL, /* 28b0 */ NULL, /* 28b1 */ NULL, /* 28b2 */ NULL, /* 28b3 */ NULL, /* 28b4 */ NULL, /* 28b5 */ NULL, /* 28b6 */ NULL, /* 28b7 */ NULL, /* 28b8 */ NULL, /* 28b9 */ NULL, /* 28ba */ NULL, /* 28bb */ NULL, /* 28bc */ NULL, /* 28bd */ NULL, /* 28be */ NULL, /* 28bf */ NULL, /* 28c0 */ NULL, /* 28c1 */ NULL, /* 28c2 */ NULL, /* 28c3 */ NULL, /* 28c4 */ NULL, /* 28c5 */ NULL, /* 28c6 */ NULL, /* 28c7 */ NULL, /* 28c8 */ NULL, /* 28c9 */ NULL, /* 28ca */ NULL, /* 28cb */ NULL, /* 28cc */ NULL, /* 28cd */ NULL, /* 28ce */ NULL, /* 28cf */ NULL, /* 28d0 */ NULL, /* 28d1 */ NULL, /* 28d2 */ NULL, /* 28d3 */ NULL, /* 28d4 */ NULL, /* 28d5 */ NULL, /* 28d6 */ NULL, /* 28d7 */ NULL, /* 28d8 */ NULL, /* 28d9 */ NULL, /* 28da */ NULL, /* 28db */ NULL, /* 28dc */ NULL, /* 28dd */ NULL, /* 28de */ NULL, /* 28df */ NULL, /* 28e0 */ NULL, /* 28e1 */ NULL, /* 28e2 */ NULL, /* 28e3 */ NULL, /* 28e4 */ NULL, /* 28e5 */ NULL, /* 28e6 */ NULL, /* 28e7 */ NULL, /* 28e8 */ NULL, /* 28e9 */ NULL, /* 28ea */ NULL, /* 28eb */ NULL, /* 28ec */ NULL, /* 28ed */ NULL, /* 28ee */ NULL, /* 28ef */ NULL, /* 28f0 */ NULL, /* 28f1 */ NULL, /* 28f2 */ NULL, /* 28f3 */ NULL, /* 28f4 */ NULL, /* 28f5 */ NULL, /* 28f6 */ NULL, /* 28f7 */ NULL, /* 28f8 */ NULL, /* 28f9 */ NULL, /* 28fa */ NULL, /* 28fb */ NULL, /* 28fc */ NULL, /* 28fd */ NULL, /* 28fe */ NULL, /* 28ff */ NULL, /* 2900 */ NULL, /* 2901 */ NULL, /* 2902 */ NULL, /* 2903 */ NULL, /* 2904 */ NULL, /* 2905 */ NULL, /* 2906 */ NULL, /* 2907 */ NULL, /* 2908 */ NULL, /* 2909 */ NULL, /* 290a */ NULL, /* 290b */ NULL, /* 290c */ NULL, /* 290d */ NULL, /* 290e */ NULL, /* 290f */ NULL, /* 2910 */ NULL, /* 2911 */ NULL, /* 2912 */ NULL, /* 2913 */ NULL, /* 2914 */ NULL, /* 2915 */ NULL, /* 2916 */ NULL, /* 2917 */ NULL, /* 2918 */ NULL, /* 2919 */ NULL, /* 291a */ NULL, /* 291b */ NULL, /* 291c */ NULL, /* 291d */ NULL, /* 291e */ NULL, /* 291f */ NULL, /* 2920 */ NULL, /* 2921 */ NULL, /* 2922 */ NULL, /* 2923 */ NULL, /* 2924 */ NULL, /* 2925 */ NULL, /* 2926 */ NULL, /* 2927 */ NULL, /* 2928 */ NULL, /* 2929 */ NULL, /* 292a */ NULL, /* 292b */ NULL, /* 292c */ NULL, /* 292d */ NULL, /* 292e */ NULL, /* 292f */ NULL, /* 2930 */ NULL, /* 2931 */ NULL, /* 2932 */ NULL, /* 2933 */ NULL, /* 2934 */ NULL, /* 2935 */ NULL, /* 2936 */ NULL, /* 2937 */ NULL, /* 2938 */ NULL, /* 2939 */ NULL, /* 293a */ NULL, /* 293b */ NULL, /* 293c */ NULL, /* 293d */ NULL, /* 293e */ NULL, /* 293f */ NULL, /* 2940 */ NULL, /* 2941 */ NULL, /* 2942 */ NULL, /* 2943 */ NULL, /* 2944 */ NULL, /* 2945 */ NULL, /* 2946 */ NULL, /* 2947 */ NULL, /* 2948 */ NULL, /* 2949 */ NULL, /* 294a */ NULL, /* 294b */ NULL, /* 294c */ NULL, /* 294d */ NULL, /* 294e */ NULL, /* 294f */ NULL, /* 2950 */ NULL, /* 2951 */ NULL, /* 2952 */ NULL, /* 2953 */ NULL, /* 2954 */ NULL, /* 2955 */ NULL, /* 2956 */ NULL, /* 2957 */ NULL, /* 2958 */ NULL, /* 2959 */ NULL, /* 295a */ NULL, /* 295b */ NULL, /* 295c */ NULL, /* 295d */ NULL, /* 295e */ NULL, /* 295f */ NULL, /* 2960 */ NULL, /* 2961 */ NULL, /* 2962 */ NULL, /* 2963 */ NULL, /* 2964 */ NULL, /* 2965 */ NULL, /* 2966 */ NULL, /* 2967 */ NULL, /* 2968 */ NULL, /* 2969 */ NULL, /* 296a */ NULL, /* 296b */ NULL, /* 296c */ NULL, /* 296d */ NULL, /* 296e */ NULL, /* 296f */ NULL, /* 2970 */ NULL, /* 2971 */ NULL, /* 2972 */ NULL, /* 2973 */ NULL, /* 2974 */ NULL, /* 2975 */ NULL, /* 2976 */ NULL, /* 2977 */ NULL, /* 2978 */ NULL, /* 2979 */ NULL, /* 297a */ NULL, /* 297b */ NULL, /* 297c */ NULL, /* 297d */ NULL, /* 297e */ NULL, /* 297f */ NULL, /* 2980 */ NULL, /* 2981 */ NULL, /* 2982 */ NULL, /* 2983 */ NULL, /* 2984 */ NULL, /* 2985 */ NULL, /* 2986 */ NULL, /* 2987 */ NULL, /* 2988 */ NULL, /* 2989 */ NULL, /* 298a */ NULL, /* 298b */ NULL, /* 298c */ NULL, /* 298d */ NULL, /* 298e */ NULL, /* 298f */ NULL, /* 2990 */ NULL, /* 2991 */ NULL, /* 2992 */ NULL, /* 2993 */ NULL, /* 2994 */ NULL, /* 2995 */ NULL, /* 2996 */ NULL, /* 2997 */ NULL, /* 2998 */ NULL, /* 2999 */ NULL, /* 299a */ NULL, /* 299b */ NULL, /* 299c */ NULL, /* 299d */ NULL, /* 299e */ NULL, /* 299f */ NULL, /* 29a0 */ NULL, /* 29a1 */ NULL, /* 29a2 */ NULL, /* 29a3 */ NULL, /* 29a4 */ NULL, /* 29a5 */ NULL, /* 29a6 */ NULL, /* 29a7 */ NULL, /* 29a8 */ NULL, /* 29a9 */ NULL, /* 29aa */ NULL, /* 29ab */ NULL, /* 29ac */ NULL, /* 29ad */ NULL, /* 29ae */ NULL, /* 29af */ NULL, /* 29b0 */ NULL, /* 29b1 */ NULL, /* 29b2 */ NULL, /* 29b3 */ NULL, /* 29b4 */ NULL, /* 29b5 */ NULL, /* 29b6 */ NULL, /* 29b7 */ NULL, /* 29b8 */ NULL, /* 29b9 */ NULL, /* 29ba */ NULL, /* 29bb */ NULL, /* 29bc */ NULL, /* 29bd */ NULL, /* 29be */ NULL, /* 29bf */ NULL, /* 29c0 */ NULL, /* 29c1 */ NULL, /* 29c2 */ NULL, /* 29c3 */ NULL, /* 29c4 */ NULL, /* 29c5 */ NULL, /* 29c6 */ NULL, /* 29c7 */ NULL, /* 29c8 */ NULL, /* 29c9 */ NULL, /* 29ca */ NULL, /* 29cb */ NULL, /* 29cc */ NULL, /* 29cd */ NULL, /* 29ce */ NULL, /* 29cf */ NULL, /* 29d0 */ NULL, /* 29d1 */ NULL, /* 29d2 */ NULL, /* 29d3 */ NULL, /* 29d4 */ NULL, /* 29d5 */ NULL, /* 29d6 */ NULL, /* 29d7 */ NULL, /* 29d8 */ NULL, /* 29d9 */ NULL, /* 29da */ NULL, /* 29db */ NULL, /* 29dc */ NULL, /* 29dd */ NULL, /* 29de */ NULL, /* 29df */ NULL, /* 29e0 */ NULL, /* 29e1 */ NULL, /* 29e2 */ NULL, /* 29e3 */ NULL, /* 29e4 */ NULL, /* 29e5 */ NULL, /* 29e6 */ NULL, /* 29e7 */ NULL, /* 29e8 */ NULL, /* 29e9 */ NULL, /* 29ea */ NULL, /* 29eb */ NULL, /* 29ec */ NULL, /* 29ed */ NULL, /* 29ee */ NULL, /* 29ef */ NULL, /* 29f0 */ NULL, /* 29f1 */ NULL, /* 29f2 */ NULL, /* 29f3 */ NULL, /* 29f4 */ NULL, /* 29f5 */ NULL, /* 29f6 */ NULL, /* 29f7 */ NULL, /* 29f8 */ NULL, /* 29f9 */ NULL, /* 29fa */ NULL, /* 29fb */ NULL, /* 29fc */ NULL, /* 29fd */ NULL, /* 29fe */ NULL, /* 29ff */ NULL, /* 2a00 */ NULL, /* 2a01 */ NULL, /* 2a02 */ NULL, /* 2a03 */ NULL, /* 2a04 */ NULL, /* 2a05 */ NULL, /* 2a06 */ NULL, /* 2a07 */ NULL, /* 2a08 */ NULL, /* 2a09 */ NULL, /* 2a0a */ NULL, /* 2a0b */ NULL, /* 2a0c */ NULL, /* 2a0d */ NULL, /* 2a0e */ NULL, /* 2a0f */ NULL, /* 2a10 */ NULL, /* 2a11 */ NULL, /* 2a12 */ NULL, /* 2a13 */ NULL, /* 2a14 */ NULL, /* 2a15 */ NULL, /* 2a16 */ NULL, /* 2a17 */ NULL, /* 2a18 */ NULL, /* 2a19 */ NULL, /* 2a1a */ NULL, /* 2a1b */ NULL, /* 2a1c */ NULL, /* 2a1d */ NULL, /* 2a1e */ NULL, /* 2a1f */ NULL, /* 2a20 */ NULL, /* 2a21 */ NULL, /* 2a22 */ NULL, /* 2a23 */ NULL, /* 2a24 */ NULL, /* 2a25 */ NULL, /* 2a26 */ NULL, /* 2a27 */ NULL, /* 2a28 */ NULL, /* 2a29 */ NULL, /* 2a2a */ NULL, /* 2a2b */ NULL, /* 2a2c */ NULL, /* 2a2d */ NULL, /* 2a2e */ NULL, /* 2a2f */ NULL, /* 2a30 */ NULL, /* 2a31 */ NULL, /* 2a32 */ NULL, /* 2a33 */ NULL, /* 2a34 */ NULL, /* 2a35 */ NULL, /* 2a36 */ NULL, /* 2a37 */ NULL, /* 2a38 */ NULL, /* 2a39 */ NULL, /* 2a3a */ NULL, /* 2a3b */ NULL, /* 2a3c */ NULL, /* 2a3d */ NULL, /* 2a3e */ NULL, /* 2a3f */ NULL, /* 2a40 */ NULL, /* 2a41 */ NULL, /* 2a42 */ NULL, /* 2a43 */ NULL, /* 2a44 */ NULL, /* 2a45 */ NULL, /* 2a46 */ NULL, /* 2a47 */ NULL, /* 2a48 */ NULL, /* 2a49 */ NULL, /* 2a4a */ NULL, /* 2a4b */ NULL, /* 2a4c */ NULL, /* 2a4d */ NULL, /* 2a4e */ NULL, /* 2a4f */ NULL, /* 2a50 */ NULL, /* 2a51 */ NULL, /* 2a52 */ NULL, /* 2a53 */ NULL, /* 2a54 */ NULL, /* 2a55 */ NULL, /* 2a56 */ NULL, /* 2a57 */ NULL, /* 2a58 */ NULL, /* 2a59 */ NULL, /* 2a5a */ NULL, /* 2a5b */ NULL, /* 2a5c */ NULL, /* 2a5d */ NULL, /* 2a5e */ NULL, /* 2a5f */ NULL, /* 2a60 */ NULL, /* 2a61 */ NULL, /* 2a62 */ NULL, /* 2a63 */ NULL, /* 2a64 */ NULL, /* 2a65 */ NULL, /* 2a66 */ NULL, /* 2a67 */ NULL, /* 2a68 */ NULL, /* 2a69 */ NULL, /* 2a6a */ NULL, /* 2a6b */ NULL, /* 2a6c */ NULL, /* 2a6d */ NULL, /* 2a6e */ NULL, /* 2a6f */ NULL, /* 2a70 */ NULL, /* 2a71 */ NULL, /* 2a72 */ NULL, /* 2a73 */ NULL, /* 2a74 */ NULL, /* 2a75 */ NULL, /* 2a76 */ NULL, /* 2a77 */ NULL, /* 2a78 */ NULL, /* 2a79 */ NULL, /* 2a7a */ NULL, /* 2a7b */ NULL, /* 2a7c */ NULL, /* 2a7d */ NULL, /* 2a7e */ NULL, /* 2a7f */ NULL, /* 2a80 */ NULL, /* 2a81 */ NULL, /* 2a82 */ NULL, /* 2a83 */ NULL, /* 2a84 */ NULL, /* 2a85 */ NULL, /* 2a86 */ NULL, /* 2a87 */ NULL, /* 2a88 */ NULL, /* 2a89 */ NULL, /* 2a8a */ NULL, /* 2a8b */ NULL, /* 2a8c */ NULL, /* 2a8d */ NULL, /* 2a8e */ NULL, /* 2a8f */ NULL, /* 2a90 */ NULL, /* 2a91 */ NULL, /* 2a92 */ NULL, /* 2a93 */ NULL, /* 2a94 */ NULL, /* 2a95 */ NULL, /* 2a96 */ NULL, /* 2a97 */ NULL, /* 2a98 */ NULL, /* 2a99 */ NULL, /* 2a9a */ NULL, /* 2a9b */ NULL, /* 2a9c */ NULL, /* 2a9d */ NULL, /* 2a9e */ NULL, /* 2a9f */ NULL, /* 2aa0 */ NULL, /* 2aa1 */ NULL, /* 2aa2 */ NULL, /* 2aa3 */ NULL, /* 2aa4 */ NULL, /* 2aa5 */ NULL, /* 2aa6 */ NULL, /* 2aa7 */ NULL, /* 2aa8 */ NULL, /* 2aa9 */ NULL, /* 2aaa */ NULL, /* 2aab */ NULL, /* 2aac */ NULL, /* 2aad */ NULL, /* 2aae */ NULL, /* 2aaf */ NULL, /* 2ab0 */ NULL, /* 2ab1 */ NULL, /* 2ab2 */ NULL, /* 2ab3 */ NULL, /* 2ab4 */ NULL, /* 2ab5 */ NULL, /* 2ab6 */ NULL, /* 2ab7 */ NULL, /* 2ab8 */ NULL, /* 2ab9 */ NULL, /* 2aba */ NULL, /* 2abb */ NULL, /* 2abc */ NULL, /* 2abd */ NULL, /* 2abe */ NULL, /* 2abf */ NULL, /* 2ac0 */ NULL, /* 2ac1 */ NULL, /* 2ac2 */ NULL, /* 2ac3 */ NULL, /* 2ac4 */ NULL, /* 2ac5 */ NULL, /* 2ac6 */ NULL, /* 2ac7 */ NULL, /* 2ac8 */ NULL, /* 2ac9 */ NULL, /* 2aca */ NULL, /* 2acb */ NULL, /* 2acc */ NULL, /* 2acd */ NULL, /* 2ace */ NULL, /* 2acf */ NULL, /* 2ad0 */ NULL, /* 2ad1 */ NULL, /* 2ad2 */ NULL, /* 2ad3 */ NULL, /* 2ad4 */ NULL, /* 2ad5 */ NULL, /* 2ad6 */ NULL, /* 2ad7 */ NULL, /* 2ad8 */ NULL, /* 2ad9 */ NULL, /* 2ada */ NULL, /* 2adb */ NULL, /* 2adc */ NULL, /* 2add */ NULL, /* 2ade */ NULL, /* 2adf */ NULL, /* 2ae0 */ NULL, /* 2ae1 */ NULL, /* 2ae2 */ NULL, /* 2ae3 */ NULL, /* 2ae4 */ NULL, /* 2ae5 */ NULL, /* 2ae6 */ NULL, /* 2ae7 */ NULL, /* 2ae8 */ NULL, /* 2ae9 */ NULL, /* 2aea */ NULL, /* 2aeb */ NULL, /* 2aec */ NULL, /* 2aed */ NULL, /* 2aee */ NULL, /* 2aef */ NULL, /* 2af0 */ NULL, /* 2af1 */ NULL, /* 2af2 */ NULL, /* 2af3 */ NULL, /* 2af4 */ NULL, /* 2af5 */ NULL, /* 2af6 */ NULL, /* 2af7 */ NULL, /* 2af8 */ NULL, /* 2af9 */ NULL, /* 2afa */ NULL, /* 2afb */ NULL, /* 2afc */ NULL, /* 2afd */ NULL, /* 2afe */ NULL, /* 2aff */ NULL, /* 2b00 */ NULL, /* 2b01 */ NULL, /* 2b02 */ NULL, /* 2b03 */ NULL, /* 2b04 */ NULL, /* 2b05 */ NULL, /* 2b06 */ NULL, /* 2b07 */ NULL, /* 2b08 */ NULL, /* 2b09 */ NULL, /* 2b0a */ NULL, /* 2b0b */ NULL, /* 2b0c */ NULL, /* 2b0d */ NULL, /* 2b0e */ NULL, /* 2b0f */ NULL, /* 2b10 */ NULL, /* 2b11 */ NULL, /* 2b12 */ NULL, /* 2b13 */ NULL, /* 2b14 */ NULL, /* 2b15 */ NULL, /* 2b16 */ NULL, /* 2b17 */ NULL, /* 2b18 */ NULL, /* 2b19 */ NULL, /* 2b1a */ NULL, /* 2b1b */ NULL, /* 2b1c */ NULL, /* 2b1d */ NULL, /* 2b1e */ NULL, /* 2b1f */ NULL, /* 2b20 */ NULL, /* 2b21 */ NULL, /* 2b22 */ NULL, /* 2b23 */ NULL, /* 2b24 */ NULL, /* 2b25 */ NULL, /* 2b26 */ NULL, /* 2b27 */ NULL, /* 2b28 */ NULL, /* 2b29 */ NULL, /* 2b2a */ NULL, /* 2b2b */ NULL, /* 2b2c */ NULL, /* 2b2d */ NULL, /* 2b2e */ NULL, /* 2b2f */ NULL, /* 2b30 */ NULL, /* 2b31 */ NULL, /* 2b32 */ NULL, /* 2b33 */ NULL, /* 2b34 */ NULL, /* 2b35 */ NULL, /* 2b36 */ NULL, /* 2b37 */ NULL, /* 2b38 */ NULL, /* 2b39 */ NULL, /* 2b3a */ NULL, /* 2b3b */ NULL, /* 2b3c */ NULL, /* 2b3d */ NULL, /* 2b3e */ NULL, /* 2b3f */ NULL, /* 2b40 */ NULL, /* 2b41 */ NULL, /* 2b42 */ NULL, /* 2b43 */ NULL, /* 2b44 */ NULL, /* 2b45 */ NULL, /* 2b46 */ NULL, /* 2b47 */ NULL, /* 2b48 */ NULL, /* 2b49 */ NULL, /* 2b4a */ NULL, /* 2b4b */ NULL, /* 2b4c */ NULL, /* 2b4d */ NULL, /* 2b4e */ NULL, /* 2b4f */ NULL, /* 2b50 */ NULL, /* 2b51 */ NULL, /* 2b52 */ NULL, /* 2b53 */ NULL, /* 2b54 */ NULL, /* 2b55 */ NULL, /* 2b56 */ NULL, /* 2b57 */ NULL, /* 2b58 */ NULL, /* 2b59 */ NULL, /* 2b5a */ NULL, /* 2b5b */ NULL, /* 2b5c */ NULL, /* 2b5d */ NULL, /* 2b5e */ NULL, /* 2b5f */ NULL, /* 2b60 */ NULL, /* 2b61 */ NULL, /* 2b62 */ NULL, /* 2b63 */ NULL, /* 2b64 */ NULL, /* 2b65 */ NULL, /* 2b66 */ NULL, /* 2b67 */ NULL, /* 2b68 */ NULL, /* 2b69 */ NULL, /* 2b6a */ NULL, /* 2b6b */ NULL, /* 2b6c */ NULL, /* 2b6d */ NULL, /* 2b6e */ NULL, /* 2b6f */ NULL, /* 2b70 */ NULL, /* 2b71 */ NULL, /* 2b72 */ NULL, /* 2b73 */ NULL, /* 2b74 */ NULL, /* 2b75 */ NULL, /* 2b76 */ NULL, /* 2b77 */ NULL, /* 2b78 */ NULL, /* 2b79 */ NULL, /* 2b7a */ NULL, /* 2b7b */ NULL, /* 2b7c */ NULL, /* 2b7d */ NULL, /* 2b7e */ NULL, /* 2b7f */ NULL, /* 2b80 */ NULL, /* 2b81 */ NULL, /* 2b82 */ NULL, /* 2b83 */ NULL, /* 2b84 */ NULL, /* 2b85 */ NULL, /* 2b86 */ NULL, /* 2b87 */ NULL, /* 2b88 */ NULL, /* 2b89 */ NULL, /* 2b8a */ NULL, /* 2b8b */ NULL, /* 2b8c */ NULL, /* 2b8d */ NULL, /* 2b8e */ NULL, /* 2b8f */ NULL, /* 2b90 */ NULL, /* 2b91 */ NULL, /* 2b92 */ NULL, /* 2b93 */ NULL, /* 2b94 */ NULL, /* 2b95 */ NULL, /* 2b96 */ NULL, /* 2b97 */ NULL, /* 2b98 */ NULL, /* 2b99 */ NULL, /* 2b9a */ NULL, /* 2b9b */ NULL, /* 2b9c */ NULL, /* 2b9d */ NULL, /* 2b9e */ NULL, /* 2b9f */ NULL, /* 2ba0 */ NULL, /* 2ba1 */ NULL, /* 2ba2 */ NULL, /* 2ba3 */ NULL, /* 2ba4 */ NULL, /* 2ba5 */ NULL, /* 2ba6 */ NULL, /* 2ba7 */ NULL, /* 2ba8 */ NULL, /* 2ba9 */ NULL, /* 2baa */ NULL, /* 2bab */ NULL, /* 2bac */ NULL, /* 2bad */ NULL, /* 2bae */ NULL, /* 2baf */ NULL, /* 2bb0 */ NULL, /* 2bb1 */ NULL, /* 2bb2 */ NULL, /* 2bb3 */ NULL, /* 2bb4 */ NULL, /* 2bb5 */ NULL, /* 2bb6 */ NULL, /* 2bb7 */ NULL, /* 2bb8 */ NULL, /* 2bb9 */ NULL, /* 2bba */ NULL, /* 2bbb */ NULL, /* 2bbc */ NULL, /* 2bbd */ NULL, /* 2bbe */ NULL, /* 2bbf */ NULL, /* 2bc0 */ NULL, /* 2bc1 */ NULL, /* 2bc2 */ NULL, /* 2bc3 */ NULL, /* 2bc4 */ NULL, /* 2bc5 */ NULL, /* 2bc6 */ NULL, /* 2bc7 */ NULL, /* 2bc8 */ NULL, /* 2bc9 */ NULL, /* 2bca */ NULL, /* 2bcb */ NULL, /* 2bcc */ NULL, /* 2bcd */ NULL, /* 2bce */ NULL, /* 2bcf */ NULL, /* 2bd0 */ NULL, /* 2bd1 */ NULL, /* 2bd2 */ NULL, /* 2bd3 */ NULL, /* 2bd4 */ NULL, /* 2bd5 */ NULL, /* 2bd6 */ NULL, /* 2bd7 */ NULL, /* 2bd8 */ NULL, /* 2bd9 */ NULL, /* 2bda */ NULL, /* 2bdb */ NULL, /* 2bdc */ NULL, /* 2bdd */ NULL, /* 2bde */ NULL, /* 2bdf */ NULL, /* 2be0 */ NULL, /* 2be1 */ NULL, /* 2be2 */ NULL, /* 2be3 */ NULL, /* 2be4 */ NULL, /* 2be5 */ NULL, /* 2be6 */ NULL, /* 2be7 */ NULL, /* 2be8 */ NULL, /* 2be9 */ NULL, /* 2bea */ NULL, /* 2beb */ NULL, /* 2bec */ NULL, /* 2bed */ NULL, /* 2bee */ NULL, /* 2bef */ NULL, /* 2bf0 */ NULL, /* 2bf1 */ NULL, /* 2bf2 */ NULL, /* 2bf3 */ NULL, /* 2bf4 */ NULL, /* 2bf5 */ NULL, /* 2bf6 */ NULL, /* 2bf7 */ NULL, /* 2bf8 */ NULL, /* 2bf9 */ NULL, /* 2bfa */ NULL, /* 2bfb */ NULL, /* 2bfc */ NULL, /* 2bfd */ NULL, /* 2bfe */ NULL, /* 2bff */ NULL, /* 2c00 */ NULL, /* 2c01 */ NULL, /* 2c02 */ NULL, /* 2c03 */ NULL, /* 2c04 */ NULL, /* 2c05 */ NULL, /* 2c06 */ NULL, /* 2c07 */ NULL, /* 2c08 */ NULL, /* 2c09 */ NULL, /* 2c0a */ NULL, /* 2c0b */ NULL, /* 2c0c */ NULL, /* 2c0d */ NULL, /* 2c0e */ NULL, /* 2c0f */ NULL, /* 2c10 */ NULL, /* 2c11 */ NULL, /* 2c12 */ NULL, /* 2c13 */ NULL, /* 2c14 */ NULL, /* 2c15 */ NULL, /* 2c16 */ NULL, /* 2c17 */ NULL, /* 2c18 */ NULL, /* 2c19 */ NULL, /* 2c1a */ NULL, /* 2c1b */ NULL, /* 2c1c */ NULL, /* 2c1d */ NULL, /* 2c1e */ NULL, /* 2c1f */ NULL, /* 2c20 */ NULL, /* 2c21 */ NULL, /* 2c22 */ NULL, /* 2c23 */ NULL, /* 2c24 */ NULL, /* 2c25 */ NULL, /* 2c26 */ NULL, /* 2c27 */ NULL, /* 2c28 */ NULL, /* 2c29 */ NULL, /* 2c2a */ NULL, /* 2c2b */ NULL, /* 2c2c */ NULL, /* 2c2d */ NULL, /* 2c2e */ NULL, /* 2c2f */ NULL, /* 2c30 */ NULL, /* 2c31 */ NULL, /* 2c32 */ NULL, /* 2c33 */ NULL, /* 2c34 */ NULL, /* 2c35 */ NULL, /* 2c36 */ NULL, /* 2c37 */ NULL, /* 2c38 */ NULL, /* 2c39 */ NULL, /* 2c3a */ NULL, /* 2c3b */ NULL, /* 2c3c */ NULL, /* 2c3d */ NULL, /* 2c3e */ NULL, /* 2c3f */ NULL, /* 2c40 */ NULL, /* 2c41 */ NULL, /* 2c42 */ NULL, /* 2c43 */ NULL, /* 2c44 */ NULL, /* 2c45 */ NULL, /* 2c46 */ NULL, /* 2c47 */ NULL, /* 2c48 */ NULL, /* 2c49 */ NULL, /* 2c4a */ NULL, /* 2c4b */ NULL, /* 2c4c */ NULL, /* 2c4d */ NULL, /* 2c4e */ NULL, /* 2c4f */ NULL, /* 2c50 */ NULL, /* 2c51 */ NULL, /* 2c52 */ NULL, /* 2c53 */ NULL, /* 2c54 */ NULL, /* 2c55 */ NULL, /* 2c56 */ NULL, /* 2c57 */ NULL, /* 2c58 */ NULL, /* 2c59 */ NULL, /* 2c5a */ NULL, /* 2c5b */ NULL, /* 2c5c */ NULL, /* 2c5d */ NULL, /* 2c5e */ NULL, /* 2c5f */ NULL, /* 2c60 */ NULL, /* 2c61 */ NULL, /* 2c62 */ NULL, /* 2c63 */ NULL, /* 2c64 */ NULL, /* 2c65 */ NULL, /* 2c66 */ NULL, /* 2c67 */ NULL, /* 2c68 */ NULL, /* 2c69 */ NULL, /* 2c6a */ NULL, /* 2c6b */ NULL, /* 2c6c */ NULL, /* 2c6d */ NULL, /* 2c6e */ NULL, /* 2c6f */ NULL, /* 2c70 */ NULL, /* 2c71 */ NULL, /* 2c72 */ NULL, /* 2c73 */ NULL, /* 2c74 */ NULL, /* 2c75 */ NULL, /* 2c76 */ NULL, /* 2c77 */ NULL, /* 2c78 */ NULL, /* 2c79 */ NULL, /* 2c7a */ NULL, /* 2c7b */ NULL, /* 2c7c */ NULL, /* 2c7d */ NULL, /* 2c7e */ NULL, /* 2c7f */ NULL, /* 2c80 */ NULL, /* 2c81 */ NULL, /* 2c82 */ NULL, /* 2c83 */ NULL, /* 2c84 */ NULL, /* 2c85 */ NULL, /* 2c86 */ NULL, /* 2c87 */ NULL, /* 2c88 */ NULL, /* 2c89 */ NULL, /* 2c8a */ NULL, /* 2c8b */ NULL, /* 2c8c */ NULL, /* 2c8d */ NULL, /* 2c8e */ NULL, /* 2c8f */ NULL, /* 2c90 */ NULL, /* 2c91 */ NULL, /* 2c92 */ NULL, /* 2c93 */ NULL, /* 2c94 */ NULL, /* 2c95 */ NULL, /* 2c96 */ NULL, /* 2c97 */ NULL, /* 2c98 */ NULL, /* 2c99 */ NULL, /* 2c9a */ NULL, /* 2c9b */ NULL, /* 2c9c */ NULL, /* 2c9d */ NULL, /* 2c9e */ NULL, /* 2c9f */ NULL, /* 2ca0 */ NULL, /* 2ca1 */ NULL, /* 2ca2 */ NULL, /* 2ca3 */ NULL, /* 2ca4 */ NULL, /* 2ca5 */ NULL, /* 2ca6 */ NULL, /* 2ca7 */ NULL, /* 2ca8 */ NULL, /* 2ca9 */ NULL, /* 2caa */ NULL, /* 2cab */ NULL, /* 2cac */ NULL, /* 2cad */ NULL, /* 2cae */ NULL, /* 2caf */ NULL, /* 2cb0 */ NULL, /* 2cb1 */ NULL, /* 2cb2 */ NULL, /* 2cb3 */ NULL, /* 2cb4 */ NULL, /* 2cb5 */ NULL, /* 2cb6 */ NULL, /* 2cb7 */ NULL, /* 2cb8 */ NULL, /* 2cb9 */ NULL, /* 2cba */ NULL, /* 2cbb */ NULL, /* 2cbc */ NULL, /* 2cbd */ NULL, /* 2cbe */ NULL, /* 2cbf */ NULL, /* 2cc0 */ NULL, /* 2cc1 */ NULL, /* 2cc2 */ NULL, /* 2cc3 */ NULL, /* 2cc4 */ NULL, /* 2cc5 */ NULL, /* 2cc6 */ NULL, /* 2cc7 */ NULL, /* 2cc8 */ NULL, /* 2cc9 */ NULL, /* 2cca */ NULL, /* 2ccb */ NULL, /* 2ccc */ NULL, /* 2ccd */ NULL, /* 2cce */ NULL, /* 2ccf */ NULL, /* 2cd0 */ NULL, /* 2cd1 */ NULL, /* 2cd2 */ NULL, /* 2cd3 */ NULL, /* 2cd4 */ NULL, /* 2cd5 */ NULL, /* 2cd6 */ NULL, /* 2cd7 */ NULL, /* 2cd8 */ NULL, /* 2cd9 */ NULL, /* 2cda */ NULL, /* 2cdb */ NULL, /* 2cdc */ NULL, /* 2cdd */ NULL, /* 2cde */ NULL, /* 2cdf */ NULL, /* 2ce0 */ NULL, /* 2ce1 */ NULL, /* 2ce2 */ NULL, /* 2ce3 */ NULL, /* 2ce4 */ NULL, /* 2ce5 */ NULL, /* 2ce6 */ NULL, /* 2ce7 */ NULL, /* 2ce8 */ NULL, /* 2ce9 */ NULL, /* 2cea */ NULL, /* 2ceb */ NULL, /* 2cec */ NULL, /* 2ced */ NULL, /* 2cee */ NULL, /* 2cef */ NULL, /* 2cf0 */ NULL, /* 2cf1 */ NULL, /* 2cf2 */ NULL, /* 2cf3 */ NULL, /* 2cf4 */ NULL, /* 2cf5 */ NULL, /* 2cf6 */ NULL, /* 2cf7 */ NULL, /* 2cf8 */ NULL, /* 2cf9 */ NULL, /* 2cfa */ NULL, /* 2cfb */ NULL, /* 2cfc */ NULL, /* 2cfd */ NULL, /* 2cfe */ NULL, /* 2cff */ NULL, /* 2d00 */ NULL, /* 2d01 */ NULL, /* 2d02 */ NULL, /* 2d03 */ NULL, /* 2d04 */ NULL, /* 2d05 */ NULL, /* 2d06 */ NULL, /* 2d07 */ NULL, /* 2d08 */ NULL, /* 2d09 */ NULL, /* 2d0a */ NULL, /* 2d0b */ NULL, /* 2d0c */ NULL, /* 2d0d */ NULL, /* 2d0e */ NULL, /* 2d0f */ NULL, /* 2d10 */ NULL, /* 2d11 */ NULL, /* 2d12 */ NULL, /* 2d13 */ NULL, /* 2d14 */ NULL, /* 2d15 */ NULL, /* 2d16 */ NULL, /* 2d17 */ NULL, /* 2d18 */ NULL, /* 2d19 */ NULL, /* 2d1a */ NULL, /* 2d1b */ NULL, /* 2d1c */ NULL, /* 2d1d */ NULL, /* 2d1e */ NULL, /* 2d1f */ NULL, /* 2d20 */ NULL, /* 2d21 */ NULL, /* 2d22 */ NULL, /* 2d23 */ NULL, /* 2d24 */ NULL, /* 2d25 */ NULL, /* 2d26 */ NULL, /* 2d27 */ NULL, /* 2d28 */ NULL, /* 2d29 */ NULL, /* 2d2a */ NULL, /* 2d2b */ NULL, /* 2d2c */ NULL, /* 2d2d */ NULL, /* 2d2e */ NULL, /* 2d2f */ NULL, /* 2d30 */ NULL, /* 2d31 */ NULL, /* 2d32 */ NULL, /* 2d33 */ NULL, /* 2d34 */ NULL, /* 2d35 */ NULL, /* 2d36 */ NULL, /* 2d37 */ NULL, /* 2d38 */ NULL, /* 2d39 */ NULL, /* 2d3a */ NULL, /* 2d3b */ NULL, /* 2d3c */ NULL, /* 2d3d */ NULL, /* 2d3e */ NULL, /* 2d3f */ NULL, /* 2d40 */ NULL, /* 2d41 */ NULL, /* 2d42 */ NULL, /* 2d43 */ NULL, /* 2d44 */ NULL, /* 2d45 */ NULL, /* 2d46 */ NULL, /* 2d47 */ NULL, /* 2d48 */ NULL, /* 2d49 */ NULL, /* 2d4a */ NULL, /* 2d4b */ NULL, /* 2d4c */ NULL, /* 2d4d */ NULL, /* 2d4e */ NULL, /* 2d4f */ NULL, /* 2d50 */ NULL, /* 2d51 */ NULL, /* 2d52 */ NULL, /* 2d53 */ NULL, /* 2d54 */ NULL, /* 2d55 */ NULL, /* 2d56 */ NULL, /* 2d57 */ NULL, /* 2d58 */ NULL, /* 2d59 */ NULL, /* 2d5a */ NULL, /* 2d5b */ NULL, /* 2d5c */ NULL, /* 2d5d */ NULL, /* 2d5e */ NULL, /* 2d5f */ NULL, /* 2d60 */ NULL, /* 2d61 */ NULL, /* 2d62 */ NULL, /* 2d63 */ NULL, /* 2d64 */ NULL, /* 2d65 */ NULL, /* 2d66 */ NULL, /* 2d67 */ NULL, /* 2d68 */ NULL, /* 2d69 */ NULL, /* 2d6a */ NULL, /* 2d6b */ NULL, /* 2d6c */ NULL, /* 2d6d */ NULL, /* 2d6e */ NULL, /* 2d6f */ NULL, /* 2d70 */ NULL, /* 2d71 */ NULL, /* 2d72 */ NULL, /* 2d73 */ NULL, /* 2d74 */ NULL, /* 2d75 */ NULL, /* 2d76 */ NULL, /* 2d77 */ NULL, /* 2d78 */ NULL, /* 2d79 */ NULL, /* 2d7a */ NULL, /* 2d7b */ NULL, /* 2d7c */ NULL, /* 2d7d */ NULL, /* 2d7e */ NULL, /* 2d7f */ NULL, /* 2d80 */ NULL, /* 2d81 */ NULL, /* 2d82 */ NULL, /* 2d83 */ NULL, /* 2d84 */ NULL, /* 2d85 */ NULL, /* 2d86 */ NULL, /* 2d87 */ NULL, /* 2d88 */ NULL, /* 2d89 */ NULL, /* 2d8a */ NULL, /* 2d8b */ NULL, /* 2d8c */ NULL, /* 2d8d */ NULL, /* 2d8e */ NULL, /* 2d8f */ NULL, /* 2d90 */ NULL, /* 2d91 */ NULL, /* 2d92 */ NULL, /* 2d93 */ NULL, /* 2d94 */ NULL, /* 2d95 */ NULL, /* 2d96 */ NULL, /* 2d97 */ NULL, /* 2d98 */ NULL, /* 2d99 */ NULL, /* 2d9a */ NULL, /* 2d9b */ NULL, /* 2d9c */ NULL, /* 2d9d */ NULL, /* 2d9e */ NULL, /* 2d9f */ NULL, /* 2da0 */ NULL, /* 2da1 */ NULL, /* 2da2 */ NULL, /* 2da3 */ NULL, /* 2da4 */ NULL, /* 2da5 */ NULL, /* 2da6 */ NULL, /* 2da7 */ NULL, /* 2da8 */ NULL, /* 2da9 */ NULL, /* 2daa */ NULL, /* 2dab */ NULL, /* 2dac */ NULL, /* 2dad */ NULL, /* 2dae */ NULL, /* 2daf */ NULL, /* 2db0 */ NULL, /* 2db1 */ NULL, /* 2db2 */ NULL, /* 2db3 */ NULL, /* 2db4 */ NULL, /* 2db5 */ NULL, /* 2db6 */ NULL, /* 2db7 */ NULL, /* 2db8 */ NULL, /* 2db9 */ NULL, /* 2dba */ NULL, /* 2dbb */ NULL, /* 2dbc */ NULL, /* 2dbd */ NULL, /* 2dbe */ NULL, /* 2dbf */ NULL, /* 2dc0 */ NULL, /* 2dc1 */ NULL, /* 2dc2 */ NULL, /* 2dc3 */ NULL, /* 2dc4 */ NULL, /* 2dc5 */ NULL, /* 2dc6 */ NULL, /* 2dc7 */ NULL, /* 2dc8 */ NULL, /* 2dc9 */ NULL, /* 2dca */ NULL, /* 2dcb */ NULL, /* 2dcc */ NULL, /* 2dcd */ NULL, /* 2dce */ NULL, /* 2dcf */ NULL, /* 2dd0 */ NULL, /* 2dd1 */ NULL, /* 2dd2 */ NULL, /* 2dd3 */ NULL, /* 2dd4 */ NULL, /* 2dd5 */ NULL, /* 2dd6 */ NULL, /* 2dd7 */ NULL, /* 2dd8 */ NULL, /* 2dd9 */ NULL, /* 2dda */ NULL, /* 2ddb */ NULL, /* 2ddc */ NULL, /* 2ddd */ NULL, /* 2dde */ NULL, /* 2ddf */ NULL, /* 2de0 */ NULL, /* 2de1 */ NULL, /* 2de2 */ NULL, /* 2de3 */ NULL, /* 2de4 */ NULL, /* 2de5 */ NULL, /* 2de6 */ NULL, /* 2de7 */ NULL, /* 2de8 */ NULL, /* 2de9 */ NULL, /* 2dea */ NULL, /* 2deb */ NULL, /* 2dec */ NULL, /* 2ded */ NULL, /* 2dee */ NULL, /* 2def */ NULL, /* 2df0 */ NULL, /* 2df1 */ NULL, /* 2df2 */ NULL, /* 2df3 */ NULL, /* 2df4 */ NULL, /* 2df5 */ NULL, /* 2df6 */ NULL, /* 2df7 */ NULL, /* 2df8 */ NULL, /* 2df9 */ NULL, /* 2dfa */ NULL, /* 2dfb */ NULL, /* 2dfc */ NULL, /* 2dfd */ NULL, /* 2dfe */ NULL, /* 2dff */ NULL, /* 2e00 */ NULL, /* 2e01 */ NULL, /* 2e02 */ NULL, /* 2e03 */ NULL, /* 2e04 */ NULL, /* 2e05 */ NULL, /* 2e06 */ NULL, /* 2e07 */ NULL, /* 2e08 */ NULL, /* 2e09 */ NULL, /* 2e0a */ NULL, /* 2e0b */ NULL, /* 2e0c */ NULL, /* 2e0d */ NULL, /* 2e0e */ NULL, /* 2e0f */ NULL, /* 2e10 */ NULL, /* 2e11 */ NULL, /* 2e12 */ NULL, /* 2e13 */ NULL, /* 2e14 */ NULL, /* 2e15 */ NULL, /* 2e16 */ NULL, /* 2e17 */ NULL, /* 2e18 */ NULL, /* 2e19 */ NULL, /* 2e1a */ NULL, /* 2e1b */ NULL, /* 2e1c */ NULL, /* 2e1d */ NULL, /* 2e1e */ NULL, /* 2e1f */ NULL, /* 2e20 */ NULL, /* 2e21 */ NULL, /* 2e22 */ NULL, /* 2e23 */ NULL, /* 2e24 */ NULL, /* 2e25 */ NULL, /* 2e26 */ NULL, /* 2e27 */ NULL, /* 2e28 */ NULL, /* 2e29 */ NULL, /* 2e2a */ NULL, /* 2e2b */ NULL, /* 2e2c */ NULL, /* 2e2d */ NULL, /* 2e2e */ NULL, /* 2e2f */ NULL, /* 2e30 */ NULL, /* 2e31 */ NULL, /* 2e32 */ NULL, /* 2e33 */ NULL, /* 2e34 */ NULL, /* 2e35 */ NULL, /* 2e36 */ NULL, /* 2e37 */ NULL, /* 2e38 */ NULL, /* 2e39 */ NULL, /* 2e3a */ NULL, /* 2e3b */ NULL, /* 2e3c */ NULL, /* 2e3d */ NULL, /* 2e3e */ NULL, /* 2e3f */ NULL, /* 2e40 */ NULL, /* 2e41 */ NULL, /* 2e42 */ NULL, /* 2e43 */ NULL, /* 2e44 */ NULL, /* 2e45 */ NULL, /* 2e46 */ NULL, /* 2e47 */ NULL, /* 2e48 */ NULL, /* 2e49 */ NULL, /* 2e4a */ NULL, /* 2e4b */ NULL, /* 2e4c */ NULL, /* 2e4d */ NULL, /* 2e4e */ NULL, /* 2e4f */ NULL, /* 2e50 */ NULL, /* 2e51 */ NULL, /* 2e52 */ NULL, /* 2e53 */ NULL, /* 2e54 */ NULL, /* 2e55 */ NULL, /* 2e56 */ NULL, /* 2e57 */ NULL, /* 2e58 */ NULL, /* 2e59 */ NULL, /* 2e5a */ NULL, /* 2e5b */ NULL, /* 2e5c */ NULL, /* 2e5d */ NULL, /* 2e5e */ NULL, /* 2e5f */ NULL, /* 2e60 */ NULL, /* 2e61 */ NULL, /* 2e62 */ NULL, /* 2e63 */ NULL, /* 2e64 */ NULL, /* 2e65 */ NULL, /* 2e66 */ NULL, /* 2e67 */ NULL, /* 2e68 */ NULL, /* 2e69 */ NULL, /* 2e6a */ NULL, /* 2e6b */ NULL, /* 2e6c */ NULL, /* 2e6d */ NULL, /* 2e6e */ NULL, /* 2e6f */ NULL, /* 2e70 */ NULL, /* 2e71 */ NULL, /* 2e72 */ NULL, /* 2e73 */ NULL, /* 2e74 */ NULL, /* 2e75 */ NULL, /* 2e76 */ NULL, /* 2e77 */ NULL, /* 2e78 */ NULL, /* 2e79 */ NULL, /* 2e7a */ NULL, /* 2e7b */ NULL, /* 2e7c */ NULL, /* 2e7d */ NULL, /* 2e7e */ NULL, /* 2e7f */ NULL, /* 2e80 */ NULL, /* 2e81 */ NULL, /* 2e82 */ NULL, /* 2e83 */ NULL, /* 2e84 */ NULL, /* 2e85 */ NULL, /* 2e86 */ NULL, /* 2e87 */ NULL, /* 2e88 */ NULL, /* 2e89 */ NULL, /* 2e8a */ NULL, /* 2e8b */ NULL, /* 2e8c */ NULL, /* 2e8d */ NULL, /* 2e8e */ NULL, /* 2e8f */ NULL, /* 2e90 */ NULL, /* 2e91 */ NULL, /* 2e92 */ NULL, /* 2e93 */ NULL, /* 2e94 */ NULL, /* 2e95 */ NULL, /* 2e96 */ NULL, /* 2e97 */ NULL, /* 2e98 */ NULL, /* 2e99 */ NULL, /* 2e9a */ NULL, /* 2e9b */ NULL, /* 2e9c */ NULL, /* 2e9d */ NULL, /* 2e9e */ NULL, /* 2e9f */ NULL, /* 2ea0 */ NULL, /* 2ea1 */ NULL, /* 2ea2 */ NULL, /* 2ea3 */ NULL, /* 2ea4 */ NULL, /* 2ea5 */ NULL, /* 2ea6 */ NULL, /* 2ea7 */ NULL, /* 2ea8 */ NULL, /* 2ea9 */ NULL, /* 2eaa */ NULL, /* 2eab */ NULL, /* 2eac */ NULL, /* 2ead */ NULL, /* 2eae */ NULL, /* 2eaf */ NULL, /* 2eb0 */ NULL, /* 2eb1 */ NULL, /* 2eb2 */ NULL, /* 2eb3 */ NULL, /* 2eb4 */ NULL, /* 2eb5 */ NULL, /* 2eb6 */ NULL, /* 2eb7 */ NULL, /* 2eb8 */ NULL, /* 2eb9 */ NULL, /* 2eba */ NULL, /* 2ebb */ NULL, /* 2ebc */ NULL, /* 2ebd */ NULL, /* 2ebe */ NULL, /* 2ebf */ NULL, /* 2ec0 */ NULL, /* 2ec1 */ NULL, /* 2ec2 */ NULL, /* 2ec3 */ NULL, /* 2ec4 */ NULL, /* 2ec5 */ NULL, /* 2ec6 */ NULL, /* 2ec7 */ NULL, /* 2ec8 */ NULL, /* 2ec9 */ NULL, /* 2eca */ NULL, /* 2ecb */ NULL, /* 2ecc */ NULL, /* 2ecd */ NULL, /* 2ece */ NULL, /* 2ecf */ NULL, /* 2ed0 */ NULL, /* 2ed1 */ NULL, /* 2ed2 */ NULL, /* 2ed3 */ NULL, /* 2ed4 */ NULL, /* 2ed5 */ NULL, /* 2ed6 */ NULL, /* 2ed7 */ NULL, /* 2ed8 */ NULL, /* 2ed9 */ NULL, /* 2eda */ NULL, /* 2edb */ NULL, /* 2edc */ NULL, /* 2edd */ NULL, /* 2ede */ NULL, /* 2edf */ NULL, /* 2ee0 */ NULL, /* 2ee1 */ NULL, /* 2ee2 */ NULL, /* 2ee3 */ NULL, /* 2ee4 */ NULL, /* 2ee5 */ NULL, /* 2ee6 */ NULL, /* 2ee7 */ NULL, /* 2ee8 */ NULL, /* 2ee9 */ NULL, /* 2eea */ NULL, /* 2eeb */ NULL, /* 2eec */ NULL, /* 2eed */ NULL, /* 2eee */ NULL, /* 2eef */ NULL, /* 2ef0 */ NULL, /* 2ef1 */ NULL, /* 2ef2 */ NULL, /* 2ef3 */ NULL, /* 2ef4 */ NULL, /* 2ef5 */ NULL, /* 2ef6 */ NULL, /* 2ef7 */ NULL, /* 2ef8 */ NULL, /* 2ef9 */ NULL, /* 2efa */ NULL, /* 2efb */ NULL, /* 2efc */ NULL, /* 2efd */ NULL, /* 2efe */ NULL, /* 2eff */ NULL, /* 2f00 */ NULL, /* 2f01 */ NULL, /* 2f02 */ NULL, /* 2f03 */ NULL, /* 2f04 */ NULL, /* 2f05 */ NULL, /* 2f06 */ NULL, /* 2f07 */ NULL, /* 2f08 */ NULL, /* 2f09 */ NULL, /* 2f0a */ NULL, /* 2f0b */ NULL, /* 2f0c */ NULL, /* 2f0d */ NULL, /* 2f0e */ NULL, /* 2f0f */ NULL, /* 2f10 */ NULL, /* 2f11 */ NULL, /* 2f12 */ NULL, /* 2f13 */ NULL, /* 2f14 */ NULL, /* 2f15 */ NULL, /* 2f16 */ NULL, /* 2f17 */ NULL, /* 2f18 */ NULL, /* 2f19 */ NULL, /* 2f1a */ NULL, /* 2f1b */ NULL, /* 2f1c */ NULL, /* 2f1d */ NULL, /* 2f1e */ NULL, /* 2f1f */ NULL, /* 2f20 */ NULL, /* 2f21 */ NULL, /* 2f22 */ NULL, /* 2f23 */ NULL, /* 2f24 */ NULL, /* 2f25 */ NULL, /* 2f26 */ NULL, /* 2f27 */ NULL, /* 2f28 */ NULL, /* 2f29 */ NULL, /* 2f2a */ NULL, /* 2f2b */ NULL, /* 2f2c */ NULL, /* 2f2d */ NULL, /* 2f2e */ NULL, /* 2f2f */ NULL, /* 2f30 */ NULL, /* 2f31 */ NULL, /* 2f32 */ NULL, /* 2f33 */ NULL, /* 2f34 */ NULL, /* 2f35 */ NULL, /* 2f36 */ NULL, /* 2f37 */ NULL, /* 2f38 */ NULL, /* 2f39 */ NULL, /* 2f3a */ NULL, /* 2f3b */ NULL, /* 2f3c */ NULL, /* 2f3d */ NULL, /* 2f3e */ NULL, /* 2f3f */ NULL, /* 2f40 */ NULL, /* 2f41 */ NULL, /* 2f42 */ NULL, /* 2f43 */ NULL, /* 2f44 */ NULL, /* 2f45 */ NULL, /* 2f46 */ NULL, /* 2f47 */ NULL, /* 2f48 */ NULL, /* 2f49 */ NULL, /* 2f4a */ NULL, /* 2f4b */ NULL, /* 2f4c */ NULL, /* 2f4d */ NULL, /* 2f4e */ NULL, /* 2f4f */ NULL, /* 2f50 */ NULL, /* 2f51 */ NULL, /* 2f52 */ NULL, /* 2f53 */ NULL, /* 2f54 */ NULL, /* 2f55 */ NULL, /* 2f56 */ NULL, /* 2f57 */ NULL, /* 2f58 */ NULL, /* 2f59 */ NULL, /* 2f5a */ NULL, /* 2f5b */ NULL, /* 2f5c */ NULL, /* 2f5d */ NULL, /* 2f5e */ NULL, /* 2f5f */ NULL, /* 2f60 */ NULL, /* 2f61 */ NULL, /* 2f62 */ NULL, /* 2f63 */ NULL, /* 2f64 */ NULL, /* 2f65 */ NULL, /* 2f66 */ NULL, /* 2f67 */ NULL, /* 2f68 */ NULL, /* 2f69 */ NULL, /* 2f6a */ NULL, /* 2f6b */ NULL, /* 2f6c */ NULL, /* 2f6d */ NULL, /* 2f6e */ NULL, /* 2f6f */ NULL, /* 2f70 */ NULL, /* 2f71 */ NULL, /* 2f72 */ NULL, /* 2f73 */ NULL, /* 2f74 */ NULL, /* 2f75 */ NULL, /* 2f76 */ NULL, /* 2f77 */ NULL, /* 2f78 */ NULL, /* 2f79 */ NULL, /* 2f7a */ NULL, /* 2f7b */ NULL, /* 2f7c */ NULL, /* 2f7d */ NULL, /* 2f7e */ NULL, /* 2f7f */ NULL, /* 2f80 */ NULL, /* 2f81 */ NULL, /* 2f82 */ NULL, /* 2f83 */ NULL, /* 2f84 */ NULL, /* 2f85 */ NULL, /* 2f86 */ NULL, /* 2f87 */ NULL, /* 2f88 */ NULL, /* 2f89 */ NULL, /* 2f8a */ NULL, /* 2f8b */ NULL, /* 2f8c */ NULL, /* 2f8d */ NULL, /* 2f8e */ NULL, /* 2f8f */ NULL, /* 2f90 */ NULL, /* 2f91 */ NULL, /* 2f92 */ NULL, /* 2f93 */ NULL, /* 2f94 */ NULL, /* 2f95 */ NULL, /* 2f96 */ NULL, /* 2f97 */ NULL, /* 2f98 */ NULL, /* 2f99 */ NULL, /* 2f9a */ NULL, /* 2f9b */ NULL, /* 2f9c */ NULL, /* 2f9d */ NULL, /* 2f9e */ NULL, /* 2f9f */ NULL, /* 2fa0 */ NULL, /* 2fa1 */ NULL, /* 2fa2 */ NULL, /* 2fa3 */ NULL, /* 2fa4 */ NULL, /* 2fa5 */ NULL, /* 2fa6 */ NULL, /* 2fa7 */ NULL, /* 2fa8 */ NULL, /* 2fa9 */ NULL, /* 2faa */ NULL, /* 2fab */ NULL, /* 2fac */ NULL, /* 2fad */ NULL, /* 2fae */ NULL, /* 2faf */ NULL, /* 2fb0 */ NULL, /* 2fb1 */ NULL, /* 2fb2 */ NULL, /* 2fb3 */ NULL, /* 2fb4 */ NULL, /* 2fb5 */ NULL, /* 2fb6 */ NULL, /* 2fb7 */ NULL, /* 2fb8 */ NULL, /* 2fb9 */ NULL, /* 2fba */ NULL, /* 2fbb */ NULL, /* 2fbc */ NULL, /* 2fbd */ NULL, /* 2fbe */ NULL, /* 2fbf */ NULL, /* 2fc0 */ NULL, /* 2fc1 */ NULL, /* 2fc2 */ NULL, /* 2fc3 */ NULL, /* 2fc4 */ NULL, /* 2fc5 */ NULL, /* 2fc6 */ NULL, /* 2fc7 */ NULL, /* 2fc8 */ NULL, /* 2fc9 */ NULL, /* 2fca */ NULL, /* 2fcb */ NULL, /* 2fcc */ NULL, /* 2fcd */ NULL, /* 2fce */ NULL, /* 2fcf */ NULL, /* 2fd0 */ NULL, /* 2fd1 */ NULL, /* 2fd2 */ NULL, /* 2fd3 */ NULL, /* 2fd4 */ NULL, /* 2fd5 */ NULL, /* 2fd6 */ NULL, /* 2fd7 */ NULL, /* 2fd8 */ NULL, /* 2fd9 */ NULL, /* 2fda */ NULL, /* 2fdb */ NULL, /* 2fdc */ NULL, /* 2fdd */ NULL, /* 2fde */ NULL, /* 2fdf */ NULL, /* 2fe0 */ NULL, /* 2fe1 */ NULL, /* 2fe2 */ NULL, /* 2fe3 */ NULL, /* 2fe4 */ NULL, /* 2fe5 */ NULL, /* 2fe6 */ NULL, /* 2fe7 */ NULL, /* 2fe8 */ NULL, /* 2fe9 */ NULL, /* 2fea */ NULL, /* 2feb */ NULL, /* 2fec */ NULL, /* 2fed */ NULL, /* 2fee */ NULL, /* 2fef */ NULL, /* 2ff0 */ NULL, /* 2ff1 */ NULL, /* 2ff2 */ NULL, /* 2ff3 */ NULL, /* 2ff4 */ NULL, /* 2ff5 */ NULL, /* 2ff6 */ NULL, /* 2ff7 */ NULL, /* 2ff8 */ NULL, /* 2ff9 */ NULL, /* 2ffa */ NULL, /* 2ffb */ NULL, /* 2ffc */ NULL, /* 2ffd */ NULL, /* 2ffe */ NULL, /* 2fff */ NULL, /* 3000 */ NULL, /* 3001 */ NULL, /* 3002 */ NULL, /* 3003 */ NULL, /* 3004 */ NULL, /* 3005 */ NULL, /* 3006 */ NULL, /* 3007 */ NULL, /* 3008 */ NULL, /* 3009 */ NULL, /* 300a */ NULL, /* 300b */ NULL, /* 300c */ NULL, /* 300d */ NULL, /* 300e */ NULL, /* 300f */ NULL, /* 3010 */ NULL, /* 3011 */ NULL, /* 3012 */ NULL, /* 3013 */ NULL, /* 3014 */ NULL, /* 3015 */ NULL, /* 3016 */ NULL, /* 3017 */ NULL, /* 3018 */ NULL, /* 3019 */ NULL, /* 301a */ NULL, /* 301b */ NULL, /* 301c */ NULL, /* 301d */ NULL, /* 301e */ NULL, /* 301f */ NULL, /* 3020 */ NULL, /* 3021 */ NULL, /* 3022 */ NULL, /* 3023 */ NULL, /* 3024 */ NULL, /* 3025 */ NULL, /* 3026 */ NULL, /* 3027 */ NULL, /* 3028 */ NULL, /* 3029 */ NULL, /* 302a */ NULL, /* 302b */ NULL, /* 302c */ NULL, /* 302d */ NULL, /* 302e */ NULL, /* 302f */ NULL, /* 3030 */ NULL, /* 3031 */ NULL, /* 3032 */ NULL, /* 3033 */ NULL, /* 3034 */ NULL, /* 3035 */ NULL, /* 3036 */ NULL, /* 3037 */ NULL, /* 3038 */ NULL, /* 3039 */ NULL, /* 303a */ NULL, /* 303b */ NULL, /* 303c */ NULL, /* 303d */ NULL, /* 303e */ NULL, /* 303f */ NULL, /* 3040 */ NULL, /* 3041 */ NULL, /* 3042 */ NULL, /* 3043 */ NULL, /* 3044 */ NULL, /* 3045 */ NULL, /* 3046 */ NULL, /* 3047 */ NULL, /* 3048 */ NULL, /* 3049 */ NULL, /* 304a */ NULL, /* 304b */ NULL, /* 304c */ NULL, /* 304d */ NULL, /* 304e */ NULL, /* 304f */ NULL, /* 3050 */ NULL, /* 3051 */ NULL, /* 3052 */ NULL, /* 3053 */ NULL, /* 3054 */ NULL, /* 3055 */ NULL, /* 3056 */ NULL, /* 3057 */ NULL, /* 3058 */ NULL, /* 3059 */ NULL, /* 305a */ NULL, /* 305b */ NULL, /* 305c */ NULL, /* 305d */ NULL, /* 305e */ NULL, /* 305f */ NULL, /* 3060 */ NULL, /* 3061 */ NULL, /* 3062 */ NULL, /* 3063 */ NULL, /* 3064 */ NULL, /* 3065 */ NULL, /* 3066 */ NULL, /* 3067 */ NULL, /* 3068 */ NULL, /* 3069 */ NULL, /* 306a */ NULL, /* 306b */ NULL, /* 306c */ NULL, /* 306d */ NULL, /* 306e */ NULL, /* 306f */ NULL, /* 3070 */ NULL, /* 3071 */ NULL, /* 3072 */ NULL, /* 3073 */ NULL, /* 3074 */ NULL, /* 3075 */ NULL, /* 3076 */ NULL, /* 3077 */ NULL, /* 3078 */ NULL, /* 3079 */ NULL, /* 307a */ NULL, /* 307b */ NULL, /* 307c */ NULL, /* 307d */ NULL, /* 307e */ NULL, /* 307f */ NULL, /* 3080 */ NULL, /* 3081 */ NULL, /* 3082 */ NULL, /* 3083 */ NULL, /* 3084 */ NULL, /* 3085 */ NULL, /* 3086 */ NULL, /* 3087 */ NULL, /* 3088 */ NULL, /* 3089 */ NULL, /* 308a */ NULL, /* 308b */ NULL, /* 308c */ NULL, /* 308d */ NULL, /* 308e */ NULL, /* 308f */ NULL, /* 3090 */ NULL, /* 3091 */ NULL, /* 3092 */ NULL, /* 3093 */ NULL, /* 3094 */ NULL, /* 3095 */ NULL, /* 3096 */ NULL, /* 3097 */ NULL, /* 3098 */ NULL, /* 3099 */ NULL, /* 309a */ NULL, /* 309b */ NULL, /* 309c */ NULL, /* 309d */ NULL, /* 309e */ NULL, /* 309f */ NULL, /* 30a0 */ NULL, /* 30a1 */ NULL, /* 30a2 */ NULL, /* 30a3 */ NULL, /* 30a4 */ NULL, /* 30a5 */ NULL, /* 30a6 */ NULL, /* 30a7 */ NULL, /* 30a8 */ NULL, /* 30a9 */ NULL, /* 30aa */ NULL, /* 30ab */ NULL, /* 30ac */ NULL, /* 30ad */ NULL, /* 30ae */ NULL, /* 30af */ NULL, /* 30b0 */ NULL, /* 30b1 */ NULL, /* 30b2 */ NULL, /* 30b3 */ NULL, /* 30b4 */ NULL, /* 30b5 */ NULL, /* 30b6 */ NULL, /* 30b7 */ NULL, /* 30b8 */ NULL, /* 30b9 */ NULL, /* 30ba */ NULL, /* 30bb */ NULL, /* 30bc */ NULL, /* 30bd */ NULL, /* 30be */ NULL, /* 30bf */ NULL, /* 30c0 */ NULL, /* 30c1 */ NULL, /* 30c2 */ NULL, /* 30c3 */ NULL, /* 30c4 */ NULL, /* 30c5 */ NULL, /* 30c6 */ NULL, /* 30c7 */ NULL, /* 30c8 */ NULL, /* 30c9 */ NULL, /* 30ca */ NULL, /* 30cb */ NULL, /* 30cc */ NULL, /* 30cd */ NULL, /* 30ce */ NULL, /* 30cf */ NULL, /* 30d0 */ NULL, /* 30d1 */ NULL, /* 30d2 */ NULL, /* 30d3 */ NULL, /* 30d4 */ NULL, /* 30d5 */ NULL, /* 30d6 */ NULL, /* 30d7 */ NULL, /* 30d8 */ NULL, /* 30d9 */ NULL, /* 30da */ NULL, /* 30db */ NULL, /* 30dc */ NULL, /* 30dd */ NULL, /* 30de */ NULL, /* 30df */ NULL, /* 30e0 */ NULL, /* 30e1 */ NULL, /* 30e2 */ NULL, /* 30e3 */ NULL, /* 30e4 */ NULL, /* 30e5 */ NULL, /* 30e6 */ NULL, /* 30e7 */ NULL, /* 30e8 */ NULL, /* 30e9 */ NULL, /* 30ea */ NULL, /* 30eb */ NULL, /* 30ec */ NULL, /* 30ed */ NULL, /* 30ee */ NULL, /* 30ef */ NULL, /* 30f0 */ NULL, /* 30f1 */ NULL, /* 30f2 */ NULL, /* 30f3 */ NULL, /* 30f4 */ NULL, /* 30f5 */ NULL, /* 30f6 */ NULL, /* 30f7 */ NULL, /* 30f8 */ NULL, /* 30f9 */ NULL, /* 30fa */ NULL, /* 30fb */ NULL, /* 30fc */ NULL, /* 30fd */ NULL, /* 30fe */ NULL, /* 30ff */ NULL, /* 3100 */ NULL, /* 3101 */ NULL, /* 3102 */ NULL, /* 3103 */ NULL, /* 3104 */ NULL, /* 3105 */ NULL, /* 3106 */ NULL, /* 3107 */ NULL, /* 3108 */ NULL, /* 3109 */ NULL, /* 310a */ NULL, /* 310b */ NULL, /* 310c */ NULL, /* 310d */ NULL, /* 310e */ NULL, /* 310f */ NULL, /* 3110 */ NULL, /* 3111 */ NULL, /* 3112 */ NULL, /* 3113 */ NULL, /* 3114 */ NULL, /* 3115 */ NULL, /* 3116 */ NULL, /* 3117 */ NULL, /* 3118 */ NULL, /* 3119 */ NULL, /* 311a */ NULL, /* 311b */ NULL, /* 311c */ NULL, /* 311d */ NULL, /* 311e */ NULL, /* 311f */ NULL, /* 3120 */ NULL, /* 3121 */ NULL, /* 3122 */ NULL, /* 3123 */ NULL, /* 3124 */ NULL, /* 3125 */ NULL, /* 3126 */ NULL, /* 3127 */ NULL, /* 3128 */ NULL, /* 3129 */ NULL, /* 312a */ NULL, /* 312b */ NULL, /* 312c */ NULL, /* 312d */ NULL, /* 312e */ NULL, /* 312f */ NULL, /* 3130 */ NULL, /* 3131 */ NULL, /* 3132 */ NULL, /* 3133 */ NULL, /* 3134 */ NULL, /* 3135 */ NULL, /* 3136 */ NULL, /* 3137 */ NULL, /* 3138 */ NULL, /* 3139 */ NULL, /* 313a */ NULL, /* 313b */ NULL, /* 313c */ NULL, /* 313d */ NULL, /* 313e */ NULL, /* 313f */ NULL, /* 3140 */ NULL, /* 3141 */ NULL, /* 3142 */ NULL, /* 3143 */ NULL, /* 3144 */ NULL, /* 3145 */ NULL, /* 3146 */ NULL, /* 3147 */ NULL, /* 3148 */ NULL, /* 3149 */ NULL, /* 314a */ NULL, /* 314b */ NULL, /* 314c */ NULL, /* 314d */ NULL, /* 314e */ NULL, /* 314f */ NULL, /* 3150 */ NULL, /* 3151 */ NULL, /* 3152 */ NULL, /* 3153 */ NULL, /* 3154 */ NULL, /* 3155 */ NULL, /* 3156 */ NULL, /* 3157 */ NULL, /* 3158 */ NULL, /* 3159 */ NULL, /* 315a */ NULL, /* 315b */ NULL, /* 315c */ NULL, /* 315d */ NULL, /* 315e */ NULL, /* 315f */ NULL, /* 3160 */ NULL, /* 3161 */ NULL, /* 3162 */ NULL, /* 3163 */ NULL, /* 3164 */ NULL, /* 3165 */ NULL, /* 3166 */ NULL, /* 3167 */ NULL, /* 3168 */ NULL, /* 3169 */ NULL, /* 316a */ NULL, /* 316b */ NULL, /* 316c */ NULL, /* 316d */ NULL, /* 316e */ NULL, /* 316f */ NULL, /* 3170 */ NULL, /* 3171 */ NULL, /* 3172 */ NULL, /* 3173 */ NULL, /* 3174 */ NULL, /* 3175 */ NULL, /* 3176 */ NULL, /* 3177 */ NULL, /* 3178 */ NULL, /* 3179 */ NULL, /* 317a */ NULL, /* 317b */ NULL, /* 317c */ NULL, /* 317d */ NULL, /* 317e */ NULL, /* 317f */ NULL, /* 3180 */ NULL, /* 3181 */ NULL, /* 3182 */ NULL, /* 3183 */ NULL, /* 3184 */ NULL, /* 3185 */ NULL, /* 3186 */ NULL, /* 3187 */ NULL, /* 3188 */ NULL, /* 3189 */ NULL, /* 318a */ NULL, /* 318b */ NULL, /* 318c */ NULL, /* 318d */ NULL, /* 318e */ NULL, /* 318f */ NULL, /* 3190 */ NULL, /* 3191 */ NULL, /* 3192 */ NULL, /* 3193 */ NULL, /* 3194 */ NULL, /* 3195 */ NULL, /* 3196 */ NULL, /* 3197 */ NULL, /* 3198 */ NULL, /* 3199 */ NULL, /* 319a */ NULL, /* 319b */ NULL, /* 319c */ NULL, /* 319d */ NULL, /* 319e */ NULL, /* 319f */ NULL, /* 31a0 */ NULL, /* 31a1 */ NULL, /* 31a2 */ NULL, /* 31a3 */ NULL, /* 31a4 */ NULL, /* 31a5 */ NULL, /* 31a6 */ NULL, /* 31a7 */ NULL, /* 31a8 */ NULL, /* 31a9 */ NULL, /* 31aa */ NULL, /* 31ab */ NULL, /* 31ac */ NULL, /* 31ad */ NULL, /* 31ae */ NULL, /* 31af */ NULL, /* 31b0 */ NULL, /* 31b1 */ NULL, /* 31b2 */ NULL, /* 31b3 */ NULL, /* 31b4 */ NULL, /* 31b5 */ NULL, /* 31b6 */ NULL, /* 31b7 */ NULL, /* 31b8 */ NULL, /* 31b9 */ NULL, /* 31ba */ NULL, /* 31bb */ NULL, /* 31bc */ NULL, /* 31bd */ NULL, /* 31be */ NULL, /* 31bf */ NULL, /* 31c0 */ NULL, /* 31c1 */ NULL, /* 31c2 */ NULL, /* 31c3 */ NULL, /* 31c4 */ NULL, /* 31c5 */ NULL, /* 31c6 */ NULL, /* 31c7 */ NULL, /* 31c8 */ NULL, /* 31c9 */ NULL, /* 31ca */ NULL, /* 31cb */ NULL, /* 31cc */ NULL, /* 31cd */ NULL, /* 31ce */ NULL, /* 31cf */ NULL, /* 31d0 */ NULL, /* 31d1 */ NULL, /* 31d2 */ NULL, /* 31d3 */ NULL, /* 31d4 */ NULL, /* 31d5 */ NULL, /* 31d6 */ NULL, /* 31d7 */ NULL, /* 31d8 */ NULL, /* 31d9 */ NULL, /* 31da */ NULL, /* 31db */ NULL, /* 31dc */ NULL, /* 31dd */ NULL, /* 31de */ NULL, /* 31df */ NULL, /* 31e0 */ NULL, /* 31e1 */ NULL, /* 31e2 */ NULL, /* 31e3 */ NULL, /* 31e4 */ NULL, /* 31e5 */ NULL, /* 31e6 */ NULL, /* 31e7 */ NULL, /* 31e8 */ NULL, /* 31e9 */ NULL, /* 31ea */ NULL, /* 31eb */ NULL, /* 31ec */ NULL, /* 31ed */ NULL, /* 31ee */ NULL, /* 31ef */ NULL, /* 31f0 */ NULL, /* 31f1 */ NULL, /* 31f2 */ NULL, /* 31f3 */ NULL, /* 31f4 */ NULL, /* 31f5 */ NULL, /* 31f6 */ NULL, /* 31f7 */ NULL, /* 31f8 */ NULL, /* 31f9 */ NULL, /* 31fa */ NULL, /* 31fb */ NULL, /* 31fc */ NULL, /* 31fd */ NULL, /* 31fe */ NULL, /* 31ff */ NULL, /* 3200 */ NULL, /* 3201 */ NULL, /* 3202 */ NULL, /* 3203 */ NULL, /* 3204 */ NULL, /* 3205 */ NULL, /* 3206 */ NULL, /* 3207 */ NULL, /* 3208 */ NULL, /* 3209 */ NULL, /* 320a */ NULL, /* 320b */ NULL, /* 320c */ NULL, /* 320d */ NULL, /* 320e */ NULL, /* 320f */ NULL, /* 3210 */ NULL, /* 3211 */ NULL, /* 3212 */ NULL, /* 3213 */ NULL, /* 3214 */ NULL, /* 3215 */ NULL, /* 3216 */ NULL, /* 3217 */ NULL, /* 3218 */ NULL, /* 3219 */ NULL, /* 321a */ NULL, /* 321b */ NULL, /* 321c */ NULL, /* 321d */ NULL, /* 321e */ NULL, /* 321f */ NULL, /* 3220 */ NULL, /* 3221 */ NULL, /* 3222 */ NULL, /* 3223 */ NULL, /* 3224 */ NULL, /* 3225 */ NULL, /* 3226 */ NULL, /* 3227 */ NULL, /* 3228 */ NULL, /* 3229 */ NULL, /* 322a */ NULL, /* 322b */ NULL, /* 322c */ NULL, /* 322d */ NULL, /* 322e */ NULL, /* 322f */ NULL, /* 3230 */ NULL, /* 3231 */ NULL, /* 3232 */ NULL, /* 3233 */ NULL, /* 3234 */ NULL, /* 3235 */ NULL, /* 3236 */ NULL, /* 3237 */ NULL, /* 3238 */ NULL, /* 3239 */ NULL, /* 323a */ NULL, /* 323b */ NULL, /* 323c */ NULL, /* 323d */ NULL, /* 323e */ NULL, /* 323f */ NULL, /* 3240 */ NULL, /* 3241 */ NULL, /* 3242 */ NULL, /* 3243 */ NULL, /* 3244 */ NULL, /* 3245 */ NULL, /* 3246 */ NULL, /* 3247 */ NULL, /* 3248 */ NULL, /* 3249 */ NULL, /* 324a */ NULL, /* 324b */ NULL, /* 324c */ NULL, /* 324d */ NULL, /* 324e */ NULL, /* 324f */ NULL, /* 3250 */ NULL, /* 3251 */ NULL, /* 3252 */ NULL, /* 3253 */ NULL, /* 3254 */ NULL, /* 3255 */ NULL, /* 3256 */ NULL, /* 3257 */ NULL, /* 3258 */ NULL, /* 3259 */ NULL, /* 325a */ NULL, /* 325b */ NULL, /* 325c */ NULL, /* 325d */ NULL, /* 325e */ NULL, /* 325f */ NULL, /* 3260 */ NULL, /* 3261 */ NULL, /* 3262 */ NULL, /* 3263 */ NULL, /* 3264 */ NULL, /* 3265 */ NULL, /* 3266 */ NULL, /* 3267 */ NULL, /* 3268 */ NULL, /* 3269 */ NULL, /* 326a */ NULL, /* 326b */ NULL, /* 326c */ NULL, /* 326d */ NULL, /* 326e */ NULL, /* 326f */ NULL, /* 3270 */ NULL, /* 3271 */ NULL, /* 3272 */ NULL, /* 3273 */ NULL, /* 3274 */ NULL, /* 3275 */ NULL, /* 3276 */ NULL, /* 3277 */ NULL, /* 3278 */ NULL, /* 3279 */ NULL, /* 327a */ NULL, /* 327b */ NULL, /* 327c */ NULL, /* 327d */ NULL, /* 327e */ NULL, /* 327f */ NULL, /* 3280 */ NULL, /* 3281 */ NULL, /* 3282 */ NULL, /* 3283 */ NULL, /* 3284 */ NULL, /* 3285 */ NULL, /* 3286 */ NULL, /* 3287 */ NULL, /* 3288 */ NULL, /* 3289 */ NULL, /* 328a */ NULL, /* 328b */ NULL, /* 328c */ NULL, /* 328d */ NULL, /* 328e */ NULL, /* 328f */ NULL, /* 3290 */ NULL, /* 3291 */ NULL, /* 3292 */ NULL, /* 3293 */ NULL, /* 3294 */ NULL, /* 3295 */ NULL, /* 3296 */ NULL, /* 3297 */ NULL, /* 3298 */ NULL, /* 3299 */ NULL, /* 329a */ NULL, /* 329b */ NULL, /* 329c */ NULL, /* 329d */ NULL, /* 329e */ NULL, /* 329f */ NULL, /* 32a0 */ NULL, /* 32a1 */ NULL, /* 32a2 */ NULL, /* 32a3 */ NULL, /* 32a4 */ NULL, /* 32a5 */ NULL, /* 32a6 */ NULL, /* 32a7 */ NULL, /* 32a8 */ NULL, /* 32a9 */ NULL, /* 32aa */ NULL, /* 32ab */ NULL, /* 32ac */ NULL, /* 32ad */ NULL, /* 32ae */ NULL, /* 32af */ NULL, /* 32b0 */ NULL, /* 32b1 */ NULL, /* 32b2 */ NULL, /* 32b3 */ NULL, /* 32b4 */ NULL, /* 32b5 */ NULL, /* 32b6 */ NULL, /* 32b7 */ NULL, /* 32b8 */ NULL, /* 32b9 */ NULL, /* 32ba */ NULL, /* 32bb */ NULL, /* 32bc */ NULL, /* 32bd */ NULL, /* 32be */ NULL, /* 32bf */ NULL, /* 32c0 */ NULL, /* 32c1 */ NULL, /* 32c2 */ NULL, /* 32c3 */ NULL, /* 32c4 */ NULL, /* 32c5 */ NULL, /* 32c6 */ NULL, /* 32c7 */ NULL, /* 32c8 */ NULL, /* 32c9 */ NULL, /* 32ca */ NULL, /* 32cb */ NULL, /* 32cc */ NULL, /* 32cd */ NULL, /* 32ce */ NULL, /* 32cf */ NULL, /* 32d0 */ NULL, /* 32d1 */ NULL, /* 32d2 */ NULL, /* 32d3 */ NULL, /* 32d4 */ NULL, /* 32d5 */ NULL, /* 32d6 */ NULL, /* 32d7 */ NULL, /* 32d8 */ NULL, /* 32d9 */ NULL, /* 32da */ NULL, /* 32db */ NULL, /* 32dc */ NULL, /* 32dd */ NULL, /* 32de */ NULL, /* 32df */ NULL, /* 32e0 */ NULL, /* 32e1 */ NULL, /* 32e2 */ NULL, /* 32e3 */ NULL, /* 32e4 */ NULL, /* 32e5 */ NULL, /* 32e6 */ NULL, /* 32e7 */ NULL, /* 32e8 */ NULL, /* 32e9 */ NULL, /* 32ea */ NULL, /* 32eb */ NULL, /* 32ec */ NULL, /* 32ed */ NULL, /* 32ee */ NULL, /* 32ef */ NULL, /* 32f0 */ NULL, /* 32f1 */ NULL, /* 32f2 */ NULL, /* 32f3 */ NULL, /* 32f4 */ NULL, /* 32f5 */ NULL, /* 32f6 */ NULL, /* 32f7 */ NULL, /* 32f8 */ NULL, /* 32f9 */ NULL, /* 32fa */ NULL, /* 32fb */ NULL, /* 32fc */ NULL, /* 32fd */ NULL, /* 32fe */ NULL, /* 32ff */ NULL, /* 3300 */ NULL, /* 3301 */ NULL, /* 3302 */ NULL, /* 3303 */ NULL, /* 3304 */ NULL, /* 3305 */ NULL, /* 3306 */ NULL, /* 3307 */ NULL, /* 3308 */ NULL, /* 3309 */ NULL, /* 330a */ NULL, /* 330b */ NULL, /* 330c */ NULL, /* 330d */ NULL, /* 330e */ NULL, /* 330f */ NULL, /* 3310 */ NULL, /* 3311 */ NULL, /* 3312 */ NULL, /* 3313 */ NULL, /* 3314 */ NULL, /* 3315 */ NULL, /* 3316 */ NULL, /* 3317 */ NULL, /* 3318 */ NULL, /* 3319 */ NULL, /* 331a */ NULL, /* 331b */ NULL, /* 331c */ NULL, /* 331d */ NULL, /* 331e */ NULL, /* 331f */ NULL, /* 3320 */ NULL, /* 3321 */ NULL, /* 3322 */ NULL, /* 3323 */ NULL, /* 3324 */ NULL, /* 3325 */ NULL, /* 3326 */ NULL, /* 3327 */ NULL, /* 3328 */ NULL, /* 3329 */ NULL, /* 332a */ NULL, /* 332b */ NULL, /* 332c */ NULL, /* 332d */ NULL, /* 332e */ NULL, /* 332f */ NULL, /* 3330 */ NULL, /* 3331 */ NULL, /* 3332 */ NULL, /* 3333 */ NULL, /* 3334 */ NULL, /* 3335 */ NULL, /* 3336 */ NULL, /* 3337 */ NULL, /* 3338 */ NULL, /* 3339 */ NULL, /* 333a */ NULL, /* 333b */ NULL, /* 333c */ NULL, /* 333d */ NULL, /* 333e */ NULL, /* 333f */ NULL, /* 3340 */ NULL, /* 3341 */ NULL, /* 3342 */ NULL, /* 3343 */ NULL, /* 3344 */ NULL, /* 3345 */ NULL, /* 3346 */ NULL, /* 3347 */ NULL, /* 3348 */ NULL, /* 3349 */ NULL, /* 334a */ NULL, /* 334b */ NULL, /* 334c */ NULL, /* 334d */ NULL, /* 334e */ NULL, /* 334f */ NULL, /* 3350 */ NULL, /* 3351 */ NULL, /* 3352 */ NULL, /* 3353 */ NULL, /* 3354 */ NULL, /* 3355 */ NULL, /* 3356 */ NULL, /* 3357 */ NULL, /* 3358 */ NULL, /* 3359 */ NULL, /* 335a */ NULL, /* 335b */ NULL, /* 335c */ NULL, /* 335d */ NULL, /* 335e */ NULL, /* 335f */ NULL, /* 3360 */ NULL, /* 3361 */ NULL, /* 3362 */ NULL, /* 3363 */ NULL, /* 3364 */ NULL, /* 3365 */ NULL, /* 3366 */ NULL, /* 3367 */ NULL, /* 3368 */ NULL, /* 3369 */ NULL, /* 336a */ NULL, /* 336b */ NULL, /* 336c */ NULL, /* 336d */ NULL, /* 336e */ NULL, /* 336f */ NULL, /* 3370 */ NULL, /* 3371 */ NULL, /* 3372 */ NULL, /* 3373 */ NULL, /* 3374 */ NULL, /* 3375 */ NULL, /* 3376 */ NULL, /* 3377 */ NULL, /* 3378 */ NULL, /* 3379 */ NULL, /* 337a */ NULL, /* 337b */ NULL, /* 337c */ NULL, /* 337d */ NULL, /* 337e */ NULL, /* 337f */ NULL, /* 3380 */ NULL, /* 3381 */ NULL, /* 3382 */ NULL, /* 3383 */ NULL, /* 3384 */ NULL, /* 3385 */ NULL, /* 3386 */ NULL, /* 3387 */ NULL, /* 3388 */ NULL, /* 3389 */ NULL, /* 338a */ NULL, /* 338b */ NULL, /* 338c */ NULL, /* 338d */ NULL, /* 338e */ NULL, /* 338f */ NULL, /* 3390 */ NULL, /* 3391 */ NULL, /* 3392 */ NULL, /* 3393 */ NULL, /* 3394 */ NULL, /* 3395 */ NULL, /* 3396 */ NULL, /* 3397 */ NULL, /* 3398 */ NULL, /* 3399 */ NULL, /* 339a */ NULL, /* 339b */ NULL, /* 339c */ NULL, /* 339d */ NULL, /* 339e */ NULL, /* 339f */ NULL, /* 33a0 */ NULL, /* 33a1 */ NULL, /* 33a2 */ NULL, /* 33a3 */ NULL, /* 33a4 */ NULL, /* 33a5 */ NULL, /* 33a6 */ NULL, /* 33a7 */ NULL, /* 33a8 */ NULL, /* 33a9 */ NULL, /* 33aa */ NULL, /* 33ab */ NULL, /* 33ac */ NULL, /* 33ad */ NULL, /* 33ae */ NULL, /* 33af */ NULL, /* 33b0 */ NULL, /* 33b1 */ NULL, /* 33b2 */ NULL, /* 33b3 */ NULL, /* 33b4 */ NULL, /* 33b5 */ NULL, /* 33b6 */ NULL, /* 33b7 */ NULL, /* 33b8 */ NULL, /* 33b9 */ NULL, /* 33ba */ NULL, /* 33bb */ NULL, /* 33bc */ NULL, /* 33bd */ NULL, /* 33be */ NULL, /* 33bf */ NULL, /* 33c0 */ NULL, /* 33c1 */ NULL, /* 33c2 */ NULL, /* 33c3 */ NULL, /* 33c4 */ NULL, /* 33c5 */ NULL, /* 33c6 */ NULL, /* 33c7 */ NULL, /* 33c8 */ NULL, /* 33c9 */ NULL, /* 33ca */ NULL, /* 33cb */ NULL, /* 33cc */ NULL, /* 33cd */ NULL, /* 33ce */ NULL, /* 33cf */ NULL, /* 33d0 */ NULL, /* 33d1 */ NULL, /* 33d2 */ NULL, /* 33d3 */ NULL, /* 33d4 */ NULL, /* 33d5 */ NULL, /* 33d6 */ NULL, /* 33d7 */ NULL, /* 33d8 */ NULL, /* 33d9 */ NULL, /* 33da */ NULL, /* 33db */ NULL, /* 33dc */ NULL, /* 33dd */ NULL, /* 33de */ NULL, /* 33df */ NULL, /* 33e0 */ NULL, /* 33e1 */ NULL, /* 33e2 */ NULL, /* 33e3 */ NULL, /* 33e4 */ NULL, /* 33e5 */ NULL, /* 33e6 */ NULL, /* 33e7 */ NULL, /* 33e8 */ NULL, /* 33e9 */ NULL, /* 33ea */ NULL, /* 33eb */ NULL, /* 33ec */ NULL, /* 33ed */ NULL, /* 33ee */ NULL, /* 33ef */ NULL, /* 33f0 */ NULL, /* 33f1 */ NULL, /* 33f2 */ NULL, /* 33f3 */ NULL, /* 33f4 */ NULL, /* 33f5 */ NULL, /* 33f6 */ NULL, /* 33f7 */ NULL, /* 33f8 */ NULL, /* 33f9 */ NULL, /* 33fa */ NULL, /* 33fb */ NULL, /* 33fc */ NULL, /* 33fd */ NULL, /* 33fe */ NULL, /* 33ff */ NULL, /* 3400 */ NULL, /* 3401 */ NULL, /* 3402 */ NULL, /* 3403 */ NULL, /* 3404 */ NULL, /* 3405 */ NULL, /* 3406 */ NULL, /* 3407 */ NULL, /* 3408 */ NULL, /* 3409 */ NULL, /* 340a */ NULL, /* 340b */ NULL, /* 340c */ NULL, /* 340d */ NULL, /* 340e */ NULL, /* 340f */ NULL, /* 3410 */ NULL, /* 3411 */ NULL, /* 3412 */ NULL, /* 3413 */ NULL, /* 3414 */ NULL, /* 3415 */ NULL, /* 3416 */ NULL, /* 3417 */ NULL, /* 3418 */ NULL, /* 3419 */ NULL, /* 341a */ NULL, /* 341b */ NULL, /* 341c */ NULL, /* 341d */ NULL, /* 341e */ NULL, /* 341f */ NULL, /* 3420 */ NULL, /* 3421 */ NULL, /* 3422 */ NULL, /* 3423 */ NULL, /* 3424 */ NULL, /* 3425 */ NULL, /* 3426 */ NULL, /* 3427 */ NULL, /* 3428 */ NULL, /* 3429 */ NULL, /* 342a */ NULL, /* 342b */ NULL, /* 342c */ NULL, /* 342d */ NULL, /* 342e */ NULL, /* 342f */ NULL, /* 3430 */ NULL, /* 3431 */ NULL, /* 3432 */ NULL, /* 3433 */ NULL, /* 3434 */ NULL, /* 3435 */ NULL, /* 3436 */ NULL, /* 3437 */ NULL, /* 3438 */ NULL, /* 3439 */ NULL, /* 343a */ NULL, /* 343b */ NULL, /* 343c */ NULL, /* 343d */ NULL, /* 343e */ NULL, /* 343f */ NULL, /* 3440 */ NULL, /* 3441 */ NULL, /* 3442 */ NULL, /* 3443 */ NULL, /* 3444 */ NULL, /* 3445 */ NULL, /* 3446 */ NULL, /* 3447 */ NULL, /* 3448 */ NULL, /* 3449 */ NULL, /* 344a */ NULL, /* 344b */ NULL, /* 344c */ NULL, /* 344d */ NULL, /* 344e */ NULL, /* 344f */ NULL, /* 3450 */ NULL, /* 3451 */ NULL, /* 3452 */ NULL, /* 3453 */ NULL, /* 3454 */ NULL, /* 3455 */ NULL, /* 3456 */ NULL, /* 3457 */ NULL, /* 3458 */ NULL, /* 3459 */ NULL, /* 345a */ NULL, /* 345b */ NULL, /* 345c */ NULL, /* 345d */ NULL, /* 345e */ NULL, /* 345f */ NULL, /* 3460 */ NULL, /* 3461 */ NULL, /* 3462 */ NULL, /* 3463 */ NULL, /* 3464 */ NULL, /* 3465 */ NULL, /* 3466 */ NULL, /* 3467 */ NULL, /* 3468 */ NULL, /* 3469 */ NULL, /* 346a */ NULL, /* 346b */ NULL, /* 346c */ NULL, /* 346d */ NULL, /* 346e */ NULL, /* 346f */ NULL, /* 3470 */ NULL, /* 3471 */ NULL, /* 3472 */ NULL, /* 3473 */ NULL, /* 3474 */ NULL, /* 3475 */ NULL, /* 3476 */ NULL, /* 3477 */ NULL, /* 3478 */ NULL, /* 3479 */ NULL, /* 347a */ NULL, /* 347b */ NULL, /* 347c */ NULL, /* 347d */ NULL, /* 347e */ NULL, /* 347f */ NULL, /* 3480 */ NULL, /* 3481 */ NULL, /* 3482 */ NULL, /* 3483 */ NULL, /* 3484 */ NULL, /* 3485 */ NULL, /* 3486 */ NULL, /* 3487 */ NULL, /* 3488 */ NULL, /* 3489 */ NULL, /* 348a */ NULL, /* 348b */ NULL, /* 348c */ NULL, /* 348d */ NULL, /* 348e */ NULL, /* 348f */ NULL, /* 3490 */ NULL, /* 3491 */ NULL, /* 3492 */ NULL, /* 3493 */ NULL, /* 3494 */ NULL, /* 3495 */ NULL, /* 3496 */ NULL, /* 3497 */ NULL, /* 3498 */ NULL, /* 3499 */ NULL, /* 349a */ NULL, /* 349b */ NULL, /* 349c */ NULL, /* 349d */ NULL, /* 349e */ NULL, /* 349f */ NULL, /* 34a0 */ NULL, /* 34a1 */ NULL, /* 34a2 */ NULL, /* 34a3 */ NULL, /* 34a4 */ NULL, /* 34a5 */ NULL, /* 34a6 */ NULL, /* 34a7 */ NULL, /* 34a8 */ NULL, /* 34a9 */ NULL, /* 34aa */ NULL, /* 34ab */ NULL, /* 34ac */ NULL, /* 34ad */ NULL, /* 34ae */ NULL, /* 34af */ NULL, /* 34b0 */ NULL, /* 34b1 */ NULL, /* 34b2 */ NULL, /* 34b3 */ NULL, /* 34b4 */ NULL, /* 34b5 */ NULL, /* 34b6 */ NULL, /* 34b7 */ NULL, /* 34b8 */ NULL, /* 34b9 */ NULL, /* 34ba */ NULL, /* 34bb */ NULL, /* 34bc */ NULL, /* 34bd */ NULL, /* 34be */ NULL, /* 34bf */ NULL, /* 34c0 */ NULL, /* 34c1 */ NULL, /* 34c2 */ NULL, /* 34c3 */ NULL, /* 34c4 */ NULL, /* 34c5 */ NULL, /* 34c6 */ NULL, /* 34c7 */ NULL, /* 34c8 */ NULL, /* 34c9 */ NULL, /* 34ca */ NULL, /* 34cb */ NULL, /* 34cc */ NULL, /* 34cd */ NULL, /* 34ce */ NULL, /* 34cf */ NULL, /* 34d0 */ NULL, /* 34d1 */ NULL, /* 34d2 */ NULL, /* 34d3 */ NULL, /* 34d4 */ NULL, /* 34d5 */ NULL, /* 34d6 */ NULL, /* 34d7 */ NULL, /* 34d8 */ NULL, /* 34d9 */ NULL, /* 34da */ NULL, /* 34db */ NULL, /* 34dc */ NULL, /* 34dd */ NULL, /* 34de */ NULL, /* 34df */ NULL, /* 34e0 */ NULL, /* 34e1 */ NULL, /* 34e2 */ NULL, /* 34e3 */ NULL, /* 34e4 */ NULL, /* 34e5 */ NULL, /* 34e6 */ NULL, /* 34e7 */ NULL, /* 34e8 */ NULL, /* 34e9 */ NULL, /* 34ea */ NULL, /* 34eb */ NULL, /* 34ec */ NULL, /* 34ed */ NULL, /* 34ee */ NULL, /* 34ef */ NULL, /* 34f0 */ NULL, /* 34f1 */ NULL, /* 34f2 */ NULL, /* 34f3 */ NULL, /* 34f4 */ NULL, /* 34f5 */ NULL, /* 34f6 */ NULL, /* 34f7 */ NULL, /* 34f8 */ NULL, /* 34f9 */ NULL, /* 34fa */ NULL, /* 34fb */ NULL, /* 34fc */ NULL, /* 34fd */ NULL, /* 34fe */ NULL, /* 34ff */ NULL, /* 3500 */ NULL, /* 3501 */ NULL, /* 3502 */ NULL, /* 3503 */ NULL, /* 3504 */ NULL, /* 3505 */ NULL, /* 3506 */ NULL, /* 3507 */ NULL, /* 3508 */ NULL, /* 3509 */ NULL, /* 350a */ NULL, /* 350b */ NULL, /* 350c */ NULL, /* 350d */ NULL, /* 350e */ NULL, /* 350f */ NULL, /* 3510 */ NULL, /* 3511 */ NULL, /* 3512 */ NULL, /* 3513 */ NULL, /* 3514 */ NULL, /* 3515 */ NULL, /* 3516 */ NULL, /* 3517 */ NULL, /* 3518 */ NULL, /* 3519 */ NULL, /* 351a */ NULL, /* 351b */ NULL, /* 351c */ NULL, /* 351d */ NULL, /* 351e */ NULL, /* 351f */ NULL, /* 3520 */ NULL, /* 3521 */ NULL, /* 3522 */ NULL, /* 3523 */ NULL, /* 3524 */ NULL, /* 3525 */ NULL, /* 3526 */ NULL, /* 3527 */ NULL, /* 3528 */ NULL, /* 3529 */ NULL, /* 352a */ NULL, /* 352b */ NULL, /* 352c */ NULL, /* 352d */ NULL, /* 352e */ NULL, /* 352f */ NULL, /* 3530 */ NULL, /* 3531 */ NULL, /* 3532 */ NULL, /* 3533 */ NULL, /* 3534 */ NULL, /* 3535 */ NULL, /* 3536 */ NULL, /* 3537 */ NULL, /* 3538 */ NULL, /* 3539 */ NULL, /* 353a */ NULL, /* 353b */ NULL, /* 353c */ NULL, /* 353d */ NULL, /* 353e */ NULL, /* 353f */ NULL, /* 3540 */ NULL, /* 3541 */ NULL, /* 3542 */ NULL, /* 3543 */ NULL, /* 3544 */ NULL, /* 3545 */ NULL, /* 3546 */ NULL, /* 3547 */ NULL, /* 3548 */ NULL, /* 3549 */ NULL, /* 354a */ NULL, /* 354b */ NULL, /* 354c */ NULL, /* 354d */ NULL, /* 354e */ NULL, /* 354f */ NULL, /* 3550 */ NULL, /* 3551 */ NULL, /* 3552 */ NULL, /* 3553 */ NULL, /* 3554 */ NULL, /* 3555 */ NULL, /* 3556 */ NULL, /* 3557 */ NULL, /* 3558 */ NULL, /* 3559 */ NULL, /* 355a */ NULL, /* 355b */ NULL, /* 355c */ NULL, /* 355d */ NULL, /* 355e */ NULL, /* 355f */ NULL, /* 3560 */ NULL, /* 3561 */ NULL, /* 3562 */ NULL, /* 3563 */ NULL, /* 3564 */ NULL, /* 3565 */ NULL, /* 3566 */ NULL, /* 3567 */ NULL, /* 3568 */ NULL, /* 3569 */ NULL, /* 356a */ NULL, /* 356b */ NULL, /* 356c */ NULL, /* 356d */ NULL, /* 356e */ NULL, /* 356f */ NULL, /* 3570 */ NULL, /* 3571 */ NULL, /* 3572 */ NULL, /* 3573 */ NULL, /* 3574 */ NULL, /* 3575 */ NULL, /* 3576 */ NULL, /* 3577 */ NULL, /* 3578 */ NULL, /* 3579 */ NULL, /* 357a */ NULL, /* 357b */ NULL, /* 357c */ NULL, /* 357d */ NULL, /* 357e */ NULL, /* 357f */ NULL, /* 3580 */ NULL, /* 3581 */ NULL, /* 3582 */ NULL, /* 3583 */ NULL, /* 3584 */ NULL, /* 3585 */ NULL, /* 3586 */ NULL, /* 3587 */ NULL, /* 3588 */ NULL, /* 3589 */ NULL, /* 358a */ NULL, /* 358b */ NULL, /* 358c */ NULL, /* 358d */ NULL, /* 358e */ NULL, /* 358f */ NULL, /* 3590 */ NULL, /* 3591 */ NULL, /* 3592 */ NULL, /* 3593 */ NULL, /* 3594 */ NULL, /* 3595 */ NULL, /* 3596 */ NULL, /* 3597 */ NULL, /* 3598 */ NULL, /* 3599 */ NULL, /* 359a */ NULL, /* 359b */ NULL, /* 359c */ NULL, /* 359d */ NULL, /* 359e */ NULL, /* 359f */ NULL, /* 35a0 */ NULL, /* 35a1 */ NULL, /* 35a2 */ NULL, /* 35a3 */ NULL, /* 35a4 */ NULL, /* 35a5 */ NULL, /* 35a6 */ NULL, /* 35a7 */ NULL, /* 35a8 */ NULL, /* 35a9 */ NULL, /* 35aa */ NULL, /* 35ab */ NULL, /* 35ac */ NULL, /* 35ad */ NULL, /* 35ae */ NULL, /* 35af */ NULL, /* 35b0 */ NULL, /* 35b1 */ NULL, /* 35b2 */ NULL, /* 35b3 */ NULL, /* 35b4 */ NULL, /* 35b5 */ NULL, /* 35b6 */ NULL, /* 35b7 */ NULL, /* 35b8 */ NULL, /* 35b9 */ NULL, /* 35ba */ NULL, /* 35bb */ NULL, /* 35bc */ NULL, /* 35bd */ NULL, /* 35be */ NULL, /* 35bf */ NULL, /* 35c0 */ NULL, /* 35c1 */ NULL, /* 35c2 */ NULL, /* 35c3 */ NULL, /* 35c4 */ NULL, /* 35c5 */ NULL, /* 35c6 */ NULL, /* 35c7 */ NULL, /* 35c8 */ NULL, /* 35c9 */ NULL, /* 35ca */ NULL, /* 35cb */ NULL, /* 35cc */ NULL, /* 35cd */ NULL, /* 35ce */ NULL, /* 35cf */ NULL, /* 35d0 */ NULL, /* 35d1 */ NULL, /* 35d2 */ NULL, /* 35d3 */ NULL, /* 35d4 */ NULL, /* 35d5 */ NULL, /* 35d6 */ NULL, /* 35d7 */ NULL, /* 35d8 */ NULL, /* 35d9 */ NULL, /* 35da */ NULL, /* 35db */ NULL, /* 35dc */ NULL, /* 35dd */ NULL, /* 35de */ NULL, /* 35df */ NULL, /* 35e0 */ NULL, /* 35e1 */ NULL, /* 35e2 */ NULL, /* 35e3 */ NULL, /* 35e4 */ NULL, /* 35e5 */ NULL, /* 35e6 */ NULL, /* 35e7 */ NULL, /* 35e8 */ NULL, /* 35e9 */ NULL, /* 35ea */ NULL, /* 35eb */ NULL, /* 35ec */ NULL, /* 35ed */ NULL, /* 35ee */ NULL, /* 35ef */ NULL, /* 35f0 */ NULL, /* 35f1 */ NULL, /* 35f2 */ NULL, /* 35f3 */ NULL, /* 35f4 */ NULL, /* 35f5 */ NULL, /* 35f6 */ NULL, /* 35f7 */ NULL, /* 35f8 */ NULL, /* 35f9 */ NULL, /* 35fa */ NULL, /* 35fb */ NULL, /* 35fc */ NULL, /* 35fd */ NULL, /* 35fe */ NULL, /* 35ff */ NULL, /* 3600 */ NULL, /* 3601 */ NULL, /* 3602 */ NULL, /* 3603 */ NULL, /* 3604 */ NULL, /* 3605 */ NULL, /* 3606 */ NULL, /* 3607 */ NULL, /* 3608 */ NULL, /* 3609 */ NULL, /* 360a */ NULL, /* 360b */ NULL, /* 360c */ NULL, /* 360d */ NULL, /* 360e */ NULL, /* 360f */ NULL, /* 3610 */ NULL, /* 3611 */ NULL, /* 3612 */ NULL, /* 3613 */ NULL, /* 3614 */ NULL, /* 3615 */ NULL, /* 3616 */ NULL, /* 3617 */ NULL, /* 3618 */ NULL, /* 3619 */ NULL, /* 361a */ NULL, /* 361b */ NULL, /* 361c */ NULL, /* 361d */ NULL, /* 361e */ NULL, /* 361f */ NULL, /* 3620 */ NULL, /* 3621 */ NULL, /* 3622 */ NULL, /* 3623 */ NULL, /* 3624 */ NULL, /* 3625 */ NULL, /* 3626 */ NULL, /* 3627 */ NULL, /* 3628 */ NULL, /* 3629 */ NULL, /* 362a */ NULL, /* 362b */ NULL, /* 362c */ NULL, /* 362d */ NULL, /* 362e */ NULL, /* 362f */ NULL, /* 3630 */ NULL, /* 3631 */ NULL, /* 3632 */ NULL, /* 3633 */ NULL, /* 3634 */ NULL, /* 3635 */ NULL, /* 3636 */ NULL, /* 3637 */ NULL, /* 3638 */ NULL, /* 3639 */ NULL, /* 363a */ NULL, /* 363b */ NULL, /* 363c */ NULL, /* 363d */ NULL, /* 363e */ NULL, /* 363f */ NULL, /* 3640 */ NULL, /* 3641 */ NULL, /* 3642 */ NULL, /* 3643 */ NULL, /* 3644 */ NULL, /* 3645 */ NULL, /* 3646 */ NULL, /* 3647 */ NULL, /* 3648 */ NULL, /* 3649 */ NULL, /* 364a */ NULL, /* 364b */ NULL, /* 364c */ NULL, /* 364d */ NULL, /* 364e */ NULL, /* 364f */ NULL, /* 3650 */ NULL, /* 3651 */ NULL, /* 3652 */ NULL, /* 3653 */ NULL, /* 3654 */ NULL, /* 3655 */ NULL, /* 3656 */ NULL, /* 3657 */ NULL, /* 3658 */ NULL, /* 3659 */ NULL, /* 365a */ NULL, /* 365b */ NULL, /* 365c */ NULL, /* 365d */ NULL, /* 365e */ NULL, /* 365f */ NULL, /* 3660 */ NULL, /* 3661 */ NULL, /* 3662 */ NULL, /* 3663 */ NULL, /* 3664 */ NULL, /* 3665 */ NULL, /* 3666 */ NULL, /* 3667 */ NULL, /* 3668 */ NULL, /* 3669 */ NULL, /* 366a */ NULL, /* 366b */ NULL, /* 366c */ NULL, /* 366d */ NULL, /* 366e */ NULL, /* 366f */ NULL, /* 3670 */ NULL, /* 3671 */ NULL, /* 3672 */ NULL, /* 3673 */ NULL, /* 3674 */ NULL, /* 3675 */ NULL, /* 3676 */ NULL, /* 3677 */ NULL, /* 3678 */ NULL, /* 3679 */ NULL, /* 367a */ NULL, /* 367b */ NULL, /* 367c */ NULL, /* 367d */ NULL, /* 367e */ NULL, /* 367f */ NULL, /* 3680 */ NULL, /* 3681 */ NULL, /* 3682 */ NULL, /* 3683 */ NULL, /* 3684 */ NULL, /* 3685 */ NULL, /* 3686 */ NULL, /* 3687 */ NULL, /* 3688 */ NULL, /* 3689 */ NULL, /* 368a */ NULL, /* 368b */ NULL, /* 368c */ NULL, /* 368d */ NULL, /* 368e */ NULL, /* 368f */ NULL, /* 3690 */ NULL, /* 3691 */ NULL, /* 3692 */ NULL, /* 3693 */ NULL, /* 3694 */ NULL, /* 3695 */ NULL, /* 3696 */ NULL, /* 3697 */ NULL, /* 3698 */ NULL, /* 3699 */ NULL, /* 369a */ NULL, /* 369b */ NULL, /* 369c */ NULL, /* 369d */ NULL, /* 369e */ NULL, /* 369f */ NULL, /* 36a0 */ NULL, /* 36a1 */ NULL, /* 36a2 */ NULL, /* 36a3 */ NULL, /* 36a4 */ NULL, /* 36a5 */ NULL, /* 36a6 */ NULL, /* 36a7 */ NULL, /* 36a8 */ NULL, /* 36a9 */ NULL, /* 36aa */ NULL, /* 36ab */ NULL, /* 36ac */ NULL, /* 36ad */ NULL, /* 36ae */ NULL, /* 36af */ NULL, /* 36b0 */ NULL, /* 36b1 */ NULL, /* 36b2 */ NULL, /* 36b3 */ NULL, /* 36b4 */ NULL, /* 36b5 */ NULL, /* 36b6 */ NULL, /* 36b7 */ NULL, /* 36b8 */ NULL, /* 36b9 */ NULL, /* 36ba */ NULL, /* 36bb */ NULL, /* 36bc */ NULL, /* 36bd */ NULL, /* 36be */ NULL, /* 36bf */ NULL, /* 36c0 */ NULL, /* 36c1 */ NULL, /* 36c2 */ NULL, /* 36c3 */ NULL, /* 36c4 */ NULL, /* 36c5 */ NULL, /* 36c6 */ NULL, /* 36c7 */ NULL, /* 36c8 */ NULL, /* 36c9 */ NULL, /* 36ca */ NULL, /* 36cb */ NULL, /* 36cc */ NULL, /* 36cd */ NULL, /* 36ce */ NULL, /* 36cf */ NULL, /* 36d0 */ NULL, /* 36d1 */ NULL, /* 36d2 */ NULL, /* 36d3 */ NULL, /* 36d4 */ NULL, /* 36d5 */ NULL, /* 36d6 */ NULL, /* 36d7 */ NULL, /* 36d8 */ NULL, /* 36d9 */ NULL, /* 36da */ NULL, /* 36db */ NULL, /* 36dc */ NULL, /* 36dd */ NULL, /* 36de */ NULL, /* 36df */ NULL, /* 36e0 */ NULL, /* 36e1 */ NULL, /* 36e2 */ NULL, /* 36e3 */ NULL, /* 36e4 */ NULL, /* 36e5 */ NULL, /* 36e6 */ NULL, /* 36e7 */ NULL, /* 36e8 */ NULL, /* 36e9 */ NULL, /* 36ea */ NULL, /* 36eb */ NULL, /* 36ec */ NULL, /* 36ed */ NULL, /* 36ee */ NULL, /* 36ef */ NULL, /* 36f0 */ NULL, /* 36f1 */ NULL, /* 36f2 */ NULL, /* 36f3 */ NULL, /* 36f4 */ NULL, /* 36f5 */ NULL, /* 36f6 */ NULL, /* 36f7 */ NULL, /* 36f8 */ NULL, /* 36f9 */ NULL, /* 36fa */ NULL, /* 36fb */ NULL, /* 36fc */ NULL, /* 36fd */ NULL, /* 36fe */ NULL, /* 36ff */ NULL, /* 3700 */ NULL, /* 3701 */ NULL, /* 3702 */ NULL, /* 3703 */ NULL, /* 3704 */ NULL, /* 3705 */ NULL, /* 3706 */ NULL, /* 3707 */ NULL, /* 3708 */ NULL, /* 3709 */ NULL, /* 370a */ NULL, /* 370b */ NULL, /* 370c */ NULL, /* 370d */ NULL, /* 370e */ NULL, /* 370f */ NULL, /* 3710 */ NULL, /* 3711 */ NULL, /* 3712 */ NULL, /* 3713 */ NULL, /* 3714 */ NULL, /* 3715 */ NULL, /* 3716 */ NULL, /* 3717 */ NULL, /* 3718 */ NULL, /* 3719 */ NULL, /* 371a */ NULL, /* 371b */ NULL, /* 371c */ NULL, /* 371d */ NULL, /* 371e */ NULL, /* 371f */ NULL, /* 3720 */ NULL, /* 3721 */ NULL, /* 3722 */ NULL, /* 3723 */ NULL, /* 3724 */ NULL, /* 3725 */ NULL, /* 3726 */ NULL, /* 3727 */ NULL, /* 3728 */ NULL, /* 3729 */ NULL, /* 372a */ NULL, /* 372b */ NULL, /* 372c */ NULL, /* 372d */ NULL, /* 372e */ NULL, /* 372f */ NULL, /* 3730 */ NULL, /* 3731 */ NULL, /* 3732 */ NULL, /* 3733 */ NULL, /* 3734 */ NULL, /* 3735 */ NULL, /* 3736 */ NULL, /* 3737 */ NULL, /* 3738 */ NULL, /* 3739 */ NULL, /* 373a */ NULL, /* 373b */ NULL, /* 373c */ NULL, /* 373d */ NULL, /* 373e */ NULL, /* 373f */ NULL, /* 3740 */ NULL, /* 3741 */ NULL, /* 3742 */ NULL, /* 3743 */ NULL, /* 3744 */ NULL, /* 3745 */ NULL, /* 3746 */ NULL, /* 3747 */ NULL, /* 3748 */ NULL, /* 3749 */ NULL, /* 374a */ NULL, /* 374b */ NULL, /* 374c */ NULL, /* 374d */ NULL, /* 374e */ NULL, /* 374f */ NULL, /* 3750 */ NULL, /* 3751 */ NULL, /* 3752 */ NULL, /* 3753 */ NULL, /* 3754 */ NULL, /* 3755 */ NULL, /* 3756 */ NULL, /* 3757 */ NULL, /* 3758 */ NULL, /* 3759 */ NULL, /* 375a */ NULL, /* 375b */ NULL, /* 375c */ NULL, /* 375d */ NULL, /* 375e */ NULL, /* 375f */ NULL, /* 3760 */ NULL, /* 3761 */ NULL, /* 3762 */ NULL, /* 3763 */ NULL, /* 3764 */ NULL, /* 3765 */ NULL, /* 3766 */ NULL, /* 3767 */ NULL, /* 3768 */ NULL, /* 3769 */ NULL, /* 376a */ NULL, /* 376b */ NULL, /* 376c */ NULL, /* 376d */ NULL, /* 376e */ NULL, /* 376f */ NULL, /* 3770 */ NULL, /* 3771 */ NULL, /* 3772 */ NULL, /* 3773 */ NULL, /* 3774 */ NULL, /* 3775 */ NULL, /* 3776 */ NULL, /* 3777 */ NULL, /* 3778 */ NULL, /* 3779 */ NULL, /* 377a */ NULL, /* 377b */ NULL, /* 377c */ NULL, /* 377d */ NULL, /* 377e */ NULL, /* 377f */ NULL, /* 3780 */ NULL, /* 3781 */ NULL, /* 3782 */ NULL, /* 3783 */ NULL, /* 3784 */ NULL, /* 3785 */ NULL, /* 3786 */ NULL, /* 3787 */ NULL, /* 3788 */ NULL, /* 3789 */ NULL, /* 378a */ NULL, /* 378b */ NULL, /* 378c */ NULL, /* 378d */ NULL, /* 378e */ NULL, /* 378f */ NULL, /* 3790 */ NULL, /* 3791 */ NULL, /* 3792 */ NULL, /* 3793 */ NULL, /* 3794 */ NULL, /* 3795 */ NULL, /* 3796 */ NULL, /* 3797 */ NULL, /* 3798 */ NULL, /* 3799 */ NULL, /* 379a */ NULL, /* 379b */ NULL, /* 379c */ NULL, /* 379d */ NULL, /* 379e */ NULL, /* 379f */ NULL, /* 37a0 */ NULL, /* 37a1 */ NULL, /* 37a2 */ NULL, /* 37a3 */ NULL, /* 37a4 */ NULL, /* 37a5 */ NULL, /* 37a6 */ NULL, /* 37a7 */ NULL, /* 37a8 */ NULL, /* 37a9 */ NULL, /* 37aa */ NULL, /* 37ab */ NULL, /* 37ac */ NULL, /* 37ad */ NULL, /* 37ae */ NULL, /* 37af */ NULL, /* 37b0 */ NULL, /* 37b1 */ NULL, /* 37b2 */ NULL, /* 37b3 */ NULL, /* 37b4 */ NULL, /* 37b5 */ NULL, /* 37b6 */ NULL, /* 37b7 */ NULL, /* 37b8 */ NULL, /* 37b9 */ NULL, /* 37ba */ NULL, /* 37bb */ NULL, /* 37bc */ NULL, /* 37bd */ NULL, /* 37be */ NULL, /* 37bf */ NULL, /* 37c0 */ NULL, /* 37c1 */ NULL, /* 37c2 */ NULL, /* 37c3 */ NULL, /* 37c4 */ NULL, /* 37c5 */ NULL, /* 37c6 */ NULL, /* 37c7 */ NULL, /* 37c8 */ NULL, /* 37c9 */ NULL, /* 37ca */ NULL, /* 37cb */ NULL, /* 37cc */ NULL, /* 37cd */ NULL, /* 37ce */ NULL, /* 37cf */ NULL, /* 37d0 */ NULL, /* 37d1 */ NULL, /* 37d2 */ NULL, /* 37d3 */ NULL, /* 37d4 */ NULL, /* 37d5 */ NULL, /* 37d6 */ NULL, /* 37d7 */ NULL, /* 37d8 */ NULL, /* 37d9 */ NULL, /* 37da */ NULL, /* 37db */ NULL, /* 37dc */ NULL, /* 37dd */ NULL, /* 37de */ NULL, /* 37df */ NULL, /* 37e0 */ NULL, /* 37e1 */ NULL, /* 37e2 */ NULL, /* 37e3 */ NULL, /* 37e4 */ NULL, /* 37e5 */ NULL, /* 37e6 */ NULL, /* 37e7 */ NULL, /* 37e8 */ NULL, /* 37e9 */ NULL, /* 37ea */ NULL, /* 37eb */ NULL, /* 37ec */ NULL, /* 37ed */ NULL, /* 37ee */ NULL, /* 37ef */ NULL, /* 37f0 */ NULL, /* 37f1 */ NULL, /* 37f2 */ NULL, /* 37f3 */ NULL, /* 37f4 */ NULL, /* 37f5 */ NULL, /* 37f6 */ NULL, /* 37f7 */ NULL, /* 37f8 */ NULL, /* 37f9 */ NULL, /* 37fa */ NULL, /* 37fb */ NULL, /* 37fc */ NULL, /* 37fd */ NULL, /* 37fe */ NULL, /* 37ff */ NULL, /* 3800 */ NULL, /* 3801 */ NULL, /* 3802 */ NULL, /* 3803 */ NULL, /* 3804 */ NULL, /* 3805 */ NULL, /* 3806 */ NULL, /* 3807 */ NULL, /* 3808 */ NULL, /* 3809 */ NULL, /* 380a */ NULL, /* 380b */ NULL, /* 380c */ NULL, /* 380d */ NULL, /* 380e */ NULL, /* 380f */ NULL, /* 3810 */ NULL, /* 3811 */ NULL, /* 3812 */ NULL, /* 3813 */ NULL, /* 3814 */ NULL, /* 3815 */ NULL, /* 3816 */ NULL, /* 3817 */ NULL, /* 3818 */ NULL, /* 3819 */ NULL, /* 381a */ NULL, /* 381b */ NULL, /* 381c */ NULL, /* 381d */ NULL, /* 381e */ NULL, /* 381f */ NULL, /* 3820 */ NULL, /* 3821 */ NULL, /* 3822 */ NULL, /* 3823 */ NULL, /* 3824 */ NULL, /* 3825 */ NULL, /* 3826 */ NULL, /* 3827 */ NULL, /* 3828 */ NULL, /* 3829 */ NULL, /* 382a */ NULL, /* 382b */ NULL, /* 382c */ NULL, /* 382d */ NULL, /* 382e */ NULL, /* 382f */ NULL, /* 3830 */ NULL, /* 3831 */ NULL, /* 3832 */ NULL, /* 3833 */ NULL, /* 3834 */ NULL, /* 3835 */ NULL, /* 3836 */ NULL, /* 3837 */ NULL, /* 3838 */ NULL, /* 3839 */ NULL, /* 383a */ NULL, /* 383b */ NULL, /* 383c */ NULL, /* 383d */ NULL, /* 383e */ NULL, /* 383f */ NULL, /* 3840 */ NULL, /* 3841 */ NULL, /* 3842 */ NULL, /* 3843 */ NULL, /* 3844 */ NULL, /* 3845 */ NULL, /* 3846 */ NULL, /* 3847 */ NULL, /* 3848 */ NULL, /* 3849 */ NULL, /* 384a */ NULL, /* 384b */ NULL, /* 384c */ NULL, /* 384d */ NULL, /* 384e */ NULL, /* 384f */ NULL, /* 3850 */ NULL, /* 3851 */ NULL, /* 3852 */ NULL, /* 3853 */ NULL, /* 3854 */ NULL, /* 3855 */ NULL, /* 3856 */ NULL, /* 3857 */ NULL, /* 3858 */ NULL, /* 3859 */ NULL, /* 385a */ NULL, /* 385b */ NULL, /* 385c */ NULL, /* 385d */ NULL, /* 385e */ NULL, /* 385f */ NULL, /* 3860 */ NULL, /* 3861 */ NULL, /* 3862 */ NULL, /* 3863 */ NULL, /* 3864 */ NULL, /* 3865 */ NULL, /* 3866 */ NULL, /* 3867 */ NULL, /* 3868 */ NULL, /* 3869 */ NULL, /* 386a */ NULL, /* 386b */ NULL, /* 386c */ NULL, /* 386d */ NULL, /* 386e */ NULL, /* 386f */ NULL, /* 3870 */ NULL, /* 3871 */ NULL, /* 3872 */ NULL, /* 3873 */ NULL, /* 3874 */ NULL, /* 3875 */ NULL, /* 3876 */ NULL, /* 3877 */ NULL, /* 3878 */ NULL, /* 3879 */ NULL, /* 387a */ NULL, /* 387b */ NULL, /* 387c */ NULL, /* 387d */ NULL, /* 387e */ NULL, /* 387f */ NULL, /* 3880 */ NULL, /* 3881 */ NULL, /* 3882 */ NULL, /* 3883 */ NULL, /* 3884 */ NULL, /* 3885 */ NULL, /* 3886 */ NULL, /* 3887 */ NULL, /* 3888 */ NULL, /* 3889 */ NULL, /* 388a */ NULL, /* 388b */ NULL, /* 388c */ NULL, /* 388d */ NULL, /* 388e */ NULL, /* 388f */ NULL, /* 3890 */ NULL, /* 3891 */ NULL, /* 3892 */ NULL, /* 3893 */ NULL, /* 3894 */ NULL, /* 3895 */ NULL, /* 3896 */ NULL, /* 3897 */ NULL, /* 3898 */ NULL, /* 3899 */ NULL, /* 389a */ NULL, /* 389b */ NULL, /* 389c */ NULL, /* 389d */ NULL, /* 389e */ NULL, /* 389f */ NULL, /* 38a0 */ NULL, /* 38a1 */ NULL, /* 38a2 */ NULL, /* 38a3 */ NULL, /* 38a4 */ NULL, /* 38a5 */ NULL, /* 38a6 */ NULL, /* 38a7 */ NULL, /* 38a8 */ NULL, /* 38a9 */ NULL, /* 38aa */ NULL, /* 38ab */ NULL, /* 38ac */ NULL, /* 38ad */ NULL, /* 38ae */ NULL, /* 38af */ NULL, /* 38b0 */ NULL, /* 38b1 */ NULL, /* 38b2 */ NULL, /* 38b3 */ NULL, /* 38b4 */ NULL, /* 38b5 */ NULL, /* 38b6 */ NULL, /* 38b7 */ NULL, /* 38b8 */ NULL, /* 38b9 */ NULL, /* 38ba */ NULL, /* 38bb */ NULL, /* 38bc */ NULL, /* 38bd */ NULL, /* 38be */ NULL, /* 38bf */ NULL, /* 38c0 */ NULL, /* 38c1 */ NULL, /* 38c2 */ NULL, /* 38c3 */ NULL, /* 38c4 */ NULL, /* 38c5 */ NULL, /* 38c6 */ NULL, /* 38c7 */ NULL, /* 38c8 */ NULL, /* 38c9 */ NULL, /* 38ca */ NULL, /* 38cb */ NULL, /* 38cc */ NULL, /* 38cd */ NULL, /* 38ce */ NULL, /* 38cf */ NULL, /* 38d0 */ NULL, /* 38d1 */ NULL, /* 38d2 */ NULL, /* 38d3 */ NULL, /* 38d4 */ NULL, /* 38d5 */ NULL, /* 38d6 */ NULL, /* 38d7 */ NULL, /* 38d8 */ NULL, /* 38d9 */ NULL, /* 38da */ NULL, /* 38db */ NULL, /* 38dc */ NULL, /* 38dd */ NULL, /* 38de */ NULL, /* 38df */ NULL, /* 38e0 */ NULL, /* 38e1 */ NULL, /* 38e2 */ NULL, /* 38e3 */ NULL, /* 38e4 */ NULL, /* 38e5 */ NULL, /* 38e6 */ NULL, /* 38e7 */ NULL, /* 38e8 */ NULL, /* 38e9 */ NULL, /* 38ea */ NULL, /* 38eb */ NULL, /* 38ec */ NULL, /* 38ed */ NULL, /* 38ee */ NULL, /* 38ef */ NULL, /* 38f0 */ NULL, /* 38f1 */ NULL, /* 38f2 */ NULL, /* 38f3 */ NULL, /* 38f4 */ NULL, /* 38f5 */ NULL, /* 38f6 */ NULL, /* 38f7 */ NULL, /* 38f8 */ NULL, /* 38f9 */ NULL, /* 38fa */ NULL, /* 38fb */ NULL, /* 38fc */ NULL, /* 38fd */ NULL, /* 38fe */ NULL, /* 38ff */ NULL, /* 3900 */ NULL, /* 3901 */ NULL, /* 3902 */ NULL, /* 3903 */ NULL, /* 3904 */ NULL, /* 3905 */ NULL, /* 3906 */ NULL, /* 3907 */ NULL, /* 3908 */ NULL, /* 3909 */ NULL, /* 390a */ NULL, /* 390b */ NULL, /* 390c */ NULL, /* 390d */ NULL, /* 390e */ NULL, /* 390f */ NULL, /* 3910 */ NULL, /* 3911 */ NULL, /* 3912 */ NULL, /* 3913 */ NULL, /* 3914 */ NULL, /* 3915 */ NULL, /* 3916 */ NULL, /* 3917 */ NULL, /* 3918 */ NULL, /* 3919 */ NULL, /* 391a */ NULL, /* 391b */ NULL, /* 391c */ NULL, /* 391d */ NULL, /* 391e */ NULL, /* 391f */ NULL, /* 3920 */ NULL, /* 3921 */ NULL, /* 3922 */ NULL, /* 3923 */ NULL, /* 3924 */ NULL, /* 3925 */ NULL, /* 3926 */ NULL, /* 3927 */ NULL, /* 3928 */ NULL, /* 3929 */ NULL, /* 392a */ NULL, /* 392b */ NULL, /* 392c */ NULL, /* 392d */ NULL, /* 392e */ NULL, /* 392f */ NULL, /* 3930 */ NULL, /* 3931 */ NULL, /* 3932 */ NULL, /* 3933 */ NULL, /* 3934 */ NULL, /* 3935 */ NULL, /* 3936 */ NULL, /* 3937 */ NULL, /* 3938 */ NULL, /* 3939 */ NULL, /* 393a */ NULL, /* 393b */ NULL, /* 393c */ NULL, /* 393d */ NULL, /* 393e */ NULL, /* 393f */ NULL, /* 3940 */ NULL, /* 3941 */ NULL, /* 3942 */ NULL, /* 3943 */ NULL, /* 3944 */ NULL, /* 3945 */ NULL, /* 3946 */ NULL, /* 3947 */ NULL, /* 3948 */ NULL, /* 3949 */ NULL, /* 394a */ NULL, /* 394b */ NULL, /* 394c */ NULL, /* 394d */ NULL, /* 394e */ NULL, /* 394f */ NULL, /* 3950 */ NULL, /* 3951 */ NULL, /* 3952 */ NULL, /* 3953 */ NULL, /* 3954 */ NULL, /* 3955 */ NULL, /* 3956 */ NULL, /* 3957 */ NULL, /* 3958 */ NULL, /* 3959 */ NULL, /* 395a */ NULL, /* 395b */ NULL, /* 395c */ NULL, /* 395d */ NULL, /* 395e */ NULL, /* 395f */ NULL, /* 3960 */ NULL, /* 3961 */ NULL, /* 3962 */ NULL, /* 3963 */ NULL, /* 3964 */ NULL, /* 3965 */ NULL, /* 3966 */ NULL, /* 3967 */ NULL, /* 3968 */ NULL, /* 3969 */ NULL, /* 396a */ NULL, /* 396b */ NULL, /* 396c */ NULL, /* 396d */ NULL, /* 396e */ NULL, /* 396f */ NULL, /* 3970 */ NULL, /* 3971 */ NULL, /* 3972 */ NULL, /* 3973 */ NULL, /* 3974 */ NULL, /* 3975 */ NULL, /* 3976 */ NULL, /* 3977 */ NULL, /* 3978 */ NULL, /* 3979 */ NULL, /* 397a */ NULL, /* 397b */ NULL, /* 397c */ NULL, /* 397d */ NULL, /* 397e */ NULL, /* 397f */ NULL, /* 3980 */ NULL, /* 3981 */ NULL, /* 3982 */ NULL, /* 3983 */ NULL, /* 3984 */ NULL, /* 3985 */ NULL, /* 3986 */ NULL, /* 3987 */ NULL, /* 3988 */ NULL, /* 3989 */ NULL, /* 398a */ NULL, /* 398b */ NULL, /* 398c */ NULL, /* 398d */ NULL, /* 398e */ NULL, /* 398f */ NULL, /* 3990 */ NULL, /* 3991 */ NULL, /* 3992 */ NULL, /* 3993 */ NULL, /* 3994 */ NULL, /* 3995 */ NULL, /* 3996 */ NULL, /* 3997 */ NULL, /* 3998 */ NULL, /* 3999 */ NULL, /* 399a */ NULL, /* 399b */ NULL, /* 399c */ NULL, /* 399d */ NULL, /* 399e */ NULL, /* 399f */ NULL, /* 39a0 */ NULL, /* 39a1 */ NULL, /* 39a2 */ NULL, /* 39a3 */ NULL, /* 39a4 */ NULL, /* 39a5 */ NULL, /* 39a6 */ NULL, /* 39a7 */ NULL, /* 39a8 */ NULL, /* 39a9 */ NULL, /* 39aa */ NULL, /* 39ab */ NULL, /* 39ac */ NULL, /* 39ad */ NULL, /* 39ae */ NULL, /* 39af */ NULL, /* 39b0 */ NULL, /* 39b1 */ NULL, /* 39b2 */ NULL, /* 39b3 */ NULL, /* 39b4 */ NULL, /* 39b5 */ NULL, /* 39b6 */ NULL, /* 39b7 */ NULL, /* 39b8 */ NULL, /* 39b9 */ NULL, /* 39ba */ NULL, /* 39bb */ NULL, /* 39bc */ NULL, /* 39bd */ NULL, /* 39be */ NULL, /* 39bf */ NULL, /* 39c0 */ NULL, /* 39c1 */ NULL, /* 39c2 */ NULL, /* 39c3 */ NULL, /* 39c4 */ NULL, /* 39c5 */ NULL, /* 39c6 */ NULL, /* 39c7 */ NULL, /* 39c8 */ NULL, /* 39c9 */ NULL, /* 39ca */ NULL, /* 39cb */ NULL, /* 39cc */ NULL, /* 39cd */ NULL, /* 39ce */ NULL, /* 39cf */ NULL, /* 39d0 */ NULL, /* 39d1 */ NULL, /* 39d2 */ NULL, /* 39d3 */ NULL, /* 39d4 */ NULL, /* 39d5 */ NULL, /* 39d6 */ NULL, /* 39d7 */ NULL, /* 39d8 */ NULL, /* 39d9 */ NULL, /* 39da */ NULL, /* 39db */ NULL, /* 39dc */ NULL, /* 39dd */ NULL, /* 39de */ NULL, /* 39df */ NULL, /* 39e0 */ NULL, /* 39e1 */ NULL, /* 39e2 */ NULL, /* 39e3 */ NULL, /* 39e4 */ NULL, /* 39e5 */ NULL, /* 39e6 */ NULL, /* 39e7 */ NULL, /* 39e8 */ NULL, /* 39e9 */ NULL, /* 39ea */ NULL, /* 39eb */ NULL, /* 39ec */ NULL, /* 39ed */ NULL, /* 39ee */ NULL, /* 39ef */ NULL, /* 39f0 */ NULL, /* 39f1 */ NULL, /* 39f2 */ NULL, /* 39f3 */ NULL, /* 39f4 */ NULL, /* 39f5 */ NULL, /* 39f6 */ NULL, /* 39f7 */ NULL, /* 39f8 */ NULL, /* 39f9 */ NULL, /* 39fa */ NULL, /* 39fb */ NULL, /* 39fc */ NULL, /* 39fd */ NULL, /* 39fe */ NULL, /* 39ff */ NULL, /* 3a00 */ NULL, /* 3a01 */ NULL, /* 3a02 */ NULL, /* 3a03 */ NULL, /* 3a04 */ NULL, /* 3a05 */ NULL, /* 3a06 */ NULL, /* 3a07 */ NULL, /* 3a08 */ NULL, /* 3a09 */ NULL, /* 3a0a */ NULL, /* 3a0b */ NULL, /* 3a0c */ NULL, /* 3a0d */ NULL, /* 3a0e */ NULL, /* 3a0f */ NULL, /* 3a10 */ NULL, /* 3a11 */ NULL, /* 3a12 */ NULL, /* 3a13 */ NULL, /* 3a14 */ NULL, /* 3a15 */ NULL, /* 3a16 */ NULL, /* 3a17 */ NULL, /* 3a18 */ NULL, /* 3a19 */ NULL, /* 3a1a */ NULL, /* 3a1b */ NULL, /* 3a1c */ NULL, /* 3a1d */ NULL, /* 3a1e */ NULL, /* 3a1f */ NULL, /* 3a20 */ NULL, /* 3a21 */ NULL, /* 3a22 */ NULL, /* 3a23 */ NULL, /* 3a24 */ NULL, /* 3a25 */ NULL, /* 3a26 */ NULL, /* 3a27 */ NULL, /* 3a28 */ NULL, /* 3a29 */ NULL, /* 3a2a */ NULL, /* 3a2b */ NULL, /* 3a2c */ NULL, /* 3a2d */ NULL, /* 3a2e */ NULL, /* 3a2f */ NULL, /* 3a30 */ NULL, /* 3a31 */ NULL, /* 3a32 */ NULL, /* 3a33 */ NULL, /* 3a34 */ NULL, /* 3a35 */ NULL, /* 3a36 */ NULL, /* 3a37 */ NULL, /* 3a38 */ NULL, /* 3a39 */ NULL, /* 3a3a */ NULL, /* 3a3b */ NULL, /* 3a3c */ NULL, /* 3a3d */ NULL, /* 3a3e */ NULL, /* 3a3f */ NULL, /* 3a40 */ NULL, /* 3a41 */ NULL, /* 3a42 */ NULL, /* 3a43 */ NULL, /* 3a44 */ NULL, /* 3a45 */ NULL, /* 3a46 */ NULL, /* 3a47 */ NULL, /* 3a48 */ NULL, /* 3a49 */ NULL, /* 3a4a */ NULL, /* 3a4b */ NULL, /* 3a4c */ NULL, /* 3a4d */ NULL, /* 3a4e */ NULL, /* 3a4f */ NULL, /* 3a50 */ NULL, /* 3a51 */ NULL, /* 3a52 */ NULL, /* 3a53 */ NULL, /* 3a54 */ NULL, /* 3a55 */ NULL, /* 3a56 */ NULL, /* 3a57 */ NULL, /* 3a58 */ NULL, /* 3a59 */ NULL, /* 3a5a */ NULL, /* 3a5b */ NULL, /* 3a5c */ NULL, /* 3a5d */ NULL, /* 3a5e */ NULL, /* 3a5f */ NULL, /* 3a60 */ NULL, /* 3a61 */ NULL, /* 3a62 */ NULL, /* 3a63 */ NULL, /* 3a64 */ NULL, /* 3a65 */ NULL, /* 3a66 */ NULL, /* 3a67 */ NULL, /* 3a68 */ NULL, /* 3a69 */ NULL, /* 3a6a */ NULL, /* 3a6b */ NULL, /* 3a6c */ NULL, /* 3a6d */ NULL, /* 3a6e */ NULL, /* 3a6f */ NULL, /* 3a70 */ NULL, /* 3a71 */ NULL, /* 3a72 */ NULL, /* 3a73 */ NULL, /* 3a74 */ NULL, /* 3a75 */ NULL, /* 3a76 */ NULL, /* 3a77 */ NULL, /* 3a78 */ NULL, /* 3a79 */ NULL, /* 3a7a */ NULL, /* 3a7b */ NULL, /* 3a7c */ NULL, /* 3a7d */ NULL, /* 3a7e */ NULL, /* 3a7f */ NULL, /* 3a80 */ NULL, /* 3a81 */ NULL, /* 3a82 */ NULL, /* 3a83 */ NULL, /* 3a84 */ NULL, /* 3a85 */ NULL, /* 3a86 */ NULL, /* 3a87 */ NULL, /* 3a88 */ NULL, /* 3a89 */ NULL, /* 3a8a */ NULL, /* 3a8b */ NULL, /* 3a8c */ NULL, /* 3a8d */ NULL, /* 3a8e */ NULL, /* 3a8f */ NULL, /* 3a90 */ NULL, /* 3a91 */ NULL, /* 3a92 */ NULL, /* 3a93 */ NULL, /* 3a94 */ NULL, /* 3a95 */ NULL, /* 3a96 */ NULL, /* 3a97 */ NULL, /* 3a98 */ NULL, /* 3a99 */ NULL, /* 3a9a */ NULL, /* 3a9b */ NULL, /* 3a9c */ NULL, /* 3a9d */ NULL, /* 3a9e */ NULL, /* 3a9f */ NULL, /* 3aa0 */ NULL, /* 3aa1 */ NULL, /* 3aa2 */ NULL, /* 3aa3 */ NULL, /* 3aa4 */ NULL, /* 3aa5 */ NULL, /* 3aa6 */ NULL, /* 3aa7 */ NULL, /* 3aa8 */ NULL, /* 3aa9 */ NULL, /* 3aaa */ NULL, /* 3aab */ NULL, /* 3aac */ NULL, /* 3aad */ NULL, /* 3aae */ NULL, /* 3aaf */ NULL, /* 3ab0 */ NULL, /* 3ab1 */ NULL, /* 3ab2 */ NULL, /* 3ab3 */ NULL, /* 3ab4 */ NULL, /* 3ab5 */ NULL, /* 3ab6 */ NULL, /* 3ab7 */ NULL, /* 3ab8 */ NULL, /* 3ab9 */ NULL, /* 3aba */ NULL, /* 3abb */ NULL, /* 3abc */ NULL, /* 3abd */ NULL, /* 3abe */ NULL, /* 3abf */ NULL, /* 3ac0 */ NULL, /* 3ac1 */ NULL, /* 3ac2 */ NULL, /* 3ac3 */ NULL, /* 3ac4 */ NULL, /* 3ac5 */ NULL, /* 3ac6 */ NULL, /* 3ac7 */ NULL, /* 3ac8 */ NULL, /* 3ac9 */ NULL, /* 3aca */ NULL, /* 3acb */ NULL, /* 3acc */ NULL, /* 3acd */ NULL, /* 3ace */ NULL, /* 3acf */ NULL, /* 3ad0 */ NULL, /* 3ad1 */ NULL, /* 3ad2 */ NULL, /* 3ad3 */ NULL, /* 3ad4 */ NULL, /* 3ad5 */ NULL, /* 3ad6 */ NULL, /* 3ad7 */ NULL, /* 3ad8 */ NULL, /* 3ad9 */ NULL, /* 3ada */ NULL, /* 3adb */ NULL, /* 3adc */ NULL, /* 3add */ NULL, /* 3ade */ NULL, /* 3adf */ NULL, /* 3ae0 */ NULL, /* 3ae1 */ NULL, /* 3ae2 */ NULL, /* 3ae3 */ NULL, /* 3ae4 */ NULL, /* 3ae5 */ NULL, /* 3ae6 */ NULL, /* 3ae7 */ NULL, /* 3ae8 */ NULL, /* 3ae9 */ NULL, /* 3aea */ NULL, /* 3aeb */ NULL, /* 3aec */ NULL, /* 3aed */ NULL, /* 3aee */ NULL, /* 3aef */ NULL, /* 3af0 */ NULL, /* 3af1 */ NULL, /* 3af2 */ NULL, /* 3af3 */ NULL, /* 3af4 */ NULL, /* 3af5 */ NULL, /* 3af6 */ NULL, /* 3af7 */ NULL, /* 3af8 */ NULL, /* 3af9 */ NULL, /* 3afa */ NULL, /* 3afb */ NULL, /* 3afc */ NULL, /* 3afd */ NULL, /* 3afe */ NULL, /* 3aff */ NULL, /* 3b00 */ NULL, /* 3b01 */ NULL, /* 3b02 */ NULL, /* 3b03 */ NULL, /* 3b04 */ NULL, /* 3b05 */ NULL, /* 3b06 */ NULL, /* 3b07 */ NULL, /* 3b08 */ NULL, /* 3b09 */ NULL, /* 3b0a */ NULL, /* 3b0b */ NULL, /* 3b0c */ NULL, /* 3b0d */ NULL, /* 3b0e */ NULL, /* 3b0f */ NULL, /* 3b10 */ NULL, /* 3b11 */ NULL, /* 3b12 */ NULL, /* 3b13 */ NULL, /* 3b14 */ NULL, /* 3b15 */ NULL, /* 3b16 */ NULL, /* 3b17 */ NULL, /* 3b18 */ NULL, /* 3b19 */ NULL, /* 3b1a */ NULL, /* 3b1b */ NULL, /* 3b1c */ NULL, /* 3b1d */ NULL, /* 3b1e */ NULL, /* 3b1f */ NULL, /* 3b20 */ NULL, /* 3b21 */ NULL, /* 3b22 */ NULL, /* 3b23 */ NULL, /* 3b24 */ NULL, /* 3b25 */ NULL, /* 3b26 */ NULL, /* 3b27 */ NULL, /* 3b28 */ NULL, /* 3b29 */ NULL, /* 3b2a */ NULL, /* 3b2b */ NULL, /* 3b2c */ NULL, /* 3b2d */ NULL, /* 3b2e */ NULL, /* 3b2f */ NULL, /* 3b30 */ NULL, /* 3b31 */ NULL, /* 3b32 */ NULL, /* 3b33 */ NULL, /* 3b34 */ NULL, /* 3b35 */ NULL, /* 3b36 */ NULL, /* 3b37 */ NULL, /* 3b38 */ NULL, /* 3b39 */ NULL, /* 3b3a */ NULL, /* 3b3b */ NULL, /* 3b3c */ NULL, /* 3b3d */ NULL, /* 3b3e */ NULL, /* 3b3f */ NULL, /* 3b40 */ NULL, /* 3b41 */ NULL, /* 3b42 */ NULL, /* 3b43 */ NULL, /* 3b44 */ NULL, /* 3b45 */ NULL, /* 3b46 */ NULL, /* 3b47 */ NULL, /* 3b48 */ NULL, /* 3b49 */ NULL, /* 3b4a */ NULL, /* 3b4b */ NULL, /* 3b4c */ NULL, /* 3b4d */ NULL, /* 3b4e */ NULL, /* 3b4f */ NULL, /* 3b50 */ NULL, /* 3b51 */ NULL, /* 3b52 */ NULL, /* 3b53 */ NULL, /* 3b54 */ NULL, /* 3b55 */ NULL, /* 3b56 */ NULL, /* 3b57 */ NULL, /* 3b58 */ NULL, /* 3b59 */ NULL, /* 3b5a */ NULL, /* 3b5b */ NULL, /* 3b5c */ NULL, /* 3b5d */ NULL, /* 3b5e */ NULL, /* 3b5f */ NULL, /* 3b60 */ NULL, /* 3b61 */ NULL, /* 3b62 */ NULL, /* 3b63 */ NULL, /* 3b64 */ NULL, /* 3b65 */ NULL, /* 3b66 */ NULL, /* 3b67 */ NULL, /* 3b68 */ NULL, /* 3b69 */ NULL, /* 3b6a */ NULL, /* 3b6b */ NULL, /* 3b6c */ NULL, /* 3b6d */ NULL, /* 3b6e */ NULL, /* 3b6f */ NULL, /* 3b70 */ NULL, /* 3b71 */ NULL, /* 3b72 */ NULL, /* 3b73 */ NULL, /* 3b74 */ NULL, /* 3b75 */ NULL, /* 3b76 */ NULL, /* 3b77 */ NULL, /* 3b78 */ NULL, /* 3b79 */ NULL, /* 3b7a */ NULL, /* 3b7b */ NULL, /* 3b7c */ NULL, /* 3b7d */ NULL, /* 3b7e */ NULL, /* 3b7f */ NULL, /* 3b80 */ NULL, /* 3b81 */ NULL, /* 3b82 */ NULL, /* 3b83 */ NULL, /* 3b84 */ NULL, /* 3b85 */ NULL, /* 3b86 */ NULL, /* 3b87 */ NULL, /* 3b88 */ NULL, /* 3b89 */ NULL, /* 3b8a */ NULL, /* 3b8b */ NULL, /* 3b8c */ NULL, /* 3b8d */ NULL, /* 3b8e */ NULL, /* 3b8f */ NULL, /* 3b90 */ NULL, /* 3b91 */ NULL, /* 3b92 */ NULL, /* 3b93 */ NULL, /* 3b94 */ NULL, /* 3b95 */ NULL, /* 3b96 */ NULL, /* 3b97 */ NULL, /* 3b98 */ NULL, /* 3b99 */ NULL, /* 3b9a */ NULL, /* 3b9b */ NULL, /* 3b9c */ NULL, /* 3b9d */ NULL, /* 3b9e */ NULL, /* 3b9f */ NULL, /* 3ba0 */ NULL, /* 3ba1 */ NULL, /* 3ba2 */ NULL, /* 3ba3 */ NULL, /* 3ba4 */ NULL, /* 3ba5 */ NULL, /* 3ba6 */ NULL, /* 3ba7 */ NULL, /* 3ba8 */ NULL, /* 3ba9 */ NULL, /* 3baa */ NULL, /* 3bab */ NULL, /* 3bac */ NULL, /* 3bad */ NULL, /* 3bae */ NULL, /* 3baf */ NULL, /* 3bb0 */ NULL, /* 3bb1 */ NULL, /* 3bb2 */ NULL, /* 3bb3 */ NULL, /* 3bb4 */ NULL, /* 3bb5 */ NULL, /* 3bb6 */ NULL, /* 3bb7 */ NULL, /* 3bb8 */ NULL, /* 3bb9 */ NULL, /* 3bba */ NULL, /* 3bbb */ NULL, /* 3bbc */ NULL, /* 3bbd */ NULL, /* 3bbe */ NULL, /* 3bbf */ NULL, /* 3bc0 */ NULL, /* 3bc1 */ NULL, /* 3bc2 */ NULL, /* 3bc3 */ NULL, /* 3bc4 */ NULL, /* 3bc5 */ NULL, /* 3bc6 */ NULL, /* 3bc7 */ NULL, /* 3bc8 */ NULL, /* 3bc9 */ NULL, /* 3bca */ NULL, /* 3bcb */ NULL, /* 3bcc */ NULL, /* 3bcd */ NULL, /* 3bce */ NULL, /* 3bcf */ NULL, /* 3bd0 */ NULL, /* 3bd1 */ NULL, /* 3bd2 */ NULL, /* 3bd3 */ NULL, /* 3bd4 */ NULL, /* 3bd5 */ NULL, /* 3bd6 */ NULL, /* 3bd7 */ NULL, /* 3bd8 */ NULL, /* 3bd9 */ NULL, /* 3bda */ NULL, /* 3bdb */ NULL, /* 3bdc */ NULL, /* 3bdd */ NULL, /* 3bde */ NULL, /* 3bdf */ NULL, /* 3be0 */ NULL, /* 3be1 */ NULL, /* 3be2 */ NULL, /* 3be3 */ NULL, /* 3be4 */ NULL, /* 3be5 */ NULL, /* 3be6 */ NULL, /* 3be7 */ NULL, /* 3be8 */ NULL, /* 3be9 */ NULL, /* 3bea */ NULL, /* 3beb */ NULL, /* 3bec */ NULL, /* 3bed */ NULL, /* 3bee */ NULL, /* 3bef */ NULL, /* 3bf0 */ NULL, /* 3bf1 */ NULL, /* 3bf2 */ NULL, /* 3bf3 */ NULL, /* 3bf4 */ NULL, /* 3bf5 */ NULL, /* 3bf6 */ NULL, /* 3bf7 */ NULL, /* 3bf8 */ NULL, /* 3bf9 */ NULL, /* 3bfa */ NULL, /* 3bfb */ NULL, /* 3bfc */ NULL, /* 3bfd */ NULL, /* 3bfe */ NULL, /* 3bff */ NULL, /* 3c00 */ NULL, /* 3c01 */ NULL, /* 3c02 */ NULL, /* 3c03 */ NULL, /* 3c04 */ NULL, /* 3c05 */ NULL, /* 3c06 */ NULL, /* 3c07 */ NULL, /* 3c08 */ NULL, /* 3c09 */ NULL, /* 3c0a */ NULL, /* 3c0b */ NULL, /* 3c0c */ NULL, /* 3c0d */ NULL, /* 3c0e */ NULL, /* 3c0f */ NULL, /* 3c10 */ NULL, /* 3c11 */ NULL, /* 3c12 */ NULL, /* 3c13 */ NULL, /* 3c14 */ NULL, /* 3c15 */ NULL, /* 3c16 */ NULL, /* 3c17 */ NULL, /* 3c18 */ NULL, /* 3c19 */ NULL, /* 3c1a */ NULL, /* 3c1b */ NULL, /* 3c1c */ NULL, /* 3c1d */ NULL, /* 3c1e */ NULL, /* 3c1f */ NULL, /* 3c20 */ NULL, /* 3c21 */ NULL, /* 3c22 */ NULL, /* 3c23 */ NULL, /* 3c24 */ NULL, /* 3c25 */ NULL, /* 3c26 */ NULL, /* 3c27 */ NULL, /* 3c28 */ NULL, /* 3c29 */ NULL, /* 3c2a */ NULL, /* 3c2b */ NULL, /* 3c2c */ NULL, /* 3c2d */ NULL, /* 3c2e */ NULL, /* 3c2f */ NULL, /* 3c30 */ NULL, /* 3c31 */ NULL, /* 3c32 */ NULL, /* 3c33 */ NULL, /* 3c34 */ NULL, /* 3c35 */ NULL, /* 3c36 */ NULL, /* 3c37 */ NULL, /* 3c38 */ NULL, /* 3c39 */ NULL, /* 3c3a */ NULL, /* 3c3b */ NULL, /* 3c3c */ NULL, /* 3c3d */ NULL, /* 3c3e */ NULL, /* 3c3f */ NULL, /* 3c40 */ NULL, /* 3c41 */ NULL, /* 3c42 */ NULL, /* 3c43 */ NULL, /* 3c44 */ NULL, /* 3c45 */ NULL, /* 3c46 */ NULL, /* 3c47 */ NULL, /* 3c48 */ NULL, /* 3c49 */ NULL, /* 3c4a */ NULL, /* 3c4b */ NULL, /* 3c4c */ NULL, /* 3c4d */ NULL, /* 3c4e */ NULL, /* 3c4f */ NULL, /* 3c50 */ NULL, /* 3c51 */ NULL, /* 3c52 */ NULL, /* 3c53 */ NULL, /* 3c54 */ NULL, /* 3c55 */ NULL, /* 3c56 */ NULL, /* 3c57 */ NULL, /* 3c58 */ NULL, /* 3c59 */ NULL, /* 3c5a */ NULL, /* 3c5b */ NULL, /* 3c5c */ NULL, /* 3c5d */ NULL, /* 3c5e */ NULL, /* 3c5f */ NULL, /* 3c60 */ NULL, /* 3c61 */ NULL, /* 3c62 */ NULL, /* 3c63 */ NULL, /* 3c64 */ NULL, /* 3c65 */ NULL, /* 3c66 */ NULL, /* 3c67 */ NULL, /* 3c68 */ NULL, /* 3c69 */ NULL, /* 3c6a */ NULL, /* 3c6b */ NULL, /* 3c6c */ NULL, /* 3c6d */ NULL, /* 3c6e */ NULL, /* 3c6f */ NULL, /* 3c70 */ NULL, /* 3c71 */ NULL, /* 3c72 */ NULL, /* 3c73 */ NULL, /* 3c74 */ NULL, /* 3c75 */ NULL, /* 3c76 */ NULL, /* 3c77 */ NULL, /* 3c78 */ NULL, /* 3c79 */ NULL, /* 3c7a */ NULL, /* 3c7b */ NULL, /* 3c7c */ NULL, /* 3c7d */ NULL, /* 3c7e */ NULL, /* 3c7f */ NULL, /* 3c80 */ NULL, /* 3c81 */ NULL, /* 3c82 */ NULL, /* 3c83 */ NULL, /* 3c84 */ NULL, /* 3c85 */ NULL, /* 3c86 */ NULL, /* 3c87 */ NULL, /* 3c88 */ NULL, /* 3c89 */ NULL, /* 3c8a */ NULL, /* 3c8b */ NULL, /* 3c8c */ NULL, /* 3c8d */ NULL, /* 3c8e */ NULL, /* 3c8f */ NULL, /* 3c90 */ NULL, /* 3c91 */ NULL, /* 3c92 */ NULL, /* 3c93 */ NULL, /* 3c94 */ NULL, /* 3c95 */ NULL, /* 3c96 */ NULL, /* 3c97 */ NULL, /* 3c98 */ NULL, /* 3c99 */ NULL, /* 3c9a */ NULL, /* 3c9b */ NULL, /* 3c9c */ NULL, /* 3c9d */ NULL, /* 3c9e */ NULL, /* 3c9f */ NULL, /* 3ca0 */ NULL, /* 3ca1 */ NULL, /* 3ca2 */ NULL, /* 3ca3 */ NULL, /* 3ca4 */ NULL, /* 3ca5 */ NULL, /* 3ca6 */ NULL, /* 3ca7 */ NULL, /* 3ca8 */ NULL, /* 3ca9 */ NULL, /* 3caa */ NULL, /* 3cab */ NULL, /* 3cac */ NULL, /* 3cad */ NULL, /* 3cae */ NULL, /* 3caf */ NULL, /* 3cb0 */ NULL, /* 3cb1 */ NULL, /* 3cb2 */ NULL, /* 3cb3 */ NULL, /* 3cb4 */ NULL, /* 3cb5 */ NULL, /* 3cb6 */ NULL, /* 3cb7 */ NULL, /* 3cb8 */ NULL, /* 3cb9 */ NULL, /* 3cba */ NULL, /* 3cbb */ NULL, /* 3cbc */ NULL, /* 3cbd */ NULL, /* 3cbe */ NULL, /* 3cbf */ NULL, /* 3cc0 */ NULL, /* 3cc1 */ NULL, /* 3cc2 */ NULL, /* 3cc3 */ NULL, /* 3cc4 */ NULL, /* 3cc5 */ NULL, /* 3cc6 */ NULL, /* 3cc7 */ NULL, /* 3cc8 */ NULL, /* 3cc9 */ NULL, /* 3cca */ NULL, /* 3ccb */ NULL, /* 3ccc */ NULL, /* 3ccd */ NULL, /* 3cce */ NULL, /* 3ccf */ NULL, /* 3cd0 */ NULL, /* 3cd1 */ NULL, /* 3cd2 */ NULL, /* 3cd3 */ NULL, /* 3cd4 */ NULL, /* 3cd5 */ NULL, /* 3cd6 */ NULL, /* 3cd7 */ NULL, /* 3cd8 */ NULL, /* 3cd9 */ NULL, /* 3cda */ NULL, /* 3cdb */ NULL, /* 3cdc */ NULL, /* 3cdd */ NULL, /* 3cde */ NULL, /* 3cdf */ NULL, /* 3ce0 */ NULL, /* 3ce1 */ NULL, /* 3ce2 */ NULL, /* 3ce3 */ NULL, /* 3ce4 */ NULL, /* 3ce5 */ NULL, /* 3ce6 */ NULL, /* 3ce7 */ NULL, /* 3ce8 */ NULL, /* 3ce9 */ NULL, /* 3cea */ NULL, /* 3ceb */ NULL, /* 3cec */ NULL, /* 3ced */ NULL, /* 3cee */ NULL, /* 3cef */ NULL, /* 3cf0 */ NULL, /* 3cf1 */ NULL, /* 3cf2 */ NULL, /* 3cf3 */ NULL, /* 3cf4 */ NULL, /* 3cf5 */ NULL, /* 3cf6 */ NULL, /* 3cf7 */ NULL, /* 3cf8 */ NULL, /* 3cf9 */ NULL, /* 3cfa */ NULL, /* 3cfb */ NULL, /* 3cfc */ NULL, /* 3cfd */ NULL, /* 3cfe */ NULL, /* 3cff */ NULL, /* 3d00 */ NULL, /* 3d01 */ NULL, /* 3d02 */ NULL, /* 3d03 */ NULL, /* 3d04 */ NULL, /* 3d05 */ NULL, /* 3d06 */ NULL, /* 3d07 */ NULL, /* 3d08 */ NULL, /* 3d09 */ NULL, /* 3d0a */ NULL, /* 3d0b */ NULL, /* 3d0c */ NULL, /* 3d0d */ NULL, /* 3d0e */ NULL, /* 3d0f */ NULL, /* 3d10 */ NULL, /* 3d11 */ NULL, /* 3d12 */ NULL, /* 3d13 */ NULL, /* 3d14 */ NULL, /* 3d15 */ NULL, /* 3d16 */ NULL, /* 3d17 */ NULL, /* 3d18 */ NULL, /* 3d19 */ NULL, /* 3d1a */ NULL, /* 3d1b */ NULL, /* 3d1c */ NULL, /* 3d1d */ NULL, /* 3d1e */ NULL, /* 3d1f */ NULL, /* 3d20 */ NULL, /* 3d21 */ NULL, /* 3d22 */ NULL, /* 3d23 */ NULL, /* 3d24 */ NULL, /* 3d25 */ NULL, /* 3d26 */ NULL, /* 3d27 */ NULL, /* 3d28 */ NULL, /* 3d29 */ NULL, /* 3d2a */ NULL, /* 3d2b */ NULL, /* 3d2c */ NULL, /* 3d2d */ NULL, /* 3d2e */ NULL, /* 3d2f */ NULL, /* 3d30 */ NULL, /* 3d31 */ NULL, /* 3d32 */ NULL, /* 3d33 */ NULL, /* 3d34 */ NULL, /* 3d35 */ NULL, /* 3d36 */ NULL, /* 3d37 */ NULL, /* 3d38 */ NULL, /* 3d39 */ NULL, /* 3d3a */ NULL, /* 3d3b */ NULL, /* 3d3c */ NULL, /* 3d3d */ NULL, /* 3d3e */ NULL, /* 3d3f */ NULL, /* 3d40 */ NULL, /* 3d41 */ NULL, /* 3d42 */ NULL, /* 3d43 */ NULL, /* 3d44 */ NULL, /* 3d45 */ NULL, /* 3d46 */ NULL, /* 3d47 */ NULL, /* 3d48 */ NULL, /* 3d49 */ NULL, /* 3d4a */ NULL, /* 3d4b */ NULL, /* 3d4c */ NULL, /* 3d4d */ NULL, /* 3d4e */ NULL, /* 3d4f */ NULL, /* 3d50 */ NULL, /* 3d51 */ NULL, /* 3d52 */ NULL, /* 3d53 */ NULL, /* 3d54 */ NULL, /* 3d55 */ NULL, /* 3d56 */ NULL, /* 3d57 */ NULL, /* 3d58 */ NULL, /* 3d59 */ NULL, /* 3d5a */ NULL, /* 3d5b */ NULL, /* 3d5c */ NULL, /* 3d5d */ NULL, /* 3d5e */ NULL, /* 3d5f */ NULL, /* 3d60 */ NULL, /* 3d61 */ NULL, /* 3d62 */ NULL, /* 3d63 */ NULL, /* 3d64 */ NULL, /* 3d65 */ NULL, /* 3d66 */ NULL, /* 3d67 */ NULL, /* 3d68 */ NULL, /* 3d69 */ NULL, /* 3d6a */ NULL, /* 3d6b */ NULL, /* 3d6c */ NULL, /* 3d6d */ NULL, /* 3d6e */ NULL, /* 3d6f */ NULL, /* 3d70 */ NULL, /* 3d71 */ NULL, /* 3d72 */ NULL, /* 3d73 */ NULL, /* 3d74 */ NULL, /* 3d75 */ NULL, /* 3d76 */ NULL, /* 3d77 */ NULL, /* 3d78 */ NULL, /* 3d79 */ NULL, /* 3d7a */ NULL, /* 3d7b */ NULL, /* 3d7c */ NULL, /* 3d7d */ NULL, /* 3d7e */ NULL, /* 3d7f */ NULL, /* 3d80 */ NULL, /* 3d81 */ NULL, /* 3d82 */ NULL, /* 3d83 */ NULL, /* 3d84 */ NULL, /* 3d85 */ NULL, /* 3d86 */ NULL, /* 3d87 */ NULL, /* 3d88 */ NULL, /* 3d89 */ NULL, /* 3d8a */ NULL, /* 3d8b */ NULL, /* 3d8c */ NULL, /* 3d8d */ NULL, /* 3d8e */ NULL, /* 3d8f */ NULL, /* 3d90 */ NULL, /* 3d91 */ NULL, /* 3d92 */ NULL, /* 3d93 */ NULL, /* 3d94 */ NULL, /* 3d95 */ NULL, /* 3d96 */ NULL, /* 3d97 */ NULL, /* 3d98 */ NULL, /* 3d99 */ NULL, /* 3d9a */ NULL, /* 3d9b */ NULL, /* 3d9c */ NULL, /* 3d9d */ NULL, /* 3d9e */ NULL, /* 3d9f */ NULL, /* 3da0 */ NULL, /* 3da1 */ NULL, /* 3da2 */ NULL, /* 3da3 */ NULL, /* 3da4 */ NULL, /* 3da5 */ NULL, /* 3da6 */ NULL, /* 3da7 */ NULL, /* 3da8 */ NULL, /* 3da9 */ NULL, /* 3daa */ NULL, /* 3dab */ NULL, /* 3dac */ NULL, /* 3dad */ NULL, /* 3dae */ NULL, /* 3daf */ NULL, /* 3db0 */ NULL, /* 3db1 */ NULL, /* 3db2 */ NULL, /* 3db3 */ NULL, /* 3db4 */ NULL, /* 3db5 */ NULL, /* 3db6 */ NULL, /* 3db7 */ NULL, /* 3db8 */ NULL, /* 3db9 */ NULL, /* 3dba */ NULL, /* 3dbb */ NULL, /* 3dbc */ NULL, /* 3dbd */ NULL, /* 3dbe */ NULL, /* 3dbf */ NULL, /* 3dc0 */ NULL, /* 3dc1 */ NULL, /* 3dc2 */ NULL, /* 3dc3 */ NULL, /* 3dc4 */ NULL, /* 3dc5 */ NULL, /* 3dc6 */ NULL, /* 3dc7 */ NULL, /* 3dc8 */ NULL, /* 3dc9 */ NULL, /* 3dca */ NULL, /* 3dcb */ NULL, /* 3dcc */ NULL, /* 3dcd */ NULL, /* 3dce */ NULL, /* 3dcf */ NULL, /* 3dd0 */ NULL, /* 3dd1 */ NULL, /* 3dd2 */ NULL, /* 3dd3 */ NULL, /* 3dd4 */ NULL, /* 3dd5 */ NULL, /* 3dd6 */ NULL, /* 3dd7 */ NULL, /* 3dd8 */ NULL, /* 3dd9 */ NULL, /* 3dda */ NULL, /* 3ddb */ NULL, /* 3ddc */ NULL, /* 3ddd */ NULL, /* 3dde */ NULL, /* 3ddf */ NULL, /* 3de0 */ NULL, /* 3de1 */ NULL, /* 3de2 */ NULL, /* 3de3 */ NULL, /* 3de4 */ NULL, /* 3de5 */ NULL, /* 3de6 */ NULL, /* 3de7 */ NULL, /* 3de8 */ NULL, /* 3de9 */ NULL, /* 3dea */ NULL, /* 3deb */ NULL, /* 3dec */ NULL, /* 3ded */ NULL, /* 3dee */ NULL, /* 3def */ NULL, /* 3df0 */ NULL, /* 3df1 */ NULL, /* 3df2 */ NULL, /* 3df3 */ NULL, /* 3df4 */ NULL, /* 3df5 */ NULL, /* 3df6 */ NULL, /* 3df7 */ NULL, /* 3df8 */ NULL, /* 3df9 */ NULL, /* 3dfa */ NULL, /* 3dfb */ NULL, /* 3dfc */ NULL, /* 3dfd */ NULL, /* 3dfe */ NULL, /* 3dff */ NULL, /* 3e00 */ NULL, /* 3e01 */ NULL, /* 3e02 */ NULL, /* 3e03 */ NULL, /* 3e04 */ NULL, /* 3e05 */ NULL, /* 3e06 */ NULL, /* 3e07 */ NULL, /* 3e08 */ NULL, /* 3e09 */ NULL, /* 3e0a */ NULL, /* 3e0b */ NULL, /* 3e0c */ NULL, /* 3e0d */ NULL, /* 3e0e */ NULL, /* 3e0f */ NULL, /* 3e10 */ NULL, /* 3e11 */ NULL, /* 3e12 */ NULL, /* 3e13 */ NULL, /* 3e14 */ NULL, /* 3e15 */ NULL, /* 3e16 */ NULL, /* 3e17 */ NULL, /* 3e18 */ NULL, /* 3e19 */ NULL, /* 3e1a */ NULL, /* 3e1b */ NULL, /* 3e1c */ NULL, /* 3e1d */ NULL, /* 3e1e */ NULL, /* 3e1f */ NULL, /* 3e20 */ NULL, /* 3e21 */ NULL, /* 3e22 */ NULL, /* 3e23 */ NULL, /* 3e24 */ NULL, /* 3e25 */ NULL, /* 3e26 */ NULL, /* 3e27 */ NULL, /* 3e28 */ NULL, /* 3e29 */ NULL, /* 3e2a */ NULL, /* 3e2b */ NULL, /* 3e2c */ NULL, /* 3e2d */ NULL, /* 3e2e */ NULL, /* 3e2f */ NULL, /* 3e30 */ NULL, /* 3e31 */ NULL, /* 3e32 */ NULL, /* 3e33 */ NULL, /* 3e34 */ NULL, /* 3e35 */ NULL, /* 3e36 */ NULL, /* 3e37 */ NULL, /* 3e38 */ NULL, /* 3e39 */ NULL, /* 3e3a */ NULL, /* 3e3b */ NULL, /* 3e3c */ NULL, /* 3e3d */ NULL, /* 3e3e */ NULL, /* 3e3f */ NULL, /* 3e40 */ NULL, /* 3e41 */ NULL, /* 3e42 */ NULL, /* 3e43 */ NULL, /* 3e44 */ NULL, /* 3e45 */ NULL, /* 3e46 */ NULL, /* 3e47 */ NULL, /* 3e48 */ NULL, /* 3e49 */ NULL, /* 3e4a */ NULL, /* 3e4b */ NULL, /* 3e4c */ NULL, /* 3e4d */ NULL, /* 3e4e */ NULL, /* 3e4f */ NULL, /* 3e50 */ NULL, /* 3e51 */ NULL, /* 3e52 */ NULL, /* 3e53 */ NULL, /* 3e54 */ NULL, /* 3e55 */ NULL, /* 3e56 */ NULL, /* 3e57 */ NULL, /* 3e58 */ NULL, /* 3e59 */ NULL, /* 3e5a */ NULL, /* 3e5b */ NULL, /* 3e5c */ NULL, /* 3e5d */ NULL, /* 3e5e */ NULL, /* 3e5f */ NULL, /* 3e60 */ NULL, /* 3e61 */ NULL, /* 3e62 */ NULL, /* 3e63 */ NULL, /* 3e64 */ NULL, /* 3e65 */ NULL, /* 3e66 */ NULL, /* 3e67 */ NULL, /* 3e68 */ NULL, /* 3e69 */ NULL, /* 3e6a */ NULL, /* 3e6b */ NULL, /* 3e6c */ NULL, /* 3e6d */ NULL, /* 3e6e */ NULL, /* 3e6f */ NULL, /* 3e70 */ NULL, /* 3e71 */ NULL, /* 3e72 */ NULL, /* 3e73 */ NULL, /* 3e74 */ NULL, /* 3e75 */ NULL, /* 3e76 */ NULL, /* 3e77 */ NULL, /* 3e78 */ NULL, /* 3e79 */ NULL, /* 3e7a */ NULL, /* 3e7b */ NULL, /* 3e7c */ NULL, /* 3e7d */ NULL, /* 3e7e */ NULL, /* 3e7f */ NULL, /* 3e80 */ NULL, /* 3e81 */ NULL, /* 3e82 */ NULL, /* 3e83 */ NULL, /* 3e84 */ NULL, /* 3e85 */ NULL, /* 3e86 */ NULL, /* 3e87 */ NULL, /* 3e88 */ NULL, /* 3e89 */ NULL, /* 3e8a */ NULL, /* 3e8b */ NULL, /* 3e8c */ NULL, /* 3e8d */ NULL, /* 3e8e */ NULL, /* 3e8f */ NULL, /* 3e90 */ NULL, /* 3e91 */ NULL, /* 3e92 */ NULL, /* 3e93 */ NULL, /* 3e94 */ NULL, /* 3e95 */ NULL, /* 3e96 */ NULL, /* 3e97 */ NULL, /* 3e98 */ NULL, /* 3e99 */ NULL, /* 3e9a */ NULL, /* 3e9b */ NULL, /* 3e9c */ NULL, /* 3e9d */ NULL, /* 3e9e */ NULL, /* 3e9f */ NULL, /* 3ea0 */ NULL, /* 3ea1 */ NULL, /* 3ea2 */ NULL, /* 3ea3 */ NULL, /* 3ea4 */ NULL, /* 3ea5 */ NULL, /* 3ea6 */ NULL, /* 3ea7 */ NULL, /* 3ea8 */ NULL, /* 3ea9 */ NULL, /* 3eaa */ NULL, /* 3eab */ NULL, /* 3eac */ NULL, /* 3ead */ NULL, /* 3eae */ NULL, /* 3eaf */ NULL, /* 3eb0 */ NULL, /* 3eb1 */ NULL, /* 3eb2 */ NULL, /* 3eb3 */ NULL, /* 3eb4 */ NULL, /* 3eb5 */ NULL, /* 3eb6 */ NULL, /* 3eb7 */ NULL, /* 3eb8 */ NULL, /* 3eb9 */ NULL, /* 3eba */ NULL, /* 3ebb */ NULL, /* 3ebc */ NULL, /* 3ebd */ NULL, /* 3ebe */ NULL, /* 3ebf */ NULL, /* 3ec0 */ NULL, /* 3ec1 */ NULL, /* 3ec2 */ NULL, /* 3ec3 */ NULL, /* 3ec4 */ NULL, /* 3ec5 */ NULL, /* 3ec6 */ NULL, /* 3ec7 */ NULL, /* 3ec8 */ NULL, /* 3ec9 */ NULL, /* 3eca */ NULL, /* 3ecb */ NULL, /* 3ecc */ NULL, /* 3ecd */ NULL, /* 3ece */ NULL, /* 3ecf */ NULL, /* 3ed0 */ NULL, /* 3ed1 */ NULL, /* 3ed2 */ NULL, /* 3ed3 */ NULL, /* 3ed4 */ NULL, /* 3ed5 */ NULL, /* 3ed6 */ NULL, /* 3ed7 */ NULL, /* 3ed8 */ NULL, /* 3ed9 */ NULL, /* 3eda */ NULL, /* 3edb */ NULL, /* 3edc */ NULL, /* 3edd */ NULL, /* 3ede */ NULL, /* 3edf */ NULL, /* 3ee0 */ NULL, /* 3ee1 */ NULL, /* 3ee2 */ NULL, /* 3ee3 */ NULL, /* 3ee4 */ NULL, /* 3ee5 */ NULL, /* 3ee6 */ NULL, /* 3ee7 */ NULL, /* 3ee8 */ NULL, /* 3ee9 */ NULL, /* 3eea */ NULL, /* 3eeb */ NULL, /* 3eec */ NULL, /* 3eed */ NULL, /* 3eee */ NULL, /* 3eef */ NULL, /* 3ef0 */ NULL, /* 3ef1 */ NULL, /* 3ef2 */ NULL, /* 3ef3 */ NULL, /* 3ef4 */ NULL, /* 3ef5 */ NULL, /* 3ef6 */ NULL, /* 3ef7 */ NULL, /* 3ef8 */ NULL, /* 3ef9 */ NULL, /* 3efa */ NULL, /* 3efb */ NULL, /* 3efc */ NULL, /* 3efd */ NULL, /* 3efe */ NULL, /* 3eff */ NULL, /* 3f00 */ NULL, /* 3f01 */ NULL, /* 3f02 */ NULL, /* 3f03 */ NULL, /* 3f04 */ NULL, /* 3f05 */ NULL, /* 3f06 */ NULL, /* 3f07 */ NULL, /* 3f08 */ NULL, /* 3f09 */ NULL, /* 3f0a */ NULL, /* 3f0b */ NULL, /* 3f0c */ NULL, /* 3f0d */ NULL, /* 3f0e */ NULL, /* 3f0f */ NULL, /* 3f10 */ NULL, /* 3f11 */ NULL, /* 3f12 */ NULL, /* 3f13 */ NULL, /* 3f14 */ NULL, /* 3f15 */ NULL, /* 3f16 */ NULL, /* 3f17 */ NULL, /* 3f18 */ NULL, /* 3f19 */ NULL, /* 3f1a */ NULL, /* 3f1b */ NULL, /* 3f1c */ NULL, /* 3f1d */ NULL, /* 3f1e */ NULL, /* 3f1f */ NULL, /* 3f20 */ NULL, /* 3f21 */ NULL, /* 3f22 */ NULL, /* 3f23 */ NULL, /* 3f24 */ NULL, /* 3f25 */ NULL, /* 3f26 */ NULL, /* 3f27 */ NULL, /* 3f28 */ NULL, /* 3f29 */ NULL, /* 3f2a */ NULL, /* 3f2b */ NULL, /* 3f2c */ NULL, /* 3f2d */ NULL, /* 3f2e */ NULL, /* 3f2f */ NULL, /* 3f30 */ NULL, /* 3f31 */ NULL, /* 3f32 */ NULL, /* 3f33 */ NULL, /* 3f34 */ NULL, /* 3f35 */ NULL, /* 3f36 */ NULL, /* 3f37 */ NULL, /* 3f38 */ NULL, /* 3f39 */ NULL, /* 3f3a */ NULL, /* 3f3b */ NULL, /* 3f3c */ NULL, /* 3f3d */ NULL, /* 3f3e */ NULL, /* 3f3f */ NULL, /* 3f40 */ NULL, /* 3f41 */ NULL, /* 3f42 */ NULL, /* 3f43 */ NULL, /* 3f44 */ NULL, /* 3f45 */ NULL, /* 3f46 */ NULL, /* 3f47 */ NULL, /* 3f48 */ NULL, /* 3f49 */ NULL, /* 3f4a */ NULL, /* 3f4b */ NULL, /* 3f4c */ NULL, /* 3f4d */ NULL, /* 3f4e */ NULL, /* 3f4f */ NULL, /* 3f50 */ NULL, /* 3f51 */ NULL, /* 3f52 */ NULL, /* 3f53 */ NULL, /* 3f54 */ NULL, /* 3f55 */ NULL, /* 3f56 */ NULL, /* 3f57 */ NULL, /* 3f58 */ NULL, /* 3f59 */ NULL, /* 3f5a */ NULL, /* 3f5b */ NULL, /* 3f5c */ NULL, /* 3f5d */ NULL, /* 3f5e */ NULL, /* 3f5f */ NULL, /* 3f60 */ NULL, /* 3f61 */ NULL, /* 3f62 */ NULL, /* 3f63 */ NULL, /* 3f64 */ NULL, /* 3f65 */ NULL, /* 3f66 */ NULL, /* 3f67 */ NULL, /* 3f68 */ NULL, /* 3f69 */ NULL, /* 3f6a */ NULL, /* 3f6b */ NULL, /* 3f6c */ NULL, /* 3f6d */ NULL, /* 3f6e */ NULL, /* 3f6f */ NULL, /* 3f70 */ NULL, /* 3f71 */ NULL, /* 3f72 */ NULL, /* 3f73 */ NULL, /* 3f74 */ NULL, /* 3f75 */ NULL, /* 3f76 */ NULL, /* 3f77 */ NULL, /* 3f78 */ NULL, /* 3f79 */ NULL, /* 3f7a */ NULL, /* 3f7b */ NULL, /* 3f7c */ NULL, /* 3f7d */ NULL, /* 3f7e */ NULL, /* 3f7f */ NULL, /* 3f80 */ NULL, /* 3f81 */ NULL, /* 3f82 */ NULL, /* 3f83 */ NULL, /* 3f84 */ NULL, /* 3f85 */ NULL, /* 3f86 */ NULL, /* 3f87 */ NULL, /* 3f88 */ NULL, /* 3f89 */ NULL, /* 3f8a */ NULL, /* 3f8b */ NULL, /* 3f8c */ NULL, /* 3f8d */ NULL, /* 3f8e */ NULL, /* 3f8f */ NULL, /* 3f90 */ NULL, /* 3f91 */ NULL, /* 3f92 */ NULL, /* 3f93 */ NULL, /* 3f94 */ NULL, /* 3f95 */ NULL, /* 3f96 */ NULL, /* 3f97 */ NULL, /* 3f98 */ NULL, /* 3f99 */ NULL, /* 3f9a */ NULL, /* 3f9b */ NULL, /* 3f9c */ NULL, /* 3f9d */ NULL, /* 3f9e */ NULL, /* 3f9f */ NULL, /* 3fa0 */ NULL, /* 3fa1 */ NULL, /* 3fa2 */ NULL, /* 3fa3 */ NULL, /* 3fa4 */ NULL, /* 3fa5 */ NULL, /* 3fa6 */ NULL, /* 3fa7 */ NULL, /* 3fa8 */ NULL, /* 3fa9 */ NULL, /* 3faa */ NULL, /* 3fab */ NULL, /* 3fac */ NULL, /* 3fad */ NULL, /* 3fae */ NULL, /* 3faf */ NULL, /* 3fb0 */ NULL, /* 3fb1 */ NULL, /* 3fb2 */ NULL, /* 3fb3 */ NULL, /* 3fb4 */ NULL, /* 3fb5 */ NULL, /* 3fb6 */ NULL, /* 3fb7 */ NULL, /* 3fb8 */ NULL, /* 3fb9 */ NULL, /* 3fba */ NULL, /* 3fbb */ NULL, /* 3fbc */ NULL, /* 3fbd */ NULL, /* 3fbe */ NULL, /* 3fbf */ NULL, /* 3fc0 */ NULL, /* 3fc1 */ NULL, /* 3fc2 */ NULL, /* 3fc3 */ NULL, /* 3fc4 */ NULL, /* 3fc5 */ NULL, /* 3fc6 */ NULL, /* 3fc7 */ NULL, /* 3fc8 */ NULL, /* 3fc9 */ NULL, /* 3fca */ NULL, /* 3fcb */ NULL, /* 3fcc */ NULL, /* 3fcd */ NULL, /* 3fce */ NULL, /* 3fcf */ NULL, /* 3fd0 */ NULL, /* 3fd1 */ NULL, /* 3fd2 */ NULL, /* 3fd3 */ NULL, /* 3fd4 */ NULL, /* 3fd5 */ NULL, /* 3fd6 */ NULL, /* 3fd7 */ NULL, /* 3fd8 */ NULL, /* 3fd9 */ NULL, /* 3fda */ NULL, /* 3fdb */ NULL, /* 3fdc */ NULL, /* 3fdd */ NULL, /* 3fde */ NULL, /* 3fdf */ NULL, /* 3fe0 */ NULL, /* 3fe1 */ NULL, /* 3fe2 */ NULL, /* 3fe3 */ NULL, /* 3fe4 */ NULL, /* 3fe5 */ NULL, /* 3fe6 */ NULL, /* 3fe7 */ NULL, /* 3fe8 */ NULL, /* 3fe9 */ NULL, /* 3fea */ NULL, /* 3feb */ NULL, /* 3fec */ NULL, /* 3fed */ NULL, /* 3fee */ NULL, /* 3fef */ NULL, /* 3ff0 */ NULL, /* 3ff1 */ NULL, /* 3ff2 */ NULL, /* 3ff3 */ NULL, /* 3ff4 */ NULL, /* 3ff5 */ NULL, /* 3ff6 */ NULL, /* 3ff7 */ NULL, /* 3ff8 */ NULL, /* 3ff9 */ NULL, /* 3ffa */ NULL, /* 3ffb */ NULL, /* 3ffc */ NULL, /* 3ffd */ NULL, /* 3ffe */ NULL, /* 3fff */ NULL, /* 4000 */ NULL, /* 4001 */ NULL, /* 4002 */ NULL, /* 4003 */ NULL, /* 4004 */ NULL, /* 4005 */ NULL, /* 4006 */ NULL, /* 4007 */ NULL, /* 4008 */ NULL, /* 4009 */ NULL, /* 400a */ NULL, /* 400b */ NULL, /* 400c */ NULL, /* 400d */ NULL, /* 400e */ NULL, /* 400f */ NULL, /* 4010 */ NULL, /* 4011 */ NULL, /* 4012 */ NULL, /* 4013 */ NULL, /* 4014 */ NULL, /* 4015 */ NULL, /* 4016 */ NULL, /* 4017 */ NULL, /* 4018 */ NULL, /* 4019 */ NULL, /* 401a */ NULL, /* 401b */ NULL, /* 401c */ NULL, /* 401d */ NULL, /* 401e */ NULL, /* 401f */ NULL, /* 4020 */ NULL, /* 4021 */ NULL, /* 4022 */ NULL, /* 4023 */ NULL, /* 4024 */ NULL, /* 4025 */ NULL, /* 4026 */ NULL, /* 4027 */ NULL, /* 4028 */ NULL, /* 4029 */ NULL, /* 402a */ NULL, /* 402b */ NULL, /* 402c */ NULL, /* 402d */ NULL, /* 402e */ NULL, /* 402f */ NULL, /* 4030 */ NULL, /* 4031 */ NULL, /* 4032 */ NULL, /* 4033 */ NULL, /* 4034 */ NULL, /* 4035 */ NULL, /* 4036 */ NULL, /* 4037 */ NULL, /* 4038 */ NULL, /* 4039 */ NULL, /* 403a */ NULL, /* 403b */ NULL, /* 403c */ NULL, /* 403d */ NULL, /* 403e */ NULL, /* 403f */ NULL, /* 4040 */ NULL, /* 4041 */ NULL, /* 4042 */ NULL, /* 4043 */ NULL, /* 4044 */ NULL, /* 4045 */ NULL, /* 4046 */ NULL, /* 4047 */ NULL, /* 4048 */ NULL, /* 4049 */ NULL, /* 404a */ NULL, /* 404b */ NULL, /* 404c */ NULL, /* 404d */ NULL, /* 404e */ NULL, /* 404f */ NULL, /* 4050 */ NULL, /* 4051 */ NULL, /* 4052 */ NULL, /* 4053 */ NULL, /* 4054 */ NULL, /* 4055 */ NULL, /* 4056 */ NULL, /* 4057 */ NULL, /* 4058 */ NULL, /* 4059 */ NULL, /* 405a */ NULL, /* 405b */ NULL, /* 405c */ NULL, /* 405d */ NULL, /* 405e */ NULL, /* 405f */ NULL, /* 4060 */ NULL, /* 4061 */ NULL, /* 4062 */ NULL, /* 4063 */ NULL, /* 4064 */ NULL, /* 4065 */ NULL, /* 4066 */ NULL, /* 4067 */ NULL, /* 4068 */ NULL, /* 4069 */ NULL, /* 406a */ NULL, /* 406b */ NULL, /* 406c */ NULL, /* 406d */ NULL, /* 406e */ NULL, /* 406f */ NULL, /* 4070 */ NULL, /* 4071 */ NULL, /* 4072 */ NULL, /* 4073 */ NULL, /* 4074 */ NULL, /* 4075 */ NULL, /* 4076 */ NULL, /* 4077 */ NULL, /* 4078 */ NULL, /* 4079 */ NULL, /* 407a */ NULL, /* 407b */ NULL, /* 407c */ NULL, /* 407d */ NULL, /* 407e */ NULL, /* 407f */ NULL, /* 4080 */ NULL, /* 4081 */ NULL, /* 4082 */ NULL, /* 4083 */ NULL, /* 4084 */ NULL, /* 4085 */ NULL, /* 4086 */ NULL, /* 4087 */ NULL, /* 4088 */ NULL, /* 4089 */ NULL, /* 408a */ NULL, /* 408b */ NULL, /* 408c */ NULL, /* 408d */ NULL, /* 408e */ NULL, /* 408f */ NULL, /* 4090 */ NULL, /* 4091 */ NULL, /* 4092 */ NULL, /* 4093 */ NULL, /* 4094 */ NULL, /* 4095 */ NULL, /* 4096 */ NULL, /* 4097 */ NULL, /* 4098 */ NULL, /* 4099 */ NULL, /* 409a */ NULL, /* 409b */ NULL, /* 409c */ NULL, /* 409d */ NULL, /* 409e */ NULL, /* 409f */ NULL, /* 40a0 */ NULL, /* 40a1 */ NULL, /* 40a2 */ NULL, /* 40a3 */ NULL, /* 40a4 */ NULL, /* 40a5 */ NULL, /* 40a6 */ NULL, /* 40a7 */ NULL, /* 40a8 */ NULL, /* 40a9 */ NULL, /* 40aa */ NULL, /* 40ab */ NULL, /* 40ac */ NULL, /* 40ad */ NULL, /* 40ae */ NULL, /* 40af */ NULL, /* 40b0 */ NULL, /* 40b1 */ NULL, /* 40b2 */ NULL, /* 40b3 */ NULL, /* 40b4 */ NULL, /* 40b5 */ NULL, /* 40b6 */ NULL, /* 40b7 */ NULL, /* 40b8 */ NULL, /* 40b9 */ NULL, /* 40ba */ NULL, /* 40bb */ NULL, /* 40bc */ NULL, /* 40bd */ NULL, /* 40be */ NULL, /* 40bf */ NULL, /* 40c0 */ NULL, /* 40c1 */ NULL, /* 40c2 */ NULL, /* 40c3 */ NULL, /* 40c4 */ NULL, /* 40c5 */ NULL, /* 40c6 */ NULL, /* 40c7 */ NULL, /* 40c8 */ NULL, /* 40c9 */ NULL, /* 40ca */ NULL, /* 40cb */ NULL, /* 40cc */ NULL, /* 40cd */ NULL, /* 40ce */ NULL, /* 40cf */ NULL, /* 40d0 */ NULL, /* 40d1 */ NULL, /* 40d2 */ NULL, /* 40d3 */ NULL, /* 40d4 */ NULL, /* 40d5 */ NULL, /* 40d6 */ NULL, /* 40d7 */ NULL, /* 40d8 */ NULL, /* 40d9 */ NULL, /* 40da */ NULL, /* 40db */ NULL, /* 40dc */ NULL, /* 40dd */ NULL, /* 40de */ NULL, /* 40df */ NULL, /* 40e0 */ NULL, /* 40e1 */ NULL, /* 40e2 */ NULL, /* 40e3 */ NULL, /* 40e4 */ NULL, /* 40e5 */ NULL, /* 40e6 */ NULL, /* 40e7 */ NULL, /* 40e8 */ NULL, /* 40e9 */ NULL, /* 40ea */ NULL, /* 40eb */ NULL, /* 40ec */ NULL, /* 40ed */ NULL, /* 40ee */ NULL, /* 40ef */ NULL, /* 40f0 */ NULL, /* 40f1 */ NULL, /* 40f2 */ NULL, /* 40f3 */ NULL, /* 40f4 */ NULL, /* 40f5 */ NULL, /* 40f6 */ NULL, /* 40f7 */ NULL, /* 40f8 */ NULL, /* 40f9 */ NULL, /* 40fa */ NULL, /* 40fb */ NULL, /* 40fc */ NULL, /* 40fd */ NULL, /* 40fe */ NULL, /* 40ff */ NULL, /* 4100 */ NULL, /* 4101 */ NULL, /* 4102 */ NULL, /* 4103 */ NULL, /* 4104 */ NULL, /* 4105 */ NULL, /* 4106 */ NULL, /* 4107 */ NULL, /* 4108 */ NULL, /* 4109 */ NULL, /* 410a */ NULL, /* 410b */ NULL, /* 410c */ NULL, /* 410d */ NULL, /* 410e */ NULL, /* 410f */ NULL, /* 4110 */ NULL, /* 4111 */ NULL, /* 4112 */ NULL, /* 4113 */ NULL, /* 4114 */ NULL, /* 4115 */ NULL, /* 4116 */ NULL, /* 4117 */ NULL, /* 4118 */ NULL, /* 4119 */ NULL, /* 411a */ NULL, /* 411b */ NULL, /* 411c */ NULL, /* 411d */ NULL, /* 411e */ NULL, /* 411f */ NULL, /* 4120 */ NULL, /* 4121 */ NULL, /* 4122 */ NULL, /* 4123 */ NULL, /* 4124 */ NULL, /* 4125 */ NULL, /* 4126 */ NULL, /* 4127 */ NULL, /* 4128 */ NULL, /* 4129 */ NULL, /* 412a */ NULL, /* 412b */ NULL, /* 412c */ NULL, /* 412d */ NULL, /* 412e */ NULL, /* 412f */ NULL, /* 4130 */ NULL, /* 4131 */ NULL, /* 4132 */ NULL, /* 4133 */ NULL, /* 4134 */ NULL, /* 4135 */ NULL, /* 4136 */ NULL, /* 4137 */ NULL, /* 4138 */ NULL, /* 4139 */ NULL, /* 413a */ NULL, /* 413b */ NULL, /* 413c */ NULL, /* 413d */ NULL, /* 413e */ NULL, /* 413f */ NULL, /* 4140 */ NULL, /* 4141 */ NULL, /* 4142 */ NULL, /* 4143 */ NULL, /* 4144 */ NULL, /* 4145 */ NULL, /* 4146 */ NULL, /* 4147 */ NULL, /* 4148 */ NULL, /* 4149 */ NULL, /* 414a */ NULL, /* 414b */ NULL, /* 414c */ NULL, /* 414d */ NULL, /* 414e */ NULL, /* 414f */ NULL, /* 4150 */ NULL, /* 4151 */ NULL, /* 4152 */ NULL, /* 4153 */ NULL, /* 4154 */ NULL, /* 4155 */ NULL, /* 4156 */ NULL, /* 4157 */ NULL, /* 4158 */ NULL, /* 4159 */ NULL, /* 415a */ NULL, /* 415b */ NULL, /* 415c */ NULL, /* 415d */ NULL, /* 415e */ NULL, /* 415f */ NULL, /* 4160 */ NULL, /* 4161 */ NULL, /* 4162 */ NULL, /* 4163 */ NULL, /* 4164 */ NULL, /* 4165 */ NULL, /* 4166 */ NULL, /* 4167 */ NULL, /* 4168 */ NULL, /* 4169 */ NULL, /* 416a */ NULL, /* 416b */ NULL, /* 416c */ NULL, /* 416d */ NULL, /* 416e */ NULL, /* 416f */ NULL, /* 4170 */ NULL, /* 4171 */ NULL, /* 4172 */ NULL, /* 4173 */ NULL, /* 4174 */ NULL, /* 4175 */ NULL, /* 4176 */ NULL, /* 4177 */ NULL, /* 4178 */ NULL, /* 4179 */ NULL, /* 417a */ NULL, /* 417b */ NULL, /* 417c */ NULL, /* 417d */ NULL, /* 417e */ NULL, /* 417f */ NULL, /* 4180 */ NULL, /* 4181 */ NULL, /* 4182 */ NULL, /* 4183 */ NULL, /* 4184 */ NULL, /* 4185 */ NULL, /* 4186 */ NULL, /* 4187 */ NULL, /* 4188 */ NULL, /* 4189 */ NULL, /* 418a */ NULL, /* 418b */ NULL, /* 418c */ NULL, /* 418d */ NULL, /* 418e */ NULL, /* 418f */ NULL, /* 4190 */ NULL, /* 4191 */ NULL, /* 4192 */ NULL, /* 4193 */ NULL, /* 4194 */ NULL, /* 4195 */ NULL, /* 4196 */ NULL, /* 4197 */ NULL, /* 4198 */ NULL, /* 4199 */ NULL, /* 419a */ NULL, /* 419b */ NULL, /* 419c */ NULL, /* 419d */ NULL, /* 419e */ NULL, /* 419f */ NULL, /* 41a0 */ NULL, /* 41a1 */ NULL, /* 41a2 */ NULL, /* 41a3 */ NULL, /* 41a4 */ NULL, /* 41a5 */ NULL, /* 41a6 */ NULL, /* 41a7 */ NULL, /* 41a8 */ NULL, /* 41a9 */ NULL, /* 41aa */ NULL, /* 41ab */ NULL, /* 41ac */ NULL, /* 41ad */ NULL, /* 41ae */ NULL, /* 41af */ NULL, /* 41b0 */ NULL, /* 41b1 */ NULL, /* 41b2 */ NULL, /* 41b3 */ NULL, /* 41b4 */ NULL, /* 41b5 */ NULL, /* 41b6 */ NULL, /* 41b7 */ NULL, /* 41b8 */ NULL, /* 41b9 */ NULL, /* 41ba */ NULL, /* 41bb */ NULL, /* 41bc */ NULL, /* 41bd */ NULL, /* 41be */ NULL, /* 41bf */ NULL, /* 41c0 */ NULL, /* 41c1 */ NULL, /* 41c2 */ NULL, /* 41c3 */ NULL, /* 41c4 */ NULL, /* 41c5 */ NULL, /* 41c6 */ NULL, /* 41c7 */ NULL, /* 41c8 */ NULL, /* 41c9 */ NULL, /* 41ca */ NULL, /* 41cb */ NULL, /* 41cc */ NULL, /* 41cd */ NULL, /* 41ce */ NULL, /* 41cf */ NULL, /* 41d0 */ NULL, /* 41d1 */ NULL, /* 41d2 */ NULL, /* 41d3 */ NULL, /* 41d4 */ NULL, /* 41d5 */ NULL, /* 41d6 */ NULL, /* 41d7 */ NULL, /* 41d8 */ NULL, /* 41d9 */ NULL, /* 41da */ NULL, /* 41db */ NULL, /* 41dc */ NULL, /* 41dd */ NULL, /* 41de */ NULL, /* 41df */ NULL, /* 41e0 */ NULL, /* 41e1 */ NULL, /* 41e2 */ NULL, /* 41e3 */ NULL, /* 41e4 */ NULL, /* 41e5 */ NULL, /* 41e6 */ NULL, /* 41e7 */ NULL, /* 41e8 */ NULL, /* 41e9 */ NULL, /* 41ea */ NULL, /* 41eb */ NULL, /* 41ec */ NULL, /* 41ed */ NULL, /* 41ee */ NULL, /* 41ef */ NULL, /* 41f0 */ NULL, /* 41f1 */ NULL, /* 41f2 */ NULL, /* 41f3 */ NULL, /* 41f4 */ NULL, /* 41f5 */ NULL, /* 41f6 */ NULL, /* 41f7 */ NULL, /* 41f8 */ NULL, /* 41f9 */ NULL, /* 41fa */ NULL, /* 41fb */ NULL, /* 41fc */ NULL, /* 41fd */ NULL, /* 41fe */ NULL, /* 41ff */ NULL, /* 4200 */ NULL, /* 4201 */ NULL, /* 4202 */ NULL, /* 4203 */ NULL, /* 4204 */ NULL, /* 4205 */ NULL, /* 4206 */ NULL, /* 4207 */ NULL, /* 4208 */ NULL, /* 4209 */ NULL, /* 420a */ NULL, /* 420b */ NULL, /* 420c */ NULL, /* 420d */ NULL, /* 420e */ NULL, /* 420f */ NULL, /* 4210 */ NULL, /* 4211 */ NULL, /* 4212 */ NULL, /* 4213 */ NULL, /* 4214 */ NULL, /* 4215 */ NULL, /* 4216 */ NULL, /* 4217 */ NULL, /* 4218 */ NULL, /* 4219 */ NULL, /* 421a */ NULL, /* 421b */ NULL, /* 421c */ NULL, /* 421d */ NULL, /* 421e */ NULL, /* 421f */ NULL, /* 4220 */ NULL, /* 4221 */ NULL, /* 4222 */ NULL, /* 4223 */ NULL, /* 4224 */ NULL, /* 4225 */ NULL, /* 4226 */ NULL, /* 4227 */ NULL, /* 4228 */ NULL, /* 4229 */ NULL, /* 422a */ NULL, /* 422b */ NULL, /* 422c */ NULL, /* 422d */ NULL, /* 422e */ NULL, /* 422f */ NULL, /* 4230 */ NULL, /* 4231 */ NULL, /* 4232 */ NULL, /* 4233 */ NULL, /* 4234 */ NULL, /* 4235 */ NULL, /* 4236 */ NULL, /* 4237 */ NULL, /* 4238 */ NULL, /* 4239 */ NULL, /* 423a */ NULL, /* 423b */ NULL, /* 423c */ NULL, /* 423d */ NULL, /* 423e */ NULL, /* 423f */ NULL, /* 4240 */ NULL, /* 4241 */ NULL, /* 4242 */ NULL, /* 4243 */ NULL, /* 4244 */ NULL, /* 4245 */ NULL, /* 4246 */ NULL, /* 4247 */ NULL, /* 4248 */ NULL, /* 4249 */ NULL, /* 424a */ NULL, /* 424b */ NULL, /* 424c */ NULL, /* 424d */ NULL, /* 424e */ NULL, /* 424f */ NULL, /* 4250 */ NULL, /* 4251 */ NULL, /* 4252 */ NULL, /* 4253 */ NULL, /* 4254 */ NULL, /* 4255 */ NULL, /* 4256 */ NULL, /* 4257 */ NULL, /* 4258 */ NULL, /* 4259 */ NULL, /* 425a */ NULL, /* 425b */ NULL, /* 425c */ NULL, /* 425d */ NULL, /* 425e */ NULL, /* 425f */ NULL, /* 4260 */ NULL, /* 4261 */ NULL, /* 4262 */ NULL, /* 4263 */ NULL, /* 4264 */ NULL, /* 4265 */ NULL, /* 4266 */ NULL, /* 4267 */ NULL, /* 4268 */ NULL, /* 4269 */ NULL, /* 426a */ NULL, /* 426b */ NULL, /* 426c */ NULL, /* 426d */ NULL, /* 426e */ NULL, /* 426f */ NULL, /* 4270 */ NULL, /* 4271 */ NULL, /* 4272 */ NULL, /* 4273 */ NULL, /* 4274 */ NULL, /* 4275 */ NULL, /* 4276 */ NULL, /* 4277 */ NULL, /* 4278 */ NULL, /* 4279 */ NULL, /* 427a */ NULL, /* 427b */ NULL, /* 427c */ NULL, /* 427d */ NULL, /* 427e */ NULL, /* 427f */ NULL, /* 4280 */ NULL, /* 4281 */ NULL, /* 4282 */ NULL, /* 4283 */ NULL, /* 4284 */ NULL, /* 4285 */ NULL, /* 4286 */ NULL, /* 4287 */ NULL, /* 4288 */ NULL, /* 4289 */ NULL, /* 428a */ NULL, /* 428b */ NULL, /* 428c */ NULL, /* 428d */ NULL, /* 428e */ NULL, /* 428f */ NULL, /* 4290 */ NULL, /* 4291 */ NULL, /* 4292 */ NULL, /* 4293 */ NULL, /* 4294 */ NULL, /* 4295 */ NULL, /* 4296 */ NULL, /* 4297 */ NULL, /* 4298 */ NULL, /* 4299 */ NULL, /* 429a */ NULL, /* 429b */ NULL, /* 429c */ NULL, /* 429d */ NULL, /* 429e */ NULL, /* 429f */ NULL, /* 42a0 */ NULL, /* 42a1 */ NULL, /* 42a2 */ NULL, /* 42a3 */ NULL, /* 42a4 */ NULL, /* 42a5 */ NULL, /* 42a6 */ NULL, /* 42a7 */ NULL, /* 42a8 */ NULL, /* 42a9 */ NULL, /* 42aa */ NULL, /* 42ab */ NULL, /* 42ac */ NULL, /* 42ad */ NULL, /* 42ae */ NULL, /* 42af */ NULL, /* 42b0 */ NULL, /* 42b1 */ NULL, /* 42b2 */ NULL, /* 42b3 */ NULL, /* 42b4 */ NULL, /* 42b5 */ NULL, /* 42b6 */ NULL, /* 42b7 */ NULL, /* 42b8 */ NULL, /* 42b9 */ NULL, /* 42ba */ NULL, /* 42bb */ NULL, /* 42bc */ NULL, /* 42bd */ NULL, /* 42be */ NULL, /* 42bf */ NULL, /* 42c0 */ NULL, /* 42c1 */ NULL, /* 42c2 */ NULL, /* 42c3 */ NULL, /* 42c4 */ NULL, /* 42c5 */ NULL, /* 42c6 */ NULL, /* 42c7 */ NULL, /* 42c8 */ NULL, /* 42c9 */ NULL, /* 42ca */ NULL, /* 42cb */ NULL, /* 42cc */ NULL, /* 42cd */ NULL, /* 42ce */ NULL, /* 42cf */ NULL, /* 42d0 */ NULL, /* 42d1 */ NULL, /* 42d2 */ NULL, /* 42d3 */ NULL, /* 42d4 */ NULL, /* 42d5 */ NULL, /* 42d6 */ NULL, /* 42d7 */ NULL, /* 42d8 */ NULL, /* 42d9 */ NULL, /* 42da */ NULL, /* 42db */ NULL, /* 42dc */ NULL, /* 42dd */ NULL, /* 42de */ NULL, /* 42df */ NULL, /* 42e0 */ NULL, /* 42e1 */ NULL, /* 42e2 */ NULL, /* 42e3 */ NULL, /* 42e4 */ NULL, /* 42e5 */ NULL, /* 42e6 */ NULL, /* 42e7 */ NULL, /* 42e8 */ NULL, /* 42e9 */ NULL, /* 42ea */ NULL, /* 42eb */ NULL, /* 42ec */ NULL, /* 42ed */ NULL, /* 42ee */ NULL, /* 42ef */ NULL, /* 42f0 */ NULL, /* 42f1 */ NULL, /* 42f2 */ NULL, /* 42f3 */ NULL, /* 42f4 */ NULL, /* 42f5 */ NULL, /* 42f6 */ NULL, /* 42f7 */ NULL, /* 42f8 */ NULL, /* 42f9 */ NULL, /* 42fa */ NULL, /* 42fb */ NULL, /* 42fc */ NULL, /* 42fd */ NULL, /* 42fe */ NULL, /* 42ff */ NULL, /* 4300 */ NULL, /* 4301 */ NULL, /* 4302 */ NULL, /* 4303 */ NULL, /* 4304 */ NULL, /* 4305 */ NULL, /* 4306 */ NULL, /* 4307 */ NULL, /* 4308 */ NULL, /* 4309 */ NULL, /* 430a */ NULL, /* 430b */ NULL, /* 430c */ NULL, /* 430d */ NULL, /* 430e */ NULL, /* 430f */ NULL, /* 4310 */ NULL, /* 4311 */ NULL, /* 4312 */ NULL, /* 4313 */ NULL, /* 4314 */ NULL, /* 4315 */ NULL, /* 4316 */ NULL, /* 4317 */ NULL, /* 4318 */ NULL, /* 4319 */ NULL, /* 431a */ NULL, /* 431b */ NULL, /* 431c */ NULL, /* 431d */ NULL, /* 431e */ NULL, /* 431f */ NULL, /* 4320 */ NULL, /* 4321 */ NULL, /* 4322 */ NULL, /* 4323 */ NULL, /* 4324 */ NULL, /* 4325 */ NULL, /* 4326 */ NULL, /* 4327 */ NULL, /* 4328 */ NULL, /* 4329 */ NULL, /* 432a */ NULL, /* 432b */ NULL, /* 432c */ NULL, /* 432d */ NULL, /* 432e */ NULL, /* 432f */ NULL, /* 4330 */ NULL, /* 4331 */ NULL, /* 4332 */ NULL, /* 4333 */ NULL, /* 4334 */ NULL, /* 4335 */ NULL, /* 4336 */ NULL, /* 4337 */ NULL, /* 4338 */ NULL, /* 4339 */ NULL, /* 433a */ NULL, /* 433b */ NULL, /* 433c */ NULL, /* 433d */ NULL, /* 433e */ NULL, /* 433f */ NULL, /* 4340 */ NULL, /* 4341 */ NULL, /* 4342 */ NULL, /* 4343 */ NULL, /* 4344 */ NULL, /* 4345 */ NULL, /* 4346 */ NULL, /* 4347 */ NULL, /* 4348 */ NULL, /* 4349 */ NULL, /* 434a */ NULL, /* 434b */ NULL, /* 434c */ NULL, /* 434d */ NULL, /* 434e */ NULL, /* 434f */ NULL, /* 4350 */ NULL, /* 4351 */ NULL, /* 4352 */ NULL, /* 4353 */ NULL, /* 4354 */ NULL, /* 4355 */ NULL, /* 4356 */ NULL, /* 4357 */ NULL, /* 4358 */ NULL, /* 4359 */ NULL, /* 435a */ NULL, /* 435b */ NULL, /* 435c */ NULL, /* 435d */ NULL, /* 435e */ NULL, /* 435f */ NULL, /* 4360 */ NULL, /* 4361 */ NULL, /* 4362 */ NULL, /* 4363 */ NULL, /* 4364 */ NULL, /* 4365 */ NULL, /* 4366 */ NULL, /* 4367 */ NULL, /* 4368 */ NULL, /* 4369 */ NULL, /* 436a */ NULL, /* 436b */ NULL, /* 436c */ NULL, /* 436d */ NULL, /* 436e */ NULL, /* 436f */ NULL, /* 4370 */ NULL, /* 4371 */ NULL, /* 4372 */ NULL, /* 4373 */ NULL, /* 4374 */ NULL, /* 4375 */ NULL, /* 4376 */ NULL, /* 4377 */ NULL, /* 4378 */ NULL, /* 4379 */ NULL, /* 437a */ NULL, /* 437b */ NULL, /* 437c */ NULL, /* 437d */ NULL, /* 437e */ NULL, /* 437f */ NULL, /* 4380 */ NULL, /* 4381 */ NULL, /* 4382 */ NULL, /* 4383 */ NULL, /* 4384 */ NULL, /* 4385 */ NULL, /* 4386 */ NULL, /* 4387 */ NULL, /* 4388 */ NULL, /* 4389 */ NULL, /* 438a */ NULL, /* 438b */ NULL, /* 438c */ NULL, /* 438d */ NULL, /* 438e */ NULL, /* 438f */ NULL, /* 4390 */ NULL, /* 4391 */ NULL, /* 4392 */ NULL, /* 4393 */ NULL, /* 4394 */ NULL, /* 4395 */ NULL, /* 4396 */ NULL, /* 4397 */ NULL, /* 4398 */ NULL, /* 4399 */ NULL, /* 439a */ NULL, /* 439b */ NULL, /* 439c */ NULL, /* 439d */ NULL, /* 439e */ NULL, /* 439f */ NULL, /* 43a0 */ NULL, /* 43a1 */ NULL, /* 43a2 */ NULL, /* 43a3 */ NULL, /* 43a4 */ NULL, /* 43a5 */ NULL, /* 43a6 */ NULL, /* 43a7 */ NULL, /* 43a8 */ NULL, /* 43a9 */ NULL, /* 43aa */ NULL, /* 43ab */ NULL, /* 43ac */ NULL, /* 43ad */ NULL, /* 43ae */ NULL, /* 43af */ NULL, /* 43b0 */ NULL, /* 43b1 */ NULL, /* 43b2 */ NULL, /* 43b3 */ NULL, /* 43b4 */ NULL, /* 43b5 */ NULL, /* 43b6 */ NULL, /* 43b7 */ NULL, /* 43b8 */ NULL, /* 43b9 */ NULL, /* 43ba */ NULL, /* 43bb */ NULL, /* 43bc */ NULL, /* 43bd */ NULL, /* 43be */ NULL, /* 43bf */ NULL, /* 43c0 */ NULL, /* 43c1 */ NULL, /* 43c2 */ NULL, /* 43c3 */ NULL, /* 43c4 */ NULL, /* 43c5 */ NULL, /* 43c6 */ NULL, /* 43c7 */ NULL, /* 43c8 */ NULL, /* 43c9 */ NULL, /* 43ca */ NULL, /* 43cb */ NULL, /* 43cc */ NULL, /* 43cd */ NULL, /* 43ce */ NULL, /* 43cf */ NULL, /* 43d0 */ NULL, /* 43d1 */ NULL, /* 43d2 */ NULL, /* 43d3 */ NULL, /* 43d4 */ NULL, /* 43d5 */ NULL, /* 43d6 */ NULL, /* 43d7 */ NULL, /* 43d8 */ NULL, /* 43d9 */ NULL, /* 43da */ NULL, /* 43db */ NULL, /* 43dc */ NULL, /* 43dd */ NULL, /* 43de */ NULL, /* 43df */ NULL, /* 43e0 */ NULL, /* 43e1 */ NULL, /* 43e2 */ NULL, /* 43e3 */ NULL, /* 43e4 */ NULL, /* 43e5 */ NULL, /* 43e6 */ NULL, /* 43e7 */ NULL, /* 43e8 */ NULL, /* 43e9 */ NULL, /* 43ea */ NULL, /* 43eb */ NULL, /* 43ec */ NULL, /* 43ed */ NULL, /* 43ee */ NULL, /* 43ef */ NULL, /* 43f0 */ NULL, /* 43f1 */ NULL, /* 43f2 */ NULL, /* 43f3 */ NULL, /* 43f4 */ NULL, /* 43f5 */ NULL, /* 43f6 */ NULL, /* 43f7 */ NULL, /* 43f8 */ NULL, /* 43f9 */ NULL, /* 43fa */ NULL, /* 43fb */ NULL, /* 43fc */ NULL, /* 43fd */ NULL, /* 43fe */ NULL, /* 43ff */ NULL, /* 4400 */ NULL, /* 4401 */ NULL, /* 4402 */ NULL, /* 4403 */ NULL, /* 4404 */ NULL, /* 4405 */ NULL, /* 4406 */ NULL, /* 4407 */ NULL, /* 4408 */ NULL, /* 4409 */ NULL, /* 440a */ NULL, /* 440b */ NULL, /* 440c */ NULL, /* 440d */ NULL, /* 440e */ NULL, /* 440f */ NULL, /* 4410 */ NULL, /* 4411 */ NULL, /* 4412 */ NULL, /* 4413 */ NULL, /* 4414 */ NULL, /* 4415 */ NULL, /* 4416 */ NULL, /* 4417 */ NULL, /* 4418 */ NULL, /* 4419 */ NULL, /* 441a */ NULL, /* 441b */ NULL, /* 441c */ NULL, /* 441d */ NULL, /* 441e */ NULL, /* 441f */ NULL, /* 4420 */ NULL, /* 4421 */ NULL, /* 4422 */ NULL, /* 4423 */ NULL, /* 4424 */ NULL, /* 4425 */ NULL, /* 4426 */ NULL, /* 4427 */ NULL, /* 4428 */ NULL, /* 4429 */ NULL, /* 442a */ NULL, /* 442b */ NULL, /* 442c */ NULL, /* 442d */ NULL, /* 442e */ NULL, /* 442f */ NULL, /* 4430 */ NULL, /* 4431 */ NULL, /* 4432 */ NULL, /* 4433 */ NULL, /* 4434 */ NULL, /* 4435 */ NULL, /* 4436 */ NULL, /* 4437 */ NULL, /* 4438 */ NULL, /* 4439 */ NULL, /* 443a */ NULL, /* 443b */ NULL, /* 443c */ NULL, /* 443d */ NULL, /* 443e */ NULL, /* 443f */ NULL, /* 4440 */ NULL, /* 4441 */ NULL, /* 4442 */ NULL, /* 4443 */ NULL, /* 4444 */ NULL, /* 4445 */ NULL, /* 4446 */ NULL, /* 4447 */ NULL, /* 4448 */ NULL, /* 4449 */ NULL, /* 444a */ NULL, /* 444b */ NULL, /* 444c */ NULL, /* 444d */ NULL, /* 444e */ NULL, /* 444f */ NULL, /* 4450 */ NULL, /* 4451 */ NULL, /* 4452 */ NULL, /* 4453 */ NULL, /* 4454 */ NULL, /* 4455 */ NULL, /* 4456 */ NULL, /* 4457 */ NULL, /* 4458 */ NULL, /* 4459 */ NULL, /* 445a */ NULL, /* 445b */ NULL, /* 445c */ NULL, /* 445d */ NULL, /* 445e */ NULL, /* 445f */ NULL, /* 4460 */ NULL, /* 4461 */ NULL, /* 4462 */ NULL, /* 4463 */ NULL, /* 4464 */ NULL, /* 4465 */ NULL, /* 4466 */ NULL, /* 4467 */ NULL, /* 4468 */ NULL, /* 4469 */ NULL, /* 446a */ NULL, /* 446b */ NULL, /* 446c */ NULL, /* 446d */ NULL, /* 446e */ NULL, /* 446f */ NULL, /* 4470 */ NULL, /* 4471 */ NULL, /* 4472 */ NULL, /* 4473 */ NULL, /* 4474 */ NULL, /* 4475 */ NULL, /* 4476 */ NULL, /* 4477 */ NULL, /* 4478 */ NULL, /* 4479 */ NULL, /* 447a */ NULL, /* 447b */ NULL, /* 447c */ NULL, /* 447d */ NULL, /* 447e */ NULL, /* 447f */ NULL, /* 4480 */ NULL, /* 4481 */ NULL, /* 4482 */ NULL, /* 4483 */ NULL, /* 4484 */ NULL, /* 4485 */ NULL, /* 4486 */ NULL, /* 4487 */ NULL, /* 4488 */ NULL, /* 4489 */ NULL, /* 448a */ NULL, /* 448b */ NULL, /* 448c */ NULL, /* 448d */ NULL, /* 448e */ NULL, /* 448f */ NULL, /* 4490 */ NULL, /* 4491 */ NULL, /* 4492 */ NULL, /* 4493 */ NULL, /* 4494 */ NULL, /* 4495 */ NULL, /* 4496 */ NULL, /* 4497 */ NULL, /* 4498 */ NULL, /* 4499 */ NULL, /* 449a */ NULL, /* 449b */ NULL, /* 449c */ NULL, /* 449d */ NULL, /* 449e */ NULL, /* 449f */ NULL, /* 44a0 */ NULL, /* 44a1 */ NULL, /* 44a2 */ NULL, /* 44a3 */ NULL, /* 44a4 */ NULL, /* 44a5 */ NULL, /* 44a6 */ NULL, /* 44a7 */ NULL, /* 44a8 */ NULL, /* 44a9 */ NULL, /* 44aa */ NULL, /* 44ab */ NULL, /* 44ac */ NULL, /* 44ad */ NULL, /* 44ae */ NULL, /* 44af */ NULL, /* 44b0 */ NULL, /* 44b1 */ NULL, /* 44b2 */ NULL, /* 44b3 */ NULL, /* 44b4 */ NULL, /* 44b5 */ NULL, /* 44b6 */ NULL, /* 44b7 */ NULL, /* 44b8 */ NULL, /* 44b9 */ NULL, /* 44ba */ NULL, /* 44bb */ NULL, /* 44bc */ NULL, /* 44bd */ NULL, /* 44be */ NULL, /* 44bf */ NULL, /* 44c0 */ NULL, /* 44c1 */ NULL, /* 44c2 */ NULL, /* 44c3 */ NULL, /* 44c4 */ NULL, /* 44c5 */ NULL, /* 44c6 */ NULL, /* 44c7 */ NULL, /* 44c8 */ NULL, /* 44c9 */ NULL, /* 44ca */ NULL, /* 44cb */ NULL, /* 44cc */ NULL, /* 44cd */ NULL, /* 44ce */ NULL, /* 44cf */ NULL, /* 44d0 */ NULL, /* 44d1 */ NULL, /* 44d2 */ NULL, /* 44d3 */ NULL, /* 44d4 */ NULL, /* 44d5 */ NULL, /* 44d6 */ NULL, /* 44d7 */ NULL, /* 44d8 */ NULL, /* 44d9 */ NULL, /* 44da */ NULL, /* 44db */ NULL, /* 44dc */ NULL, /* 44dd */ NULL, /* 44de */ NULL, /* 44df */ NULL, /* 44e0 */ NULL, /* 44e1 */ NULL, /* 44e2 */ NULL, /* 44e3 */ NULL, /* 44e4 */ NULL, /* 44e5 */ NULL, /* 44e6 */ NULL, /* 44e7 */ NULL, /* 44e8 */ NULL, /* 44e9 */ NULL, /* 44ea */ NULL, /* 44eb */ NULL, /* 44ec */ NULL, /* 44ed */ NULL, /* 44ee */ NULL, /* 44ef */ NULL, /* 44f0 */ NULL, /* 44f1 */ NULL, /* 44f2 */ NULL, /* 44f3 */ NULL, /* 44f4 */ NULL, /* 44f5 */ NULL, /* 44f6 */ NULL, /* 44f7 */ NULL, /* 44f8 */ NULL, /* 44f9 */ NULL, /* 44fa */ NULL, /* 44fb */ NULL, /* 44fc */ NULL, /* 44fd */ NULL, /* 44fe */ NULL, /* 44ff */ NULL, /* 4500 */ NULL, /* 4501 */ NULL, /* 4502 */ NULL, /* 4503 */ NULL, /* 4504 */ NULL, /* 4505 */ NULL, /* 4506 */ NULL, /* 4507 */ NULL, /* 4508 */ NULL, /* 4509 */ NULL, /* 450a */ NULL, /* 450b */ NULL, /* 450c */ NULL, /* 450d */ NULL, /* 450e */ NULL, /* 450f */ NULL, /* 4510 */ NULL, /* 4511 */ NULL, /* 4512 */ NULL, /* 4513 */ NULL, /* 4514 */ NULL, /* 4515 */ NULL, /* 4516 */ NULL, /* 4517 */ NULL, /* 4518 */ NULL, /* 4519 */ NULL, /* 451a */ NULL, /* 451b */ NULL, /* 451c */ NULL, /* 451d */ NULL, /* 451e */ NULL, /* 451f */ NULL, /* 4520 */ NULL, /* 4521 */ NULL, /* 4522 */ NULL, /* 4523 */ NULL, /* 4524 */ NULL, /* 4525 */ NULL, /* 4526 */ NULL, /* 4527 */ NULL, /* 4528 */ NULL, /* 4529 */ NULL, /* 452a */ NULL, /* 452b */ NULL, /* 452c */ NULL, /* 452d */ NULL, /* 452e */ NULL, /* 452f */ NULL, /* 4530 */ NULL, /* 4531 */ NULL, /* 4532 */ NULL, /* 4533 */ NULL, /* 4534 */ NULL, /* 4535 */ NULL, /* 4536 */ NULL, /* 4537 */ NULL, /* 4538 */ NULL, /* 4539 */ NULL, /* 453a */ NULL, /* 453b */ NULL, /* 453c */ NULL, /* 453d */ NULL, /* 453e */ NULL, /* 453f */ NULL, /* 4540 */ NULL, /* 4541 */ NULL, /* 4542 */ NULL, /* 4543 */ NULL, /* 4544 */ NULL, /* 4545 */ NULL, /* 4546 */ NULL, /* 4547 */ NULL, /* 4548 */ NULL, /* 4549 */ NULL, /* 454a */ NULL, /* 454b */ NULL, /* 454c */ NULL, /* 454d */ NULL, /* 454e */ NULL, /* 454f */ NULL, /* 4550 */ NULL, /* 4551 */ NULL, /* 4552 */ NULL, /* 4553 */ NULL, /* 4554 */ NULL, /* 4555 */ NULL, /* 4556 */ NULL, /* 4557 */ NULL, /* 4558 */ NULL, /* 4559 */ NULL, /* 455a */ NULL, /* 455b */ NULL, /* 455c */ NULL, /* 455d */ NULL, /* 455e */ NULL, /* 455f */ NULL, /* 4560 */ NULL, /* 4561 */ NULL, /* 4562 */ NULL, /* 4563 */ NULL, /* 4564 */ NULL, /* 4565 */ NULL, /* 4566 */ NULL, /* 4567 */ NULL, /* 4568 */ NULL, /* 4569 */ NULL, /* 456a */ NULL, /* 456b */ NULL, /* 456c */ NULL, /* 456d */ NULL, /* 456e */ NULL, /* 456f */ NULL, /* 4570 */ NULL, /* 4571 */ NULL, /* 4572 */ NULL, /* 4573 */ NULL, /* 4574 */ NULL, /* 4575 */ NULL, /* 4576 */ NULL, /* 4577 */ NULL, /* 4578 */ NULL, /* 4579 */ NULL, /* 457a */ NULL, /* 457b */ NULL, /* 457c */ NULL, /* 457d */ NULL, /* 457e */ NULL, /* 457f */ NULL, /* 4580 */ NULL, /* 4581 */ NULL, /* 4582 */ NULL, /* 4583 */ NULL, /* 4584 */ NULL, /* 4585 */ NULL, /* 4586 */ NULL, /* 4587 */ NULL, /* 4588 */ NULL, /* 4589 */ NULL, /* 458a */ NULL, /* 458b */ NULL, /* 458c */ NULL, /* 458d */ NULL, /* 458e */ NULL, /* 458f */ NULL, /* 4590 */ NULL, /* 4591 */ NULL, /* 4592 */ NULL, /* 4593 */ NULL, /* 4594 */ NULL, /* 4595 */ NULL, /* 4596 */ NULL, /* 4597 */ NULL, /* 4598 */ NULL, /* 4599 */ NULL, /* 459a */ NULL, /* 459b */ NULL, /* 459c */ NULL, /* 459d */ NULL, /* 459e */ NULL, /* 459f */ NULL, /* 45a0 */ NULL, /* 45a1 */ NULL, /* 45a2 */ NULL, /* 45a3 */ NULL, /* 45a4 */ NULL, /* 45a5 */ NULL, /* 45a6 */ NULL, /* 45a7 */ NULL, /* 45a8 */ NULL, /* 45a9 */ NULL, /* 45aa */ NULL, /* 45ab */ NULL, /* 45ac */ NULL, /* 45ad */ NULL, /* 45ae */ NULL, /* 45af */ NULL, /* 45b0 */ NULL, /* 45b1 */ NULL, /* 45b2 */ NULL, /* 45b3 */ NULL, /* 45b4 */ NULL, /* 45b5 */ NULL, /* 45b6 */ NULL, /* 45b7 */ NULL, /* 45b8 */ NULL, /* 45b9 */ NULL, /* 45ba */ NULL, /* 45bb */ NULL, /* 45bc */ NULL, /* 45bd */ NULL, /* 45be */ NULL, /* 45bf */ NULL, /* 45c0 */ NULL, /* 45c1 */ NULL, /* 45c2 */ NULL, /* 45c3 */ NULL, /* 45c4 */ NULL, /* 45c5 */ NULL, /* 45c6 */ NULL, /* 45c7 */ NULL, /* 45c8 */ NULL, /* 45c9 */ NULL, /* 45ca */ NULL, /* 45cb */ NULL, /* 45cc */ NULL, /* 45cd */ NULL, /* 45ce */ NULL, /* 45cf */ NULL, /* 45d0 */ NULL, /* 45d1 */ NULL, /* 45d2 */ NULL, /* 45d3 */ NULL, /* 45d4 */ NULL, /* 45d5 */ NULL, /* 45d6 */ NULL, /* 45d7 */ NULL, /* 45d8 */ NULL, /* 45d9 */ NULL, /* 45da */ NULL, /* 45db */ NULL, /* 45dc */ NULL, /* 45dd */ NULL, /* 45de */ NULL, /* 45df */ NULL, /* 45e0 */ NULL, /* 45e1 */ NULL, /* 45e2 */ NULL, /* 45e3 */ NULL, /* 45e4 */ NULL, /* 45e5 */ NULL, /* 45e6 */ NULL, /* 45e7 */ NULL, /* 45e8 */ NULL, /* 45e9 */ NULL, /* 45ea */ NULL, /* 45eb */ NULL, /* 45ec */ NULL, /* 45ed */ NULL, /* 45ee */ NULL, /* 45ef */ NULL, /* 45f0 */ NULL, /* 45f1 */ NULL, /* 45f2 */ NULL, /* 45f3 */ NULL, /* 45f4 */ NULL, /* 45f5 */ NULL, /* 45f6 */ NULL, /* 45f7 */ NULL, /* 45f8 */ NULL, /* 45f9 */ NULL, /* 45fa */ NULL, /* 45fb */ NULL, /* 45fc */ NULL, /* 45fd */ NULL, /* 45fe */ NULL, /* 45ff */ NULL, /* 4600 */ NULL, /* 4601 */ NULL, /* 4602 */ NULL, /* 4603 */ NULL, /* 4604 */ NULL, /* 4605 */ NULL, /* 4606 */ NULL, /* 4607 */ NULL, /* 4608 */ NULL, /* 4609 */ NULL, /* 460a */ NULL, /* 460b */ NULL, /* 460c */ NULL, /* 460d */ NULL, /* 460e */ NULL, /* 460f */ NULL, /* 4610 */ NULL, /* 4611 */ NULL, /* 4612 */ NULL, /* 4613 */ NULL, /* 4614 */ NULL, /* 4615 */ NULL, /* 4616 */ NULL, /* 4617 */ NULL, /* 4618 */ NULL, /* 4619 */ NULL, /* 461a */ NULL, /* 461b */ NULL, /* 461c */ NULL, /* 461d */ NULL, /* 461e */ NULL, /* 461f */ NULL, /* 4620 */ NULL, /* 4621 */ NULL, /* 4622 */ NULL, /* 4623 */ NULL, /* 4624 */ NULL, /* 4625 */ NULL, /* 4626 */ NULL, /* 4627 */ NULL, /* 4628 */ NULL, /* 4629 */ NULL, /* 462a */ NULL, /* 462b */ NULL, /* 462c */ NULL, /* 462d */ NULL, /* 462e */ NULL, /* 462f */ NULL, /* 4630 */ NULL, /* 4631 */ NULL, /* 4632 */ NULL, /* 4633 */ NULL, /* 4634 */ NULL, /* 4635 */ NULL, /* 4636 */ NULL, /* 4637 */ NULL, /* 4638 */ NULL, /* 4639 */ NULL, /* 463a */ NULL, /* 463b */ NULL, /* 463c */ NULL, /* 463d */ NULL, /* 463e */ NULL, /* 463f */ NULL, /* 4640 */ NULL, /* 4641 */ NULL, /* 4642 */ NULL, /* 4643 */ NULL, /* 4644 */ NULL, /* 4645 */ NULL, /* 4646 */ NULL, /* 4647 */ NULL, /* 4648 */ NULL, /* 4649 */ NULL, /* 464a */ NULL, /* 464b */ NULL, /* 464c */ NULL, /* 464d */ NULL, /* 464e */ NULL, /* 464f */ NULL, /* 4650 */ NULL, /* 4651 */ NULL, /* 4652 */ NULL, /* 4653 */ NULL, /* 4654 */ NULL, /* 4655 */ NULL, /* 4656 */ NULL, /* 4657 */ NULL, /* 4658 */ NULL, /* 4659 */ NULL, /* 465a */ NULL, /* 465b */ NULL, /* 465c */ NULL, /* 465d */ NULL, /* 465e */ NULL, /* 465f */ NULL, /* 4660 */ NULL, /* 4661 */ NULL, /* 4662 */ NULL, /* 4663 */ NULL, /* 4664 */ NULL, /* 4665 */ NULL, /* 4666 */ NULL, /* 4667 */ NULL, /* 4668 */ NULL, /* 4669 */ NULL, /* 466a */ NULL, /* 466b */ NULL, /* 466c */ NULL, /* 466d */ NULL, /* 466e */ NULL, /* 466f */ NULL, /* 4670 */ NULL, /* 4671 */ NULL, /* 4672 */ NULL, /* 4673 */ NULL, /* 4674 */ NULL, /* 4675 */ NULL, /* 4676 */ NULL, /* 4677 */ NULL, /* 4678 */ NULL, /* 4679 */ NULL, /* 467a */ NULL, /* 467b */ NULL, /* 467c */ NULL, /* 467d */ NULL, /* 467e */ NULL, /* 467f */ NULL, /* 4680 */ NULL, /* 4681 */ NULL, /* 4682 */ NULL, /* 4683 */ NULL, /* 4684 */ NULL, /* 4685 */ NULL, /* 4686 */ NULL, /* 4687 */ NULL, /* 4688 */ NULL, /* 4689 */ NULL, /* 468a */ NULL, /* 468b */ NULL, /* 468c */ NULL, /* 468d */ NULL, /* 468e */ NULL, /* 468f */ NULL, /* 4690 */ NULL, /* 4691 */ NULL, /* 4692 */ NULL, /* 4693 */ NULL, /* 4694 */ NULL, /* 4695 */ NULL, /* 4696 */ NULL, /* 4697 */ NULL, /* 4698 */ NULL, /* 4699 */ NULL, /* 469a */ NULL, /* 469b */ NULL, /* 469c */ NULL, /* 469d */ NULL, /* 469e */ NULL, /* 469f */ NULL, /* 46a0 */ NULL, /* 46a1 */ NULL, /* 46a2 */ NULL, /* 46a3 */ NULL, /* 46a4 */ NULL, /* 46a5 */ NULL, /* 46a6 */ NULL, /* 46a7 */ NULL, /* 46a8 */ NULL, /* 46a9 */ NULL, /* 46aa */ NULL, /* 46ab */ NULL, /* 46ac */ NULL, /* 46ad */ NULL, /* 46ae */ NULL, /* 46af */ NULL, /* 46b0 */ NULL, /* 46b1 */ NULL, /* 46b2 */ NULL, /* 46b3 */ NULL, /* 46b4 */ NULL, /* 46b5 */ NULL, /* 46b6 */ NULL, /* 46b7 */ NULL, /* 46b8 */ NULL, /* 46b9 */ NULL, /* 46ba */ NULL, /* 46bb */ NULL, /* 46bc */ NULL, /* 46bd */ NULL, /* 46be */ NULL, /* 46bf */ NULL, /* 46c0 */ NULL, /* 46c1 */ NULL, /* 46c2 */ NULL, /* 46c3 */ NULL, /* 46c4 */ NULL, /* 46c5 */ NULL, /* 46c6 */ NULL, /* 46c7 */ NULL, /* 46c8 */ NULL, /* 46c9 */ NULL, /* 46ca */ NULL, /* 46cb */ NULL, /* 46cc */ NULL, /* 46cd */ NULL, /* 46ce */ NULL, /* 46cf */ NULL, /* 46d0 */ NULL, /* 46d1 */ NULL, /* 46d2 */ NULL, /* 46d3 */ NULL, /* 46d4 */ NULL, /* 46d5 */ NULL, /* 46d6 */ NULL, /* 46d7 */ NULL, /* 46d8 */ NULL, /* 46d9 */ NULL, /* 46da */ NULL, /* 46db */ NULL, /* 46dc */ NULL, /* 46dd */ NULL, /* 46de */ NULL, /* 46df */ NULL, /* 46e0 */ NULL, /* 46e1 */ NULL, /* 46e2 */ NULL, /* 46e3 */ NULL, /* 46e4 */ NULL, /* 46e5 */ NULL, /* 46e6 */ NULL, /* 46e7 */ NULL, /* 46e8 */ NULL, /* 46e9 */ NULL, /* 46ea */ NULL, /* 46eb */ NULL, /* 46ec */ NULL, /* 46ed */ NULL, /* 46ee */ NULL, /* 46ef */ NULL, /* 46f0 */ NULL, /* 46f1 */ NULL, /* 46f2 */ NULL, /* 46f3 */ NULL, /* 46f4 */ NULL, /* 46f5 */ NULL, /* 46f6 */ NULL, /* 46f7 */ NULL, /* 46f8 */ NULL, /* 46f9 */ NULL, /* 46fa */ NULL, /* 46fb */ NULL, /* 46fc */ NULL, /* 46fd */ NULL, /* 46fe */ NULL, /* 46ff */ NULL, /* 4700 */ NULL, /* 4701 */ NULL, /* 4702 */ NULL, /* 4703 */ NULL, /* 4704 */ NULL, /* 4705 */ NULL, /* 4706 */ NULL, /* 4707 */ NULL, /* 4708 */ NULL, /* 4709 */ NULL, /* 470a */ NULL, /* 470b */ NULL, /* 470c */ NULL, /* 470d */ NULL, /* 470e */ NULL, /* 470f */ NULL, /* 4710 */ NULL, /* 4711 */ NULL, /* 4712 */ NULL, /* 4713 */ NULL, /* 4714 */ NULL, /* 4715 */ NULL, /* 4716 */ NULL, /* 4717 */ NULL, /* 4718 */ NULL, /* 4719 */ NULL, /* 471a */ NULL, /* 471b */ NULL, /* 471c */ NULL, /* 471d */ NULL, /* 471e */ NULL, /* 471f */ NULL, /* 4720 */ NULL, /* 4721 */ NULL, /* 4722 */ NULL, /* 4723 */ NULL, /* 4724 */ NULL, /* 4725 */ NULL, /* 4726 */ NULL, /* 4727 */ NULL, /* 4728 */ NULL, /* 4729 */ NULL, /* 472a */ NULL, /* 472b */ NULL, /* 472c */ NULL, /* 472d */ NULL, /* 472e */ NULL, /* 472f */ NULL, /* 4730 */ NULL, /* 4731 */ NULL, /* 4732 */ NULL, /* 4733 */ NULL, /* 4734 */ NULL, /* 4735 */ NULL, /* 4736 */ NULL, /* 4737 */ NULL, /* 4738 */ NULL, /* 4739 */ NULL, /* 473a */ NULL, /* 473b */ NULL, /* 473c */ NULL, /* 473d */ NULL, /* 473e */ NULL, /* 473f */ NULL, /* 4740 */ NULL, /* 4741 */ NULL, /* 4742 */ NULL, /* 4743 */ NULL, /* 4744 */ NULL, /* 4745 */ NULL, /* 4746 */ NULL, /* 4747 */ NULL, /* 4748 */ NULL, /* 4749 */ NULL, /* 474a */ NULL, /* 474b */ NULL, /* 474c */ NULL, /* 474d */ NULL, /* 474e */ NULL, /* 474f */ NULL, /* 4750 */ NULL, /* 4751 */ NULL, /* 4752 */ NULL, /* 4753 */ NULL, /* 4754 */ NULL, /* 4755 */ NULL, /* 4756 */ NULL, /* 4757 */ NULL, /* 4758 */ NULL, /* 4759 */ NULL, /* 475a */ NULL, /* 475b */ NULL, /* 475c */ NULL, /* 475d */ NULL, /* 475e */ NULL, /* 475f */ NULL, /* 4760 */ NULL, /* 4761 */ NULL, /* 4762 */ NULL, /* 4763 */ NULL, /* 4764 */ NULL, /* 4765 */ NULL, /* 4766 */ NULL, /* 4767 */ NULL, /* 4768 */ NULL, /* 4769 */ NULL, /* 476a */ NULL, /* 476b */ NULL, /* 476c */ NULL, /* 476d */ NULL, /* 476e */ NULL, /* 476f */ NULL, /* 4770 */ NULL, /* 4771 */ NULL, /* 4772 */ NULL, /* 4773 */ NULL, /* 4774 */ NULL, /* 4775 */ NULL, /* 4776 */ NULL, /* 4777 */ NULL, /* 4778 */ NULL, /* 4779 */ NULL, /* 477a */ NULL, /* 477b */ NULL, /* 477c */ NULL, /* 477d */ NULL, /* 477e */ NULL, /* 477f */ NULL, /* 4780 */ NULL, /* 4781 */ NULL, /* 4782 */ NULL, /* 4783 */ NULL, /* 4784 */ NULL, /* 4785 */ NULL, /* 4786 */ NULL, /* 4787 */ NULL, /* 4788 */ NULL, /* 4789 */ NULL, /* 478a */ NULL, /* 478b */ NULL, /* 478c */ NULL, /* 478d */ NULL, /* 478e */ NULL, /* 478f */ NULL, /* 4790 */ NULL, /* 4791 */ NULL, /* 4792 */ NULL, /* 4793 */ NULL, /* 4794 */ NULL, /* 4795 */ NULL, /* 4796 */ NULL, /* 4797 */ NULL, /* 4798 */ NULL, /* 4799 */ NULL, /* 479a */ NULL, /* 479b */ NULL, /* 479c */ NULL, /* 479d */ NULL, /* 479e */ NULL, /* 479f */ NULL, /* 47a0 */ NULL, /* 47a1 */ NULL, /* 47a2 */ NULL, /* 47a3 */ NULL, /* 47a4 */ NULL, /* 47a5 */ NULL, /* 47a6 */ NULL, /* 47a7 */ NULL, /* 47a8 */ NULL, /* 47a9 */ NULL, /* 47aa */ NULL, /* 47ab */ NULL, /* 47ac */ NULL, /* 47ad */ NULL, /* 47ae */ NULL, /* 47af */ NULL, /* 47b0 */ NULL, /* 47b1 */ NULL, /* 47b2 */ NULL, /* 47b3 */ NULL, /* 47b4 */ NULL, /* 47b5 */ NULL, /* 47b6 */ NULL, /* 47b7 */ NULL, /* 47b8 */ NULL, /* 47b9 */ NULL, /* 47ba */ NULL, /* 47bb */ NULL, /* 47bc */ NULL, /* 47bd */ NULL, /* 47be */ NULL, /* 47bf */ NULL, /* 47c0 */ NULL, /* 47c1 */ NULL, /* 47c2 */ NULL, /* 47c3 */ NULL, /* 47c4 */ NULL, /* 47c5 */ NULL, /* 47c6 */ NULL, /* 47c7 */ NULL, /* 47c8 */ NULL, /* 47c9 */ NULL, /* 47ca */ NULL, /* 47cb */ NULL, /* 47cc */ NULL, /* 47cd */ NULL, /* 47ce */ NULL, /* 47cf */ NULL, /* 47d0 */ NULL, /* 47d1 */ NULL, /* 47d2 */ NULL, /* 47d3 */ NULL, /* 47d4 */ NULL, /* 47d5 */ NULL, /* 47d6 */ NULL, /* 47d7 */ NULL, /* 47d8 */ NULL, /* 47d9 */ NULL, /* 47da */ NULL, /* 47db */ NULL, /* 47dc */ NULL, /* 47dd */ NULL, /* 47de */ NULL, /* 47df */ NULL, /* 47e0 */ NULL, /* 47e1 */ NULL, /* 47e2 */ NULL, /* 47e3 */ NULL, /* 47e4 */ NULL, /* 47e5 */ NULL, /* 47e6 */ NULL, /* 47e7 */ NULL, /* 47e8 */ NULL, /* 47e9 */ NULL, /* 47ea */ NULL, /* 47eb */ NULL, /* 47ec */ NULL, /* 47ed */ NULL, /* 47ee */ NULL, /* 47ef */ NULL, /* 47f0 */ NULL, /* 47f1 */ NULL, /* 47f2 */ NULL, /* 47f3 */ NULL, /* 47f4 */ NULL, /* 47f5 */ NULL, /* 47f6 */ NULL, /* 47f7 */ NULL, /* 47f8 */ NULL, /* 47f9 */ NULL, /* 47fa */ NULL, /* 47fb */ NULL, /* 47fc */ NULL, /* 47fd */ NULL, /* 47fe */ NULL, /* 47ff */ NULL, /* 4800 */ NULL, /* 4801 */ NULL, /* 4802 */ NULL, /* 4803 */ NULL, /* 4804 */ NULL, /* 4805 */ NULL, /* 4806 */ NULL, /* 4807 */ NULL, /* 4808 */ NULL, /* 4809 */ NULL, /* 480a */ NULL, /* 480b */ NULL, /* 480c */ NULL, /* 480d */ NULL, /* 480e */ NULL, /* 480f */ NULL, /* 4810 */ NULL, /* 4811 */ NULL, /* 4812 */ NULL, /* 4813 */ NULL, /* 4814 */ NULL, /* 4815 */ NULL, /* 4816 */ NULL, /* 4817 */ NULL, /* 4818 */ NULL, /* 4819 */ NULL, /* 481a */ NULL, /* 481b */ NULL, /* 481c */ NULL, /* 481d */ NULL, /* 481e */ NULL, /* 481f */ NULL, /* 4820 */ NULL, /* 4821 */ NULL, /* 4822 */ NULL, /* 4823 */ NULL, /* 4824 */ NULL, /* 4825 */ NULL, /* 4826 */ NULL, /* 4827 */ NULL, /* 4828 */ NULL, /* 4829 */ NULL, /* 482a */ NULL, /* 482b */ NULL, /* 482c */ NULL, /* 482d */ NULL, /* 482e */ NULL, /* 482f */ NULL, /* 4830 */ NULL, /* 4831 */ NULL, /* 4832 */ NULL, /* 4833 */ NULL, /* 4834 */ NULL, /* 4835 */ NULL, /* 4836 */ NULL, /* 4837 */ NULL, /* 4838 */ NULL, /* 4839 */ NULL, /* 483a */ NULL, /* 483b */ NULL, /* 483c */ NULL, /* 483d */ NULL, /* 483e */ NULL, /* 483f */ NULL, /* 4840 */ NULL, /* 4841 */ NULL, /* 4842 */ NULL, /* 4843 */ NULL, /* 4844 */ NULL, /* 4845 */ NULL, /* 4846 */ NULL, /* 4847 */ NULL, /* 4848 */ NULL, /* 4849 */ NULL, /* 484a */ NULL, /* 484b */ NULL, /* 484c */ NULL, /* 484d */ NULL, /* 484e */ NULL, /* 484f */ NULL, /* 4850 */ NULL, /* 4851 */ NULL, /* 4852 */ NULL, /* 4853 */ NULL, /* 4854 */ NULL, /* 4855 */ NULL, /* 4856 */ NULL, /* 4857 */ NULL, /* 4858 */ NULL, /* 4859 */ NULL, /* 485a */ NULL, /* 485b */ NULL, /* 485c */ NULL, /* 485d */ NULL, /* 485e */ NULL, /* 485f */ NULL, /* 4860 */ NULL, /* 4861 */ NULL, /* 4862 */ NULL, /* 4863 */ NULL, /* 4864 */ NULL, /* 4865 */ NULL, /* 4866 */ NULL, /* 4867 */ NULL, /* 4868 */ NULL, /* 4869 */ NULL, /* 486a */ NULL, /* 486b */ NULL, /* 486c */ NULL, /* 486d */ NULL, /* 486e */ NULL, /* 486f */ NULL, /* 4870 */ NULL, /* 4871 */ NULL, /* 4872 */ NULL, /* 4873 */ NULL, /* 4874 */ NULL, /* 4875 */ NULL, /* 4876 */ NULL, /* 4877 */ NULL, /* 4878 */ NULL, /* 4879 */ NULL, /* 487a */ NULL, /* 487b */ NULL, /* 487c */ NULL, /* 487d */ NULL, /* 487e */ NULL, /* 487f */ NULL, /* 4880 */ NULL, /* 4881 */ NULL, /* 4882 */ NULL, /* 4883 */ NULL, /* 4884 */ NULL, /* 4885 */ NULL, /* 4886 */ NULL, /* 4887 */ NULL, /* 4888 */ NULL, /* 4889 */ NULL, /* 488a */ NULL, /* 488b */ NULL, /* 488c */ NULL, /* 488d */ NULL, /* 488e */ NULL, /* 488f */ NULL, /* 4890 */ NULL, /* 4891 */ NULL, /* 4892 */ NULL, /* 4893 */ NULL, /* 4894 */ NULL, /* 4895 */ NULL, /* 4896 */ NULL, /* 4897 */ NULL, /* 4898 */ NULL, /* 4899 */ NULL, /* 489a */ NULL, /* 489b */ NULL, /* 489c */ NULL, /* 489d */ NULL, /* 489e */ NULL, /* 489f */ NULL, /* 48a0 */ NULL, /* 48a1 */ NULL, /* 48a2 */ NULL, /* 48a3 */ NULL, /* 48a4 */ NULL, /* 48a5 */ NULL, /* 48a6 */ NULL, /* 48a7 */ NULL, /* 48a8 */ NULL, /* 48a9 */ NULL, /* 48aa */ NULL, /* 48ab */ NULL, /* 48ac */ NULL, /* 48ad */ NULL, /* 48ae */ NULL, /* 48af */ NULL, /* 48b0 */ NULL, /* 48b1 */ NULL, /* 48b2 */ NULL, /* 48b3 */ NULL, /* 48b4 */ NULL, /* 48b5 */ NULL, /* 48b6 */ NULL, /* 48b7 */ NULL, /* 48b8 */ NULL, /* 48b9 */ NULL, /* 48ba */ NULL, /* 48bb */ NULL, /* 48bc */ NULL, /* 48bd */ NULL, /* 48be */ NULL, /* 48bf */ NULL, /* 48c0 */ NULL, /* 48c1 */ NULL, /* 48c2 */ NULL, /* 48c3 */ NULL, /* 48c4 */ NULL, /* 48c5 */ NULL, /* 48c6 */ NULL, /* 48c7 */ NULL, /* 48c8 */ NULL, /* 48c9 */ NULL, /* 48ca */ NULL, /* 48cb */ NULL, /* 48cc */ NULL, /* 48cd */ NULL, /* 48ce */ NULL, /* 48cf */ NULL, /* 48d0 */ NULL, /* 48d1 */ NULL, /* 48d2 */ NULL, /* 48d3 */ NULL, /* 48d4 */ NULL, /* 48d5 */ NULL, /* 48d6 */ NULL, /* 48d7 */ NULL, /* 48d8 */ NULL, /* 48d9 */ NULL, /* 48da */ NULL, /* 48db */ NULL, /* 48dc */ NULL, /* 48dd */ NULL, /* 48de */ NULL, /* 48df */ NULL, /* 48e0 */ NULL, /* 48e1 */ NULL, /* 48e2 */ NULL, /* 48e3 */ NULL, /* 48e4 */ NULL, /* 48e5 */ NULL, /* 48e6 */ NULL, /* 48e7 */ NULL, /* 48e8 */ NULL, /* 48e9 */ NULL, /* 48ea */ NULL, /* 48eb */ NULL, /* 48ec */ NULL, /* 48ed */ NULL, /* 48ee */ NULL, /* 48ef */ NULL, /* 48f0 */ NULL, /* 48f1 */ NULL, /* 48f2 */ NULL, /* 48f3 */ NULL, /* 48f4 */ NULL, /* 48f5 */ NULL, /* 48f6 */ NULL, /* 48f7 */ NULL, /* 48f8 */ NULL, /* 48f9 */ NULL, /* 48fa */ NULL, /* 48fb */ NULL, /* 48fc */ NULL, /* 48fd */ NULL, /* 48fe */ NULL, /* 48ff */ NULL, /* 4900 */ NULL, /* 4901 */ NULL, /* 4902 */ NULL, /* 4903 */ NULL, /* 4904 */ NULL, /* 4905 */ NULL, /* 4906 */ NULL, /* 4907 */ NULL, /* 4908 */ NULL, /* 4909 */ NULL, /* 490a */ NULL, /* 490b */ NULL, /* 490c */ NULL, /* 490d */ NULL, /* 490e */ NULL, /* 490f */ NULL, /* 4910 */ NULL, /* 4911 */ NULL, /* 4912 */ NULL, /* 4913 */ NULL, /* 4914 */ NULL, /* 4915 */ NULL, /* 4916 */ NULL, /* 4917 */ NULL, /* 4918 */ NULL, /* 4919 */ NULL, /* 491a */ NULL, /* 491b */ NULL, /* 491c */ NULL, /* 491d */ NULL, /* 491e */ NULL, /* 491f */ NULL, /* 4920 */ NULL, /* 4921 */ NULL, /* 4922 */ NULL, /* 4923 */ NULL, /* 4924 */ NULL, /* 4925 */ NULL, /* 4926 */ NULL, /* 4927 */ NULL, /* 4928 */ NULL, /* 4929 */ NULL, /* 492a */ NULL, /* 492b */ NULL, /* 492c */ NULL, /* 492d */ NULL, /* 492e */ NULL, /* 492f */ NULL, /* 4930 */ NULL, /* 4931 */ NULL, /* 4932 */ NULL, /* 4933 */ NULL, /* 4934 */ NULL, /* 4935 */ NULL, /* 4936 */ NULL, /* 4937 */ NULL, /* 4938 */ NULL, /* 4939 */ NULL, /* 493a */ NULL, /* 493b */ NULL, /* 493c */ NULL, /* 493d */ NULL, /* 493e */ NULL, /* 493f */ NULL, /* 4940 */ NULL, /* 4941 */ NULL, /* 4942 */ NULL, /* 4943 */ NULL, /* 4944 */ NULL, /* 4945 */ NULL, /* 4946 */ NULL, /* 4947 */ NULL, /* 4948 */ NULL, /* 4949 */ NULL, /* 494a */ NULL, /* 494b */ NULL, /* 494c */ NULL, /* 494d */ NULL, /* 494e */ NULL, /* 494f */ NULL, /* 4950 */ NULL, /* 4951 */ NULL, /* 4952 */ NULL, /* 4953 */ NULL, /* 4954 */ NULL, /* 4955 */ NULL, /* 4956 */ NULL, /* 4957 */ NULL, /* 4958 */ NULL, /* 4959 */ NULL, /* 495a */ NULL, /* 495b */ NULL, /* 495c */ NULL, /* 495d */ NULL, /* 495e */ NULL, /* 495f */ NULL, /* 4960 */ NULL, /* 4961 */ NULL, /* 4962 */ NULL, /* 4963 */ NULL, /* 4964 */ NULL, /* 4965 */ NULL, /* 4966 */ NULL, /* 4967 */ NULL, /* 4968 */ NULL, /* 4969 */ NULL, /* 496a */ NULL, /* 496b */ NULL, /* 496c */ NULL, /* 496d */ NULL, /* 496e */ NULL, /* 496f */ NULL, /* 4970 */ NULL, /* 4971 */ NULL, /* 4972 */ NULL, /* 4973 */ NULL, /* 4974 */ NULL, /* 4975 */ NULL, /* 4976 */ NULL, /* 4977 */ NULL, /* 4978 */ NULL, /* 4979 */ NULL, /* 497a */ NULL, /* 497b */ NULL, /* 497c */ NULL, /* 497d */ NULL, /* 497e */ NULL, /* 497f */ NULL, /* 4980 */ NULL, /* 4981 */ NULL, /* 4982 */ NULL, /* 4983 */ NULL, /* 4984 */ NULL, /* 4985 */ NULL, /* 4986 */ NULL, /* 4987 */ NULL, /* 4988 */ NULL, /* 4989 */ NULL, /* 498a */ NULL, /* 498b */ NULL, /* 498c */ NULL, /* 498d */ NULL, /* 498e */ NULL, /* 498f */ NULL, /* 4990 */ NULL, /* 4991 */ NULL, /* 4992 */ NULL, /* 4993 */ NULL, /* 4994 */ NULL, /* 4995 */ NULL, /* 4996 */ NULL, /* 4997 */ NULL, /* 4998 */ NULL, /* 4999 */ NULL, /* 499a */ NULL, /* 499b */ NULL, /* 499c */ NULL, /* 499d */ NULL, /* 499e */ NULL, /* 499f */ NULL, /* 49a0 */ NULL, /* 49a1 */ NULL, /* 49a2 */ NULL, /* 49a3 */ NULL, /* 49a4 */ NULL, /* 49a5 */ NULL, /* 49a6 */ NULL, /* 49a7 */ NULL, /* 49a8 */ NULL, /* 49a9 */ NULL, /* 49aa */ NULL, /* 49ab */ NULL, /* 49ac */ NULL, /* 49ad */ NULL, /* 49ae */ NULL, /* 49af */ NULL, /* 49b0 */ NULL, /* 49b1 */ NULL, /* 49b2 */ NULL, /* 49b3 */ NULL, /* 49b4 */ NULL, /* 49b5 */ NULL, /* 49b6 */ NULL, /* 49b7 */ NULL, /* 49b8 */ NULL, /* 49b9 */ NULL, /* 49ba */ NULL, /* 49bb */ NULL, /* 49bc */ NULL, /* 49bd */ NULL, /* 49be */ NULL, /* 49bf */ NULL, /* 49c0 */ NULL, /* 49c1 */ NULL, /* 49c2 */ NULL, /* 49c3 */ NULL, /* 49c4 */ NULL, /* 49c5 */ NULL, /* 49c6 */ NULL, /* 49c7 */ NULL, /* 49c8 */ NULL, /* 49c9 */ NULL, /* 49ca */ NULL, /* 49cb */ NULL, /* 49cc */ NULL, /* 49cd */ NULL, /* 49ce */ NULL, /* 49cf */ NULL, /* 49d0 */ NULL, /* 49d1 */ NULL, /* 49d2 */ NULL, /* 49d3 */ NULL, /* 49d4 */ NULL, /* 49d5 */ NULL, /* 49d6 */ NULL, /* 49d7 */ NULL, /* 49d8 */ NULL, /* 49d9 */ NULL, /* 49da */ NULL, /* 49db */ NULL, /* 49dc */ NULL, /* 49dd */ NULL, /* 49de */ NULL, /* 49df */ NULL, /* 49e0 */ NULL, /* 49e1 */ NULL, /* 49e2 */ NULL, /* 49e3 */ NULL, /* 49e4 */ NULL, /* 49e5 */ NULL, /* 49e6 */ NULL, /* 49e7 */ NULL, /* 49e8 */ NULL, /* 49e9 */ NULL, /* 49ea */ NULL, /* 49eb */ NULL, /* 49ec */ NULL, /* 49ed */ NULL, /* 49ee */ NULL, /* 49ef */ NULL, /* 49f0 */ NULL, /* 49f1 */ NULL, /* 49f2 */ NULL, /* 49f3 */ NULL, /* 49f4 */ NULL, /* 49f5 */ NULL, /* 49f6 */ NULL, /* 49f7 */ NULL, /* 49f8 */ NULL, /* 49f9 */ NULL, /* 49fa */ NULL, /* 49fb */ NULL, /* 49fc */ NULL, /* 49fd */ NULL, /* 49fe */ NULL, /* 49ff */ NULL, /* 4a00 */ NULL, /* 4a01 */ NULL, /* 4a02 */ NULL, /* 4a03 */ NULL, /* 4a04 */ NULL, /* 4a05 */ NULL, /* 4a06 */ NULL, /* 4a07 */ NULL, /* 4a08 */ NULL, /* 4a09 */ NULL, /* 4a0a */ NULL, /* 4a0b */ NULL, /* 4a0c */ NULL, /* 4a0d */ NULL, /* 4a0e */ NULL, /* 4a0f */ NULL, /* 4a10 */ NULL, /* 4a11 */ NULL, /* 4a12 */ NULL, /* 4a13 */ NULL, /* 4a14 */ NULL, /* 4a15 */ NULL, /* 4a16 */ NULL, /* 4a17 */ NULL, /* 4a18 */ NULL, /* 4a19 */ NULL, /* 4a1a */ NULL, /* 4a1b */ NULL, /* 4a1c */ NULL, /* 4a1d */ NULL, /* 4a1e */ NULL, /* 4a1f */ NULL, /* 4a20 */ NULL, /* 4a21 */ NULL, /* 4a22 */ NULL, /* 4a23 */ NULL, /* 4a24 */ NULL, /* 4a25 */ NULL, /* 4a26 */ NULL, /* 4a27 */ NULL, /* 4a28 */ NULL, /* 4a29 */ NULL, /* 4a2a */ NULL, /* 4a2b */ NULL, /* 4a2c */ NULL, /* 4a2d */ NULL, /* 4a2e */ NULL, /* 4a2f */ NULL, /* 4a30 */ NULL, /* 4a31 */ NULL, /* 4a32 */ NULL, /* 4a33 */ NULL, /* 4a34 */ NULL, /* 4a35 */ NULL, /* 4a36 */ NULL, /* 4a37 */ NULL, /* 4a38 */ NULL, /* 4a39 */ NULL, /* 4a3a */ NULL, /* 4a3b */ NULL, /* 4a3c */ NULL, /* 4a3d */ NULL, /* 4a3e */ NULL, /* 4a3f */ NULL, /* 4a40 */ NULL, /* 4a41 */ NULL, /* 4a42 */ NULL, /* 4a43 */ NULL, /* 4a44 */ NULL, /* 4a45 */ NULL, /* 4a46 */ NULL, /* 4a47 */ NULL, /* 4a48 */ NULL, /* 4a49 */ NULL, /* 4a4a */ NULL, /* 4a4b */ NULL, /* 4a4c */ NULL, /* 4a4d */ NULL, /* 4a4e */ NULL, /* 4a4f */ NULL, /* 4a50 */ NULL, /* 4a51 */ NULL, /* 4a52 */ NULL, /* 4a53 */ NULL, /* 4a54 */ NULL, /* 4a55 */ NULL, /* 4a56 */ NULL, /* 4a57 */ NULL, /* 4a58 */ NULL, /* 4a59 */ NULL, /* 4a5a */ NULL, /* 4a5b */ NULL, /* 4a5c */ NULL, /* 4a5d */ NULL, /* 4a5e */ NULL, /* 4a5f */ NULL, /* 4a60 */ NULL, /* 4a61 */ NULL, /* 4a62 */ NULL, /* 4a63 */ NULL, /* 4a64 */ NULL, /* 4a65 */ NULL, /* 4a66 */ NULL, /* 4a67 */ NULL, /* 4a68 */ NULL, /* 4a69 */ NULL, /* 4a6a */ NULL, /* 4a6b */ NULL, /* 4a6c */ NULL, /* 4a6d */ NULL, /* 4a6e */ NULL, /* 4a6f */ NULL, /* 4a70 */ NULL, /* 4a71 */ NULL, /* 4a72 */ NULL, /* 4a73 */ NULL, /* 4a74 */ NULL, /* 4a75 */ NULL, /* 4a76 */ NULL, /* 4a77 */ NULL, /* 4a78 */ NULL, /* 4a79 */ NULL, /* 4a7a */ NULL, /* 4a7b */ NULL, /* 4a7c */ NULL, /* 4a7d */ NULL, /* 4a7e */ NULL, /* 4a7f */ NULL, /* 4a80 */ NULL, /* 4a81 */ NULL, /* 4a82 */ NULL, /* 4a83 */ NULL, /* 4a84 */ NULL, /* 4a85 */ NULL, /* 4a86 */ NULL, /* 4a87 */ NULL, /* 4a88 */ NULL, /* 4a89 */ NULL, /* 4a8a */ NULL, /* 4a8b */ NULL, /* 4a8c */ NULL, /* 4a8d */ NULL, /* 4a8e */ NULL, /* 4a8f */ NULL, /* 4a90 */ NULL, /* 4a91 */ NULL, /* 4a92 */ NULL, /* 4a93 */ NULL, /* 4a94 */ NULL, /* 4a95 */ NULL, /* 4a96 */ NULL, /* 4a97 */ NULL, /* 4a98 */ NULL, /* 4a99 */ NULL, /* 4a9a */ NULL, /* 4a9b */ NULL, /* 4a9c */ NULL, /* 4a9d */ NULL, /* 4a9e */ NULL, /* 4a9f */ NULL, /* 4aa0 */ NULL, /* 4aa1 */ NULL, /* 4aa2 */ NULL, /* 4aa3 */ NULL, /* 4aa4 */ NULL, /* 4aa5 */ NULL, /* 4aa6 */ NULL, /* 4aa7 */ NULL, /* 4aa8 */ NULL, /* 4aa9 */ NULL, /* 4aaa */ NULL, /* 4aab */ NULL, /* 4aac */ NULL, /* 4aad */ NULL, /* 4aae */ NULL, /* 4aaf */ NULL, /* 4ab0 */ NULL, /* 4ab1 */ NULL, /* 4ab2 */ NULL, /* 4ab3 */ NULL, /* 4ab4 */ NULL, /* 4ab5 */ NULL, /* 4ab6 */ NULL, /* 4ab7 */ NULL, /* 4ab8 */ NULL, /* 4ab9 */ NULL, /* 4aba */ NULL, /* 4abb */ NULL, /* 4abc */ NULL, /* 4abd */ NULL, /* 4abe */ NULL, /* 4abf */ NULL, /* 4ac0 */ NULL, /* 4ac1 */ NULL, /* 4ac2 */ NULL, /* 4ac3 */ NULL, /* 4ac4 */ NULL, /* 4ac5 */ NULL, /* 4ac6 */ NULL, /* 4ac7 */ NULL, /* 4ac8 */ NULL, /* 4ac9 */ NULL, /* 4aca */ NULL, /* 4acb */ NULL, /* 4acc */ NULL, /* 4acd */ NULL, /* 4ace */ NULL, /* 4acf */ NULL, /* 4ad0 */ NULL, /* 4ad1 */ NULL, /* 4ad2 */ NULL, /* 4ad3 */ NULL, /* 4ad4 */ NULL, /* 4ad5 */ NULL, /* 4ad6 */ NULL, /* 4ad7 */ NULL, /* 4ad8 */ NULL, /* 4ad9 */ NULL, /* 4ada */ NULL, /* 4adb */ NULL, /* 4adc */ NULL, /* 4add */ NULL, /* 4ade */ NULL, /* 4adf */ NULL, /* 4ae0 */ NULL, /* 4ae1 */ NULL, /* 4ae2 */ NULL, /* 4ae3 */ NULL, /* 4ae4 */ NULL, /* 4ae5 */ NULL, /* 4ae6 */ NULL, /* 4ae7 */ NULL, /* 4ae8 */ NULL, /* 4ae9 */ NULL, /* 4aea */ NULL, /* 4aeb */ NULL, /* 4aec */ NULL, /* 4aed */ NULL, /* 4aee */ NULL, /* 4aef */ NULL, /* 4af0 */ NULL, /* 4af1 */ NULL, /* 4af2 */ NULL, /* 4af3 */ NULL, /* 4af4 */ NULL, /* 4af5 */ NULL, /* 4af6 */ NULL, /* 4af7 */ NULL, /* 4af8 */ NULL, /* 4af9 */ NULL, /* 4afa */ NULL, /* 4afb */ NULL, /* 4afc */ NULL, /* 4afd */ NULL, /* 4afe */ NULL, /* 4aff */ NULL, /* 4b00 */ NULL, /* 4b01 */ NULL, /* 4b02 */ NULL, /* 4b03 */ NULL, /* 4b04 */ NULL, /* 4b05 */ NULL, /* 4b06 */ NULL, /* 4b07 */ NULL, /* 4b08 */ NULL, /* 4b09 */ NULL, /* 4b0a */ NULL, /* 4b0b */ NULL, /* 4b0c */ NULL, /* 4b0d */ NULL, /* 4b0e */ NULL, /* 4b0f */ NULL, /* 4b10 */ NULL, /* 4b11 */ NULL, /* 4b12 */ NULL, /* 4b13 */ NULL, /* 4b14 */ NULL, /* 4b15 */ NULL, /* 4b16 */ NULL, /* 4b17 */ NULL, /* 4b18 */ NULL, /* 4b19 */ NULL, /* 4b1a */ NULL, /* 4b1b */ NULL, /* 4b1c */ NULL, /* 4b1d */ NULL, /* 4b1e */ NULL, /* 4b1f */ NULL, /* 4b20 */ NULL, /* 4b21 */ NULL, /* 4b22 */ NULL, /* 4b23 */ NULL, /* 4b24 */ NULL, /* 4b25 */ NULL, /* 4b26 */ NULL, /* 4b27 */ NULL, /* 4b28 */ NULL, /* 4b29 */ NULL, /* 4b2a */ NULL, /* 4b2b */ NULL, /* 4b2c */ NULL, /* 4b2d */ NULL, /* 4b2e */ NULL, /* 4b2f */ NULL, /* 4b30 */ NULL, /* 4b31 */ NULL, /* 4b32 */ NULL, /* 4b33 */ NULL, /* 4b34 */ NULL, /* 4b35 */ NULL, /* 4b36 */ NULL, /* 4b37 */ NULL, /* 4b38 */ NULL, /* 4b39 */ NULL, /* 4b3a */ NULL, /* 4b3b */ NULL, /* 4b3c */ NULL, /* 4b3d */ NULL, /* 4b3e */ NULL, /* 4b3f */ NULL, /* 4b40 */ NULL, /* 4b41 */ NULL, /* 4b42 */ NULL, /* 4b43 */ NULL, /* 4b44 */ NULL, /* 4b45 */ NULL, /* 4b46 */ NULL, /* 4b47 */ NULL, /* 4b48 */ NULL, /* 4b49 */ NULL, /* 4b4a */ NULL, /* 4b4b */ NULL, /* 4b4c */ NULL, /* 4b4d */ NULL, /* 4b4e */ NULL, /* 4b4f */ NULL, /* 4b50 */ NULL, /* 4b51 */ NULL, /* 4b52 */ NULL, /* 4b53 */ NULL, /* 4b54 */ NULL, /* 4b55 */ NULL, /* 4b56 */ NULL, /* 4b57 */ NULL, /* 4b58 */ NULL, /* 4b59 */ NULL, /* 4b5a */ NULL, /* 4b5b */ NULL, /* 4b5c */ NULL, /* 4b5d */ NULL, /* 4b5e */ NULL, /* 4b5f */ NULL, /* 4b60 */ NULL, /* 4b61 */ NULL, /* 4b62 */ NULL, /* 4b63 */ NULL, /* 4b64 */ NULL, /* 4b65 */ NULL, /* 4b66 */ NULL, /* 4b67 */ NULL, /* 4b68 */ NULL, /* 4b69 */ NULL, /* 4b6a */ NULL, /* 4b6b */ NULL, /* 4b6c */ NULL, /* 4b6d */ NULL, /* 4b6e */ NULL, /* 4b6f */ NULL, /* 4b70 */ NULL, /* 4b71 */ NULL, /* 4b72 */ NULL, /* 4b73 */ NULL, /* 4b74 */ NULL, /* 4b75 */ NULL, /* 4b76 */ NULL, /* 4b77 */ NULL, /* 4b78 */ NULL, /* 4b79 */ NULL, /* 4b7a */ NULL, /* 4b7b */ NULL, /* 4b7c */ NULL, /* 4b7d */ NULL, /* 4b7e */ NULL, /* 4b7f */ NULL, /* 4b80 */ NULL, /* 4b81 */ NULL, /* 4b82 */ NULL, /* 4b83 */ NULL, /* 4b84 */ NULL, /* 4b85 */ NULL, /* 4b86 */ NULL, /* 4b87 */ NULL, /* 4b88 */ NULL, /* 4b89 */ NULL, /* 4b8a */ NULL, /* 4b8b */ NULL, /* 4b8c */ NULL, /* 4b8d */ NULL, /* 4b8e */ NULL, /* 4b8f */ NULL, /* 4b90 */ NULL, /* 4b91 */ NULL, /* 4b92 */ NULL, /* 4b93 */ NULL, /* 4b94 */ NULL, /* 4b95 */ NULL, /* 4b96 */ NULL, /* 4b97 */ NULL, /* 4b98 */ NULL, /* 4b99 */ NULL, /* 4b9a */ NULL, /* 4b9b */ NULL, /* 4b9c */ NULL, /* 4b9d */ NULL, /* 4b9e */ NULL, /* 4b9f */ NULL, /* 4ba0 */ NULL, /* 4ba1 */ NULL, /* 4ba2 */ NULL, /* 4ba3 */ NULL, /* 4ba4 */ NULL, /* 4ba5 */ NULL, /* 4ba6 */ NULL, /* 4ba7 */ NULL, /* 4ba8 */ NULL, /* 4ba9 */ NULL, /* 4baa */ NULL, /* 4bab */ NULL, /* 4bac */ NULL, /* 4bad */ NULL, /* 4bae */ NULL, /* 4baf */ NULL, /* 4bb0 */ NULL, /* 4bb1 */ NULL, /* 4bb2 */ NULL, /* 4bb3 */ NULL, /* 4bb4 */ NULL, /* 4bb5 */ NULL, /* 4bb6 */ NULL, /* 4bb7 */ NULL, /* 4bb8 */ NULL, /* 4bb9 */ NULL, /* 4bba */ NULL, /* 4bbb */ NULL, /* 4bbc */ NULL, /* 4bbd */ NULL, /* 4bbe */ NULL, /* 4bbf */ NULL, /* 4bc0 */ NULL, /* 4bc1 */ NULL, /* 4bc2 */ NULL, /* 4bc3 */ NULL, /* 4bc4 */ NULL, /* 4bc5 */ NULL, /* 4bc6 */ NULL, /* 4bc7 */ NULL, /* 4bc8 */ NULL, /* 4bc9 */ NULL, /* 4bca */ NULL, /* 4bcb */ NULL, /* 4bcc */ NULL, /* 4bcd */ NULL, /* 4bce */ NULL, /* 4bcf */ NULL, /* 4bd0 */ NULL, /* 4bd1 */ NULL, /* 4bd2 */ NULL, /* 4bd3 */ NULL, /* 4bd4 */ NULL, /* 4bd5 */ NULL, /* 4bd6 */ NULL, /* 4bd7 */ NULL, /* 4bd8 */ NULL, /* 4bd9 */ NULL, /* 4bda */ NULL, /* 4bdb */ NULL, /* 4bdc */ NULL, /* 4bdd */ NULL, /* 4bde */ NULL, /* 4bdf */ NULL, /* 4be0 */ NULL, /* 4be1 */ NULL, /* 4be2 */ NULL, /* 4be3 */ NULL, /* 4be4 */ NULL, /* 4be5 */ NULL, /* 4be6 */ NULL, /* 4be7 */ NULL, /* 4be8 */ NULL, /* 4be9 */ NULL, /* 4bea */ NULL, /* 4beb */ NULL, /* 4bec */ NULL, /* 4bed */ NULL, /* 4bee */ NULL, /* 4bef */ NULL, /* 4bf0 */ NULL, /* 4bf1 */ NULL, /* 4bf2 */ NULL, /* 4bf3 */ NULL, /* 4bf4 */ NULL, /* 4bf5 */ NULL, /* 4bf6 */ NULL, /* 4bf7 */ NULL, /* 4bf8 */ NULL, /* 4bf9 */ NULL, /* 4bfa */ NULL, /* 4bfb */ NULL, /* 4bfc */ NULL, /* 4bfd */ NULL, /* 4bfe */ NULL, /* 4bff */ NULL, /* 4c00 */ NULL, /* 4c01 */ NULL, /* 4c02 */ NULL, /* 4c03 */ NULL, /* 4c04 */ NULL, /* 4c05 */ NULL, /* 4c06 */ NULL, /* 4c07 */ NULL, /* 4c08 */ NULL, /* 4c09 */ NULL, /* 4c0a */ NULL, /* 4c0b */ NULL, /* 4c0c */ NULL, /* 4c0d */ NULL, /* 4c0e */ NULL, /* 4c0f */ NULL, /* 4c10 */ NULL, /* 4c11 */ NULL, /* 4c12 */ NULL, /* 4c13 */ NULL, /* 4c14 */ NULL, /* 4c15 */ NULL, /* 4c16 */ NULL, /* 4c17 */ NULL, /* 4c18 */ NULL, /* 4c19 */ NULL, /* 4c1a */ NULL, /* 4c1b */ NULL, /* 4c1c */ NULL, /* 4c1d */ NULL, /* 4c1e */ NULL, /* 4c1f */ NULL, /* 4c20 */ NULL, /* 4c21 */ NULL, /* 4c22 */ NULL, /* 4c23 */ NULL, /* 4c24 */ NULL, /* 4c25 */ NULL, /* 4c26 */ NULL, /* 4c27 */ NULL, /* 4c28 */ NULL, /* 4c29 */ NULL, /* 4c2a */ NULL, /* 4c2b */ NULL, /* 4c2c */ NULL, /* 4c2d */ NULL, /* 4c2e */ NULL, /* 4c2f */ NULL, /* 4c30 */ NULL, /* 4c31 */ NULL, /* 4c32 */ NULL, /* 4c33 */ NULL, /* 4c34 */ NULL, /* 4c35 */ NULL, /* 4c36 */ NULL, /* 4c37 */ NULL, /* 4c38 */ NULL, /* 4c39 */ NULL, /* 4c3a */ NULL, /* 4c3b */ NULL, /* 4c3c */ NULL, /* 4c3d */ NULL, /* 4c3e */ NULL, /* 4c3f */ NULL, /* 4c40 */ NULL, /* 4c41 */ NULL, /* 4c42 */ NULL, /* 4c43 */ NULL, /* 4c44 */ NULL, /* 4c45 */ NULL, /* 4c46 */ NULL, /* 4c47 */ NULL, /* 4c48 */ NULL, /* 4c49 */ NULL, /* 4c4a */ NULL, /* 4c4b */ NULL, /* 4c4c */ NULL, /* 4c4d */ NULL, /* 4c4e */ NULL, /* 4c4f */ NULL, /* 4c50 */ NULL, /* 4c51 */ NULL, /* 4c52 */ NULL, /* 4c53 */ NULL, /* 4c54 */ NULL, /* 4c55 */ NULL, /* 4c56 */ NULL, /* 4c57 */ NULL, /* 4c58 */ NULL, /* 4c59 */ NULL, /* 4c5a */ NULL, /* 4c5b */ NULL, /* 4c5c */ NULL, /* 4c5d */ NULL, /* 4c5e */ NULL, /* 4c5f */ NULL, /* 4c60 */ NULL, /* 4c61 */ NULL, /* 4c62 */ NULL, /* 4c63 */ NULL, /* 4c64 */ NULL, /* 4c65 */ NULL, /* 4c66 */ NULL, /* 4c67 */ NULL, /* 4c68 */ NULL, /* 4c69 */ NULL, /* 4c6a */ NULL, /* 4c6b */ NULL, /* 4c6c */ NULL, /* 4c6d */ NULL, /* 4c6e */ NULL, /* 4c6f */ NULL, /* 4c70 */ NULL, /* 4c71 */ NULL, /* 4c72 */ NULL, /* 4c73 */ NULL, /* 4c74 */ NULL, /* 4c75 */ NULL, /* 4c76 */ NULL, /* 4c77 */ NULL, /* 4c78 */ NULL, /* 4c79 */ NULL, /* 4c7a */ NULL, /* 4c7b */ NULL, /* 4c7c */ NULL, /* 4c7d */ NULL, /* 4c7e */ NULL, /* 4c7f */ NULL, /* 4c80 */ NULL, /* 4c81 */ NULL, /* 4c82 */ NULL, /* 4c83 */ NULL, /* 4c84 */ NULL, /* 4c85 */ NULL, /* 4c86 */ NULL, /* 4c87 */ NULL, /* 4c88 */ NULL, /* 4c89 */ NULL, /* 4c8a */ NULL, /* 4c8b */ NULL, /* 4c8c */ NULL, /* 4c8d */ NULL, /* 4c8e */ NULL, /* 4c8f */ NULL, /* 4c90 */ NULL, /* 4c91 */ NULL, /* 4c92 */ NULL, /* 4c93 */ NULL, /* 4c94 */ NULL, /* 4c95 */ NULL, /* 4c96 */ NULL, /* 4c97 */ NULL, /* 4c98 */ NULL, /* 4c99 */ NULL, /* 4c9a */ NULL, /* 4c9b */ NULL, /* 4c9c */ NULL, /* 4c9d */ NULL, /* 4c9e */ NULL, /* 4c9f */ NULL, /* 4ca0 */ NULL, /* 4ca1 */ NULL, /* 4ca2 */ NULL, /* 4ca3 */ NULL, /* 4ca4 */ NULL, /* 4ca5 */ NULL, /* 4ca6 */ NULL, /* 4ca7 */ NULL, /* 4ca8 */ NULL, /* 4ca9 */ NULL, /* 4caa */ NULL, /* 4cab */ NULL, /* 4cac */ NULL, /* 4cad */ NULL, /* 4cae */ NULL, /* 4caf */ NULL, /* 4cb0 */ NULL, /* 4cb1 */ NULL, /* 4cb2 */ NULL, /* 4cb3 */ NULL, /* 4cb4 */ NULL, /* 4cb5 */ NULL, /* 4cb6 */ NULL, /* 4cb7 */ NULL, /* 4cb8 */ NULL, /* 4cb9 */ NULL, /* 4cba */ NULL, /* 4cbb */ NULL, /* 4cbc */ NULL, /* 4cbd */ NULL, /* 4cbe */ NULL, /* 4cbf */ NULL, /* 4cc0 */ NULL, /* 4cc1 */ NULL, /* 4cc2 */ NULL, /* 4cc3 */ NULL, /* 4cc4 */ NULL, /* 4cc5 */ NULL, /* 4cc6 */ NULL, /* 4cc7 */ NULL, /* 4cc8 */ NULL, /* 4cc9 */ NULL, /* 4cca */ NULL, /* 4ccb */ NULL, /* 4ccc */ NULL, /* 4ccd */ NULL, /* 4cce */ NULL, /* 4ccf */ NULL, /* 4cd0 */ NULL, /* 4cd1 */ NULL, /* 4cd2 */ NULL, /* 4cd3 */ NULL, /* 4cd4 */ NULL, /* 4cd5 */ NULL, /* 4cd6 */ NULL, /* 4cd7 */ NULL, /* 4cd8 */ NULL, /* 4cd9 */ NULL, /* 4cda */ NULL, /* 4cdb */ NULL, /* 4cdc */ NULL, /* 4cdd */ NULL, /* 4cde */ NULL, /* 4cdf */ NULL, /* 4ce0 */ NULL, /* 4ce1 */ NULL, /* 4ce2 */ NULL, /* 4ce3 */ NULL, /* 4ce4 */ NULL, /* 4ce5 */ NULL, /* 4ce6 */ NULL, /* 4ce7 */ NULL, /* 4ce8 */ NULL, /* 4ce9 */ NULL, /* 4cea */ NULL, /* 4ceb */ NULL, /* 4cec */ NULL, /* 4ced */ NULL, /* 4cee */ NULL, /* 4cef */ NULL, /* 4cf0 */ NULL, /* 4cf1 */ NULL, /* 4cf2 */ NULL, /* 4cf3 */ NULL, /* 4cf4 */ NULL, /* 4cf5 */ NULL, /* 4cf6 */ NULL, /* 4cf7 */ NULL, /* 4cf8 */ NULL, /* 4cf9 */ NULL, /* 4cfa */ NULL, /* 4cfb */ NULL, /* 4cfc */ NULL, /* 4cfd */ NULL, /* 4cfe */ NULL, /* 4cff */ NULL, /* 4d00 */ NULL, /* 4d01 */ NULL, /* 4d02 */ NULL, /* 4d03 */ NULL, /* 4d04 */ NULL, /* 4d05 */ NULL, /* 4d06 */ NULL, /* 4d07 */ NULL, /* 4d08 */ NULL, /* 4d09 */ NULL, /* 4d0a */ NULL, /* 4d0b */ NULL, /* 4d0c */ NULL, /* 4d0d */ NULL, /* 4d0e */ NULL, /* 4d0f */ NULL, /* 4d10 */ NULL, /* 4d11 */ NULL, /* 4d12 */ NULL, /* 4d13 */ NULL, /* 4d14 */ NULL, /* 4d15 */ NULL, /* 4d16 */ NULL, /* 4d17 */ NULL, /* 4d18 */ NULL, /* 4d19 */ NULL, /* 4d1a */ NULL, /* 4d1b */ NULL, /* 4d1c */ NULL, /* 4d1d */ NULL, /* 4d1e */ NULL, /* 4d1f */ NULL, /* 4d20 */ NULL, /* 4d21 */ NULL, /* 4d22 */ NULL, /* 4d23 */ NULL, /* 4d24 */ NULL, /* 4d25 */ NULL, /* 4d26 */ NULL, /* 4d27 */ NULL, /* 4d28 */ NULL, /* 4d29 */ NULL, /* 4d2a */ NULL, /* 4d2b */ NULL, /* 4d2c */ NULL, /* 4d2d */ NULL, /* 4d2e */ NULL, /* 4d2f */ NULL, /* 4d30 */ NULL, /* 4d31 */ NULL, /* 4d32 */ NULL, /* 4d33 */ NULL, /* 4d34 */ NULL, /* 4d35 */ NULL, /* 4d36 */ NULL, /* 4d37 */ NULL, /* 4d38 */ NULL, /* 4d39 */ NULL, /* 4d3a */ NULL, /* 4d3b */ NULL, /* 4d3c */ NULL, /* 4d3d */ NULL, /* 4d3e */ NULL, /* 4d3f */ NULL, /* 4d40 */ NULL, /* 4d41 */ NULL, /* 4d42 */ NULL, /* 4d43 */ NULL, /* 4d44 */ NULL, /* 4d45 */ NULL, /* 4d46 */ NULL, /* 4d47 */ NULL, /* 4d48 */ NULL, /* 4d49 */ NULL, /* 4d4a */ NULL, /* 4d4b */ NULL, /* 4d4c */ NULL, /* 4d4d */ NULL, /* 4d4e */ NULL, /* 4d4f */ NULL, /* 4d50 */ NULL, /* 4d51 */ NULL, /* 4d52 */ NULL, /* 4d53 */ NULL, /* 4d54 */ NULL, /* 4d55 */ NULL, /* 4d56 */ NULL, /* 4d57 */ NULL, /* 4d58 */ NULL, /* 4d59 */ NULL, /* 4d5a */ NULL, /* 4d5b */ NULL, /* 4d5c */ NULL, /* 4d5d */ NULL, /* 4d5e */ NULL, /* 4d5f */ NULL, /* 4d60 */ NULL, /* 4d61 */ NULL, /* 4d62 */ NULL, /* 4d63 */ NULL, /* 4d64 */ NULL, /* 4d65 */ NULL, /* 4d66 */ NULL, /* 4d67 */ NULL, /* 4d68 */ NULL, /* 4d69 */ NULL, /* 4d6a */ NULL, /* 4d6b */ NULL, /* 4d6c */ NULL, /* 4d6d */ NULL, /* 4d6e */ NULL, /* 4d6f */ NULL, /* 4d70 */ NULL, /* 4d71 */ NULL, /* 4d72 */ NULL, /* 4d73 */ NULL, /* 4d74 */ NULL, /* 4d75 */ NULL, /* 4d76 */ NULL, /* 4d77 */ NULL, /* 4d78 */ NULL, /* 4d79 */ NULL, /* 4d7a */ NULL, /* 4d7b */ NULL, /* 4d7c */ NULL, /* 4d7d */ NULL, /* 4d7e */ NULL, /* 4d7f */ NULL, /* 4d80 */ NULL, /* 4d81 */ NULL, /* 4d82 */ NULL, /* 4d83 */ NULL, /* 4d84 */ NULL, /* 4d85 */ NULL, /* 4d86 */ NULL, /* 4d87 */ NULL, /* 4d88 */ NULL, /* 4d89 */ NULL, /* 4d8a */ NULL, /* 4d8b */ NULL, /* 4d8c */ NULL, /* 4d8d */ NULL, /* 4d8e */ NULL, /* 4d8f */ NULL, /* 4d90 */ NULL, /* 4d91 */ NULL, /* 4d92 */ NULL, /* 4d93 */ NULL, /* 4d94 */ NULL, /* 4d95 */ NULL, /* 4d96 */ NULL, /* 4d97 */ NULL, /* 4d98 */ NULL, /* 4d99 */ NULL, /* 4d9a */ NULL, /* 4d9b */ NULL, /* 4d9c */ NULL, /* 4d9d */ NULL, /* 4d9e */ NULL, /* 4d9f */ NULL, /* 4da0 */ NULL, /* 4da1 */ NULL, /* 4da2 */ NULL, /* 4da3 */ NULL, /* 4da4 */ NULL, /* 4da5 */ NULL, /* 4da6 */ NULL, /* 4da7 */ NULL, /* 4da8 */ NULL, /* 4da9 */ NULL, /* 4daa */ NULL, /* 4dab */ NULL, /* 4dac */ NULL, /* 4dad */ NULL, /* 4dae */ NULL, /* 4daf */ NULL, /* 4db0 */ NULL, /* 4db1 */ NULL, /* 4db2 */ NULL, /* 4db3 */ NULL, /* 4db4 */ NULL, /* 4db5 */ NULL, /* 4db6 */ NULL, /* 4db7 */ NULL, /* 4db8 */ NULL, /* 4db9 */ NULL, /* 4dba */ NULL, /* 4dbb */ NULL, /* 4dbc */ NULL, /* 4dbd */ NULL, /* 4dbe */ NULL, /* 4dbf */ NULL, /* 4dc0 */ NULL, /* 4dc1 */ NULL, /* 4dc2 */ NULL, /* 4dc3 */ NULL, /* 4dc4 */ NULL, /* 4dc5 */ NULL, /* 4dc6 */ NULL, /* 4dc7 */ NULL, /* 4dc8 */ NULL, /* 4dc9 */ NULL, /* 4dca */ NULL, /* 4dcb */ NULL, /* 4dcc */ NULL, /* 4dcd */ NULL, /* 4dce */ NULL, /* 4dcf */ NULL, /* 4dd0 */ NULL, /* 4dd1 */ NULL, /* 4dd2 */ NULL, /* 4dd3 */ NULL, /* 4dd4 */ NULL, /* 4dd5 */ NULL, /* 4dd6 */ NULL, /* 4dd7 */ NULL, /* 4dd8 */ NULL, /* 4dd9 */ NULL, /* 4dda */ NULL, /* 4ddb */ NULL, /* 4ddc */ NULL, /* 4ddd */ NULL, /* 4dde */ NULL, /* 4ddf */ NULL, /* 4de0 */ NULL, /* 4de1 */ NULL, /* 4de2 */ NULL, /* 4de3 */ NULL, /* 4de4 */ NULL, /* 4de5 */ NULL, /* 4de6 */ NULL, /* 4de7 */ NULL, /* 4de8 */ NULL, /* 4de9 */ NULL, /* 4dea */ NULL, /* 4deb */ NULL, /* 4dec */ NULL, /* 4ded */ NULL, /* 4dee */ NULL, /* 4def */ NULL, /* 4df0 */ NULL, /* 4df1 */ NULL, /* 4df2 */ NULL, /* 4df3 */ NULL, /* 4df4 */ NULL, /* 4df5 */ NULL, /* 4df6 */ NULL, /* 4df7 */ NULL, /* 4df8 */ NULL, /* 4df9 */ NULL, /* 4dfa */ NULL, /* 4dfb */ NULL, /* 4dfc */ NULL, /* 4dfd */ NULL, /* 4dfe */ NULL, /* 4dff */ NULL, /* 4e00 */ NULL, /* 4e01 */ NULL, /* 4e02 */ NULL, /* 4e03 */ NULL, /* 4e04 */ NULL, /* 4e05 */ NULL, /* 4e06 */ NULL, /* 4e07 */ NULL, /* 4e08 */ NULL, /* 4e09 */ NULL, /* 4e0a */ NULL, /* 4e0b */ NULL, /* 4e0c */ NULL, /* 4e0d */ NULL, /* 4e0e */ NULL, /* 4e0f */ NULL, /* 4e10 */ NULL, /* 4e11 */ NULL, /* 4e12 */ NULL, /* 4e13 */ NULL, /* 4e14 */ NULL, /* 4e15 */ NULL, /* 4e16 */ NULL, /* 4e17 */ NULL, /* 4e18 */ NULL, /* 4e19 */ NULL, /* 4e1a */ NULL, /* 4e1b */ NULL, /* 4e1c */ NULL, /* 4e1d */ NULL, /* 4e1e */ NULL, /* 4e1f */ NULL, /* 4e20 */ NULL, /* 4e21 */ NULL, /* 4e22 */ NULL, /* 4e23 */ NULL, /* 4e24 */ NULL, /* 4e25 */ NULL, /* 4e26 */ NULL, /* 4e27 */ NULL, /* 4e28 */ NULL, /* 4e29 */ NULL, /* 4e2a */ NULL, /* 4e2b */ NULL, /* 4e2c */ NULL, /* 4e2d */ NULL, /* 4e2e */ NULL, /* 4e2f */ NULL, /* 4e30 */ NULL, /* 4e31 */ NULL, /* 4e32 */ NULL, /* 4e33 */ NULL, /* 4e34 */ NULL, /* 4e35 */ NULL, /* 4e36 */ NULL, /* 4e37 */ NULL, /* 4e38 */ NULL, /* 4e39 */ NULL, /* 4e3a */ NULL, /* 4e3b */ NULL, /* 4e3c */ NULL, /* 4e3d */ NULL, /* 4e3e */ NULL, /* 4e3f */ NULL, /* 4e40 */ NULL, /* 4e41 */ NULL, /* 4e42 */ NULL, /* 4e43 */ NULL, /* 4e44 */ NULL, /* 4e45 */ NULL, /* 4e46 */ NULL, /* 4e47 */ NULL, /* 4e48 */ NULL, /* 4e49 */ NULL, /* 4e4a */ NULL, /* 4e4b */ NULL, /* 4e4c */ NULL, /* 4e4d */ NULL, /* 4e4e */ NULL, /* 4e4f */ NULL, /* 4e50 */ NULL, /* 4e51 */ NULL, /* 4e52 */ NULL, /* 4e53 */ NULL, /* 4e54 */ NULL, /* 4e55 */ NULL, /* 4e56 */ NULL, /* 4e57 */ NULL, /* 4e58 */ NULL, /* 4e59 */ NULL, /* 4e5a */ NULL, /* 4e5b */ NULL, /* 4e5c */ NULL, /* 4e5d */ NULL, /* 4e5e */ NULL, /* 4e5f */ NULL, /* 4e60 */ NULL, /* 4e61 */ NULL, /* 4e62 */ NULL, /* 4e63 */ NULL, /* 4e64 */ NULL, /* 4e65 */ NULL, /* 4e66 */ NULL, /* 4e67 */ NULL, /* 4e68 */ NULL, /* 4e69 */ NULL, /* 4e6a */ NULL, /* 4e6b */ NULL, /* 4e6c */ NULL, /* 4e6d */ NULL, /* 4e6e */ NULL, /* 4e6f */ NULL, /* 4e70 */ NULL, /* 4e71 */ NULL, /* 4e72 */ NULL, /* 4e73 */ NULL, /* 4e74 */ NULL, /* 4e75 */ NULL, /* 4e76 */ NULL, /* 4e77 */ NULL, /* 4e78 */ NULL, /* 4e79 */ NULL, /* 4e7a */ NULL, /* 4e7b */ NULL, /* 4e7c */ NULL, /* 4e7d */ NULL, /* 4e7e */ NULL, /* 4e7f */ NULL, /* 4e80 */ NULL, /* 4e81 */ NULL, /* 4e82 */ NULL, /* 4e83 */ NULL, /* 4e84 */ NULL, /* 4e85 */ NULL, /* 4e86 */ NULL, /* 4e87 */ NULL, /* 4e88 */ NULL, /* 4e89 */ NULL, /* 4e8a */ NULL, /* 4e8b */ NULL, /* 4e8c */ NULL, /* 4e8d */ NULL, /* 4e8e */ NULL, /* 4e8f */ NULL, /* 4e90 */ NULL, /* 4e91 */ NULL, /* 4e92 */ NULL, /* 4e93 */ NULL, /* 4e94 */ NULL, /* 4e95 */ NULL, /* 4e96 */ NULL, /* 4e97 */ NULL, /* 4e98 */ NULL, /* 4e99 */ NULL, /* 4e9a */ NULL, /* 4e9b */ NULL, /* 4e9c */ NULL, /* 4e9d */ NULL, /* 4e9e */ NULL, /* 4e9f */ NULL, /* 4ea0 */ NULL, /* 4ea1 */ NULL, /* 4ea2 */ NULL, /* 4ea3 */ NULL, /* 4ea4 */ NULL, /* 4ea5 */ NULL, /* 4ea6 */ NULL, /* 4ea7 */ NULL, /* 4ea8 */ NULL, /* 4ea9 */ NULL, /* 4eaa */ NULL, /* 4eab */ NULL, /* 4eac */ NULL, /* 4ead */ NULL, /* 4eae */ NULL, /* 4eaf */ NULL, /* 4eb0 */ NULL, /* 4eb1 */ NULL, /* 4eb2 */ NULL, /* 4eb3 */ NULL, /* 4eb4 */ NULL, /* 4eb5 */ NULL, /* 4eb6 */ NULL, /* 4eb7 */ NULL, /* 4eb8 */ NULL, /* 4eb9 */ NULL, /* 4eba */ NULL, /* 4ebb */ NULL, /* 4ebc */ NULL, /* 4ebd */ NULL, /* 4ebe */ NULL, /* 4ebf */ NULL, /* 4ec0 */ NULL, /* 4ec1 */ NULL, /* 4ec2 */ NULL, /* 4ec3 */ NULL, /* 4ec4 */ NULL, /* 4ec5 */ NULL, /* 4ec6 */ NULL, /* 4ec7 */ NULL, /* 4ec8 */ NULL, /* 4ec9 */ NULL, /* 4eca */ NULL, /* 4ecb */ NULL, /* 4ecc */ NULL, /* 4ecd */ NULL, /* 4ece */ NULL, /* 4ecf */ NULL, /* 4ed0 */ NULL, /* 4ed1 */ NULL, /* 4ed2 */ NULL, /* 4ed3 */ NULL, /* 4ed4 */ NULL, /* 4ed5 */ NULL, /* 4ed6 */ NULL, /* 4ed7 */ NULL, /* 4ed8 */ NULL, /* 4ed9 */ NULL, /* 4eda */ NULL, /* 4edb */ NULL, /* 4edc */ NULL, /* 4edd */ NULL, /* 4ede */ NULL, /* 4edf */ NULL, /* 4ee0 */ NULL, /* 4ee1 */ NULL, /* 4ee2 */ NULL, /* 4ee3 */ NULL, /* 4ee4 */ NULL, /* 4ee5 */ NULL, /* 4ee6 */ NULL, /* 4ee7 */ NULL, /* 4ee8 */ NULL, /* 4ee9 */ NULL, /* 4eea */ NULL, /* 4eeb */ NULL, /* 4eec */ NULL, /* 4eed */ NULL, /* 4eee */ NULL, /* 4eef */ NULL, /* 4ef0 */ NULL, /* 4ef1 */ NULL, /* 4ef2 */ NULL, /* 4ef3 */ NULL, /* 4ef4 */ NULL, /* 4ef5 */ NULL, /* 4ef6 */ NULL, /* 4ef7 */ NULL, /* 4ef8 */ NULL, /* 4ef9 */ NULL, /* 4efa */ NULL, /* 4efb */ NULL, /* 4efc */ NULL, /* 4efd */ NULL, /* 4efe */ NULL, /* 4eff */ NULL, /* 4f00 */ NULL, /* 4f01 */ NULL, /* 4f02 */ NULL, /* 4f03 */ NULL, /* 4f04 */ NULL, /* 4f05 */ NULL, /* 4f06 */ NULL, /* 4f07 */ NULL, /* 4f08 */ NULL, /* 4f09 */ NULL, /* 4f0a */ NULL, /* 4f0b */ NULL, /* 4f0c */ NULL, /* 4f0d */ NULL, /* 4f0e */ NULL, /* 4f0f */ NULL, /* 4f10 */ NULL, /* 4f11 */ NULL, /* 4f12 */ NULL, /* 4f13 */ NULL, /* 4f14 */ NULL, /* 4f15 */ NULL, /* 4f16 */ NULL, /* 4f17 */ NULL, /* 4f18 */ NULL, /* 4f19 */ NULL, /* 4f1a */ NULL, /* 4f1b */ NULL, /* 4f1c */ NULL, /* 4f1d */ NULL, /* 4f1e */ NULL, /* 4f1f */ NULL, /* 4f20 */ NULL, /* 4f21 */ NULL, /* 4f22 */ NULL, /* 4f23 */ NULL, /* 4f24 */ NULL, /* 4f25 */ NULL, /* 4f26 */ NULL, /* 4f27 */ NULL, /* 4f28 */ NULL, /* 4f29 */ NULL, /* 4f2a */ NULL, /* 4f2b */ NULL, /* 4f2c */ NULL, /* 4f2d */ NULL, /* 4f2e */ NULL, /* 4f2f */ NULL, /* 4f30 */ NULL, /* 4f31 */ NULL, /* 4f32 */ NULL, /* 4f33 */ NULL, /* 4f34 */ NULL, /* 4f35 */ NULL, /* 4f36 */ NULL, /* 4f37 */ NULL, /* 4f38 */ NULL, /* 4f39 */ NULL, /* 4f3a */ NULL, /* 4f3b */ NULL, /* 4f3c */ NULL, /* 4f3d */ NULL, /* 4f3e */ NULL, /* 4f3f */ NULL, /* 4f40 */ NULL, /* 4f41 */ NULL, /* 4f42 */ NULL, /* 4f43 */ NULL, /* 4f44 */ NULL, /* 4f45 */ NULL, /* 4f46 */ NULL, /* 4f47 */ NULL, /* 4f48 */ NULL, /* 4f49 */ NULL, /* 4f4a */ NULL, /* 4f4b */ NULL, /* 4f4c */ NULL, /* 4f4d */ NULL, /* 4f4e */ NULL, /* 4f4f */ NULL, /* 4f50 */ NULL, /* 4f51 */ NULL, /* 4f52 */ NULL, /* 4f53 */ NULL, /* 4f54 */ NULL, /* 4f55 */ NULL, /* 4f56 */ NULL, /* 4f57 */ NULL, /* 4f58 */ NULL, /* 4f59 */ NULL, /* 4f5a */ NULL, /* 4f5b */ NULL, /* 4f5c */ NULL, /* 4f5d */ NULL, /* 4f5e */ NULL, /* 4f5f */ NULL, /* 4f60 */ NULL, /* 4f61 */ NULL, /* 4f62 */ NULL, /* 4f63 */ NULL, /* 4f64 */ NULL, /* 4f65 */ NULL, /* 4f66 */ NULL, /* 4f67 */ NULL, /* 4f68 */ NULL, /* 4f69 */ NULL, /* 4f6a */ NULL, /* 4f6b */ NULL, /* 4f6c */ NULL, /* 4f6d */ NULL, /* 4f6e */ NULL, /* 4f6f */ NULL, /* 4f70 */ NULL, /* 4f71 */ NULL, /* 4f72 */ NULL, /* 4f73 */ NULL, /* 4f74 */ NULL, /* 4f75 */ NULL, /* 4f76 */ NULL, /* 4f77 */ NULL, /* 4f78 */ NULL, /* 4f79 */ NULL, /* 4f7a */ NULL, /* 4f7b */ NULL, /* 4f7c */ NULL, /* 4f7d */ NULL, /* 4f7e */ NULL, /* 4f7f */ NULL, /* 4f80 */ NULL, /* 4f81 */ NULL, /* 4f82 */ NULL, /* 4f83 */ NULL, /* 4f84 */ NULL, /* 4f85 */ NULL, /* 4f86 */ NULL, /* 4f87 */ NULL, /* 4f88 */ NULL, /* 4f89 */ NULL, /* 4f8a */ NULL, /* 4f8b */ NULL, /* 4f8c */ NULL, /* 4f8d */ NULL, /* 4f8e */ NULL, /* 4f8f */ NULL, /* 4f90 */ NULL, /* 4f91 */ NULL, /* 4f92 */ NULL, /* 4f93 */ NULL, /* 4f94 */ NULL, /* 4f95 */ NULL, /* 4f96 */ NULL, /* 4f97 */ NULL, /* 4f98 */ NULL, /* 4f99 */ NULL, /* 4f9a */ NULL, /* 4f9b */ NULL, /* 4f9c */ NULL, /* 4f9d */ NULL, /* 4f9e */ NULL, /* 4f9f */ NULL, /* 4fa0 */ NULL, /* 4fa1 */ NULL, /* 4fa2 */ NULL, /* 4fa3 */ NULL, /* 4fa4 */ NULL, /* 4fa5 */ NULL, /* 4fa6 */ NULL, /* 4fa7 */ NULL, /* 4fa8 */ NULL, /* 4fa9 */ NULL, /* 4faa */ NULL, /* 4fab */ NULL, /* 4fac */ NULL, /* 4fad */ NULL, /* 4fae */ NULL, /* 4faf */ NULL, /* 4fb0 */ NULL, /* 4fb1 */ NULL, /* 4fb2 */ NULL, /* 4fb3 */ NULL, /* 4fb4 */ NULL, /* 4fb5 */ NULL, /* 4fb6 */ NULL, /* 4fb7 */ NULL, /* 4fb8 */ NULL, /* 4fb9 */ NULL, /* 4fba */ NULL, /* 4fbb */ NULL, /* 4fbc */ NULL, /* 4fbd */ NULL, /* 4fbe */ NULL, /* 4fbf */ NULL, /* 4fc0 */ NULL, /* 4fc1 */ NULL, /* 4fc2 */ NULL, /* 4fc3 */ NULL, /* 4fc4 */ NULL, /* 4fc5 */ NULL, /* 4fc6 */ NULL, /* 4fc7 */ NULL, /* 4fc8 */ NULL, /* 4fc9 */ NULL, /* 4fca */ NULL, /* 4fcb */ NULL, /* 4fcc */ NULL, /* 4fcd */ NULL, /* 4fce */ NULL, /* 4fcf */ NULL, /* 4fd0 */ NULL, /* 4fd1 */ NULL, /* 4fd2 */ NULL, /* 4fd3 */ NULL, /* 4fd4 */ NULL, /* 4fd5 */ NULL, /* 4fd6 */ NULL, /* 4fd7 */ NULL, /* 4fd8 */ NULL, /* 4fd9 */ NULL, /* 4fda */ NULL, /* 4fdb */ NULL, /* 4fdc */ NULL, /* 4fdd */ NULL, /* 4fde */ NULL, /* 4fdf */ NULL, /* 4fe0 */ NULL, /* 4fe1 */ NULL, /* 4fe2 */ NULL, /* 4fe3 */ NULL, /* 4fe4 */ NULL, /* 4fe5 */ NULL, /* 4fe6 */ NULL, /* 4fe7 */ NULL, /* 4fe8 */ NULL, /* 4fe9 */ NULL, /* 4fea */ NULL, /* 4feb */ NULL, /* 4fec */ NULL, /* 4fed */ NULL, /* 4fee */ NULL, /* 4fef */ NULL, /* 4ff0 */ NULL, /* 4ff1 */ NULL, /* 4ff2 */ NULL, /* 4ff3 */ NULL, /* 4ff4 */ NULL, /* 4ff5 */ NULL, /* 4ff6 */ NULL, /* 4ff7 */ NULL, /* 4ff8 */ NULL, /* 4ff9 */ NULL, /* 4ffa */ NULL, /* 4ffb */ NULL, /* 4ffc */ NULL, /* 4ffd */ NULL, /* 4ffe */ NULL, /* 4fff */ NULL, /* 5000 */ NULL, /* 5001 */ NULL, /* 5002 */ NULL, /* 5003 */ NULL, /* 5004 */ NULL, /* 5005 */ NULL, /* 5006 */ NULL, /* 5007 */ NULL, /* 5008 */ NULL, /* 5009 */ NULL, /* 500a */ NULL, /* 500b */ NULL, /* 500c */ NULL, /* 500d */ NULL, /* 500e */ NULL, /* 500f */ NULL, /* 5010 */ NULL, /* 5011 */ NULL, /* 5012 */ NULL, /* 5013 */ NULL, /* 5014 */ NULL, /* 5015 */ NULL, /* 5016 */ NULL, /* 5017 */ NULL, /* 5018 */ NULL, /* 5019 */ NULL, /* 501a */ NULL, /* 501b */ NULL, /* 501c */ NULL, /* 501d */ NULL, /* 501e */ NULL, /* 501f */ NULL, /* 5020 */ NULL, /* 5021 */ NULL, /* 5022 */ NULL, /* 5023 */ NULL, /* 5024 */ NULL, /* 5025 */ NULL, /* 5026 */ NULL, /* 5027 */ NULL, /* 5028 */ NULL, /* 5029 */ NULL, /* 502a */ NULL, /* 502b */ NULL, /* 502c */ NULL, /* 502d */ NULL, /* 502e */ NULL, /* 502f */ NULL, /* 5030 */ NULL, /* 5031 */ NULL, /* 5032 */ NULL, /* 5033 */ NULL, /* 5034 */ NULL, /* 5035 */ NULL, /* 5036 */ NULL, /* 5037 */ NULL, /* 5038 */ NULL, /* 5039 */ NULL, /* 503a */ NULL, /* 503b */ NULL, /* 503c */ NULL, /* 503d */ NULL, /* 503e */ NULL, /* 503f */ NULL, /* 5040 */ NULL, /* 5041 */ NULL, /* 5042 */ NULL, /* 5043 */ NULL, /* 5044 */ NULL, /* 5045 */ NULL, /* 5046 */ NULL, /* 5047 */ NULL, /* 5048 */ NULL, /* 5049 */ NULL, /* 504a */ NULL, /* 504b */ NULL, /* 504c */ NULL, /* 504d */ NULL, /* 504e */ NULL, /* 504f */ NULL, /* 5050 */ NULL, /* 5051 */ NULL, /* 5052 */ NULL, /* 5053 */ NULL, /* 5054 */ NULL, /* 5055 */ NULL, /* 5056 */ NULL, /* 5057 */ NULL, /* 5058 */ NULL, /* 5059 */ NULL, /* 505a */ NULL, /* 505b */ NULL, /* 505c */ NULL, /* 505d */ NULL, /* 505e */ NULL, /* 505f */ NULL, /* 5060 */ NULL, /* 5061 */ NULL, /* 5062 */ NULL, /* 5063 */ NULL, /* 5064 */ NULL, /* 5065 */ NULL, /* 5066 */ NULL, /* 5067 */ NULL, /* 5068 */ NULL, /* 5069 */ NULL, /* 506a */ NULL, /* 506b */ NULL, /* 506c */ NULL, /* 506d */ NULL, /* 506e */ NULL, /* 506f */ NULL, /* 5070 */ NULL, /* 5071 */ NULL, /* 5072 */ NULL, /* 5073 */ NULL, /* 5074 */ NULL, /* 5075 */ NULL, /* 5076 */ NULL, /* 5077 */ NULL, /* 5078 */ NULL, /* 5079 */ NULL, /* 507a */ NULL, /* 507b */ NULL, /* 507c */ NULL, /* 507d */ NULL, /* 507e */ NULL, /* 507f */ NULL, /* 5080 */ NULL, /* 5081 */ NULL, /* 5082 */ NULL, /* 5083 */ NULL, /* 5084 */ NULL, /* 5085 */ NULL, /* 5086 */ NULL, /* 5087 */ NULL, /* 5088 */ NULL, /* 5089 */ NULL, /* 508a */ NULL, /* 508b */ NULL, /* 508c */ NULL, /* 508d */ NULL, /* 508e */ NULL, /* 508f */ NULL, /* 5090 */ NULL, /* 5091 */ NULL, /* 5092 */ NULL, /* 5093 */ NULL, /* 5094 */ NULL, /* 5095 */ NULL, /* 5096 */ NULL, /* 5097 */ NULL, /* 5098 */ NULL, /* 5099 */ NULL, /* 509a */ NULL, /* 509b */ NULL, /* 509c */ NULL, /* 509d */ NULL, /* 509e */ NULL, /* 509f */ NULL, /* 50a0 */ NULL, /* 50a1 */ NULL, /* 50a2 */ NULL, /* 50a3 */ NULL, /* 50a4 */ NULL, /* 50a5 */ NULL, /* 50a6 */ NULL, /* 50a7 */ NULL, /* 50a8 */ NULL, /* 50a9 */ NULL, /* 50aa */ NULL, /* 50ab */ NULL, /* 50ac */ NULL, /* 50ad */ NULL, /* 50ae */ NULL, /* 50af */ NULL, /* 50b0 */ NULL, /* 50b1 */ NULL, /* 50b2 */ NULL, /* 50b3 */ NULL, /* 50b4 */ NULL, /* 50b5 */ NULL, /* 50b6 */ NULL, /* 50b7 */ NULL, /* 50b8 */ NULL, /* 50b9 */ NULL, /* 50ba */ NULL, /* 50bb */ NULL, /* 50bc */ NULL, /* 50bd */ NULL, /* 50be */ NULL, /* 50bf */ NULL, /* 50c0 */ NULL, /* 50c1 */ NULL, /* 50c2 */ NULL, /* 50c3 */ NULL, /* 50c4 */ NULL, /* 50c5 */ NULL, /* 50c6 */ NULL, /* 50c7 */ NULL, /* 50c8 */ NULL, /* 50c9 */ NULL, /* 50ca */ NULL, /* 50cb */ NULL, /* 50cc */ NULL, /* 50cd */ NULL, /* 50ce */ NULL, /* 50cf */ NULL, /* 50d0 */ NULL, /* 50d1 */ NULL, /* 50d2 */ NULL, /* 50d3 */ NULL, /* 50d4 */ NULL, /* 50d5 */ NULL, /* 50d6 */ NULL, /* 50d7 */ NULL, /* 50d8 */ NULL, /* 50d9 */ NULL, /* 50da */ NULL, /* 50db */ NULL, /* 50dc */ NULL, /* 50dd */ NULL, /* 50de */ NULL, /* 50df */ NULL, /* 50e0 */ NULL, /* 50e1 */ NULL, /* 50e2 */ NULL, /* 50e3 */ NULL, /* 50e4 */ NULL, /* 50e5 */ NULL, /* 50e6 */ NULL, /* 50e7 */ NULL, /* 50e8 */ NULL, /* 50e9 */ NULL, /* 50ea */ NULL, /* 50eb */ NULL, /* 50ec */ NULL, /* 50ed */ NULL, /* 50ee */ NULL, /* 50ef */ NULL, /* 50f0 */ NULL, /* 50f1 */ NULL, /* 50f2 */ NULL, /* 50f3 */ NULL, /* 50f4 */ NULL, /* 50f5 */ NULL, /* 50f6 */ NULL, /* 50f7 */ NULL, /* 50f8 */ NULL, /* 50f9 */ NULL, /* 50fa */ NULL, /* 50fb */ NULL, /* 50fc */ NULL, /* 50fd */ NULL, /* 50fe */ NULL, /* 50ff */ NULL, /* 5100 */ NULL, /* 5101 */ NULL, /* 5102 */ NULL, /* 5103 */ NULL, /* 5104 */ NULL, /* 5105 */ NULL, /* 5106 */ NULL, /* 5107 */ NULL, /* 5108 */ NULL, /* 5109 */ NULL, /* 510a */ NULL, /* 510b */ NULL, /* 510c */ NULL, /* 510d */ NULL, /* 510e */ NULL, /* 510f */ NULL, /* 5110 */ NULL, /* 5111 */ NULL, /* 5112 */ NULL, /* 5113 */ NULL, /* 5114 */ NULL, /* 5115 */ NULL, /* 5116 */ NULL, /* 5117 */ NULL, /* 5118 */ NULL, /* 5119 */ NULL, /* 511a */ NULL, /* 511b */ NULL, /* 511c */ NULL, /* 511d */ NULL, /* 511e */ NULL, /* 511f */ NULL, /* 5120 */ NULL, /* 5121 */ NULL, /* 5122 */ NULL, /* 5123 */ NULL, /* 5124 */ NULL, /* 5125 */ NULL, /* 5126 */ NULL, /* 5127 */ NULL, /* 5128 */ NULL, /* 5129 */ NULL, /* 512a */ NULL, /* 512b */ NULL, /* 512c */ NULL, /* 512d */ NULL, /* 512e */ NULL, /* 512f */ NULL, /* 5130 */ NULL, /* 5131 */ NULL, /* 5132 */ NULL, /* 5133 */ NULL, /* 5134 */ NULL, /* 5135 */ NULL, /* 5136 */ NULL, /* 5137 */ NULL, /* 5138 */ NULL, /* 5139 */ NULL, /* 513a */ NULL, /* 513b */ NULL, /* 513c */ NULL, /* 513d */ NULL, /* 513e */ NULL, /* 513f */ NULL, /* 5140 */ NULL, /* 5141 */ NULL, /* 5142 */ NULL, /* 5143 */ NULL, /* 5144 */ NULL, /* 5145 */ NULL, /* 5146 */ NULL, /* 5147 */ NULL, /* 5148 */ NULL, /* 5149 */ NULL, /* 514a */ NULL, /* 514b */ NULL, /* 514c */ NULL, /* 514d */ NULL, /* 514e */ NULL, /* 514f */ NULL, /* 5150 */ NULL, /* 5151 */ NULL, /* 5152 */ NULL, /* 5153 */ NULL, /* 5154 */ NULL, /* 5155 */ NULL, /* 5156 */ NULL, /* 5157 */ NULL, /* 5158 */ NULL, /* 5159 */ NULL, /* 515a */ NULL, /* 515b */ NULL, /* 515c */ NULL, /* 515d */ NULL, /* 515e */ NULL, /* 515f */ NULL, /* 5160 */ NULL, /* 5161 */ NULL, /* 5162 */ NULL, /* 5163 */ NULL, /* 5164 */ NULL, /* 5165 */ NULL, /* 5166 */ NULL, /* 5167 */ NULL, /* 5168 */ NULL, /* 5169 */ NULL, /* 516a */ NULL, /* 516b */ NULL, /* 516c */ NULL, /* 516d */ NULL, /* 516e */ NULL, /* 516f */ NULL, /* 5170 */ NULL, /* 5171 */ NULL, /* 5172 */ NULL, /* 5173 */ NULL, /* 5174 */ NULL, /* 5175 */ NULL, /* 5176 */ NULL, /* 5177 */ NULL, /* 5178 */ NULL, /* 5179 */ NULL, /* 517a */ NULL, /* 517b */ NULL, /* 517c */ NULL, /* 517d */ NULL, /* 517e */ NULL, /* 517f */ NULL, /* 5180 */ NULL, /* 5181 */ NULL, /* 5182 */ NULL, /* 5183 */ NULL, /* 5184 */ NULL, /* 5185 */ NULL, /* 5186 */ NULL, /* 5187 */ NULL, /* 5188 */ NULL, /* 5189 */ NULL, /* 518a */ NULL, /* 518b */ NULL, /* 518c */ NULL, /* 518d */ NULL, /* 518e */ NULL, /* 518f */ NULL, /* 5190 */ NULL, /* 5191 */ NULL, /* 5192 */ NULL, /* 5193 */ NULL, /* 5194 */ NULL, /* 5195 */ NULL, /* 5196 */ NULL, /* 5197 */ NULL, /* 5198 */ NULL, /* 5199 */ NULL, /* 519a */ NULL, /* 519b */ NULL, /* 519c */ NULL, /* 519d */ NULL, /* 519e */ NULL, /* 519f */ NULL, /* 51a0 */ NULL, /* 51a1 */ NULL, /* 51a2 */ NULL, /* 51a3 */ NULL, /* 51a4 */ NULL, /* 51a5 */ NULL, /* 51a6 */ NULL, /* 51a7 */ NULL, /* 51a8 */ NULL, /* 51a9 */ NULL, /* 51aa */ NULL, /* 51ab */ NULL, /* 51ac */ NULL, /* 51ad */ NULL, /* 51ae */ NULL, /* 51af */ NULL, /* 51b0 */ NULL, /* 51b1 */ NULL, /* 51b2 */ NULL, /* 51b3 */ NULL, /* 51b4 */ NULL, /* 51b5 */ NULL, /* 51b6 */ NULL, /* 51b7 */ NULL, /* 51b8 */ NULL, /* 51b9 */ NULL, /* 51ba */ NULL, /* 51bb */ NULL, /* 51bc */ NULL, /* 51bd */ NULL, /* 51be */ NULL, /* 51bf */ NULL, /* 51c0 */ NULL, /* 51c1 */ NULL, /* 51c2 */ NULL, /* 51c3 */ NULL, /* 51c4 */ NULL, /* 51c5 */ NULL, /* 51c6 */ NULL, /* 51c7 */ NULL, /* 51c8 */ NULL, /* 51c9 */ NULL, /* 51ca */ NULL, /* 51cb */ NULL, /* 51cc */ NULL, /* 51cd */ NULL, /* 51ce */ NULL, /* 51cf */ NULL, /* 51d0 */ NULL, /* 51d1 */ NULL, /* 51d2 */ NULL, /* 51d3 */ NULL, /* 51d4 */ NULL, /* 51d5 */ NULL, /* 51d6 */ NULL, /* 51d7 */ NULL, /* 51d8 */ NULL, /* 51d9 */ NULL, /* 51da */ NULL, /* 51db */ NULL, /* 51dc */ NULL, /* 51dd */ NULL, /* 51de */ NULL, /* 51df */ NULL, /* 51e0 */ NULL, /* 51e1 */ NULL, /* 51e2 */ NULL, /* 51e3 */ NULL, /* 51e4 */ NULL, /* 51e5 */ NULL, /* 51e6 */ NULL, /* 51e7 */ NULL, /* 51e8 */ NULL, /* 51e9 */ NULL, /* 51ea */ NULL, /* 51eb */ NULL, /* 51ec */ NULL, /* 51ed */ NULL, /* 51ee */ NULL, /* 51ef */ NULL, /* 51f0 */ NULL, /* 51f1 */ NULL, /* 51f2 */ NULL, /* 51f3 */ NULL, /* 51f4 */ NULL, /* 51f5 */ NULL, /* 51f6 */ NULL, /* 51f7 */ NULL, /* 51f8 */ NULL, /* 51f9 */ NULL, /* 51fa */ NULL, /* 51fb */ NULL, /* 51fc */ NULL, /* 51fd */ NULL, /* 51fe */ NULL, /* 51ff */ NULL, /* 5200 */ NULL, /* 5201 */ NULL, /* 5202 */ NULL, /* 5203 */ NULL, /* 5204 */ NULL, /* 5205 */ NULL, /* 5206 */ NULL, /* 5207 */ NULL, /* 5208 */ NULL, /* 5209 */ NULL, /* 520a */ NULL, /* 520b */ NULL, /* 520c */ NULL, /* 520d */ NULL, /* 520e */ NULL, /* 520f */ NULL, /* 5210 */ NULL, /* 5211 */ NULL, /* 5212 */ NULL, /* 5213 */ NULL, /* 5214 */ NULL, /* 5215 */ NULL, /* 5216 */ NULL, /* 5217 */ NULL, /* 5218 */ NULL, /* 5219 */ NULL, /* 521a */ NULL, /* 521b */ NULL, /* 521c */ NULL, /* 521d */ NULL, /* 521e */ NULL, /* 521f */ NULL, /* 5220 */ NULL, /* 5221 */ NULL, /* 5222 */ NULL, /* 5223 */ NULL, /* 5224 */ NULL, /* 5225 */ NULL, /* 5226 */ NULL, /* 5227 */ NULL, /* 5228 */ NULL, /* 5229 */ NULL, /* 522a */ NULL, /* 522b */ NULL, /* 522c */ NULL, /* 522d */ NULL, /* 522e */ NULL, /* 522f */ NULL, /* 5230 */ NULL, /* 5231 */ NULL, /* 5232 */ NULL, /* 5233 */ NULL, /* 5234 */ NULL, /* 5235 */ NULL, /* 5236 */ NULL, /* 5237 */ NULL, /* 5238 */ NULL, /* 5239 */ NULL, /* 523a */ NULL, /* 523b */ NULL, /* 523c */ NULL, /* 523d */ NULL, /* 523e */ NULL, /* 523f */ NULL, /* 5240 */ NULL, /* 5241 */ NULL, /* 5242 */ NULL, /* 5243 */ NULL, /* 5244 */ NULL, /* 5245 */ NULL, /* 5246 */ NULL, /* 5247 */ NULL, /* 5248 */ NULL, /* 5249 */ NULL, /* 524a */ NULL, /* 524b */ NULL, /* 524c */ NULL, /* 524d */ NULL, /* 524e */ NULL, /* 524f */ NULL, /* 5250 */ NULL, /* 5251 */ NULL, /* 5252 */ NULL, /* 5253 */ NULL, /* 5254 */ NULL, /* 5255 */ NULL, /* 5256 */ NULL, /* 5257 */ NULL, /* 5258 */ NULL, /* 5259 */ NULL, /* 525a */ NULL, /* 525b */ NULL, /* 525c */ NULL, /* 525d */ NULL, /* 525e */ NULL, /* 525f */ NULL, /* 5260 */ NULL, /* 5261 */ NULL, /* 5262 */ NULL, /* 5263 */ NULL, /* 5264 */ NULL, /* 5265 */ NULL, /* 5266 */ NULL, /* 5267 */ NULL, /* 5268 */ NULL, /* 5269 */ NULL, /* 526a */ NULL, /* 526b */ NULL, /* 526c */ NULL, /* 526d */ NULL, /* 526e */ NULL, /* 526f */ NULL, /* 5270 */ NULL, /* 5271 */ NULL, /* 5272 */ NULL, /* 5273 */ NULL, /* 5274 */ NULL, /* 5275 */ NULL, /* 5276 */ NULL, /* 5277 */ NULL, /* 5278 */ NULL, /* 5279 */ NULL, /* 527a */ NULL, /* 527b */ NULL, /* 527c */ NULL, /* 527d */ NULL, /* 527e */ NULL, /* 527f */ NULL, /* 5280 */ NULL, /* 5281 */ NULL, /* 5282 */ NULL, /* 5283 */ NULL, /* 5284 */ NULL, /* 5285 */ NULL, /* 5286 */ NULL, /* 5287 */ NULL, /* 5288 */ NULL, /* 5289 */ NULL, /* 528a */ NULL, /* 528b */ NULL, /* 528c */ NULL, /* 528d */ NULL, /* 528e */ NULL, /* 528f */ NULL, /* 5290 */ NULL, /* 5291 */ NULL, /* 5292 */ NULL, /* 5293 */ NULL, /* 5294 */ NULL, /* 5295 */ NULL, /* 5296 */ NULL, /* 5297 */ NULL, /* 5298 */ NULL, /* 5299 */ NULL, /* 529a */ NULL, /* 529b */ NULL, /* 529c */ NULL, /* 529d */ NULL, /* 529e */ NULL, /* 529f */ NULL, /* 52a0 */ NULL, /* 52a1 */ NULL, /* 52a2 */ NULL, /* 52a3 */ NULL, /* 52a4 */ NULL, /* 52a5 */ NULL, /* 52a6 */ NULL, /* 52a7 */ NULL, /* 52a8 */ NULL, /* 52a9 */ NULL, /* 52aa */ NULL, /* 52ab */ NULL, /* 52ac */ NULL, /* 52ad */ NULL, /* 52ae */ NULL, /* 52af */ NULL, /* 52b0 */ NULL, /* 52b1 */ NULL, /* 52b2 */ NULL, /* 52b3 */ NULL, /* 52b4 */ NULL, /* 52b5 */ NULL, /* 52b6 */ NULL, /* 52b7 */ NULL, /* 52b8 */ NULL, /* 52b9 */ NULL, /* 52ba */ NULL, /* 52bb */ NULL, /* 52bc */ NULL, /* 52bd */ NULL, /* 52be */ NULL, /* 52bf */ NULL, /* 52c0 */ NULL, /* 52c1 */ NULL, /* 52c2 */ NULL, /* 52c3 */ NULL, /* 52c4 */ NULL, /* 52c5 */ NULL, /* 52c6 */ NULL, /* 52c7 */ NULL, /* 52c8 */ NULL, /* 52c9 */ NULL, /* 52ca */ NULL, /* 52cb */ NULL, /* 52cc */ NULL, /* 52cd */ NULL, /* 52ce */ NULL, /* 52cf */ NULL, /* 52d0 */ NULL, /* 52d1 */ NULL, /* 52d2 */ NULL, /* 52d3 */ NULL, /* 52d4 */ NULL, /* 52d5 */ NULL, /* 52d6 */ NULL, /* 52d7 */ NULL, /* 52d8 */ NULL, /* 52d9 */ NULL, /* 52da */ NULL, /* 52db */ NULL, /* 52dc */ NULL, /* 52dd */ NULL, /* 52de */ NULL, /* 52df */ NULL, /* 52e0 */ NULL, /* 52e1 */ NULL, /* 52e2 */ NULL, /* 52e3 */ NULL, /* 52e4 */ NULL, /* 52e5 */ NULL, /* 52e6 */ NULL, /* 52e7 */ NULL, /* 52e8 */ NULL, /* 52e9 */ NULL, /* 52ea */ NULL, /* 52eb */ NULL, /* 52ec */ NULL, /* 52ed */ NULL, /* 52ee */ NULL, /* 52ef */ NULL, /* 52f0 */ NULL, /* 52f1 */ NULL, /* 52f2 */ NULL, /* 52f3 */ NULL, /* 52f4 */ NULL, /* 52f5 */ NULL, /* 52f6 */ NULL, /* 52f7 */ NULL, /* 52f8 */ NULL, /* 52f9 */ NULL, /* 52fa */ NULL, /* 52fb */ NULL, /* 52fc */ NULL, /* 52fd */ NULL, /* 52fe */ NULL, /* 52ff */ NULL, /* 5300 */ NULL, /* 5301 */ NULL, /* 5302 */ NULL, /* 5303 */ NULL, /* 5304 */ NULL, /* 5305 */ NULL, /* 5306 */ NULL, /* 5307 */ NULL, /* 5308 */ NULL, /* 5309 */ NULL, /* 530a */ NULL, /* 530b */ NULL, /* 530c */ NULL, /* 530d */ NULL, /* 530e */ NULL, /* 530f */ NULL, /* 5310 */ NULL, /* 5311 */ NULL, /* 5312 */ NULL, /* 5313 */ NULL, /* 5314 */ NULL, /* 5315 */ NULL, /* 5316 */ NULL, /* 5317 */ NULL, /* 5318 */ NULL, /* 5319 */ NULL, /* 531a */ NULL, /* 531b */ NULL, /* 531c */ NULL, /* 531d */ NULL, /* 531e */ NULL, /* 531f */ NULL, /* 5320 */ NULL, /* 5321 */ NULL, /* 5322 */ NULL, /* 5323 */ NULL, /* 5324 */ NULL, /* 5325 */ NULL, /* 5326 */ NULL, /* 5327 */ NULL, /* 5328 */ NULL, /* 5329 */ NULL, /* 532a */ NULL, /* 532b */ NULL, /* 532c */ NULL, /* 532d */ NULL, /* 532e */ NULL, /* 532f */ NULL, /* 5330 */ NULL, /* 5331 */ NULL, /* 5332 */ NULL, /* 5333 */ NULL, /* 5334 */ NULL, /* 5335 */ NULL, /* 5336 */ NULL, /* 5337 */ NULL, /* 5338 */ NULL, /* 5339 */ NULL, /* 533a */ NULL, /* 533b */ NULL, /* 533c */ NULL, /* 533d */ NULL, /* 533e */ NULL, /* 533f */ NULL, /* 5340 */ NULL, /* 5341 */ NULL, /* 5342 */ NULL, /* 5343 */ NULL, /* 5344 */ NULL, /* 5345 */ NULL, /* 5346 */ NULL, /* 5347 */ NULL, /* 5348 */ NULL, /* 5349 */ NULL, /* 534a */ NULL, /* 534b */ NULL, /* 534c */ NULL, /* 534d */ NULL, /* 534e */ NULL, /* 534f */ NULL, /* 5350 */ NULL, /* 5351 */ NULL, /* 5352 */ NULL, /* 5353 */ NULL, /* 5354 */ NULL, /* 5355 */ NULL, /* 5356 */ NULL, /* 5357 */ NULL, /* 5358 */ NULL, /* 5359 */ NULL, /* 535a */ NULL, /* 535b */ NULL, /* 535c */ NULL, /* 535d */ NULL, /* 535e */ NULL, /* 535f */ NULL, /* 5360 */ NULL, /* 5361 */ NULL, /* 5362 */ NULL, /* 5363 */ NULL, /* 5364 */ NULL, /* 5365 */ NULL, /* 5366 */ NULL, /* 5367 */ NULL, /* 5368 */ NULL, /* 5369 */ NULL, /* 536a */ NULL, /* 536b */ NULL, /* 536c */ NULL, /* 536d */ NULL, /* 536e */ NULL, /* 536f */ NULL, /* 5370 */ NULL, /* 5371 */ NULL, /* 5372 */ NULL, /* 5373 */ NULL, /* 5374 */ NULL, /* 5375 */ NULL, /* 5376 */ NULL, /* 5377 */ NULL, /* 5378 */ NULL, /* 5379 */ NULL, /* 537a */ NULL, /* 537b */ NULL, /* 537c */ NULL, /* 537d */ NULL, /* 537e */ NULL, /* 537f */ NULL, /* 5380 */ NULL, /* 5381 */ NULL, /* 5382 */ NULL, /* 5383 */ NULL, /* 5384 */ NULL, /* 5385 */ NULL, /* 5386 */ NULL, /* 5387 */ NULL, /* 5388 */ NULL, /* 5389 */ NULL, /* 538a */ NULL, /* 538b */ NULL, /* 538c */ NULL, /* 538d */ NULL, /* 538e */ NULL, /* 538f */ NULL, /* 5390 */ NULL, /* 5391 */ NULL, /* 5392 */ NULL, /* 5393 */ NULL, /* 5394 */ NULL, /* 5395 */ NULL, /* 5396 */ NULL, /* 5397 */ NULL, /* 5398 */ NULL, /* 5399 */ NULL, /* 539a */ NULL, /* 539b */ NULL, /* 539c */ NULL, /* 539d */ NULL, /* 539e */ NULL, /* 539f */ NULL, /* 53a0 */ NULL, /* 53a1 */ NULL, /* 53a2 */ NULL, /* 53a3 */ NULL, /* 53a4 */ NULL, /* 53a5 */ NULL, /* 53a6 */ NULL, /* 53a7 */ NULL, /* 53a8 */ NULL, /* 53a9 */ NULL, /* 53aa */ NULL, /* 53ab */ NULL, /* 53ac */ NULL, /* 53ad */ NULL, /* 53ae */ NULL, /* 53af */ NULL, /* 53b0 */ NULL, /* 53b1 */ NULL, /* 53b2 */ NULL, /* 53b3 */ NULL, /* 53b4 */ NULL, /* 53b5 */ NULL, /* 53b6 */ NULL, /* 53b7 */ NULL, /* 53b8 */ NULL, /* 53b9 */ NULL, /* 53ba */ NULL, /* 53bb */ NULL, /* 53bc */ NULL, /* 53bd */ NULL, /* 53be */ NULL, /* 53bf */ NULL, /* 53c0 */ NULL, /* 53c1 */ NULL, /* 53c2 */ NULL, /* 53c3 */ NULL, /* 53c4 */ NULL, /* 53c5 */ NULL, /* 53c6 */ NULL, /* 53c7 */ NULL, /* 53c8 */ NULL, /* 53c9 */ NULL, /* 53ca */ NULL, /* 53cb */ NULL, /* 53cc */ NULL, /* 53cd */ NULL, /* 53ce */ NULL, /* 53cf */ NULL, /* 53d0 */ NULL, /* 53d1 */ NULL, /* 53d2 */ NULL, /* 53d3 */ NULL, /* 53d4 */ NULL, /* 53d5 */ NULL, /* 53d6 */ NULL, /* 53d7 */ NULL, /* 53d8 */ NULL, /* 53d9 */ NULL, /* 53da */ NULL, /* 53db */ NULL, /* 53dc */ NULL, /* 53dd */ NULL, /* 53de */ NULL, /* 53df */ NULL, /* 53e0 */ NULL, /* 53e1 */ NULL, /* 53e2 */ NULL, /* 53e3 */ NULL, /* 53e4 */ NULL, /* 53e5 */ NULL, /* 53e6 */ NULL, /* 53e7 */ NULL, /* 53e8 */ NULL, /* 53e9 */ NULL, /* 53ea */ NULL, /* 53eb */ NULL, /* 53ec */ NULL, /* 53ed */ NULL, /* 53ee */ NULL, /* 53ef */ NULL, /* 53f0 */ NULL, /* 53f1 */ NULL, /* 53f2 */ NULL, /* 53f3 */ NULL, /* 53f4 */ NULL, /* 53f5 */ NULL, /* 53f6 */ NULL, /* 53f7 */ NULL, /* 53f8 */ NULL, /* 53f9 */ NULL, /* 53fa */ NULL, /* 53fb */ NULL, /* 53fc */ NULL, /* 53fd */ NULL, /* 53fe */ NULL, /* 53ff */ NULL, /* 5400 */ NULL, /* 5401 */ NULL, /* 5402 */ NULL, /* 5403 */ NULL, /* 5404 */ NULL, /* 5405 */ NULL, /* 5406 */ NULL, /* 5407 */ NULL, /* 5408 */ NULL, /* 5409 */ NULL, /* 540a */ NULL, /* 540b */ NULL, /* 540c */ NULL, /* 540d */ NULL, /* 540e */ NULL, /* 540f */ NULL, /* 5410 */ NULL, /* 5411 */ NULL, /* 5412 */ NULL, /* 5413 */ NULL, /* 5414 */ NULL, /* 5415 */ NULL, /* 5416 */ NULL, /* 5417 */ NULL, /* 5418 */ NULL, /* 5419 */ NULL, /* 541a */ NULL, /* 541b */ NULL, /* 541c */ NULL, /* 541d */ NULL, /* 541e */ NULL, /* 541f */ NULL, /* 5420 */ NULL, /* 5421 */ NULL, /* 5422 */ NULL, /* 5423 */ NULL, /* 5424 */ NULL, /* 5425 */ NULL, /* 5426 */ NULL, /* 5427 */ NULL, /* 5428 */ NULL, /* 5429 */ NULL, /* 542a */ NULL, /* 542b */ NULL, /* 542c */ NULL, /* 542d */ NULL, /* 542e */ NULL, /* 542f */ NULL, /* 5430 */ NULL, /* 5431 */ NULL, /* 5432 */ NULL, /* 5433 */ NULL, /* 5434 */ NULL, /* 5435 */ NULL, /* 5436 */ NULL, /* 5437 */ NULL, /* 5438 */ NULL, /* 5439 */ NULL, /* 543a */ NULL, /* 543b */ NULL, /* 543c */ NULL, /* 543d */ NULL, /* 543e */ NULL, /* 543f */ NULL, /* 5440 */ NULL, /* 5441 */ NULL, /* 5442 */ NULL, /* 5443 */ NULL, /* 5444 */ NULL, /* 5445 */ NULL, /* 5446 */ NULL, /* 5447 */ NULL, /* 5448 */ NULL, /* 5449 */ NULL, /* 544a */ NULL, /* 544b */ NULL, /* 544c */ NULL, /* 544d */ NULL, /* 544e */ NULL, /* 544f */ NULL, /* 5450 */ NULL, /* 5451 */ NULL, /* 5452 */ NULL, /* 5453 */ NULL, /* 5454 */ NULL, /* 5455 */ NULL, /* 5456 */ NULL, /* 5457 */ NULL, /* 5458 */ NULL, /* 5459 */ NULL, /* 545a */ NULL, /* 545b */ NULL, /* 545c */ NULL, /* 545d */ NULL, /* 545e */ NULL, /* 545f */ NULL, /* 5460 */ NULL, /* 5461 */ NULL, /* 5462 */ NULL, /* 5463 */ NULL, /* 5464 */ NULL, /* 5465 */ NULL, /* 5466 */ NULL, /* 5467 */ NULL, /* 5468 */ NULL, /* 5469 */ NULL, /* 546a */ NULL, /* 546b */ NULL, /* 546c */ NULL, /* 546d */ NULL, /* 546e */ NULL, /* 546f */ NULL, /* 5470 */ NULL, /* 5471 */ NULL, /* 5472 */ NULL, /* 5473 */ NULL, /* 5474 */ NULL, /* 5475 */ NULL, /* 5476 */ NULL, /* 5477 */ NULL, /* 5478 */ NULL, /* 5479 */ NULL, /* 547a */ NULL, /* 547b */ NULL, /* 547c */ NULL, /* 547d */ NULL, /* 547e */ NULL, /* 547f */ NULL, /* 5480 */ NULL, /* 5481 */ NULL, /* 5482 */ NULL, /* 5483 */ NULL, /* 5484 */ NULL, /* 5485 */ NULL, /* 5486 */ NULL, /* 5487 */ NULL, /* 5488 */ NULL, /* 5489 */ NULL, /* 548a */ NULL, /* 548b */ NULL, /* 548c */ NULL, /* 548d */ NULL, /* 548e */ NULL, /* 548f */ NULL, /* 5490 */ NULL, /* 5491 */ NULL, /* 5492 */ NULL, /* 5493 */ NULL, /* 5494 */ NULL, /* 5495 */ NULL, /* 5496 */ NULL, /* 5497 */ NULL, /* 5498 */ NULL, /* 5499 */ NULL, /* 549a */ NULL, /* 549b */ NULL, /* 549c */ NULL, /* 549d */ NULL, /* 549e */ NULL, /* 549f */ NULL, /* 54a0 */ NULL, /* 54a1 */ NULL, /* 54a2 */ NULL, /* 54a3 */ NULL, /* 54a4 */ NULL, /* 54a5 */ NULL, /* 54a6 */ NULL, /* 54a7 */ NULL, /* 54a8 */ NULL, /* 54a9 */ NULL, /* 54aa */ NULL, /* 54ab */ NULL, /* 54ac */ NULL, /* 54ad */ NULL, /* 54ae */ NULL, /* 54af */ NULL, /* 54b0 */ NULL, /* 54b1 */ NULL, /* 54b2 */ NULL, /* 54b3 */ NULL, /* 54b4 */ NULL, /* 54b5 */ NULL, /* 54b6 */ NULL, /* 54b7 */ NULL, /* 54b8 */ NULL, /* 54b9 */ NULL, /* 54ba */ NULL, /* 54bb */ NULL, /* 54bc */ NULL, /* 54bd */ NULL, /* 54be */ NULL, /* 54bf */ NULL, /* 54c0 */ NULL, /* 54c1 */ NULL, /* 54c2 */ NULL, /* 54c3 */ NULL, /* 54c4 */ NULL, /* 54c5 */ NULL, /* 54c6 */ NULL, /* 54c7 */ NULL, /* 54c8 */ NULL, /* 54c9 */ NULL, /* 54ca */ NULL, /* 54cb */ NULL, /* 54cc */ NULL, /* 54cd */ NULL, /* 54ce */ NULL, /* 54cf */ NULL, /* 54d0 */ NULL, /* 54d1 */ NULL, /* 54d2 */ NULL, /* 54d3 */ NULL, /* 54d4 */ NULL, /* 54d5 */ NULL, /* 54d6 */ NULL, /* 54d7 */ NULL, /* 54d8 */ NULL, /* 54d9 */ NULL, /* 54da */ NULL, /* 54db */ NULL, /* 54dc */ NULL, /* 54dd */ NULL, /* 54de */ NULL, /* 54df */ NULL, /* 54e0 */ NULL, /* 54e1 */ NULL, /* 54e2 */ NULL, /* 54e3 */ NULL, /* 54e4 */ NULL, /* 54e5 */ NULL, /* 54e6 */ NULL, /* 54e7 */ NULL, /* 54e8 */ NULL, /* 54e9 */ NULL, /* 54ea */ NULL, /* 54eb */ NULL, /* 54ec */ NULL, /* 54ed */ NULL, /* 54ee */ NULL, /* 54ef */ NULL, /* 54f0 */ NULL, /* 54f1 */ NULL, /* 54f2 */ NULL, /* 54f3 */ NULL, /* 54f4 */ NULL, /* 54f5 */ NULL, /* 54f6 */ NULL, /* 54f7 */ NULL, /* 54f8 */ NULL, /* 54f9 */ NULL, /* 54fa */ NULL, /* 54fb */ NULL, /* 54fc */ NULL, /* 54fd */ NULL, /* 54fe */ NULL, /* 54ff */ NULL, /* 5500 */ NULL, /* 5501 */ NULL, /* 5502 */ NULL, /* 5503 */ NULL, /* 5504 */ NULL, /* 5505 */ NULL, /* 5506 */ NULL, /* 5507 */ NULL, /* 5508 */ NULL, /* 5509 */ NULL, /* 550a */ NULL, /* 550b */ NULL, /* 550c */ NULL, /* 550d */ NULL, /* 550e */ NULL, /* 550f */ NULL, /* 5510 */ NULL, /* 5511 */ NULL, /* 5512 */ NULL, /* 5513 */ NULL, /* 5514 */ NULL, /* 5515 */ NULL, /* 5516 */ NULL, /* 5517 */ NULL, /* 5518 */ NULL, /* 5519 */ NULL, /* 551a */ NULL, /* 551b */ NULL, /* 551c */ NULL, /* 551d */ NULL, /* 551e */ NULL, /* 551f */ NULL, /* 5520 */ NULL, /* 5521 */ NULL, /* 5522 */ NULL, /* 5523 */ NULL, /* 5524 */ NULL, /* 5525 */ NULL, /* 5526 */ NULL, /* 5527 */ NULL, /* 5528 */ NULL, /* 5529 */ NULL, /* 552a */ NULL, /* 552b */ NULL, /* 552c */ NULL, /* 552d */ NULL, /* 552e */ NULL, /* 552f */ NULL, /* 5530 */ NULL, /* 5531 */ NULL, /* 5532 */ NULL, /* 5533 */ NULL, /* 5534 */ NULL, /* 5535 */ NULL, /* 5536 */ NULL, /* 5537 */ NULL, /* 5538 */ NULL, /* 5539 */ NULL, /* 553a */ NULL, /* 553b */ NULL, /* 553c */ NULL, /* 553d */ NULL, /* 553e */ NULL, /* 553f */ NULL, /* 5540 */ NULL, /* 5541 */ NULL, /* 5542 */ NULL, /* 5543 */ NULL, /* 5544 */ NULL, /* 5545 */ NULL, /* 5546 */ NULL, /* 5547 */ NULL, /* 5548 */ NULL, /* 5549 */ NULL, /* 554a */ NULL, /* 554b */ NULL, /* 554c */ NULL, /* 554d */ NULL, /* 554e */ NULL, /* 554f */ NULL, /* 5550 */ NULL, /* 5551 */ NULL, /* 5552 */ NULL, /* 5553 */ NULL, /* 5554 */ NULL, /* 5555 */ NULL, /* 5556 */ NULL, /* 5557 */ NULL, /* 5558 */ NULL, /* 5559 */ NULL, /* 555a */ NULL, /* 555b */ NULL, /* 555c */ NULL, /* 555d */ NULL, /* 555e */ NULL, /* 555f */ NULL, /* 5560 */ NULL, /* 5561 */ NULL, /* 5562 */ NULL, /* 5563 */ NULL, /* 5564 */ NULL, /* 5565 */ NULL, /* 5566 */ NULL, /* 5567 */ NULL, /* 5568 */ NULL, /* 5569 */ NULL, /* 556a */ NULL, /* 556b */ NULL, /* 556c */ NULL, /* 556d */ NULL, /* 556e */ NULL, /* 556f */ NULL, /* 5570 */ NULL, /* 5571 */ NULL, /* 5572 */ NULL, /* 5573 */ NULL, /* 5574 */ NULL, /* 5575 */ NULL, /* 5576 */ NULL, /* 5577 */ NULL, /* 5578 */ NULL, /* 5579 */ NULL, /* 557a */ NULL, /* 557b */ NULL, /* 557c */ NULL, /* 557d */ NULL, /* 557e */ NULL, /* 557f */ NULL, /* 5580 */ NULL, /* 5581 */ NULL, /* 5582 */ NULL, /* 5583 */ NULL, /* 5584 */ NULL, /* 5585 */ NULL, /* 5586 */ NULL, /* 5587 */ NULL, /* 5588 */ NULL, /* 5589 */ NULL, /* 558a */ NULL, /* 558b */ NULL, /* 558c */ NULL, /* 558d */ NULL, /* 558e */ NULL, /* 558f */ NULL, /* 5590 */ NULL, /* 5591 */ NULL, /* 5592 */ NULL, /* 5593 */ NULL, /* 5594 */ NULL, /* 5595 */ NULL, /* 5596 */ NULL, /* 5597 */ NULL, /* 5598 */ NULL, /* 5599 */ NULL, /* 559a */ NULL, /* 559b */ NULL, /* 559c */ NULL, /* 559d */ NULL, /* 559e */ NULL, /* 559f */ NULL, /* 55a0 */ NULL, /* 55a1 */ NULL, /* 55a2 */ NULL, /* 55a3 */ NULL, /* 55a4 */ NULL, /* 55a5 */ NULL, /* 55a6 */ NULL, /* 55a7 */ NULL, /* 55a8 */ NULL, /* 55a9 */ NULL, /* 55aa */ NULL, /* 55ab */ NULL, /* 55ac */ NULL, /* 55ad */ NULL, /* 55ae */ NULL, /* 55af */ NULL, /* 55b0 */ NULL, /* 55b1 */ NULL, /* 55b2 */ NULL, /* 55b3 */ NULL, /* 55b4 */ NULL, /* 55b5 */ NULL, /* 55b6 */ NULL, /* 55b7 */ NULL, /* 55b8 */ NULL, /* 55b9 */ NULL, /* 55ba */ NULL, /* 55bb */ NULL, /* 55bc */ NULL, /* 55bd */ NULL, /* 55be */ NULL, /* 55bf */ NULL, /* 55c0 */ NULL, /* 55c1 */ NULL, /* 55c2 */ NULL, /* 55c3 */ NULL, /* 55c4 */ NULL, /* 55c5 */ NULL, /* 55c6 */ NULL, /* 55c7 */ NULL, /* 55c8 */ NULL, /* 55c9 */ NULL, /* 55ca */ NULL, /* 55cb */ NULL, /* 55cc */ NULL, /* 55cd */ NULL, /* 55ce */ NULL, /* 55cf */ NULL, /* 55d0 */ NULL, /* 55d1 */ NULL, /* 55d2 */ NULL, /* 55d3 */ NULL, /* 55d4 */ NULL, /* 55d5 */ NULL, /* 55d6 */ NULL, /* 55d7 */ NULL, /* 55d8 */ NULL, /* 55d9 */ NULL, /* 55da */ NULL, /* 55db */ NULL, /* 55dc */ NULL, /* 55dd */ NULL, /* 55de */ NULL, /* 55df */ NULL, /* 55e0 */ NULL, /* 55e1 */ NULL, /* 55e2 */ NULL, /* 55e3 */ NULL, /* 55e4 */ NULL, /* 55e5 */ NULL, /* 55e6 */ NULL, /* 55e7 */ NULL, /* 55e8 */ NULL, /* 55e9 */ NULL, /* 55ea */ NULL, /* 55eb */ NULL, /* 55ec */ NULL, /* 55ed */ NULL, /* 55ee */ NULL, /* 55ef */ NULL, /* 55f0 */ NULL, /* 55f1 */ NULL, /* 55f2 */ NULL, /* 55f3 */ NULL, /* 55f4 */ NULL, /* 55f5 */ NULL, /* 55f6 */ NULL, /* 55f7 */ NULL, /* 55f8 */ NULL, /* 55f9 */ NULL, /* 55fa */ NULL, /* 55fb */ NULL, /* 55fc */ NULL, /* 55fd */ NULL, /* 55fe */ NULL, /* 55ff */ NULL, /* 5600 */ NULL, /* 5601 */ NULL, /* 5602 */ NULL, /* 5603 */ NULL, /* 5604 */ NULL, /* 5605 */ NULL, /* 5606 */ NULL, /* 5607 */ NULL, /* 5608 */ NULL, /* 5609 */ NULL, /* 560a */ NULL, /* 560b */ NULL, /* 560c */ NULL, /* 560d */ NULL, /* 560e */ NULL, /* 560f */ NULL, /* 5610 */ NULL, /* 5611 */ NULL, /* 5612 */ NULL, /* 5613 */ NULL, /* 5614 */ NULL, /* 5615 */ NULL, /* 5616 */ NULL, /* 5617 */ NULL, /* 5618 */ NULL, /* 5619 */ NULL, /* 561a */ NULL, /* 561b */ NULL, /* 561c */ NULL, /* 561d */ NULL, /* 561e */ NULL, /* 561f */ NULL, /* 5620 */ NULL, /* 5621 */ NULL, /* 5622 */ NULL, /* 5623 */ NULL, /* 5624 */ NULL, /* 5625 */ NULL, /* 5626 */ NULL, /* 5627 */ NULL, /* 5628 */ NULL, /* 5629 */ NULL, /* 562a */ NULL, /* 562b */ NULL, /* 562c */ NULL, /* 562d */ NULL, /* 562e */ NULL, /* 562f */ NULL, /* 5630 */ NULL, /* 5631 */ NULL, /* 5632 */ NULL, /* 5633 */ NULL, /* 5634 */ NULL, /* 5635 */ NULL, /* 5636 */ NULL, /* 5637 */ NULL, /* 5638 */ NULL, /* 5639 */ NULL, /* 563a */ NULL, /* 563b */ NULL, /* 563c */ NULL, /* 563d */ NULL, /* 563e */ NULL, /* 563f */ NULL, /* 5640 */ NULL, /* 5641 */ NULL, /* 5642 */ NULL, /* 5643 */ NULL, /* 5644 */ NULL, /* 5645 */ NULL, /* 5646 */ NULL, /* 5647 */ NULL, /* 5648 */ NULL, /* 5649 */ NULL, /* 564a */ NULL, /* 564b */ NULL, /* 564c */ NULL, /* 564d */ NULL, /* 564e */ NULL, /* 564f */ NULL, /* 5650 */ NULL, /* 5651 */ NULL, /* 5652 */ NULL, /* 5653 */ NULL, /* 5654 */ NULL, /* 5655 */ NULL, /* 5656 */ NULL, /* 5657 */ NULL, /* 5658 */ NULL, /* 5659 */ NULL, /* 565a */ NULL, /* 565b */ NULL, /* 565c */ NULL, /* 565d */ NULL, /* 565e */ NULL, /* 565f */ NULL, /* 5660 */ NULL, /* 5661 */ NULL, /* 5662 */ NULL, /* 5663 */ NULL, /* 5664 */ NULL, /* 5665 */ NULL, /* 5666 */ NULL, /* 5667 */ NULL, /* 5668 */ NULL, /* 5669 */ NULL, /* 566a */ NULL, /* 566b */ NULL, /* 566c */ NULL, /* 566d */ NULL, /* 566e */ NULL, /* 566f */ NULL, /* 5670 */ NULL, /* 5671 */ NULL, /* 5672 */ NULL, /* 5673 */ NULL, /* 5674 */ NULL, /* 5675 */ NULL, /* 5676 */ NULL, /* 5677 */ NULL, /* 5678 */ NULL, /* 5679 */ NULL, /* 567a */ NULL, /* 567b */ NULL, /* 567c */ NULL, /* 567d */ NULL, /* 567e */ NULL, /* 567f */ NULL, /* 5680 */ NULL, /* 5681 */ NULL, /* 5682 */ NULL, /* 5683 */ NULL, /* 5684 */ NULL, /* 5685 */ NULL, /* 5686 */ NULL, /* 5687 */ NULL, /* 5688 */ NULL, /* 5689 */ NULL, /* 568a */ NULL, /* 568b */ NULL, /* 568c */ NULL, /* 568d */ NULL, /* 568e */ NULL, /* 568f */ NULL, /* 5690 */ NULL, /* 5691 */ NULL, /* 5692 */ NULL, /* 5693 */ NULL, /* 5694 */ NULL, /* 5695 */ NULL, /* 5696 */ NULL, /* 5697 */ NULL, /* 5698 */ NULL, /* 5699 */ NULL, /* 569a */ NULL, /* 569b */ NULL, /* 569c */ NULL, /* 569d */ NULL, /* 569e */ NULL, /* 569f */ NULL, /* 56a0 */ NULL, /* 56a1 */ NULL, /* 56a2 */ NULL, /* 56a3 */ NULL, /* 56a4 */ NULL, /* 56a5 */ NULL, /* 56a6 */ NULL, /* 56a7 */ NULL, /* 56a8 */ NULL, /* 56a9 */ NULL, /* 56aa */ NULL, /* 56ab */ NULL, /* 56ac */ NULL, /* 56ad */ NULL, /* 56ae */ NULL, /* 56af */ NULL, /* 56b0 */ NULL, /* 56b1 */ NULL, /* 56b2 */ NULL, /* 56b3 */ NULL, /* 56b4 */ NULL, /* 56b5 */ NULL, /* 56b6 */ NULL, /* 56b7 */ NULL, /* 56b8 */ NULL, /* 56b9 */ NULL, /* 56ba */ NULL, /* 56bb */ NULL, /* 56bc */ NULL, /* 56bd */ NULL, /* 56be */ NULL, /* 56bf */ NULL, /* 56c0 */ NULL, /* 56c1 */ NULL, /* 56c2 */ NULL, /* 56c3 */ NULL, /* 56c4 */ NULL, /* 56c5 */ NULL, /* 56c6 */ NULL, /* 56c7 */ NULL, /* 56c8 */ NULL, /* 56c9 */ NULL, /* 56ca */ NULL, /* 56cb */ NULL, /* 56cc */ NULL, /* 56cd */ NULL, /* 56ce */ NULL, /* 56cf */ NULL, /* 56d0 */ NULL, /* 56d1 */ NULL, /* 56d2 */ NULL, /* 56d3 */ NULL, /* 56d4 */ NULL, /* 56d5 */ NULL, /* 56d6 */ NULL, /* 56d7 */ NULL, /* 56d8 */ NULL, /* 56d9 */ NULL, /* 56da */ NULL, /* 56db */ NULL, /* 56dc */ NULL, /* 56dd */ NULL, /* 56de */ NULL, /* 56df */ NULL, /* 56e0 */ NULL, /* 56e1 */ NULL, /* 56e2 */ NULL, /* 56e3 */ NULL, /* 56e4 */ NULL, /* 56e5 */ NULL, /* 56e6 */ NULL, /* 56e7 */ NULL, /* 56e8 */ NULL, /* 56e9 */ NULL, /* 56ea */ NULL, /* 56eb */ NULL, /* 56ec */ NULL, /* 56ed */ NULL, /* 56ee */ NULL, /* 56ef */ NULL, /* 56f0 */ NULL, /* 56f1 */ NULL, /* 56f2 */ NULL, /* 56f3 */ NULL, /* 56f4 */ NULL, /* 56f5 */ NULL, /* 56f6 */ NULL, /* 56f7 */ NULL, /* 56f8 */ NULL, /* 56f9 */ NULL, /* 56fa */ NULL, /* 56fb */ NULL, /* 56fc */ NULL, /* 56fd */ NULL, /* 56fe */ NULL, /* 56ff */ NULL, /* 5700 */ NULL, /* 5701 */ NULL, /* 5702 */ NULL, /* 5703 */ NULL, /* 5704 */ NULL, /* 5705 */ NULL, /* 5706 */ NULL, /* 5707 */ NULL, /* 5708 */ NULL, /* 5709 */ NULL, /* 570a */ NULL, /* 570b */ NULL, /* 570c */ NULL, /* 570d */ NULL, /* 570e */ NULL, /* 570f */ NULL, /* 5710 */ NULL, /* 5711 */ NULL, /* 5712 */ NULL, /* 5713 */ NULL, /* 5714 */ NULL, /* 5715 */ NULL, /* 5716 */ NULL, /* 5717 */ NULL, /* 5718 */ NULL, /* 5719 */ NULL, /* 571a */ NULL, /* 571b */ NULL, /* 571c */ NULL, /* 571d */ NULL, /* 571e */ NULL, /* 571f */ NULL, /* 5720 */ NULL, /* 5721 */ NULL, /* 5722 */ NULL, /* 5723 */ NULL, /* 5724 */ NULL, /* 5725 */ NULL, /* 5726 */ NULL, /* 5727 */ NULL, /* 5728 */ NULL, /* 5729 */ NULL, /* 572a */ NULL, /* 572b */ NULL, /* 572c */ NULL, /* 572d */ NULL, /* 572e */ NULL, /* 572f */ NULL, /* 5730 */ NULL, /* 5731 */ NULL, /* 5732 */ NULL, /* 5733 */ NULL, /* 5734 */ NULL, /* 5735 */ NULL, /* 5736 */ NULL, /* 5737 */ NULL, /* 5738 */ NULL, /* 5739 */ NULL, /* 573a */ NULL, /* 573b */ NULL, /* 573c */ NULL, /* 573d */ NULL, /* 573e */ NULL, /* 573f */ NULL, /* 5740 */ NULL, /* 5741 */ NULL, /* 5742 */ NULL, /* 5743 */ NULL, /* 5744 */ NULL, /* 5745 */ NULL, /* 5746 */ NULL, /* 5747 */ NULL, /* 5748 */ NULL, /* 5749 */ NULL, /* 574a */ NULL, /* 574b */ NULL, /* 574c */ NULL, /* 574d */ NULL, /* 574e */ NULL, /* 574f */ NULL, /* 5750 */ NULL, /* 5751 */ NULL, /* 5752 */ NULL, /* 5753 */ NULL, /* 5754 */ NULL, /* 5755 */ NULL, /* 5756 */ NULL, /* 5757 */ NULL, /* 5758 */ NULL, /* 5759 */ NULL, /* 575a */ NULL, /* 575b */ NULL, /* 575c */ NULL, /* 575d */ NULL, /* 575e */ NULL, /* 575f */ NULL, /* 5760 */ NULL, /* 5761 */ NULL, /* 5762 */ NULL, /* 5763 */ NULL, /* 5764 */ NULL, /* 5765 */ NULL, /* 5766 */ NULL, /* 5767 */ NULL, /* 5768 */ NULL, /* 5769 */ NULL, /* 576a */ NULL, /* 576b */ NULL, /* 576c */ NULL, /* 576d */ NULL, /* 576e */ NULL, /* 576f */ NULL, /* 5770 */ NULL, /* 5771 */ NULL, /* 5772 */ NULL, /* 5773 */ NULL, /* 5774 */ NULL, /* 5775 */ NULL, /* 5776 */ NULL, /* 5777 */ NULL, /* 5778 */ NULL, /* 5779 */ NULL, /* 577a */ NULL, /* 577b */ NULL, /* 577c */ NULL, /* 577d */ NULL, /* 577e */ NULL, /* 577f */ NULL, /* 5780 */ NULL, /* 5781 */ NULL, /* 5782 */ NULL, /* 5783 */ NULL, /* 5784 */ NULL, /* 5785 */ NULL, /* 5786 */ NULL, /* 5787 */ NULL, /* 5788 */ NULL, /* 5789 */ NULL, /* 578a */ NULL, /* 578b */ NULL, /* 578c */ NULL, /* 578d */ NULL, /* 578e */ NULL, /* 578f */ NULL, /* 5790 */ NULL, /* 5791 */ NULL, /* 5792 */ NULL, /* 5793 */ NULL, /* 5794 */ NULL, /* 5795 */ NULL, /* 5796 */ NULL, /* 5797 */ NULL, /* 5798 */ NULL, /* 5799 */ NULL, /* 579a */ NULL, /* 579b */ NULL, /* 579c */ NULL, /* 579d */ NULL, /* 579e */ NULL, /* 579f */ NULL, /* 57a0 */ NULL, /* 57a1 */ NULL, /* 57a2 */ NULL, /* 57a3 */ NULL, /* 57a4 */ NULL, /* 57a5 */ NULL, /* 57a6 */ NULL, /* 57a7 */ NULL, /* 57a8 */ NULL, /* 57a9 */ NULL, /* 57aa */ NULL, /* 57ab */ NULL, /* 57ac */ NULL, /* 57ad */ NULL, /* 57ae */ NULL, /* 57af */ NULL, /* 57b0 */ NULL, /* 57b1 */ NULL, /* 57b2 */ NULL, /* 57b3 */ NULL, /* 57b4 */ NULL, /* 57b5 */ NULL, /* 57b6 */ NULL, /* 57b7 */ NULL, /* 57b8 */ NULL, /* 57b9 */ NULL, /* 57ba */ NULL, /* 57bb */ NULL, /* 57bc */ NULL, /* 57bd */ NULL, /* 57be */ NULL, /* 57bf */ NULL, /* 57c0 */ NULL, /* 57c1 */ NULL, /* 57c2 */ NULL, /* 57c3 */ NULL, /* 57c4 */ NULL, /* 57c5 */ NULL, /* 57c6 */ NULL, /* 57c7 */ NULL, /* 57c8 */ NULL, /* 57c9 */ NULL, /* 57ca */ NULL, /* 57cb */ NULL, /* 57cc */ NULL, /* 57cd */ NULL, /* 57ce */ NULL, /* 57cf */ NULL, /* 57d0 */ NULL, /* 57d1 */ NULL, /* 57d2 */ NULL, /* 57d3 */ NULL, /* 57d4 */ NULL, /* 57d5 */ NULL, /* 57d6 */ NULL, /* 57d7 */ NULL, /* 57d8 */ NULL, /* 57d9 */ NULL, /* 57da */ NULL, /* 57db */ NULL, /* 57dc */ NULL, /* 57dd */ NULL, /* 57de */ NULL, /* 57df */ NULL, /* 57e0 */ NULL, /* 57e1 */ NULL, /* 57e2 */ NULL, /* 57e3 */ NULL, /* 57e4 */ NULL, /* 57e5 */ NULL, /* 57e6 */ NULL, /* 57e7 */ NULL, /* 57e8 */ NULL, /* 57e9 */ NULL, /* 57ea */ NULL, /* 57eb */ NULL, /* 57ec */ NULL, /* 57ed */ NULL, /* 57ee */ NULL, /* 57ef */ NULL, /* 57f0 */ NULL, /* 57f1 */ NULL, /* 57f2 */ NULL, /* 57f3 */ NULL, /* 57f4 */ NULL, /* 57f5 */ NULL, /* 57f6 */ NULL, /* 57f7 */ NULL, /* 57f8 */ NULL, /* 57f9 */ NULL, /* 57fa */ NULL, /* 57fb */ NULL, /* 57fc */ NULL, /* 57fd */ NULL, /* 57fe */ NULL, /* 57ff */ NULL, /* 5800 */ NULL, /* 5801 */ NULL, /* 5802 */ NULL, /* 5803 */ NULL, /* 5804 */ NULL, /* 5805 */ NULL, /* 5806 */ NULL, /* 5807 */ NULL, /* 5808 */ NULL, /* 5809 */ NULL, /* 580a */ NULL, /* 580b */ NULL, /* 580c */ NULL, /* 580d */ NULL, /* 580e */ NULL, /* 580f */ NULL, /* 5810 */ NULL, /* 5811 */ NULL, /* 5812 */ NULL, /* 5813 */ NULL, /* 5814 */ NULL, /* 5815 */ NULL, /* 5816 */ NULL, /* 5817 */ NULL, /* 5818 */ NULL, /* 5819 */ NULL, /* 581a */ NULL, /* 581b */ NULL, /* 581c */ NULL, /* 581d */ NULL, /* 581e */ NULL, /* 581f */ NULL, /* 5820 */ NULL, /* 5821 */ NULL, /* 5822 */ NULL, /* 5823 */ NULL, /* 5824 */ NULL, /* 5825 */ NULL, /* 5826 */ NULL, /* 5827 */ NULL, /* 5828 */ NULL, /* 5829 */ NULL, /* 582a */ NULL, /* 582b */ NULL, /* 582c */ NULL, /* 582d */ NULL, /* 582e */ NULL, /* 582f */ NULL, /* 5830 */ NULL, /* 5831 */ NULL, /* 5832 */ NULL, /* 5833 */ NULL, /* 5834 */ NULL, /* 5835 */ NULL, /* 5836 */ NULL, /* 5837 */ NULL, /* 5838 */ NULL, /* 5839 */ NULL, /* 583a */ NULL, /* 583b */ NULL, /* 583c */ NULL, /* 583d */ NULL, /* 583e */ NULL, /* 583f */ NULL, /* 5840 */ NULL, /* 5841 */ NULL, /* 5842 */ NULL, /* 5843 */ NULL, /* 5844 */ NULL, /* 5845 */ NULL, /* 5846 */ NULL, /* 5847 */ NULL, /* 5848 */ NULL, /* 5849 */ NULL, /* 584a */ NULL, /* 584b */ NULL, /* 584c */ NULL, /* 584d */ NULL, /* 584e */ NULL, /* 584f */ NULL, /* 5850 */ NULL, /* 5851 */ NULL, /* 5852 */ NULL, /* 5853 */ NULL, /* 5854 */ NULL, /* 5855 */ NULL, /* 5856 */ NULL, /* 5857 */ NULL, /* 5858 */ NULL, /* 5859 */ NULL, /* 585a */ NULL, /* 585b */ NULL, /* 585c */ NULL, /* 585d */ NULL, /* 585e */ NULL, /* 585f */ NULL, /* 5860 */ NULL, /* 5861 */ NULL, /* 5862 */ NULL, /* 5863 */ NULL, /* 5864 */ NULL, /* 5865 */ NULL, /* 5866 */ NULL, /* 5867 */ NULL, /* 5868 */ NULL, /* 5869 */ NULL, /* 586a */ NULL, /* 586b */ NULL, /* 586c */ NULL, /* 586d */ NULL, /* 586e */ NULL, /* 586f */ NULL, /* 5870 */ NULL, /* 5871 */ NULL, /* 5872 */ NULL, /* 5873 */ NULL, /* 5874 */ NULL, /* 5875 */ NULL, /* 5876 */ NULL, /* 5877 */ NULL, /* 5878 */ NULL, /* 5879 */ NULL, /* 587a */ NULL, /* 587b */ NULL, /* 587c */ NULL, /* 587d */ NULL, /* 587e */ NULL, /* 587f */ NULL, /* 5880 */ NULL, /* 5881 */ NULL, /* 5882 */ NULL, /* 5883 */ NULL, /* 5884 */ NULL, /* 5885 */ NULL, /* 5886 */ NULL, /* 5887 */ NULL, /* 5888 */ NULL, /* 5889 */ NULL, /* 588a */ NULL, /* 588b */ NULL, /* 588c */ NULL, /* 588d */ NULL, /* 588e */ NULL, /* 588f */ NULL, /* 5890 */ NULL, /* 5891 */ NULL, /* 5892 */ NULL, /* 5893 */ NULL, /* 5894 */ NULL, /* 5895 */ NULL, /* 5896 */ NULL, /* 5897 */ NULL, /* 5898 */ NULL, /* 5899 */ NULL, /* 589a */ NULL, /* 589b */ NULL, /* 589c */ NULL, /* 589d */ NULL, /* 589e */ NULL, /* 589f */ NULL, /* 58a0 */ NULL, /* 58a1 */ NULL, /* 58a2 */ NULL, /* 58a3 */ NULL, /* 58a4 */ NULL, /* 58a5 */ NULL, /* 58a6 */ NULL, /* 58a7 */ NULL, /* 58a8 */ NULL, /* 58a9 */ NULL, /* 58aa */ NULL, /* 58ab */ NULL, /* 58ac */ NULL, /* 58ad */ NULL, /* 58ae */ NULL, /* 58af */ NULL, /* 58b0 */ NULL, /* 58b1 */ NULL, /* 58b2 */ NULL, /* 58b3 */ NULL, /* 58b4 */ NULL, /* 58b5 */ NULL, /* 58b6 */ NULL, /* 58b7 */ NULL, /* 58b8 */ NULL, /* 58b9 */ NULL, /* 58ba */ NULL, /* 58bb */ NULL, /* 58bc */ NULL, /* 58bd */ NULL, /* 58be */ NULL, /* 58bf */ NULL, /* 58c0 */ NULL, /* 58c1 */ NULL, /* 58c2 */ NULL, /* 58c3 */ NULL, /* 58c4 */ NULL, /* 58c5 */ NULL, /* 58c6 */ NULL, /* 58c7 */ NULL, /* 58c8 */ NULL, /* 58c9 */ NULL, /* 58ca */ NULL, /* 58cb */ NULL, /* 58cc */ NULL, /* 58cd */ NULL, /* 58ce */ NULL, /* 58cf */ NULL, /* 58d0 */ NULL, /* 58d1 */ NULL, /* 58d2 */ NULL, /* 58d3 */ NULL, /* 58d4 */ NULL, /* 58d5 */ NULL, /* 58d6 */ NULL, /* 58d7 */ NULL, /* 58d8 */ NULL, /* 58d9 */ NULL, /* 58da */ NULL, /* 58db */ NULL, /* 58dc */ NULL, /* 58dd */ NULL, /* 58de */ NULL, /* 58df */ NULL, /* 58e0 */ NULL, /* 58e1 */ NULL, /* 58e2 */ NULL, /* 58e3 */ NULL, /* 58e4 */ NULL, /* 58e5 */ NULL, /* 58e6 */ NULL, /* 58e7 */ NULL, /* 58e8 */ NULL, /* 58e9 */ NULL, /* 58ea */ NULL, /* 58eb */ NULL, /* 58ec */ NULL, /* 58ed */ NULL, /* 58ee */ NULL, /* 58ef */ NULL, /* 58f0 */ NULL, /* 58f1 */ NULL, /* 58f2 */ NULL, /* 58f3 */ NULL, /* 58f4 */ NULL, /* 58f5 */ NULL, /* 58f6 */ NULL, /* 58f7 */ NULL, /* 58f8 */ NULL, /* 58f9 */ NULL, /* 58fa */ NULL, /* 58fb */ NULL, /* 58fc */ NULL, /* 58fd */ NULL, /* 58fe */ NULL, /* 58ff */ NULL, /* 5900 */ NULL, /* 5901 */ NULL, /* 5902 */ NULL, /* 5903 */ NULL, /* 5904 */ NULL, /* 5905 */ NULL, /* 5906 */ NULL, /* 5907 */ NULL, /* 5908 */ NULL, /* 5909 */ NULL, /* 590a */ NULL, /* 590b */ NULL, /* 590c */ NULL, /* 590d */ NULL, /* 590e */ NULL, /* 590f */ NULL, /* 5910 */ NULL, /* 5911 */ NULL, /* 5912 */ NULL, /* 5913 */ NULL, /* 5914 */ NULL, /* 5915 */ NULL, /* 5916 */ NULL, /* 5917 */ NULL, /* 5918 */ NULL, /* 5919 */ NULL, /* 591a */ NULL, /* 591b */ NULL, /* 591c */ NULL, /* 591d */ NULL, /* 591e */ NULL, /* 591f */ NULL, /* 5920 */ NULL, /* 5921 */ NULL, /* 5922 */ NULL, /* 5923 */ NULL, /* 5924 */ NULL, /* 5925 */ NULL, /* 5926 */ NULL, /* 5927 */ NULL, /* 5928 */ NULL, /* 5929 */ NULL, /* 592a */ NULL, /* 592b */ NULL, /* 592c */ NULL, /* 592d */ NULL, /* 592e */ NULL, /* 592f */ NULL, /* 5930 */ NULL, /* 5931 */ NULL, /* 5932 */ NULL, /* 5933 */ NULL, /* 5934 */ NULL, /* 5935 */ NULL, /* 5936 */ NULL, /* 5937 */ NULL, /* 5938 */ NULL, /* 5939 */ NULL, /* 593a */ NULL, /* 593b */ NULL, /* 593c */ NULL, /* 593d */ NULL, /* 593e */ NULL, /* 593f */ NULL, /* 5940 */ NULL, /* 5941 */ NULL, /* 5942 */ NULL, /* 5943 */ NULL, /* 5944 */ NULL, /* 5945 */ NULL, /* 5946 */ NULL, /* 5947 */ NULL, /* 5948 */ NULL, /* 5949 */ NULL, /* 594a */ NULL, /* 594b */ NULL, /* 594c */ NULL, /* 594d */ NULL, /* 594e */ NULL, /* 594f */ NULL, /* 5950 */ NULL, /* 5951 */ NULL, /* 5952 */ NULL, /* 5953 */ NULL, /* 5954 */ NULL, /* 5955 */ NULL, /* 5956 */ NULL, /* 5957 */ NULL, /* 5958 */ NULL, /* 5959 */ NULL, /* 595a */ NULL, /* 595b */ NULL, /* 595c */ NULL, /* 595d */ NULL, /* 595e */ NULL, /* 595f */ NULL, /* 5960 */ NULL, /* 5961 */ NULL, /* 5962 */ NULL, /* 5963 */ NULL, /* 5964 */ NULL, /* 5965 */ NULL, /* 5966 */ NULL, /* 5967 */ NULL, /* 5968 */ NULL, /* 5969 */ NULL, /* 596a */ NULL, /* 596b */ NULL, /* 596c */ NULL, /* 596d */ NULL, /* 596e */ NULL, /* 596f */ NULL, /* 5970 */ NULL, /* 5971 */ NULL, /* 5972 */ NULL, /* 5973 */ NULL, /* 5974 */ NULL, /* 5975 */ NULL, /* 5976 */ NULL, /* 5977 */ NULL, /* 5978 */ NULL, /* 5979 */ NULL, /* 597a */ NULL, /* 597b */ NULL, /* 597c */ NULL, /* 597d */ NULL, /* 597e */ NULL, /* 597f */ NULL, /* 5980 */ NULL, /* 5981 */ NULL, /* 5982 */ NULL, /* 5983 */ NULL, /* 5984 */ NULL, /* 5985 */ NULL, /* 5986 */ NULL, /* 5987 */ NULL, /* 5988 */ NULL, /* 5989 */ NULL, /* 598a */ NULL, /* 598b */ NULL, /* 598c */ NULL, /* 598d */ NULL, /* 598e */ NULL, /* 598f */ NULL, /* 5990 */ NULL, /* 5991 */ NULL, /* 5992 */ NULL, /* 5993 */ NULL, /* 5994 */ NULL, /* 5995 */ NULL, /* 5996 */ NULL, /* 5997 */ NULL, /* 5998 */ NULL, /* 5999 */ NULL, /* 599a */ NULL, /* 599b */ NULL, /* 599c */ NULL, /* 599d */ NULL, /* 599e */ NULL, /* 599f */ NULL, /* 59a0 */ NULL, /* 59a1 */ NULL, /* 59a2 */ NULL, /* 59a3 */ NULL, /* 59a4 */ NULL, /* 59a5 */ NULL, /* 59a6 */ NULL, /* 59a7 */ NULL, /* 59a8 */ NULL, /* 59a9 */ NULL, /* 59aa */ NULL, /* 59ab */ NULL, /* 59ac */ NULL, /* 59ad */ NULL, /* 59ae */ NULL, /* 59af */ NULL, /* 59b0 */ NULL, /* 59b1 */ NULL, /* 59b2 */ NULL, /* 59b3 */ NULL, /* 59b4 */ NULL, /* 59b5 */ NULL, /* 59b6 */ NULL, /* 59b7 */ NULL, /* 59b8 */ NULL, /* 59b9 */ NULL, /* 59ba */ NULL, /* 59bb */ NULL, /* 59bc */ NULL, /* 59bd */ NULL, /* 59be */ NULL, /* 59bf */ NULL, /* 59c0 */ NULL, /* 59c1 */ NULL, /* 59c2 */ NULL, /* 59c3 */ NULL, /* 59c4 */ NULL, /* 59c5 */ NULL, /* 59c6 */ NULL, /* 59c7 */ NULL, /* 59c8 */ NULL, /* 59c9 */ NULL, /* 59ca */ NULL, /* 59cb */ NULL, /* 59cc */ NULL, /* 59cd */ NULL, /* 59ce */ NULL, /* 59cf */ NULL, /* 59d0 */ NULL, /* 59d1 */ NULL, /* 59d2 */ NULL, /* 59d3 */ NULL, /* 59d4 */ NULL, /* 59d5 */ NULL, /* 59d6 */ NULL, /* 59d7 */ NULL, /* 59d8 */ NULL, /* 59d9 */ NULL, /* 59da */ NULL, /* 59db */ NULL, /* 59dc */ NULL, /* 59dd */ NULL, /* 59de */ NULL, /* 59df */ NULL, /* 59e0 */ NULL, /* 59e1 */ NULL, /* 59e2 */ NULL, /* 59e3 */ NULL, /* 59e4 */ NULL, /* 59e5 */ NULL, /* 59e6 */ NULL, /* 59e7 */ NULL, /* 59e8 */ NULL, /* 59e9 */ NULL, /* 59ea */ NULL, /* 59eb */ NULL, /* 59ec */ NULL, /* 59ed */ NULL, /* 59ee */ NULL, /* 59ef */ NULL, /* 59f0 */ NULL, /* 59f1 */ NULL, /* 59f2 */ NULL, /* 59f3 */ NULL, /* 59f4 */ NULL, /* 59f5 */ NULL, /* 59f6 */ NULL, /* 59f7 */ NULL, /* 59f8 */ NULL, /* 59f9 */ NULL, /* 59fa */ NULL, /* 59fb */ NULL, /* 59fc */ NULL, /* 59fd */ NULL, /* 59fe */ NULL, /* 59ff */ NULL, /* 5a00 */ NULL, /* 5a01 */ NULL, /* 5a02 */ NULL, /* 5a03 */ NULL, /* 5a04 */ NULL, /* 5a05 */ NULL, /* 5a06 */ NULL, /* 5a07 */ NULL, /* 5a08 */ NULL, /* 5a09 */ NULL, /* 5a0a */ NULL, /* 5a0b */ NULL, /* 5a0c */ NULL, /* 5a0d */ NULL, /* 5a0e */ NULL, /* 5a0f */ NULL, /* 5a10 */ NULL, /* 5a11 */ NULL, /* 5a12 */ NULL, /* 5a13 */ NULL, /* 5a14 */ NULL, /* 5a15 */ NULL, /* 5a16 */ NULL, /* 5a17 */ NULL, /* 5a18 */ NULL, /* 5a19 */ NULL, /* 5a1a */ NULL, /* 5a1b */ NULL, /* 5a1c */ NULL, /* 5a1d */ NULL, /* 5a1e */ NULL, /* 5a1f */ NULL, /* 5a20 */ NULL, /* 5a21 */ NULL, /* 5a22 */ NULL, /* 5a23 */ NULL, /* 5a24 */ NULL, /* 5a25 */ NULL, /* 5a26 */ NULL, /* 5a27 */ NULL, /* 5a28 */ NULL, /* 5a29 */ NULL, /* 5a2a */ NULL, /* 5a2b */ NULL, /* 5a2c */ NULL, /* 5a2d */ NULL, /* 5a2e */ NULL, /* 5a2f */ NULL, /* 5a30 */ NULL, /* 5a31 */ NULL, /* 5a32 */ NULL, /* 5a33 */ NULL, /* 5a34 */ NULL, /* 5a35 */ NULL, /* 5a36 */ NULL, /* 5a37 */ NULL, /* 5a38 */ NULL, /* 5a39 */ NULL, /* 5a3a */ NULL, /* 5a3b */ NULL, /* 5a3c */ NULL, /* 5a3d */ NULL, /* 5a3e */ NULL, /* 5a3f */ NULL, /* 5a40 */ NULL, /* 5a41 */ NULL, /* 5a42 */ NULL, /* 5a43 */ NULL, /* 5a44 */ NULL, /* 5a45 */ NULL, /* 5a46 */ NULL, /* 5a47 */ NULL, /* 5a48 */ NULL, /* 5a49 */ NULL, /* 5a4a */ NULL, /* 5a4b */ NULL, /* 5a4c */ NULL, /* 5a4d */ NULL, /* 5a4e */ NULL, /* 5a4f */ NULL, /* 5a50 */ NULL, /* 5a51 */ NULL, /* 5a52 */ NULL, /* 5a53 */ NULL, /* 5a54 */ NULL, /* 5a55 */ NULL, /* 5a56 */ NULL, /* 5a57 */ NULL, /* 5a58 */ NULL, /* 5a59 */ NULL, /* 5a5a */ NULL, /* 5a5b */ NULL, /* 5a5c */ NULL, /* 5a5d */ NULL, /* 5a5e */ NULL, /* 5a5f */ NULL, /* 5a60 */ NULL, /* 5a61 */ NULL, /* 5a62 */ NULL, /* 5a63 */ NULL, /* 5a64 */ NULL, /* 5a65 */ NULL, /* 5a66 */ NULL, /* 5a67 */ NULL, /* 5a68 */ NULL, /* 5a69 */ NULL, /* 5a6a */ NULL, /* 5a6b */ NULL, /* 5a6c */ NULL, /* 5a6d */ NULL, /* 5a6e */ NULL, /* 5a6f */ NULL, /* 5a70 */ NULL, /* 5a71 */ NULL, /* 5a72 */ NULL, /* 5a73 */ NULL, /* 5a74 */ NULL, /* 5a75 */ NULL, /* 5a76 */ NULL, /* 5a77 */ NULL, /* 5a78 */ NULL, /* 5a79 */ NULL, /* 5a7a */ NULL, /* 5a7b */ NULL, /* 5a7c */ NULL, /* 5a7d */ NULL, /* 5a7e */ NULL, /* 5a7f */ NULL, /* 5a80 */ NULL, /* 5a81 */ NULL, /* 5a82 */ NULL, /* 5a83 */ NULL, /* 5a84 */ NULL, /* 5a85 */ NULL, /* 5a86 */ NULL, /* 5a87 */ NULL, /* 5a88 */ NULL, /* 5a89 */ NULL, /* 5a8a */ NULL, /* 5a8b */ NULL, /* 5a8c */ NULL, /* 5a8d */ NULL, /* 5a8e */ NULL, /* 5a8f */ NULL, /* 5a90 */ NULL, /* 5a91 */ NULL, /* 5a92 */ NULL, /* 5a93 */ NULL, /* 5a94 */ NULL, /* 5a95 */ NULL, /* 5a96 */ NULL, /* 5a97 */ NULL, /* 5a98 */ NULL, /* 5a99 */ NULL, /* 5a9a */ NULL, /* 5a9b */ NULL, /* 5a9c */ NULL, /* 5a9d */ NULL, /* 5a9e */ NULL, /* 5a9f */ NULL, /* 5aa0 */ NULL, /* 5aa1 */ NULL, /* 5aa2 */ NULL, /* 5aa3 */ NULL, /* 5aa4 */ NULL, /* 5aa5 */ NULL, /* 5aa6 */ NULL, /* 5aa7 */ NULL, /* 5aa8 */ NULL, /* 5aa9 */ NULL, /* 5aaa */ NULL, /* 5aab */ NULL, /* 5aac */ NULL, /* 5aad */ NULL, /* 5aae */ NULL, /* 5aaf */ NULL, /* 5ab0 */ NULL, /* 5ab1 */ NULL, /* 5ab2 */ NULL, /* 5ab3 */ NULL, /* 5ab4 */ NULL, /* 5ab5 */ NULL, /* 5ab6 */ NULL, /* 5ab7 */ NULL, /* 5ab8 */ NULL, /* 5ab9 */ NULL, /* 5aba */ NULL, /* 5abb */ NULL, /* 5abc */ NULL, /* 5abd */ NULL, /* 5abe */ NULL, /* 5abf */ NULL, /* 5ac0 */ NULL, /* 5ac1 */ NULL, /* 5ac2 */ NULL, /* 5ac3 */ NULL, /* 5ac4 */ NULL, /* 5ac5 */ NULL, /* 5ac6 */ NULL, /* 5ac7 */ NULL, /* 5ac8 */ NULL, /* 5ac9 */ NULL, /* 5aca */ NULL, /* 5acb */ NULL, /* 5acc */ NULL, /* 5acd */ NULL, /* 5ace */ NULL, /* 5acf */ NULL, /* 5ad0 */ NULL, /* 5ad1 */ NULL, /* 5ad2 */ NULL, /* 5ad3 */ NULL, /* 5ad4 */ NULL, /* 5ad5 */ NULL, /* 5ad6 */ NULL, /* 5ad7 */ NULL, /* 5ad8 */ NULL, /* 5ad9 */ NULL, /* 5ada */ NULL, /* 5adb */ NULL, /* 5adc */ NULL, /* 5add */ NULL, /* 5ade */ NULL, /* 5adf */ NULL, /* 5ae0 */ NULL, /* 5ae1 */ NULL, /* 5ae2 */ NULL, /* 5ae3 */ NULL, /* 5ae4 */ NULL, /* 5ae5 */ NULL, /* 5ae6 */ NULL, /* 5ae7 */ NULL, /* 5ae8 */ NULL, /* 5ae9 */ NULL, /* 5aea */ NULL, /* 5aeb */ NULL, /* 5aec */ NULL, /* 5aed */ NULL, /* 5aee */ NULL, /* 5aef */ NULL, /* 5af0 */ NULL, /* 5af1 */ NULL, /* 5af2 */ NULL, /* 5af3 */ NULL, /* 5af4 */ NULL, /* 5af5 */ NULL, /* 5af6 */ NULL, /* 5af7 */ NULL, /* 5af8 */ NULL, /* 5af9 */ NULL, /* 5afa */ NULL, /* 5afb */ NULL, /* 5afc */ NULL, /* 5afd */ NULL, /* 5afe */ NULL, /* 5aff */ NULL, /* 5b00 */ NULL, /* 5b01 */ NULL, /* 5b02 */ NULL, /* 5b03 */ NULL, /* 5b04 */ NULL, /* 5b05 */ NULL, /* 5b06 */ NULL, /* 5b07 */ NULL, /* 5b08 */ NULL, /* 5b09 */ NULL, /* 5b0a */ NULL, /* 5b0b */ NULL, /* 5b0c */ NULL, /* 5b0d */ NULL, /* 5b0e */ NULL, /* 5b0f */ NULL, /* 5b10 */ NULL, /* 5b11 */ NULL, /* 5b12 */ NULL, /* 5b13 */ NULL, /* 5b14 */ NULL, /* 5b15 */ NULL, /* 5b16 */ NULL, /* 5b17 */ NULL, /* 5b18 */ NULL, /* 5b19 */ NULL, /* 5b1a */ NULL, /* 5b1b */ NULL, /* 5b1c */ NULL, /* 5b1d */ NULL, /* 5b1e */ NULL, /* 5b1f */ NULL, /* 5b20 */ NULL, /* 5b21 */ NULL, /* 5b22 */ NULL, /* 5b23 */ NULL, /* 5b24 */ NULL, /* 5b25 */ NULL, /* 5b26 */ NULL, /* 5b27 */ NULL, /* 5b28 */ NULL, /* 5b29 */ NULL, /* 5b2a */ NULL, /* 5b2b */ NULL, /* 5b2c */ NULL, /* 5b2d */ NULL, /* 5b2e */ NULL, /* 5b2f */ NULL, /* 5b30 */ NULL, /* 5b31 */ NULL, /* 5b32 */ NULL, /* 5b33 */ NULL, /* 5b34 */ NULL, /* 5b35 */ NULL, /* 5b36 */ NULL, /* 5b37 */ NULL, /* 5b38 */ NULL, /* 5b39 */ NULL, /* 5b3a */ NULL, /* 5b3b */ NULL, /* 5b3c */ NULL, /* 5b3d */ NULL, /* 5b3e */ NULL, /* 5b3f */ NULL, /* 5b40 */ NULL, /* 5b41 */ NULL, /* 5b42 */ NULL, /* 5b43 */ NULL, /* 5b44 */ NULL, /* 5b45 */ NULL, /* 5b46 */ NULL, /* 5b47 */ NULL, /* 5b48 */ NULL, /* 5b49 */ NULL, /* 5b4a */ NULL, /* 5b4b */ NULL, /* 5b4c */ NULL, /* 5b4d */ NULL, /* 5b4e */ NULL, /* 5b4f */ NULL, /* 5b50 */ NULL, /* 5b51 */ NULL, /* 5b52 */ NULL, /* 5b53 */ NULL, /* 5b54 */ NULL, /* 5b55 */ NULL, /* 5b56 */ NULL, /* 5b57 */ NULL, /* 5b58 */ NULL, /* 5b59 */ NULL, /* 5b5a */ NULL, /* 5b5b */ NULL, /* 5b5c */ NULL, /* 5b5d */ NULL, /* 5b5e */ NULL, /* 5b5f */ NULL, /* 5b60 */ NULL, /* 5b61 */ NULL, /* 5b62 */ NULL, /* 5b63 */ NULL, /* 5b64 */ NULL, /* 5b65 */ NULL, /* 5b66 */ NULL, /* 5b67 */ NULL, /* 5b68 */ NULL, /* 5b69 */ NULL, /* 5b6a */ NULL, /* 5b6b */ NULL, /* 5b6c */ NULL, /* 5b6d */ NULL, /* 5b6e */ NULL, /* 5b6f */ NULL, /* 5b70 */ NULL, /* 5b71 */ NULL, /* 5b72 */ NULL, /* 5b73 */ NULL, /* 5b74 */ NULL, /* 5b75 */ NULL, /* 5b76 */ NULL, /* 5b77 */ NULL, /* 5b78 */ NULL, /* 5b79 */ NULL, /* 5b7a */ NULL, /* 5b7b */ NULL, /* 5b7c */ NULL, /* 5b7d */ NULL, /* 5b7e */ NULL, /* 5b7f */ NULL, /* 5b80 */ NULL, /* 5b81 */ NULL, /* 5b82 */ NULL, /* 5b83 */ NULL, /* 5b84 */ NULL, /* 5b85 */ NULL, /* 5b86 */ NULL, /* 5b87 */ NULL, /* 5b88 */ NULL, /* 5b89 */ NULL, /* 5b8a */ NULL, /* 5b8b */ NULL, /* 5b8c */ NULL, /* 5b8d */ NULL, /* 5b8e */ NULL, /* 5b8f */ NULL, /* 5b90 */ NULL, /* 5b91 */ NULL, /* 5b92 */ NULL, /* 5b93 */ NULL, /* 5b94 */ NULL, /* 5b95 */ NULL, /* 5b96 */ NULL, /* 5b97 */ NULL, /* 5b98 */ NULL, /* 5b99 */ NULL, /* 5b9a */ NULL, /* 5b9b */ NULL, /* 5b9c */ NULL, /* 5b9d */ NULL, /* 5b9e */ NULL, /* 5b9f */ NULL, /* 5ba0 */ NULL, /* 5ba1 */ NULL, /* 5ba2 */ NULL, /* 5ba3 */ NULL, /* 5ba4 */ NULL, /* 5ba5 */ NULL, /* 5ba6 */ NULL, /* 5ba7 */ NULL, /* 5ba8 */ NULL, /* 5ba9 */ NULL, /* 5baa */ NULL, /* 5bab */ NULL, /* 5bac */ NULL, /* 5bad */ NULL, /* 5bae */ NULL, /* 5baf */ NULL, /* 5bb0 */ NULL, /* 5bb1 */ NULL, /* 5bb2 */ NULL, /* 5bb3 */ NULL, /* 5bb4 */ NULL, /* 5bb5 */ NULL, /* 5bb6 */ NULL, /* 5bb7 */ NULL, /* 5bb8 */ NULL, /* 5bb9 */ NULL, /* 5bba */ NULL, /* 5bbb */ NULL, /* 5bbc */ NULL, /* 5bbd */ NULL, /* 5bbe */ NULL, /* 5bbf */ NULL, /* 5bc0 */ NULL, /* 5bc1 */ NULL, /* 5bc2 */ NULL, /* 5bc3 */ NULL, /* 5bc4 */ NULL, /* 5bc5 */ NULL, /* 5bc6 */ NULL, /* 5bc7 */ NULL, /* 5bc8 */ NULL, /* 5bc9 */ NULL, /* 5bca */ NULL, /* 5bcb */ NULL, /* 5bcc */ NULL, /* 5bcd */ NULL, /* 5bce */ NULL, /* 5bcf */ NULL, /* 5bd0 */ NULL, /* 5bd1 */ NULL, /* 5bd2 */ NULL, /* 5bd3 */ NULL, /* 5bd4 */ NULL, /* 5bd5 */ NULL, /* 5bd6 */ NULL, /* 5bd7 */ NULL, /* 5bd8 */ NULL, /* 5bd9 */ NULL, /* 5bda */ NULL, /* 5bdb */ NULL, /* 5bdc */ NULL, /* 5bdd */ NULL, /* 5bde */ NULL, /* 5bdf */ NULL, /* 5be0 */ NULL, /* 5be1 */ NULL, /* 5be2 */ NULL, /* 5be3 */ NULL, /* 5be4 */ NULL, /* 5be5 */ NULL, /* 5be6 */ NULL, /* 5be7 */ NULL, /* 5be8 */ NULL, /* 5be9 */ NULL, /* 5bea */ NULL, /* 5beb */ NULL, /* 5bec */ NULL, /* 5bed */ NULL, /* 5bee */ NULL, /* 5bef */ NULL, /* 5bf0 */ NULL, /* 5bf1 */ NULL, /* 5bf2 */ NULL, /* 5bf3 */ NULL, /* 5bf4 */ NULL, /* 5bf5 */ NULL, /* 5bf6 */ NULL, /* 5bf7 */ NULL, /* 5bf8 */ NULL, /* 5bf9 */ NULL, /* 5bfa */ NULL, /* 5bfb */ NULL, /* 5bfc */ NULL, /* 5bfd */ NULL, /* 5bfe */ NULL, /* 5bff */ NULL, /* 5c00 */ NULL, /* 5c01 */ NULL, /* 5c02 */ NULL, /* 5c03 */ NULL, /* 5c04 */ NULL, /* 5c05 */ NULL, /* 5c06 */ NULL, /* 5c07 */ NULL, /* 5c08 */ NULL, /* 5c09 */ NULL, /* 5c0a */ NULL, /* 5c0b */ NULL, /* 5c0c */ NULL, /* 5c0d */ NULL, /* 5c0e */ NULL, /* 5c0f */ NULL, /* 5c10 */ NULL, /* 5c11 */ NULL, /* 5c12 */ NULL, /* 5c13 */ NULL, /* 5c14 */ NULL, /* 5c15 */ NULL, /* 5c16 */ NULL, /* 5c17 */ NULL, /* 5c18 */ NULL, /* 5c19 */ NULL, /* 5c1a */ NULL, /* 5c1b */ NULL, /* 5c1c */ NULL, /* 5c1d */ NULL, /* 5c1e */ NULL, /* 5c1f */ NULL, /* 5c20 */ NULL, /* 5c21 */ NULL, /* 5c22 */ NULL, /* 5c23 */ NULL, /* 5c24 */ NULL, /* 5c25 */ NULL, /* 5c26 */ NULL, /* 5c27 */ NULL, /* 5c28 */ NULL, /* 5c29 */ NULL, /* 5c2a */ NULL, /* 5c2b */ NULL, /* 5c2c */ NULL, /* 5c2d */ NULL, /* 5c2e */ NULL, /* 5c2f */ NULL, /* 5c30 */ NULL, /* 5c31 */ NULL, /* 5c32 */ NULL, /* 5c33 */ NULL, /* 5c34 */ NULL, /* 5c35 */ NULL, /* 5c36 */ NULL, /* 5c37 */ NULL, /* 5c38 */ NULL, /* 5c39 */ NULL, /* 5c3a */ NULL, /* 5c3b */ NULL, /* 5c3c */ NULL, /* 5c3d */ NULL, /* 5c3e */ NULL, /* 5c3f */ NULL, /* 5c40 */ NULL, /* 5c41 */ NULL, /* 5c42 */ NULL, /* 5c43 */ NULL, /* 5c44 */ NULL, /* 5c45 */ NULL, /* 5c46 */ NULL, /* 5c47 */ NULL, /* 5c48 */ NULL, /* 5c49 */ NULL, /* 5c4a */ NULL, /* 5c4b */ NULL, /* 5c4c */ NULL, /* 5c4d */ NULL, /* 5c4e */ NULL, /* 5c4f */ NULL, /* 5c50 */ NULL, /* 5c51 */ NULL, /* 5c52 */ NULL, /* 5c53 */ NULL, /* 5c54 */ NULL, /* 5c55 */ NULL, /* 5c56 */ NULL, /* 5c57 */ NULL, /* 5c58 */ NULL, /* 5c59 */ NULL, /* 5c5a */ NULL, /* 5c5b */ NULL, /* 5c5c */ NULL, /* 5c5d */ NULL, /* 5c5e */ NULL, /* 5c5f */ NULL, /* 5c60 */ NULL, /* 5c61 */ NULL, /* 5c62 */ NULL, /* 5c63 */ NULL, /* 5c64 */ NULL, /* 5c65 */ NULL, /* 5c66 */ NULL, /* 5c67 */ NULL, /* 5c68 */ NULL, /* 5c69 */ NULL, /* 5c6a */ NULL, /* 5c6b */ NULL, /* 5c6c */ NULL, /* 5c6d */ NULL, /* 5c6e */ NULL, /* 5c6f */ NULL, /* 5c70 */ NULL, /* 5c71 */ NULL, /* 5c72 */ NULL, /* 5c73 */ NULL, /* 5c74 */ NULL, /* 5c75 */ NULL, /* 5c76 */ NULL, /* 5c77 */ NULL, /* 5c78 */ NULL, /* 5c79 */ NULL, /* 5c7a */ NULL, /* 5c7b */ NULL, /* 5c7c */ NULL, /* 5c7d */ NULL, /* 5c7e */ NULL, /* 5c7f */ NULL, /* 5c80 */ NULL, /* 5c81 */ NULL, /* 5c82 */ NULL, /* 5c83 */ NULL, /* 5c84 */ NULL, /* 5c85 */ NULL, /* 5c86 */ NULL, /* 5c87 */ NULL, /* 5c88 */ NULL, /* 5c89 */ NULL, /* 5c8a */ NULL, /* 5c8b */ NULL, /* 5c8c */ NULL, /* 5c8d */ NULL, /* 5c8e */ NULL, /* 5c8f */ NULL, /* 5c90 */ NULL, /* 5c91 */ NULL, /* 5c92 */ NULL, /* 5c93 */ NULL, /* 5c94 */ NULL, /* 5c95 */ NULL, /* 5c96 */ NULL, /* 5c97 */ NULL, /* 5c98 */ NULL, /* 5c99 */ NULL, /* 5c9a */ NULL, /* 5c9b */ NULL, /* 5c9c */ NULL, /* 5c9d */ NULL, /* 5c9e */ NULL, /* 5c9f */ NULL, /* 5ca0 */ NULL, /* 5ca1 */ NULL, /* 5ca2 */ NULL, /* 5ca3 */ NULL, /* 5ca4 */ NULL, /* 5ca5 */ NULL, /* 5ca6 */ NULL, /* 5ca7 */ NULL, /* 5ca8 */ NULL, /* 5ca9 */ NULL, /* 5caa */ NULL, /* 5cab */ NULL, /* 5cac */ NULL, /* 5cad */ NULL, /* 5cae */ NULL, /* 5caf */ NULL, /* 5cb0 */ NULL, /* 5cb1 */ NULL, /* 5cb2 */ NULL, /* 5cb3 */ NULL, /* 5cb4 */ NULL, /* 5cb5 */ NULL, /* 5cb6 */ NULL, /* 5cb7 */ NULL, /* 5cb8 */ NULL, /* 5cb9 */ NULL, /* 5cba */ NULL, /* 5cbb */ NULL, /* 5cbc */ NULL, /* 5cbd */ NULL, /* 5cbe */ NULL, /* 5cbf */ NULL, /* 5cc0 */ NULL, /* 5cc1 */ NULL, /* 5cc2 */ NULL, /* 5cc3 */ NULL, /* 5cc4 */ NULL, /* 5cc5 */ NULL, /* 5cc6 */ NULL, /* 5cc7 */ NULL, /* 5cc8 */ NULL, /* 5cc9 */ NULL, /* 5cca */ NULL, /* 5ccb */ NULL, /* 5ccc */ NULL, /* 5ccd */ NULL, /* 5cce */ NULL, /* 5ccf */ NULL, /* 5cd0 */ NULL, /* 5cd1 */ NULL, /* 5cd2 */ NULL, /* 5cd3 */ NULL, /* 5cd4 */ NULL, /* 5cd5 */ NULL, /* 5cd6 */ NULL, /* 5cd7 */ NULL, /* 5cd8 */ NULL, /* 5cd9 */ NULL, /* 5cda */ NULL, /* 5cdb */ NULL, /* 5cdc */ NULL, /* 5cdd */ NULL, /* 5cde */ NULL, /* 5cdf */ NULL, /* 5ce0 */ NULL, /* 5ce1 */ NULL, /* 5ce2 */ NULL, /* 5ce3 */ NULL, /* 5ce4 */ NULL, /* 5ce5 */ NULL, /* 5ce6 */ NULL, /* 5ce7 */ NULL, /* 5ce8 */ NULL, /* 5ce9 */ NULL, /* 5cea */ NULL, /* 5ceb */ NULL, /* 5cec */ NULL, /* 5ced */ NULL, /* 5cee */ NULL, /* 5cef */ NULL, /* 5cf0 */ NULL, /* 5cf1 */ NULL, /* 5cf2 */ NULL, /* 5cf3 */ NULL, /* 5cf4 */ NULL, /* 5cf5 */ NULL, /* 5cf6 */ NULL, /* 5cf7 */ NULL, /* 5cf8 */ NULL, /* 5cf9 */ NULL, /* 5cfa */ NULL, /* 5cfb */ NULL, /* 5cfc */ NULL, /* 5cfd */ NULL, /* 5cfe */ NULL, /* 5cff */ NULL, /* 5d00 */ NULL, /* 5d01 */ NULL, /* 5d02 */ NULL, /* 5d03 */ NULL, /* 5d04 */ NULL, /* 5d05 */ NULL, /* 5d06 */ NULL, /* 5d07 */ NULL, /* 5d08 */ NULL, /* 5d09 */ NULL, /* 5d0a */ NULL, /* 5d0b */ NULL, /* 5d0c */ NULL, /* 5d0d */ NULL, /* 5d0e */ NULL, /* 5d0f */ NULL, /* 5d10 */ NULL, /* 5d11 */ NULL, /* 5d12 */ NULL, /* 5d13 */ NULL, /* 5d14 */ NULL, /* 5d15 */ NULL, /* 5d16 */ NULL, /* 5d17 */ NULL, /* 5d18 */ NULL, /* 5d19 */ NULL, /* 5d1a */ NULL, /* 5d1b */ NULL, /* 5d1c */ NULL, /* 5d1d */ NULL, /* 5d1e */ NULL, /* 5d1f */ NULL, /* 5d20 */ NULL, /* 5d21 */ NULL, /* 5d22 */ NULL, /* 5d23 */ NULL, /* 5d24 */ NULL, /* 5d25 */ NULL, /* 5d26 */ NULL, /* 5d27 */ NULL, /* 5d28 */ NULL, /* 5d29 */ NULL, /* 5d2a */ NULL, /* 5d2b */ NULL, /* 5d2c */ NULL, /* 5d2d */ NULL, /* 5d2e */ NULL, /* 5d2f */ NULL, /* 5d30 */ NULL, /* 5d31 */ NULL, /* 5d32 */ NULL, /* 5d33 */ NULL, /* 5d34 */ NULL, /* 5d35 */ NULL, /* 5d36 */ NULL, /* 5d37 */ NULL, /* 5d38 */ NULL, /* 5d39 */ NULL, /* 5d3a */ NULL, /* 5d3b */ NULL, /* 5d3c */ NULL, /* 5d3d */ NULL, /* 5d3e */ NULL, /* 5d3f */ NULL, /* 5d40 */ NULL, /* 5d41 */ NULL, /* 5d42 */ NULL, /* 5d43 */ NULL, /* 5d44 */ NULL, /* 5d45 */ NULL, /* 5d46 */ NULL, /* 5d47 */ NULL, /* 5d48 */ NULL, /* 5d49 */ NULL, /* 5d4a */ NULL, /* 5d4b */ NULL, /* 5d4c */ NULL, /* 5d4d */ NULL, /* 5d4e */ NULL, /* 5d4f */ NULL, /* 5d50 */ NULL, /* 5d51 */ NULL, /* 5d52 */ NULL, /* 5d53 */ NULL, /* 5d54 */ NULL, /* 5d55 */ NULL, /* 5d56 */ NULL, /* 5d57 */ NULL, /* 5d58 */ NULL, /* 5d59 */ NULL, /* 5d5a */ NULL, /* 5d5b */ NULL, /* 5d5c */ NULL, /* 5d5d */ NULL, /* 5d5e */ NULL, /* 5d5f */ NULL, /* 5d60 */ NULL, /* 5d61 */ NULL, /* 5d62 */ NULL, /* 5d63 */ NULL, /* 5d64 */ NULL, /* 5d65 */ NULL, /* 5d66 */ NULL, /* 5d67 */ NULL, /* 5d68 */ NULL, /* 5d69 */ NULL, /* 5d6a */ NULL, /* 5d6b */ NULL, /* 5d6c */ NULL, /* 5d6d */ NULL, /* 5d6e */ NULL, /* 5d6f */ NULL, /* 5d70 */ NULL, /* 5d71 */ NULL, /* 5d72 */ NULL, /* 5d73 */ NULL, /* 5d74 */ NULL, /* 5d75 */ NULL, /* 5d76 */ NULL, /* 5d77 */ NULL, /* 5d78 */ NULL, /* 5d79 */ NULL, /* 5d7a */ NULL, /* 5d7b */ NULL, /* 5d7c */ NULL, /* 5d7d */ NULL, /* 5d7e */ NULL, /* 5d7f */ NULL, /* 5d80 */ NULL, /* 5d81 */ NULL, /* 5d82 */ NULL, /* 5d83 */ NULL, /* 5d84 */ NULL, /* 5d85 */ NULL, /* 5d86 */ NULL, /* 5d87 */ NULL, /* 5d88 */ NULL, /* 5d89 */ NULL, /* 5d8a */ NULL, /* 5d8b */ NULL, /* 5d8c */ NULL, /* 5d8d */ NULL, /* 5d8e */ NULL, /* 5d8f */ NULL, /* 5d90 */ NULL, /* 5d91 */ NULL, /* 5d92 */ NULL, /* 5d93 */ NULL, /* 5d94 */ NULL, /* 5d95 */ NULL, /* 5d96 */ NULL, /* 5d97 */ NULL, /* 5d98 */ NULL, /* 5d99 */ NULL, /* 5d9a */ NULL, /* 5d9b */ NULL, /* 5d9c */ NULL, /* 5d9d */ NULL, /* 5d9e */ NULL, /* 5d9f */ NULL, /* 5da0 */ NULL, /* 5da1 */ NULL, /* 5da2 */ NULL, /* 5da3 */ NULL, /* 5da4 */ NULL, /* 5da5 */ NULL, /* 5da6 */ NULL, /* 5da7 */ NULL, /* 5da8 */ NULL, /* 5da9 */ NULL, /* 5daa */ NULL, /* 5dab */ NULL, /* 5dac */ NULL, /* 5dad */ NULL, /* 5dae */ NULL, /* 5daf */ NULL, /* 5db0 */ NULL, /* 5db1 */ NULL, /* 5db2 */ NULL, /* 5db3 */ NULL, /* 5db4 */ NULL, /* 5db5 */ NULL, /* 5db6 */ NULL, /* 5db7 */ NULL, /* 5db8 */ NULL, /* 5db9 */ NULL, /* 5dba */ NULL, /* 5dbb */ NULL, /* 5dbc */ NULL, /* 5dbd */ NULL, /* 5dbe */ NULL, /* 5dbf */ NULL, /* 5dc0 */ NULL, /* 5dc1 */ NULL, /* 5dc2 */ NULL, /* 5dc3 */ NULL, /* 5dc4 */ NULL, /* 5dc5 */ NULL, /* 5dc6 */ NULL, /* 5dc7 */ NULL, /* 5dc8 */ NULL, /* 5dc9 */ NULL, /* 5dca */ NULL, /* 5dcb */ NULL, /* 5dcc */ NULL, /* 5dcd */ NULL, /* 5dce */ NULL, /* 5dcf */ NULL, /* 5dd0 */ NULL, /* 5dd1 */ NULL, /* 5dd2 */ NULL, /* 5dd3 */ NULL, /* 5dd4 */ NULL, /* 5dd5 */ NULL, /* 5dd6 */ NULL, /* 5dd7 */ NULL, /* 5dd8 */ NULL, /* 5dd9 */ NULL, /* 5dda */ NULL, /* 5ddb */ NULL, /* 5ddc */ NULL, /* 5ddd */ NULL, /* 5dde */ NULL, /* 5ddf */ NULL, /* 5de0 */ NULL, /* 5de1 */ NULL, /* 5de2 */ NULL, /* 5de3 */ NULL, /* 5de4 */ NULL, /* 5de5 */ NULL, /* 5de6 */ NULL, /* 5de7 */ NULL, /* 5de8 */ NULL, /* 5de9 */ NULL, /* 5dea */ NULL, /* 5deb */ NULL, /* 5dec */ NULL, /* 5ded */ NULL, /* 5dee */ NULL, /* 5def */ NULL, /* 5df0 */ NULL, /* 5df1 */ NULL, /* 5df2 */ NULL, /* 5df3 */ NULL, /* 5df4 */ NULL, /* 5df5 */ NULL, /* 5df6 */ NULL, /* 5df7 */ NULL, /* 5df8 */ NULL, /* 5df9 */ NULL, /* 5dfa */ NULL, /* 5dfb */ NULL, /* 5dfc */ NULL, /* 5dfd */ NULL, /* 5dfe */ NULL, /* 5dff */ NULL, /* 5e00 */ NULL, /* 5e01 */ NULL, /* 5e02 */ NULL, /* 5e03 */ NULL, /* 5e04 */ NULL, /* 5e05 */ NULL, /* 5e06 */ NULL, /* 5e07 */ NULL, /* 5e08 */ NULL, /* 5e09 */ NULL, /* 5e0a */ NULL, /* 5e0b */ NULL, /* 5e0c */ NULL, /* 5e0d */ NULL, /* 5e0e */ NULL, /* 5e0f */ NULL, /* 5e10 */ NULL, /* 5e11 */ NULL, /* 5e12 */ NULL, /* 5e13 */ NULL, /* 5e14 */ NULL, /* 5e15 */ NULL, /* 5e16 */ NULL, /* 5e17 */ NULL, /* 5e18 */ NULL, /* 5e19 */ NULL, /* 5e1a */ NULL, /* 5e1b */ NULL, /* 5e1c */ NULL, /* 5e1d */ NULL, /* 5e1e */ NULL, /* 5e1f */ NULL, /* 5e20 */ NULL, /* 5e21 */ NULL, /* 5e22 */ NULL, /* 5e23 */ NULL, /* 5e24 */ NULL, /* 5e25 */ NULL, /* 5e26 */ NULL, /* 5e27 */ NULL, /* 5e28 */ NULL, /* 5e29 */ NULL, /* 5e2a */ NULL, /* 5e2b */ NULL, /* 5e2c */ NULL, /* 5e2d */ NULL, /* 5e2e */ NULL, /* 5e2f */ NULL, /* 5e30 */ NULL, /* 5e31 */ NULL, /* 5e32 */ NULL, /* 5e33 */ NULL, /* 5e34 */ NULL, /* 5e35 */ NULL, /* 5e36 */ NULL, /* 5e37 */ NULL, /* 5e38 */ NULL, /* 5e39 */ NULL, /* 5e3a */ NULL, /* 5e3b */ NULL, /* 5e3c */ NULL, /* 5e3d */ NULL, /* 5e3e */ NULL, /* 5e3f */ NULL, /* 5e40 */ NULL, /* 5e41 */ NULL, /* 5e42 */ NULL, /* 5e43 */ NULL, /* 5e44 */ NULL, /* 5e45 */ NULL, /* 5e46 */ NULL, /* 5e47 */ NULL, /* 5e48 */ NULL, /* 5e49 */ NULL, /* 5e4a */ NULL, /* 5e4b */ NULL, /* 5e4c */ NULL, /* 5e4d */ NULL, /* 5e4e */ NULL, /* 5e4f */ NULL, /* 5e50 */ NULL, /* 5e51 */ NULL, /* 5e52 */ NULL, /* 5e53 */ NULL, /* 5e54 */ NULL, /* 5e55 */ NULL, /* 5e56 */ NULL, /* 5e57 */ NULL, /* 5e58 */ NULL, /* 5e59 */ NULL, /* 5e5a */ NULL, /* 5e5b */ NULL, /* 5e5c */ NULL, /* 5e5d */ NULL, /* 5e5e */ NULL, /* 5e5f */ NULL, /* 5e60 */ NULL, /* 5e61 */ NULL, /* 5e62 */ NULL, /* 5e63 */ NULL, /* 5e64 */ NULL, /* 5e65 */ NULL, /* 5e66 */ NULL, /* 5e67 */ NULL, /* 5e68 */ NULL, /* 5e69 */ NULL, /* 5e6a */ NULL, /* 5e6b */ NULL, /* 5e6c */ NULL, /* 5e6d */ NULL, /* 5e6e */ NULL, /* 5e6f */ NULL, /* 5e70 */ NULL, /* 5e71 */ NULL, /* 5e72 */ NULL, /* 5e73 */ NULL, /* 5e74 */ NULL, /* 5e75 */ NULL, /* 5e76 */ NULL, /* 5e77 */ NULL, /* 5e78 */ NULL, /* 5e79 */ NULL, /* 5e7a */ NULL, /* 5e7b */ NULL, /* 5e7c */ NULL, /* 5e7d */ NULL, /* 5e7e */ NULL, /* 5e7f */ NULL, /* 5e80 */ NULL, /* 5e81 */ NULL, /* 5e82 */ NULL, /* 5e83 */ NULL, /* 5e84 */ NULL, /* 5e85 */ NULL, /* 5e86 */ NULL, /* 5e87 */ NULL, /* 5e88 */ NULL, /* 5e89 */ NULL, /* 5e8a */ NULL, /* 5e8b */ NULL, /* 5e8c */ NULL, /* 5e8d */ NULL, /* 5e8e */ NULL, /* 5e8f */ NULL, /* 5e90 */ NULL, /* 5e91 */ NULL, /* 5e92 */ NULL, /* 5e93 */ NULL, /* 5e94 */ NULL, /* 5e95 */ NULL, /* 5e96 */ NULL, /* 5e97 */ NULL, /* 5e98 */ NULL, /* 5e99 */ NULL, /* 5e9a */ NULL, /* 5e9b */ NULL, /* 5e9c */ NULL, /* 5e9d */ NULL, /* 5e9e */ NULL, /* 5e9f */ NULL, /* 5ea0 */ NULL, /* 5ea1 */ NULL, /* 5ea2 */ NULL, /* 5ea3 */ NULL, /* 5ea4 */ NULL, /* 5ea5 */ NULL, /* 5ea6 */ NULL, /* 5ea7 */ NULL, /* 5ea8 */ NULL, /* 5ea9 */ NULL, /* 5eaa */ NULL, /* 5eab */ NULL, /* 5eac */ NULL, /* 5ead */ NULL, /* 5eae */ NULL, /* 5eaf */ NULL, /* 5eb0 */ NULL, /* 5eb1 */ NULL, /* 5eb2 */ NULL, /* 5eb3 */ NULL, /* 5eb4 */ NULL, /* 5eb5 */ NULL, /* 5eb6 */ NULL, /* 5eb7 */ NULL, /* 5eb8 */ NULL, /* 5eb9 */ NULL, /* 5eba */ NULL, /* 5ebb */ NULL, /* 5ebc */ NULL, /* 5ebd */ NULL, /* 5ebe */ NULL, /* 5ebf */ NULL, /* 5ec0 */ NULL, /* 5ec1 */ NULL, /* 5ec2 */ NULL, /* 5ec3 */ NULL, /* 5ec4 */ NULL, /* 5ec5 */ NULL, /* 5ec6 */ NULL, /* 5ec7 */ NULL, /* 5ec8 */ NULL, /* 5ec9 */ NULL, /* 5eca */ NULL, /* 5ecb */ NULL, /* 5ecc */ NULL, /* 5ecd */ NULL, /* 5ece */ NULL, /* 5ecf */ NULL, /* 5ed0 */ NULL, /* 5ed1 */ NULL, /* 5ed2 */ NULL, /* 5ed3 */ NULL, /* 5ed4 */ NULL, /* 5ed5 */ NULL, /* 5ed6 */ NULL, /* 5ed7 */ NULL, /* 5ed8 */ NULL, /* 5ed9 */ NULL, /* 5eda */ NULL, /* 5edb */ NULL, /* 5edc */ NULL, /* 5edd */ NULL, /* 5ede */ NULL, /* 5edf */ NULL, /* 5ee0 */ NULL, /* 5ee1 */ NULL, /* 5ee2 */ NULL, /* 5ee3 */ NULL, /* 5ee4 */ NULL, /* 5ee5 */ NULL, /* 5ee6 */ NULL, /* 5ee7 */ NULL, /* 5ee8 */ NULL, /* 5ee9 */ NULL, /* 5eea */ NULL, /* 5eeb */ NULL, /* 5eec */ NULL, /* 5eed */ NULL, /* 5eee */ NULL, /* 5eef */ NULL, /* 5ef0 */ NULL, /* 5ef1 */ NULL, /* 5ef2 */ NULL, /* 5ef3 */ NULL, /* 5ef4 */ NULL, /* 5ef5 */ NULL, /* 5ef6 */ NULL, /* 5ef7 */ NULL, /* 5ef8 */ NULL, /* 5ef9 */ NULL, /* 5efa */ NULL, /* 5efb */ NULL, /* 5efc */ NULL, /* 5efd */ NULL, /* 5efe */ NULL, /* 5eff */ NULL, /* 5f00 */ NULL, /* 5f01 */ NULL, /* 5f02 */ NULL, /* 5f03 */ NULL, /* 5f04 */ NULL, /* 5f05 */ NULL, /* 5f06 */ NULL, /* 5f07 */ NULL, /* 5f08 */ NULL, /* 5f09 */ NULL, /* 5f0a */ NULL, /* 5f0b */ NULL, /* 5f0c */ NULL, /* 5f0d */ NULL, /* 5f0e */ NULL, /* 5f0f */ NULL, /* 5f10 */ NULL, /* 5f11 */ NULL, /* 5f12 */ NULL, /* 5f13 */ NULL, /* 5f14 */ NULL, /* 5f15 */ NULL, /* 5f16 */ NULL, /* 5f17 */ NULL, /* 5f18 */ NULL, /* 5f19 */ NULL, /* 5f1a */ NULL, /* 5f1b */ NULL, /* 5f1c */ NULL, /* 5f1d */ NULL, /* 5f1e */ NULL, /* 5f1f */ NULL, /* 5f20 */ NULL, /* 5f21 */ NULL, /* 5f22 */ NULL, /* 5f23 */ NULL, /* 5f24 */ NULL, /* 5f25 */ NULL, /* 5f26 */ NULL, /* 5f27 */ NULL, /* 5f28 */ NULL, /* 5f29 */ NULL, /* 5f2a */ NULL, /* 5f2b */ NULL, /* 5f2c */ NULL, /* 5f2d */ NULL, /* 5f2e */ NULL, /* 5f2f */ NULL, /* 5f30 */ NULL, /* 5f31 */ NULL, /* 5f32 */ NULL, /* 5f33 */ NULL, /* 5f34 */ NULL, /* 5f35 */ NULL, /* 5f36 */ NULL, /* 5f37 */ NULL, /* 5f38 */ NULL, /* 5f39 */ NULL, /* 5f3a */ NULL, /* 5f3b */ NULL, /* 5f3c */ NULL, /* 5f3d */ NULL, /* 5f3e */ NULL, /* 5f3f */ NULL, /* 5f40 */ NULL, /* 5f41 */ NULL, /* 5f42 */ NULL, /* 5f43 */ NULL, /* 5f44 */ NULL, /* 5f45 */ NULL, /* 5f46 */ NULL, /* 5f47 */ NULL, /* 5f48 */ NULL, /* 5f49 */ NULL, /* 5f4a */ NULL, /* 5f4b */ NULL, /* 5f4c */ NULL, /* 5f4d */ NULL, /* 5f4e */ NULL, /* 5f4f */ NULL, /* 5f50 */ NULL, /* 5f51 */ NULL, /* 5f52 */ NULL, /* 5f53 */ NULL, /* 5f54 */ NULL, /* 5f55 */ NULL, /* 5f56 */ NULL, /* 5f57 */ NULL, /* 5f58 */ NULL, /* 5f59 */ NULL, /* 5f5a */ NULL, /* 5f5b */ NULL, /* 5f5c */ NULL, /* 5f5d */ NULL, /* 5f5e */ NULL, /* 5f5f */ NULL, /* 5f60 */ NULL, /* 5f61 */ NULL, /* 5f62 */ NULL, /* 5f63 */ NULL, /* 5f64 */ NULL, /* 5f65 */ NULL, /* 5f66 */ NULL, /* 5f67 */ NULL, /* 5f68 */ NULL, /* 5f69 */ NULL, /* 5f6a */ NULL, /* 5f6b */ NULL, /* 5f6c */ NULL, /* 5f6d */ NULL, /* 5f6e */ NULL, /* 5f6f */ NULL, /* 5f70 */ NULL, /* 5f71 */ NULL, /* 5f72 */ NULL, /* 5f73 */ NULL, /* 5f74 */ NULL, /* 5f75 */ NULL, /* 5f76 */ NULL, /* 5f77 */ NULL, /* 5f78 */ NULL, /* 5f79 */ NULL, /* 5f7a */ NULL, /* 5f7b */ NULL, /* 5f7c */ NULL, /* 5f7d */ NULL, /* 5f7e */ NULL, /* 5f7f */ NULL, /* 5f80 */ NULL, /* 5f81 */ NULL, /* 5f82 */ NULL, /* 5f83 */ NULL, /* 5f84 */ NULL, /* 5f85 */ NULL, /* 5f86 */ NULL, /* 5f87 */ NULL, /* 5f88 */ NULL, /* 5f89 */ NULL, /* 5f8a */ NULL, /* 5f8b */ NULL, /* 5f8c */ NULL, /* 5f8d */ NULL, /* 5f8e */ NULL, /* 5f8f */ NULL, /* 5f90 */ NULL, /* 5f91 */ NULL, /* 5f92 */ NULL, /* 5f93 */ NULL, /* 5f94 */ NULL, /* 5f95 */ NULL, /* 5f96 */ NULL, /* 5f97 */ NULL, /* 5f98 */ NULL, /* 5f99 */ NULL, /* 5f9a */ NULL, /* 5f9b */ NULL, /* 5f9c */ NULL, /* 5f9d */ NULL, /* 5f9e */ NULL, /* 5f9f */ NULL, /* 5fa0 */ NULL, /* 5fa1 */ NULL, /* 5fa2 */ NULL, /* 5fa3 */ NULL, /* 5fa4 */ NULL, /* 5fa5 */ NULL, /* 5fa6 */ NULL, /* 5fa7 */ NULL, /* 5fa8 */ NULL, /* 5fa9 */ NULL, /* 5faa */ NULL, /* 5fab */ NULL, /* 5fac */ NULL, /* 5fad */ NULL, /* 5fae */ NULL, /* 5faf */ NULL, /* 5fb0 */ NULL, /* 5fb1 */ NULL, /* 5fb2 */ NULL, /* 5fb3 */ NULL, /* 5fb4 */ NULL, /* 5fb5 */ NULL, /* 5fb6 */ NULL, /* 5fb7 */ NULL, /* 5fb8 */ NULL, /* 5fb9 */ NULL, /* 5fba */ NULL, /* 5fbb */ NULL, /* 5fbc */ NULL, /* 5fbd */ NULL, /* 5fbe */ NULL, /* 5fbf */ NULL, /* 5fc0 */ NULL, /* 5fc1 */ NULL, /* 5fc2 */ NULL, /* 5fc3 */ NULL, /* 5fc4 */ NULL, /* 5fc5 */ NULL, /* 5fc6 */ NULL, /* 5fc7 */ NULL, /* 5fc8 */ NULL, /* 5fc9 */ NULL, /* 5fca */ NULL, /* 5fcb */ NULL, /* 5fcc */ NULL, /* 5fcd */ NULL, /* 5fce */ NULL, /* 5fcf */ NULL, /* 5fd0 */ NULL, /* 5fd1 */ NULL, /* 5fd2 */ NULL, /* 5fd3 */ NULL, /* 5fd4 */ NULL, /* 5fd5 */ NULL, /* 5fd6 */ NULL, /* 5fd7 */ NULL, /* 5fd8 */ NULL, /* 5fd9 */ NULL, /* 5fda */ NULL, /* 5fdb */ NULL, /* 5fdc */ NULL, /* 5fdd */ NULL, /* 5fde */ NULL, /* 5fdf */ NULL, /* 5fe0 */ NULL, /* 5fe1 */ NULL, /* 5fe2 */ NULL, /* 5fe3 */ NULL, /* 5fe4 */ NULL, /* 5fe5 */ NULL, /* 5fe6 */ NULL, /* 5fe7 */ NULL, /* 5fe8 */ NULL, /* 5fe9 */ NULL, /* 5fea */ NULL, /* 5feb */ NULL, /* 5fec */ NULL, /* 5fed */ NULL, /* 5fee */ NULL, /* 5fef */ NULL, /* 5ff0 */ NULL, /* 5ff1 */ NULL, /* 5ff2 */ NULL, /* 5ff3 */ NULL, /* 5ff4 */ NULL, /* 5ff5 */ NULL, /* 5ff6 */ NULL, /* 5ff7 */ NULL, /* 5ff8 */ NULL, /* 5ff9 */ NULL, /* 5ffa */ NULL, /* 5ffb */ NULL, /* 5ffc */ NULL, /* 5ffd */ NULL, /* 5ffe */ NULL, /* 5fff */ NULL, /* 6000 */ NULL, /* 6001 */ NULL, /* 6002 */ NULL, /* 6003 */ NULL, /* 6004 */ NULL, /* 6005 */ NULL, /* 6006 */ NULL, /* 6007 */ NULL, /* 6008 */ NULL, /* 6009 */ NULL, /* 600a */ NULL, /* 600b */ NULL, /* 600c */ NULL, /* 600d */ NULL, /* 600e */ NULL, /* 600f */ NULL, /* 6010 */ NULL, /* 6011 */ NULL, /* 6012 */ NULL, /* 6013 */ NULL, /* 6014 */ NULL, /* 6015 */ NULL, /* 6016 */ NULL, /* 6017 */ NULL, /* 6018 */ NULL, /* 6019 */ NULL, /* 601a */ NULL, /* 601b */ NULL, /* 601c */ NULL, /* 601d */ NULL, /* 601e */ NULL, /* 601f */ NULL, /* 6020 */ NULL, /* 6021 */ NULL, /* 6022 */ NULL, /* 6023 */ NULL, /* 6024 */ NULL, /* 6025 */ NULL, /* 6026 */ NULL, /* 6027 */ NULL, /* 6028 */ NULL, /* 6029 */ NULL, /* 602a */ NULL, /* 602b */ NULL, /* 602c */ NULL, /* 602d */ NULL, /* 602e */ NULL, /* 602f */ NULL, /* 6030 */ NULL, /* 6031 */ NULL, /* 6032 */ NULL, /* 6033 */ NULL, /* 6034 */ NULL, /* 6035 */ NULL, /* 6036 */ NULL, /* 6037 */ NULL, /* 6038 */ NULL, /* 6039 */ NULL, /* 603a */ NULL, /* 603b */ NULL, /* 603c */ NULL, /* 603d */ NULL, /* 603e */ NULL, /* 603f */ NULL, /* 6040 */ NULL, /* 6041 */ NULL, /* 6042 */ NULL, /* 6043 */ NULL, /* 6044 */ NULL, /* 6045 */ NULL, /* 6046 */ NULL, /* 6047 */ NULL, /* 6048 */ NULL, /* 6049 */ NULL, /* 604a */ NULL, /* 604b */ NULL, /* 604c */ NULL, /* 604d */ NULL, /* 604e */ NULL, /* 604f */ NULL, /* 6050 */ NULL, /* 6051 */ NULL, /* 6052 */ NULL, /* 6053 */ NULL, /* 6054 */ NULL, /* 6055 */ NULL, /* 6056 */ NULL, /* 6057 */ NULL, /* 6058 */ NULL, /* 6059 */ NULL, /* 605a */ NULL, /* 605b */ NULL, /* 605c */ NULL, /* 605d */ NULL, /* 605e */ NULL, /* 605f */ NULL, /* 6060 */ NULL, /* 6061 */ NULL, /* 6062 */ NULL, /* 6063 */ NULL, /* 6064 */ NULL, /* 6065 */ NULL, /* 6066 */ NULL, /* 6067 */ NULL, /* 6068 */ NULL, /* 6069 */ NULL, /* 606a */ NULL, /* 606b */ NULL, /* 606c */ NULL, /* 606d */ NULL, /* 606e */ NULL, /* 606f */ NULL, /* 6070 */ NULL, /* 6071 */ NULL, /* 6072 */ NULL, /* 6073 */ NULL, /* 6074 */ NULL, /* 6075 */ NULL, /* 6076 */ NULL, /* 6077 */ NULL, /* 6078 */ NULL, /* 6079 */ NULL, /* 607a */ NULL, /* 607b */ NULL, /* 607c */ NULL, /* 607d */ NULL, /* 607e */ NULL, /* 607f */ NULL, /* 6080 */ NULL, /* 6081 */ NULL, /* 6082 */ NULL, /* 6083 */ NULL, /* 6084 */ NULL, /* 6085 */ NULL, /* 6086 */ NULL, /* 6087 */ NULL, /* 6088 */ NULL, /* 6089 */ NULL, /* 608a */ NULL, /* 608b */ NULL, /* 608c */ NULL, /* 608d */ NULL, /* 608e */ NULL, /* 608f */ NULL, /* 6090 */ NULL, /* 6091 */ NULL, /* 6092 */ NULL, /* 6093 */ NULL, /* 6094 */ NULL, /* 6095 */ NULL, /* 6096 */ NULL, /* 6097 */ NULL, /* 6098 */ NULL, /* 6099 */ NULL, /* 609a */ NULL, /* 609b */ NULL, /* 609c */ NULL, /* 609d */ NULL, /* 609e */ NULL, /* 609f */ NULL, /* 60a0 */ NULL, /* 60a1 */ NULL, /* 60a2 */ NULL, /* 60a3 */ NULL, /* 60a4 */ NULL, /* 60a5 */ NULL, /* 60a6 */ NULL, /* 60a7 */ NULL, /* 60a8 */ NULL, /* 60a9 */ NULL, /* 60aa */ NULL, /* 60ab */ NULL, /* 60ac */ NULL, /* 60ad */ NULL, /* 60ae */ NULL, /* 60af */ NULL, /* 60b0 */ NULL, /* 60b1 */ NULL, /* 60b2 */ NULL, /* 60b3 */ NULL, /* 60b4 */ NULL, /* 60b5 */ NULL, /* 60b6 */ NULL, /* 60b7 */ NULL, /* 60b8 */ NULL, /* 60b9 */ NULL, /* 60ba */ NULL, /* 60bb */ NULL, /* 60bc */ NULL, /* 60bd */ NULL, /* 60be */ NULL, /* 60bf */ NULL, /* 60c0 */ NULL, /* 60c1 */ NULL, /* 60c2 */ NULL, /* 60c3 */ NULL, /* 60c4 */ NULL, /* 60c5 */ NULL, /* 60c6 */ NULL, /* 60c7 */ NULL, /* 60c8 */ NULL, /* 60c9 */ NULL, /* 60ca */ NULL, /* 60cb */ NULL, /* 60cc */ NULL, /* 60cd */ NULL, /* 60ce */ NULL, /* 60cf */ NULL, /* 60d0 */ NULL, /* 60d1 */ NULL, /* 60d2 */ NULL, /* 60d3 */ NULL, /* 60d4 */ NULL, /* 60d5 */ NULL, /* 60d6 */ NULL, /* 60d7 */ NULL, /* 60d8 */ NULL, /* 60d9 */ NULL, /* 60da */ NULL, /* 60db */ NULL, /* 60dc */ NULL, /* 60dd */ NULL, /* 60de */ NULL, /* 60df */ NULL, /* 60e0 */ NULL, /* 60e1 */ NULL, /* 60e2 */ NULL, /* 60e3 */ NULL, /* 60e4 */ NULL, /* 60e5 */ NULL, /* 60e6 */ NULL, /* 60e7 */ NULL, /* 60e8 */ NULL, /* 60e9 */ NULL, /* 60ea */ NULL, /* 60eb */ NULL, /* 60ec */ NULL, /* 60ed */ NULL, /* 60ee */ NULL, /* 60ef */ NULL, /* 60f0 */ NULL, /* 60f1 */ NULL, /* 60f2 */ NULL, /* 60f3 */ NULL, /* 60f4 */ NULL, /* 60f5 */ NULL, /* 60f6 */ NULL, /* 60f7 */ NULL, /* 60f8 */ NULL, /* 60f9 */ NULL, /* 60fa */ NULL, /* 60fb */ NULL, /* 60fc */ NULL, /* 60fd */ NULL, /* 60fe */ NULL, /* 60ff */ NULL, /* 6100 */ NULL, /* 6101 */ NULL, /* 6102 */ NULL, /* 6103 */ NULL, /* 6104 */ NULL, /* 6105 */ NULL, /* 6106 */ NULL, /* 6107 */ NULL, /* 6108 */ NULL, /* 6109 */ NULL, /* 610a */ NULL, /* 610b */ NULL, /* 610c */ NULL, /* 610d */ NULL, /* 610e */ NULL, /* 610f */ NULL, /* 6110 */ NULL, /* 6111 */ NULL, /* 6112 */ NULL, /* 6113 */ NULL, /* 6114 */ NULL, /* 6115 */ NULL, /* 6116 */ NULL, /* 6117 */ NULL, /* 6118 */ NULL, /* 6119 */ NULL, /* 611a */ NULL, /* 611b */ NULL, /* 611c */ NULL, /* 611d */ NULL, /* 611e */ NULL, /* 611f */ NULL, /* 6120 */ NULL, /* 6121 */ NULL, /* 6122 */ NULL, /* 6123 */ NULL, /* 6124 */ NULL, /* 6125 */ NULL, /* 6126 */ NULL, /* 6127 */ NULL, /* 6128 */ NULL, /* 6129 */ NULL, /* 612a */ NULL, /* 612b */ NULL, /* 612c */ NULL, /* 612d */ NULL, /* 612e */ NULL, /* 612f */ NULL, /* 6130 */ NULL, /* 6131 */ NULL, /* 6132 */ NULL, /* 6133 */ NULL, /* 6134 */ NULL, /* 6135 */ NULL, /* 6136 */ NULL, /* 6137 */ NULL, /* 6138 */ NULL, /* 6139 */ NULL, /* 613a */ NULL, /* 613b */ NULL, /* 613c */ NULL, /* 613d */ NULL, /* 613e */ NULL, /* 613f */ NULL, /* 6140 */ NULL, /* 6141 */ NULL, /* 6142 */ NULL, /* 6143 */ NULL, /* 6144 */ NULL, /* 6145 */ NULL, /* 6146 */ NULL, /* 6147 */ NULL, /* 6148 */ NULL, /* 6149 */ NULL, /* 614a */ NULL, /* 614b */ NULL, /* 614c */ NULL, /* 614d */ NULL, /* 614e */ NULL, /* 614f */ NULL, /* 6150 */ NULL, /* 6151 */ NULL, /* 6152 */ NULL, /* 6153 */ NULL, /* 6154 */ NULL, /* 6155 */ NULL, /* 6156 */ NULL, /* 6157 */ NULL, /* 6158 */ NULL, /* 6159 */ NULL, /* 615a */ NULL, /* 615b */ NULL, /* 615c */ NULL, /* 615d */ NULL, /* 615e */ NULL, /* 615f */ NULL, /* 6160 */ NULL, /* 6161 */ NULL, /* 6162 */ NULL, /* 6163 */ NULL, /* 6164 */ NULL, /* 6165 */ NULL, /* 6166 */ NULL, /* 6167 */ NULL, /* 6168 */ NULL, /* 6169 */ NULL, /* 616a */ NULL, /* 616b */ NULL, /* 616c */ NULL, /* 616d */ NULL, /* 616e */ NULL, /* 616f */ NULL, /* 6170 */ NULL, /* 6171 */ NULL, /* 6172 */ NULL, /* 6173 */ NULL, /* 6174 */ NULL, /* 6175 */ NULL, /* 6176 */ NULL, /* 6177 */ NULL, /* 6178 */ NULL, /* 6179 */ NULL, /* 617a */ NULL, /* 617b */ NULL, /* 617c */ NULL, /* 617d */ NULL, /* 617e */ NULL, /* 617f */ NULL, /* 6180 */ NULL, /* 6181 */ NULL, /* 6182 */ NULL, /* 6183 */ NULL, /* 6184 */ NULL, /* 6185 */ NULL, /* 6186 */ NULL, /* 6187 */ NULL, /* 6188 */ NULL, /* 6189 */ NULL, /* 618a */ NULL, /* 618b */ NULL, /* 618c */ NULL, /* 618d */ NULL, /* 618e */ NULL, /* 618f */ NULL, /* 6190 */ NULL, /* 6191 */ NULL, /* 6192 */ NULL, /* 6193 */ NULL, /* 6194 */ NULL, /* 6195 */ NULL, /* 6196 */ NULL, /* 6197 */ NULL, /* 6198 */ NULL, /* 6199 */ NULL, /* 619a */ NULL, /* 619b */ NULL, /* 619c */ NULL, /* 619d */ NULL, /* 619e */ NULL, /* 619f */ NULL, /* 61a0 */ NULL, /* 61a1 */ NULL, /* 61a2 */ NULL, /* 61a3 */ NULL, /* 61a4 */ NULL, /* 61a5 */ NULL, /* 61a6 */ NULL, /* 61a7 */ NULL, /* 61a8 */ NULL, /* 61a9 */ NULL, /* 61aa */ NULL, /* 61ab */ NULL, /* 61ac */ NULL, /* 61ad */ NULL, /* 61ae */ NULL, /* 61af */ NULL, /* 61b0 */ NULL, /* 61b1 */ NULL, /* 61b2 */ NULL, /* 61b3 */ NULL, /* 61b4 */ NULL, /* 61b5 */ NULL, /* 61b6 */ NULL, /* 61b7 */ NULL, /* 61b8 */ NULL, /* 61b9 */ NULL, /* 61ba */ NULL, /* 61bb */ NULL, /* 61bc */ NULL, /* 61bd */ NULL, /* 61be */ NULL, /* 61bf */ NULL, /* 61c0 */ NULL, /* 61c1 */ NULL, /* 61c2 */ NULL, /* 61c3 */ NULL, /* 61c4 */ NULL, /* 61c5 */ NULL, /* 61c6 */ NULL, /* 61c7 */ NULL, /* 61c8 */ NULL, /* 61c9 */ NULL, /* 61ca */ NULL, /* 61cb */ NULL, /* 61cc */ NULL, /* 61cd */ NULL, /* 61ce */ NULL, /* 61cf */ NULL, /* 61d0 */ NULL, /* 61d1 */ NULL, /* 61d2 */ NULL, /* 61d3 */ NULL, /* 61d4 */ NULL, /* 61d5 */ NULL, /* 61d6 */ NULL, /* 61d7 */ NULL, /* 61d8 */ NULL, /* 61d9 */ NULL, /* 61da */ NULL, /* 61db */ NULL, /* 61dc */ NULL, /* 61dd */ NULL, /* 61de */ NULL, /* 61df */ NULL, /* 61e0 */ NULL, /* 61e1 */ NULL, /* 61e2 */ NULL, /* 61e3 */ NULL, /* 61e4 */ NULL, /* 61e5 */ NULL, /* 61e6 */ NULL, /* 61e7 */ NULL, /* 61e8 */ NULL, /* 61e9 */ NULL, /* 61ea */ NULL, /* 61eb */ NULL, /* 61ec */ NULL, /* 61ed */ NULL, /* 61ee */ NULL, /* 61ef */ NULL, /* 61f0 */ NULL, /* 61f1 */ NULL, /* 61f2 */ NULL, /* 61f3 */ NULL, /* 61f4 */ NULL, /* 61f5 */ NULL, /* 61f6 */ NULL, /* 61f7 */ NULL, /* 61f8 */ NULL, /* 61f9 */ NULL, /* 61fa */ NULL, /* 61fb */ NULL, /* 61fc */ NULL, /* 61fd */ NULL, /* 61fe */ NULL, /* 61ff */ NULL, /* 6200 */ NULL, /* 6201 */ NULL, /* 6202 */ NULL, /* 6203 */ NULL, /* 6204 */ NULL, /* 6205 */ NULL, /* 6206 */ NULL, /* 6207 */ NULL, /* 6208 */ NULL, /* 6209 */ NULL, /* 620a */ NULL, /* 620b */ NULL, /* 620c */ NULL, /* 620d */ NULL, /* 620e */ NULL, /* 620f */ NULL, /* 6210 */ NULL, /* 6211 */ NULL, /* 6212 */ NULL, /* 6213 */ NULL, /* 6214 */ NULL, /* 6215 */ NULL, /* 6216 */ NULL, /* 6217 */ NULL, /* 6218 */ NULL, /* 6219 */ NULL, /* 621a */ NULL, /* 621b */ NULL, /* 621c */ NULL, /* 621d */ NULL, /* 621e */ NULL, /* 621f */ NULL, /* 6220 */ NULL, /* 6221 */ NULL, /* 6222 */ NULL, /* 6223 */ NULL, /* 6224 */ NULL, /* 6225 */ NULL, /* 6226 */ NULL, /* 6227 */ NULL, /* 6228 */ NULL, /* 6229 */ NULL, /* 622a */ NULL, /* 622b */ NULL, /* 622c */ NULL, /* 622d */ NULL, /* 622e */ NULL, /* 622f */ NULL, /* 6230 */ NULL, /* 6231 */ NULL, /* 6232 */ NULL, /* 6233 */ NULL, /* 6234 */ NULL, /* 6235 */ NULL, /* 6236 */ NULL, /* 6237 */ NULL, /* 6238 */ NULL, /* 6239 */ NULL, /* 623a */ NULL, /* 623b */ NULL, /* 623c */ NULL, /* 623d */ NULL, /* 623e */ NULL, /* 623f */ NULL, /* 6240 */ NULL, /* 6241 */ NULL, /* 6242 */ NULL, /* 6243 */ NULL, /* 6244 */ NULL, /* 6245 */ NULL, /* 6246 */ NULL, /* 6247 */ NULL, /* 6248 */ NULL, /* 6249 */ NULL, /* 624a */ NULL, /* 624b */ NULL, /* 624c */ NULL, /* 624d */ NULL, /* 624e */ NULL, /* 624f */ NULL, /* 6250 */ NULL, /* 6251 */ NULL, /* 6252 */ NULL, /* 6253 */ NULL, /* 6254 */ NULL, /* 6255 */ NULL, /* 6256 */ NULL, /* 6257 */ NULL, /* 6258 */ NULL, /* 6259 */ NULL, /* 625a */ NULL, /* 625b */ NULL, /* 625c */ NULL, /* 625d */ NULL, /* 625e */ NULL, /* 625f */ NULL, /* 6260 */ NULL, /* 6261 */ NULL, /* 6262 */ NULL, /* 6263 */ NULL, /* 6264 */ NULL, /* 6265 */ NULL, /* 6266 */ NULL, /* 6267 */ NULL, /* 6268 */ NULL, /* 6269 */ NULL, /* 626a */ NULL, /* 626b */ NULL, /* 626c */ NULL, /* 626d */ NULL, /* 626e */ NULL, /* 626f */ NULL, /* 6270 */ NULL, /* 6271 */ NULL, /* 6272 */ NULL, /* 6273 */ NULL, /* 6274 */ NULL, /* 6275 */ NULL, /* 6276 */ NULL, /* 6277 */ NULL, /* 6278 */ NULL, /* 6279 */ NULL, /* 627a */ NULL, /* 627b */ NULL, /* 627c */ NULL, /* 627d */ NULL, /* 627e */ NULL, /* 627f */ NULL, /* 6280 */ NULL, /* 6281 */ NULL, /* 6282 */ NULL, /* 6283 */ NULL, /* 6284 */ NULL, /* 6285 */ NULL, /* 6286 */ NULL, /* 6287 */ NULL, /* 6288 */ NULL, /* 6289 */ NULL, /* 628a */ NULL, /* 628b */ NULL, /* 628c */ NULL, /* 628d */ NULL, /* 628e */ NULL, /* 628f */ NULL, /* 6290 */ NULL, /* 6291 */ NULL, /* 6292 */ NULL, /* 6293 */ NULL, /* 6294 */ NULL, /* 6295 */ NULL, /* 6296 */ NULL, /* 6297 */ NULL, /* 6298 */ NULL, /* 6299 */ NULL, /* 629a */ NULL, /* 629b */ NULL, /* 629c */ NULL, /* 629d */ NULL, /* 629e */ NULL, /* 629f */ NULL, /* 62a0 */ NULL, /* 62a1 */ NULL, /* 62a2 */ NULL, /* 62a3 */ NULL, /* 62a4 */ NULL, /* 62a5 */ NULL, /* 62a6 */ NULL, /* 62a7 */ NULL, /* 62a8 */ NULL, /* 62a9 */ NULL, /* 62aa */ NULL, /* 62ab */ NULL, /* 62ac */ NULL, /* 62ad */ NULL, /* 62ae */ NULL, /* 62af */ NULL, /* 62b0 */ NULL, /* 62b1 */ NULL, /* 62b2 */ NULL, /* 62b3 */ NULL, /* 62b4 */ NULL, /* 62b5 */ NULL, /* 62b6 */ NULL, /* 62b7 */ NULL, /* 62b8 */ NULL, /* 62b9 */ NULL, /* 62ba */ NULL, /* 62bb */ NULL, /* 62bc */ NULL, /* 62bd */ NULL, /* 62be */ NULL, /* 62bf */ NULL, /* 62c0 */ NULL, /* 62c1 */ NULL, /* 62c2 */ NULL, /* 62c3 */ NULL, /* 62c4 */ NULL, /* 62c5 */ NULL, /* 62c6 */ NULL, /* 62c7 */ NULL, /* 62c8 */ NULL, /* 62c9 */ NULL, /* 62ca */ NULL, /* 62cb */ NULL, /* 62cc */ NULL, /* 62cd */ NULL, /* 62ce */ NULL, /* 62cf */ NULL, /* 62d0 */ NULL, /* 62d1 */ NULL, /* 62d2 */ NULL, /* 62d3 */ NULL, /* 62d4 */ NULL, /* 62d5 */ NULL, /* 62d6 */ NULL, /* 62d7 */ NULL, /* 62d8 */ NULL, /* 62d9 */ NULL, /* 62da */ NULL, /* 62db */ NULL, /* 62dc */ NULL, /* 62dd */ NULL, /* 62de */ NULL, /* 62df */ NULL, /* 62e0 */ NULL, /* 62e1 */ NULL, /* 62e2 */ NULL, /* 62e3 */ NULL, /* 62e4 */ NULL, /* 62e5 */ NULL, /* 62e6 */ NULL, /* 62e7 */ NULL, /* 62e8 */ NULL, /* 62e9 */ NULL, /* 62ea */ NULL, /* 62eb */ NULL, /* 62ec */ NULL, /* 62ed */ NULL, /* 62ee */ NULL, /* 62ef */ NULL, /* 62f0 */ NULL, /* 62f1 */ NULL, /* 62f2 */ NULL, /* 62f3 */ NULL, /* 62f4 */ NULL, /* 62f5 */ NULL, /* 62f6 */ NULL, /* 62f7 */ NULL, /* 62f8 */ NULL, /* 62f9 */ NULL, /* 62fa */ NULL, /* 62fb */ NULL, /* 62fc */ NULL, /* 62fd */ NULL, /* 62fe */ NULL, /* 62ff */ NULL, /* 6300 */ NULL, /* 6301 */ NULL, /* 6302 */ NULL, /* 6303 */ NULL, /* 6304 */ NULL, /* 6305 */ NULL, /* 6306 */ NULL, /* 6307 */ NULL, /* 6308 */ NULL, /* 6309 */ NULL, /* 630a */ NULL, /* 630b */ NULL, /* 630c */ NULL, /* 630d */ NULL, /* 630e */ NULL, /* 630f */ NULL, /* 6310 */ NULL, /* 6311 */ NULL, /* 6312 */ NULL, /* 6313 */ NULL, /* 6314 */ NULL, /* 6315 */ NULL, /* 6316 */ NULL, /* 6317 */ NULL, /* 6318 */ NULL, /* 6319 */ NULL, /* 631a */ NULL, /* 631b */ NULL, /* 631c */ NULL, /* 631d */ NULL, /* 631e */ NULL, /* 631f */ NULL, /* 6320 */ NULL, /* 6321 */ NULL, /* 6322 */ NULL, /* 6323 */ NULL, /* 6324 */ NULL, /* 6325 */ NULL, /* 6326 */ NULL, /* 6327 */ NULL, /* 6328 */ NULL, /* 6329 */ NULL, /* 632a */ NULL, /* 632b */ NULL, /* 632c */ NULL, /* 632d */ NULL, /* 632e */ NULL, /* 632f */ NULL, /* 6330 */ NULL, /* 6331 */ NULL, /* 6332 */ NULL, /* 6333 */ NULL, /* 6334 */ NULL, /* 6335 */ NULL, /* 6336 */ NULL, /* 6337 */ NULL, /* 6338 */ NULL, /* 6339 */ NULL, /* 633a */ NULL, /* 633b */ NULL, /* 633c */ NULL, /* 633d */ NULL, /* 633e */ NULL, /* 633f */ NULL, /* 6340 */ NULL, /* 6341 */ NULL, /* 6342 */ NULL, /* 6343 */ NULL, /* 6344 */ NULL, /* 6345 */ NULL, /* 6346 */ NULL, /* 6347 */ NULL, /* 6348 */ NULL, /* 6349 */ NULL, /* 634a */ NULL, /* 634b */ NULL, /* 634c */ NULL, /* 634d */ NULL, /* 634e */ NULL, /* 634f */ NULL, /* 6350 */ NULL, /* 6351 */ NULL, /* 6352 */ NULL, /* 6353 */ NULL, /* 6354 */ NULL, /* 6355 */ NULL, /* 6356 */ NULL, /* 6357 */ NULL, /* 6358 */ NULL, /* 6359 */ NULL, /* 635a */ NULL, /* 635b */ NULL, /* 635c */ NULL, /* 635d */ NULL, /* 635e */ NULL, /* 635f */ NULL, /* 6360 */ NULL, /* 6361 */ NULL, /* 6362 */ NULL, /* 6363 */ NULL, /* 6364 */ NULL, /* 6365 */ NULL, /* 6366 */ NULL, /* 6367 */ NULL, /* 6368 */ NULL, /* 6369 */ NULL, /* 636a */ NULL, /* 636b */ NULL, /* 636c */ NULL, /* 636d */ NULL, /* 636e */ NULL, /* 636f */ NULL, /* 6370 */ NULL, /* 6371 */ NULL, /* 6372 */ NULL, /* 6373 */ NULL, /* 6374 */ NULL, /* 6375 */ NULL, /* 6376 */ NULL, /* 6377 */ NULL, /* 6378 */ NULL, /* 6379 */ NULL, /* 637a */ NULL, /* 637b */ NULL, /* 637c */ NULL, /* 637d */ NULL, /* 637e */ NULL, /* 637f */ NULL, /* 6380 */ NULL, /* 6381 */ NULL, /* 6382 */ NULL, /* 6383 */ NULL, /* 6384 */ NULL, /* 6385 */ NULL, /* 6386 */ NULL, /* 6387 */ NULL, /* 6388 */ NULL, /* 6389 */ NULL, /* 638a */ NULL, /* 638b */ NULL, /* 638c */ NULL, /* 638d */ NULL, /* 638e */ NULL, /* 638f */ NULL, /* 6390 */ NULL, /* 6391 */ NULL, /* 6392 */ NULL, /* 6393 */ NULL, /* 6394 */ NULL, /* 6395 */ NULL, /* 6396 */ NULL, /* 6397 */ NULL, /* 6398 */ NULL, /* 6399 */ NULL, /* 639a */ NULL, /* 639b */ NULL, /* 639c */ NULL, /* 639d */ NULL, /* 639e */ NULL, /* 639f */ NULL, /* 63a0 */ NULL, /* 63a1 */ NULL, /* 63a2 */ NULL, /* 63a3 */ NULL, /* 63a4 */ NULL, /* 63a5 */ NULL, /* 63a6 */ NULL, /* 63a7 */ NULL, /* 63a8 */ NULL, /* 63a9 */ NULL, /* 63aa */ NULL, /* 63ab */ NULL, /* 63ac */ NULL, /* 63ad */ NULL, /* 63ae */ NULL, /* 63af */ NULL, /* 63b0 */ NULL, /* 63b1 */ NULL, /* 63b2 */ NULL, /* 63b3 */ NULL, /* 63b4 */ NULL, /* 63b5 */ NULL, /* 63b6 */ NULL, /* 63b7 */ NULL, /* 63b8 */ NULL, /* 63b9 */ NULL, /* 63ba */ NULL, /* 63bb */ NULL, /* 63bc */ NULL, /* 63bd */ NULL, /* 63be */ NULL, /* 63bf */ NULL, /* 63c0 */ NULL, /* 63c1 */ NULL, /* 63c2 */ NULL, /* 63c3 */ NULL, /* 63c4 */ NULL, /* 63c5 */ NULL, /* 63c6 */ NULL, /* 63c7 */ NULL, /* 63c8 */ NULL, /* 63c9 */ NULL, /* 63ca */ NULL, /* 63cb */ NULL, /* 63cc */ NULL, /* 63cd */ NULL, /* 63ce */ NULL, /* 63cf */ NULL, /* 63d0 */ NULL, /* 63d1 */ NULL, /* 63d2 */ NULL, /* 63d3 */ NULL, /* 63d4 */ NULL, /* 63d5 */ NULL, /* 63d6 */ NULL, /* 63d7 */ NULL, /* 63d8 */ NULL, /* 63d9 */ NULL, /* 63da */ NULL, /* 63db */ NULL, /* 63dc */ NULL, /* 63dd */ NULL, /* 63de */ NULL, /* 63df */ NULL, /* 63e0 */ NULL, /* 63e1 */ NULL, /* 63e2 */ NULL, /* 63e3 */ NULL, /* 63e4 */ NULL, /* 63e5 */ NULL, /* 63e6 */ NULL, /* 63e7 */ NULL, /* 63e8 */ NULL, /* 63e9 */ NULL, /* 63ea */ NULL, /* 63eb */ NULL, /* 63ec */ NULL, /* 63ed */ NULL, /* 63ee */ NULL, /* 63ef */ NULL, /* 63f0 */ NULL, /* 63f1 */ NULL, /* 63f2 */ NULL, /* 63f3 */ NULL, /* 63f4 */ NULL, /* 63f5 */ NULL, /* 63f6 */ NULL, /* 63f7 */ NULL, /* 63f8 */ NULL, /* 63f9 */ NULL, /* 63fa */ NULL, /* 63fb */ NULL, /* 63fc */ NULL, /* 63fd */ NULL, /* 63fe */ NULL, /* 63ff */ NULL, /* 6400 */ NULL, /* 6401 */ NULL, /* 6402 */ NULL, /* 6403 */ NULL, /* 6404 */ NULL, /* 6405 */ NULL, /* 6406 */ NULL, /* 6407 */ NULL, /* 6408 */ NULL, /* 6409 */ NULL, /* 640a */ NULL, /* 640b */ NULL, /* 640c */ NULL, /* 640d */ NULL, /* 640e */ NULL, /* 640f */ NULL, /* 6410 */ NULL, /* 6411 */ NULL, /* 6412 */ NULL, /* 6413 */ NULL, /* 6414 */ NULL, /* 6415 */ NULL, /* 6416 */ NULL, /* 6417 */ NULL, /* 6418 */ NULL, /* 6419 */ NULL, /* 641a */ NULL, /* 641b */ NULL, /* 641c */ NULL, /* 641d */ NULL, /* 641e */ NULL, /* 641f */ NULL, /* 6420 */ NULL, /* 6421 */ NULL, /* 6422 */ NULL, /* 6423 */ NULL, /* 6424 */ NULL, /* 6425 */ NULL, /* 6426 */ NULL, /* 6427 */ NULL, /* 6428 */ NULL, /* 6429 */ NULL, /* 642a */ NULL, /* 642b */ NULL, /* 642c */ NULL, /* 642d */ NULL, /* 642e */ NULL, /* 642f */ NULL, /* 6430 */ NULL, /* 6431 */ NULL, /* 6432 */ NULL, /* 6433 */ NULL, /* 6434 */ NULL, /* 6435 */ NULL, /* 6436 */ NULL, /* 6437 */ NULL, /* 6438 */ NULL, /* 6439 */ NULL, /* 643a */ NULL, /* 643b */ NULL, /* 643c */ NULL, /* 643d */ NULL, /* 643e */ NULL, /* 643f */ NULL, /* 6440 */ NULL, /* 6441 */ NULL, /* 6442 */ NULL, /* 6443 */ NULL, /* 6444 */ NULL, /* 6445 */ NULL, /* 6446 */ NULL, /* 6447 */ NULL, /* 6448 */ NULL, /* 6449 */ NULL, /* 644a */ NULL, /* 644b */ NULL, /* 644c */ NULL, /* 644d */ NULL, /* 644e */ NULL, /* 644f */ NULL, /* 6450 */ NULL, /* 6451 */ NULL, /* 6452 */ NULL, /* 6453 */ NULL, /* 6454 */ NULL, /* 6455 */ NULL, /* 6456 */ NULL, /* 6457 */ NULL, /* 6458 */ NULL, /* 6459 */ NULL, /* 645a */ NULL, /* 645b */ NULL, /* 645c */ NULL, /* 645d */ NULL, /* 645e */ NULL, /* 645f */ NULL, /* 6460 */ NULL, /* 6461 */ NULL, /* 6462 */ NULL, /* 6463 */ NULL, /* 6464 */ NULL, /* 6465 */ NULL, /* 6466 */ NULL, /* 6467 */ NULL, /* 6468 */ NULL, /* 6469 */ NULL, /* 646a */ NULL, /* 646b */ NULL, /* 646c */ NULL, /* 646d */ NULL, /* 646e */ NULL, /* 646f */ NULL, /* 6470 */ NULL, /* 6471 */ NULL, /* 6472 */ NULL, /* 6473 */ NULL, /* 6474 */ NULL, /* 6475 */ NULL, /* 6476 */ NULL, /* 6477 */ NULL, /* 6478 */ NULL, /* 6479 */ NULL, /* 647a */ NULL, /* 647b */ NULL, /* 647c */ NULL, /* 647d */ NULL, /* 647e */ NULL, /* 647f */ NULL, /* 6480 */ NULL, /* 6481 */ NULL, /* 6482 */ NULL, /* 6483 */ NULL, /* 6484 */ NULL, /* 6485 */ NULL, /* 6486 */ NULL, /* 6487 */ NULL, /* 6488 */ NULL, /* 6489 */ NULL, /* 648a */ NULL, /* 648b */ NULL, /* 648c */ NULL, /* 648d */ NULL, /* 648e */ NULL, /* 648f */ NULL, /* 6490 */ NULL, /* 6491 */ NULL, /* 6492 */ NULL, /* 6493 */ NULL, /* 6494 */ NULL, /* 6495 */ NULL, /* 6496 */ NULL, /* 6497 */ NULL, /* 6498 */ NULL, /* 6499 */ NULL, /* 649a */ NULL, /* 649b */ NULL, /* 649c */ NULL, /* 649d */ NULL, /* 649e */ NULL, /* 649f */ NULL, /* 64a0 */ NULL, /* 64a1 */ NULL, /* 64a2 */ NULL, /* 64a3 */ NULL, /* 64a4 */ NULL, /* 64a5 */ NULL, /* 64a6 */ NULL, /* 64a7 */ NULL, /* 64a8 */ NULL, /* 64a9 */ NULL, /* 64aa */ NULL, /* 64ab */ NULL, /* 64ac */ NULL, /* 64ad */ NULL, /* 64ae */ NULL, /* 64af */ NULL, /* 64b0 */ NULL, /* 64b1 */ NULL, /* 64b2 */ NULL, /* 64b3 */ NULL, /* 64b4 */ NULL, /* 64b5 */ NULL, /* 64b6 */ NULL, /* 64b7 */ NULL, /* 64b8 */ NULL, /* 64b9 */ NULL, /* 64ba */ NULL, /* 64bb */ NULL, /* 64bc */ NULL, /* 64bd */ NULL, /* 64be */ NULL, /* 64bf */ NULL, /* 64c0 */ NULL, /* 64c1 */ NULL, /* 64c2 */ NULL, /* 64c3 */ NULL, /* 64c4 */ NULL, /* 64c5 */ NULL, /* 64c6 */ NULL, /* 64c7 */ NULL, /* 64c8 */ NULL, /* 64c9 */ NULL, /* 64ca */ NULL, /* 64cb */ NULL, /* 64cc */ NULL, /* 64cd */ NULL, /* 64ce */ NULL, /* 64cf */ NULL, /* 64d0 */ NULL, /* 64d1 */ NULL, /* 64d2 */ NULL, /* 64d3 */ NULL, /* 64d4 */ NULL, /* 64d5 */ NULL, /* 64d6 */ NULL, /* 64d7 */ NULL, /* 64d8 */ NULL, /* 64d9 */ NULL, /* 64da */ NULL, /* 64db */ NULL, /* 64dc */ NULL, /* 64dd */ NULL, /* 64de */ NULL, /* 64df */ NULL, /* 64e0 */ NULL, /* 64e1 */ NULL, /* 64e2 */ NULL, /* 64e3 */ NULL, /* 64e4 */ NULL, /* 64e5 */ NULL, /* 64e6 */ NULL, /* 64e7 */ NULL, /* 64e8 */ NULL, /* 64e9 */ NULL, /* 64ea */ NULL, /* 64eb */ NULL, /* 64ec */ NULL, /* 64ed */ NULL, /* 64ee */ NULL, /* 64ef */ NULL, /* 64f0 */ NULL, /* 64f1 */ NULL, /* 64f2 */ NULL, /* 64f3 */ NULL, /* 64f4 */ NULL, /* 64f5 */ NULL, /* 64f6 */ NULL, /* 64f7 */ NULL, /* 64f8 */ NULL, /* 64f9 */ NULL, /* 64fa */ NULL, /* 64fb */ NULL, /* 64fc */ NULL, /* 64fd */ NULL, /* 64fe */ NULL, /* 64ff */ NULL, /* 6500 */ NULL, /* 6501 */ NULL, /* 6502 */ NULL, /* 6503 */ NULL, /* 6504 */ NULL, /* 6505 */ NULL, /* 6506 */ NULL, /* 6507 */ NULL, /* 6508 */ NULL, /* 6509 */ NULL, /* 650a */ NULL, /* 650b */ NULL, /* 650c */ NULL, /* 650d */ NULL, /* 650e */ NULL, /* 650f */ NULL, /* 6510 */ NULL, /* 6511 */ NULL, /* 6512 */ NULL, /* 6513 */ NULL, /* 6514 */ NULL, /* 6515 */ NULL, /* 6516 */ NULL, /* 6517 */ NULL, /* 6518 */ NULL, /* 6519 */ NULL, /* 651a */ NULL, /* 651b */ NULL, /* 651c */ NULL, /* 651d */ NULL, /* 651e */ NULL, /* 651f */ NULL, /* 6520 */ NULL, /* 6521 */ NULL, /* 6522 */ NULL, /* 6523 */ NULL, /* 6524 */ NULL, /* 6525 */ NULL, /* 6526 */ NULL, /* 6527 */ NULL, /* 6528 */ NULL, /* 6529 */ NULL, /* 652a */ NULL, /* 652b */ NULL, /* 652c */ NULL, /* 652d */ NULL, /* 652e */ NULL, /* 652f */ NULL, /* 6530 */ NULL, /* 6531 */ NULL, /* 6532 */ NULL, /* 6533 */ NULL, /* 6534 */ NULL, /* 6535 */ NULL, /* 6536 */ NULL, /* 6537 */ NULL, /* 6538 */ NULL, /* 6539 */ NULL, /* 653a */ NULL, /* 653b */ NULL, /* 653c */ NULL, /* 653d */ NULL, /* 653e */ NULL, /* 653f */ NULL, /* 6540 */ NULL, /* 6541 */ NULL, /* 6542 */ NULL, /* 6543 */ NULL, /* 6544 */ NULL, /* 6545 */ NULL, /* 6546 */ NULL, /* 6547 */ NULL, /* 6548 */ NULL, /* 6549 */ NULL, /* 654a */ NULL, /* 654b */ NULL, /* 654c */ NULL, /* 654d */ NULL, /* 654e */ NULL, /* 654f */ NULL, /* 6550 */ NULL, /* 6551 */ NULL, /* 6552 */ NULL, /* 6553 */ NULL, /* 6554 */ NULL, /* 6555 */ NULL, /* 6556 */ NULL, /* 6557 */ NULL, /* 6558 */ NULL, /* 6559 */ NULL, /* 655a */ NULL, /* 655b */ NULL, /* 655c */ NULL, /* 655d */ NULL, /* 655e */ NULL, /* 655f */ NULL, /* 6560 */ NULL, /* 6561 */ NULL, /* 6562 */ NULL, /* 6563 */ NULL, /* 6564 */ NULL, /* 6565 */ NULL, /* 6566 */ NULL, /* 6567 */ NULL, /* 6568 */ NULL, /* 6569 */ NULL, /* 656a */ NULL, /* 656b */ NULL, /* 656c */ NULL, /* 656d */ NULL, /* 656e */ NULL, /* 656f */ NULL, /* 6570 */ NULL, /* 6571 */ NULL, /* 6572 */ NULL, /* 6573 */ NULL, /* 6574 */ NULL, /* 6575 */ NULL, /* 6576 */ NULL, /* 6577 */ NULL, /* 6578 */ NULL, /* 6579 */ NULL, /* 657a */ NULL, /* 657b */ NULL, /* 657c */ NULL, /* 657d */ NULL, /* 657e */ NULL, /* 657f */ NULL, /* 6580 */ NULL, /* 6581 */ NULL, /* 6582 */ NULL, /* 6583 */ NULL, /* 6584 */ NULL, /* 6585 */ NULL, /* 6586 */ NULL, /* 6587 */ NULL, /* 6588 */ NULL, /* 6589 */ NULL, /* 658a */ NULL, /* 658b */ NULL, /* 658c */ NULL, /* 658d */ NULL, /* 658e */ NULL, /* 658f */ NULL, /* 6590 */ NULL, /* 6591 */ NULL, /* 6592 */ NULL, /* 6593 */ NULL, /* 6594 */ NULL, /* 6595 */ NULL, /* 6596 */ NULL, /* 6597 */ NULL, /* 6598 */ NULL, /* 6599 */ NULL, /* 659a */ NULL, /* 659b */ NULL, /* 659c */ NULL, /* 659d */ NULL, /* 659e */ NULL, /* 659f */ NULL, /* 65a0 */ NULL, /* 65a1 */ NULL, /* 65a2 */ NULL, /* 65a3 */ NULL, /* 65a4 */ NULL, /* 65a5 */ NULL, /* 65a6 */ NULL, /* 65a7 */ NULL, /* 65a8 */ NULL, /* 65a9 */ NULL, /* 65aa */ NULL, /* 65ab */ NULL, /* 65ac */ NULL, /* 65ad */ NULL, /* 65ae */ NULL, /* 65af */ NULL, /* 65b0 */ NULL, /* 65b1 */ NULL, /* 65b2 */ NULL, /* 65b3 */ NULL, /* 65b4 */ NULL, /* 65b5 */ NULL, /* 65b6 */ NULL, /* 65b7 */ NULL, /* 65b8 */ NULL, /* 65b9 */ NULL, /* 65ba */ NULL, /* 65bb */ NULL, /* 65bc */ NULL, /* 65bd */ NULL, /* 65be */ NULL, /* 65bf */ NULL, /* 65c0 */ NULL, /* 65c1 */ NULL, /* 65c2 */ NULL, /* 65c3 */ NULL, /* 65c4 */ NULL, /* 65c5 */ NULL, /* 65c6 */ NULL, /* 65c7 */ NULL, /* 65c8 */ NULL, /* 65c9 */ NULL, /* 65ca */ NULL, /* 65cb */ NULL, /* 65cc */ NULL, /* 65cd */ NULL, /* 65ce */ NULL, /* 65cf */ NULL, /* 65d0 */ NULL, /* 65d1 */ NULL, /* 65d2 */ NULL, /* 65d3 */ NULL, /* 65d4 */ NULL, /* 65d5 */ NULL, /* 65d6 */ NULL, /* 65d7 */ NULL, /* 65d8 */ NULL, /* 65d9 */ NULL, /* 65da */ NULL, /* 65db */ NULL, /* 65dc */ NULL, /* 65dd */ NULL, /* 65de */ NULL, /* 65df */ NULL, /* 65e0 */ NULL, /* 65e1 */ NULL, /* 65e2 */ NULL, /* 65e3 */ NULL, /* 65e4 */ NULL, /* 65e5 */ NULL, /* 65e6 */ NULL, /* 65e7 */ NULL, /* 65e8 */ NULL, /* 65e9 */ NULL, /* 65ea */ NULL, /* 65eb */ NULL, /* 65ec */ NULL, /* 65ed */ NULL, /* 65ee */ NULL, /* 65ef */ NULL, /* 65f0 */ NULL, /* 65f1 */ NULL, /* 65f2 */ NULL, /* 65f3 */ NULL, /* 65f4 */ NULL, /* 65f5 */ NULL, /* 65f6 */ NULL, /* 65f7 */ NULL, /* 65f8 */ NULL, /* 65f9 */ NULL, /* 65fa */ NULL, /* 65fb */ NULL, /* 65fc */ NULL, /* 65fd */ NULL, /* 65fe */ NULL, /* 65ff */ NULL, /* 6600 */ NULL, /* 6601 */ NULL, /* 6602 */ NULL, /* 6603 */ NULL, /* 6604 */ NULL, /* 6605 */ NULL, /* 6606 */ NULL, /* 6607 */ NULL, /* 6608 */ NULL, /* 6609 */ NULL, /* 660a */ NULL, /* 660b */ NULL, /* 660c */ NULL, /* 660d */ NULL, /* 660e */ NULL, /* 660f */ NULL, /* 6610 */ NULL, /* 6611 */ NULL, /* 6612 */ NULL, /* 6613 */ NULL, /* 6614 */ NULL, /* 6615 */ NULL, /* 6616 */ NULL, /* 6617 */ NULL, /* 6618 */ NULL, /* 6619 */ NULL, /* 661a */ NULL, /* 661b */ NULL, /* 661c */ NULL, /* 661d */ NULL, /* 661e */ NULL, /* 661f */ NULL, /* 6620 */ NULL, /* 6621 */ NULL, /* 6622 */ NULL, /* 6623 */ NULL, /* 6624 */ NULL, /* 6625 */ NULL, /* 6626 */ NULL, /* 6627 */ NULL, /* 6628 */ NULL, /* 6629 */ NULL, /* 662a */ NULL, /* 662b */ NULL, /* 662c */ NULL, /* 662d */ NULL, /* 662e */ NULL, /* 662f */ NULL, /* 6630 */ NULL, /* 6631 */ NULL, /* 6632 */ NULL, /* 6633 */ NULL, /* 6634 */ NULL, /* 6635 */ NULL, /* 6636 */ NULL, /* 6637 */ NULL, /* 6638 */ NULL, /* 6639 */ NULL, /* 663a */ NULL, /* 663b */ NULL, /* 663c */ NULL, /* 663d */ NULL, /* 663e */ NULL, /* 663f */ NULL, /* 6640 */ NULL, /* 6641 */ NULL, /* 6642 */ NULL, /* 6643 */ NULL, /* 6644 */ NULL, /* 6645 */ NULL, /* 6646 */ NULL, /* 6647 */ NULL, /* 6648 */ NULL, /* 6649 */ NULL, /* 664a */ NULL, /* 664b */ NULL, /* 664c */ NULL, /* 664d */ NULL, /* 664e */ NULL, /* 664f */ NULL, /* 6650 */ NULL, /* 6651 */ NULL, /* 6652 */ NULL, /* 6653 */ NULL, /* 6654 */ NULL, /* 6655 */ NULL, /* 6656 */ NULL, /* 6657 */ NULL, /* 6658 */ NULL, /* 6659 */ NULL, /* 665a */ NULL, /* 665b */ NULL, /* 665c */ NULL, /* 665d */ NULL, /* 665e */ NULL, /* 665f */ NULL, /* 6660 */ NULL, /* 6661 */ NULL, /* 6662 */ NULL, /* 6663 */ NULL, /* 6664 */ NULL, /* 6665 */ NULL, /* 6666 */ NULL, /* 6667 */ NULL, /* 6668 */ NULL, /* 6669 */ NULL, /* 666a */ NULL, /* 666b */ NULL, /* 666c */ NULL, /* 666d */ NULL, /* 666e */ NULL, /* 666f */ NULL, /* 6670 */ NULL, /* 6671 */ NULL, /* 6672 */ NULL, /* 6673 */ NULL, /* 6674 */ NULL, /* 6675 */ NULL, /* 6676 */ NULL, /* 6677 */ NULL, /* 6678 */ NULL, /* 6679 */ NULL, /* 667a */ NULL, /* 667b */ NULL, /* 667c */ NULL, /* 667d */ NULL, /* 667e */ NULL, /* 667f */ NULL, /* 6680 */ NULL, /* 6681 */ NULL, /* 6682 */ NULL, /* 6683 */ NULL, /* 6684 */ NULL, /* 6685 */ NULL, /* 6686 */ NULL, /* 6687 */ NULL, /* 6688 */ NULL, /* 6689 */ NULL, /* 668a */ NULL, /* 668b */ NULL, /* 668c */ NULL, /* 668d */ NULL, /* 668e */ NULL, /* 668f */ NULL, /* 6690 */ NULL, /* 6691 */ NULL, /* 6692 */ NULL, /* 6693 */ NULL, /* 6694 */ NULL, /* 6695 */ NULL, /* 6696 */ NULL, /* 6697 */ NULL, /* 6698 */ NULL, /* 6699 */ NULL, /* 669a */ NULL, /* 669b */ NULL, /* 669c */ NULL, /* 669d */ NULL, /* 669e */ NULL, /* 669f */ NULL, /* 66a0 */ NULL, /* 66a1 */ NULL, /* 66a2 */ NULL, /* 66a3 */ NULL, /* 66a4 */ NULL, /* 66a5 */ NULL, /* 66a6 */ NULL, /* 66a7 */ NULL, /* 66a8 */ NULL, /* 66a9 */ NULL, /* 66aa */ NULL, /* 66ab */ NULL, /* 66ac */ NULL, /* 66ad */ NULL, /* 66ae */ NULL, /* 66af */ NULL, /* 66b0 */ NULL, /* 66b1 */ NULL, /* 66b2 */ NULL, /* 66b3 */ NULL, /* 66b4 */ NULL, /* 66b5 */ NULL, /* 66b6 */ NULL, /* 66b7 */ NULL, /* 66b8 */ NULL, /* 66b9 */ NULL, /* 66ba */ NULL, /* 66bb */ NULL, /* 66bc */ NULL, /* 66bd */ NULL, /* 66be */ NULL, /* 66bf */ NULL, /* 66c0 */ NULL, /* 66c1 */ NULL, /* 66c2 */ NULL, /* 66c3 */ NULL, /* 66c4 */ NULL, /* 66c5 */ NULL, /* 66c6 */ NULL, /* 66c7 */ NULL, /* 66c8 */ NULL, /* 66c9 */ NULL, /* 66ca */ NULL, /* 66cb */ NULL, /* 66cc */ NULL, /* 66cd */ NULL, /* 66ce */ NULL, /* 66cf */ NULL, /* 66d0 */ NULL, /* 66d1 */ NULL, /* 66d2 */ NULL, /* 66d3 */ NULL, /* 66d4 */ NULL, /* 66d5 */ NULL, /* 66d6 */ NULL, /* 66d7 */ NULL, /* 66d8 */ NULL, /* 66d9 */ NULL, /* 66da */ NULL, /* 66db */ NULL, /* 66dc */ NULL, /* 66dd */ NULL, /* 66de */ NULL, /* 66df */ NULL, /* 66e0 */ NULL, /* 66e1 */ NULL, /* 66e2 */ NULL, /* 66e3 */ NULL, /* 66e4 */ NULL, /* 66e5 */ NULL, /* 66e6 */ NULL, /* 66e7 */ NULL, /* 66e8 */ NULL, /* 66e9 */ NULL, /* 66ea */ NULL, /* 66eb */ NULL, /* 66ec */ NULL, /* 66ed */ NULL, /* 66ee */ NULL, /* 66ef */ NULL, /* 66f0 */ NULL, /* 66f1 */ NULL, /* 66f2 */ NULL, /* 66f3 */ NULL, /* 66f4 */ NULL, /* 66f5 */ NULL, /* 66f6 */ NULL, /* 66f7 */ NULL, /* 66f8 */ NULL, /* 66f9 */ NULL, /* 66fa */ NULL, /* 66fb */ NULL, /* 66fc */ NULL, /* 66fd */ NULL, /* 66fe */ NULL, /* 66ff */ NULL, /* 6700 */ NULL, /* 6701 */ NULL, /* 6702 */ NULL, /* 6703 */ NULL, /* 6704 */ NULL, /* 6705 */ NULL, /* 6706 */ NULL, /* 6707 */ NULL, /* 6708 */ NULL, /* 6709 */ NULL, /* 670a */ NULL, /* 670b */ NULL, /* 670c */ NULL, /* 670d */ NULL, /* 670e */ NULL, /* 670f */ NULL, /* 6710 */ NULL, /* 6711 */ NULL, /* 6712 */ NULL, /* 6713 */ NULL, /* 6714 */ NULL, /* 6715 */ NULL, /* 6716 */ NULL, /* 6717 */ NULL, /* 6718 */ NULL, /* 6719 */ NULL, /* 671a */ NULL, /* 671b */ NULL, /* 671c */ NULL, /* 671d */ NULL, /* 671e */ NULL, /* 671f */ NULL, /* 6720 */ NULL, /* 6721 */ NULL, /* 6722 */ NULL, /* 6723 */ NULL, /* 6724 */ NULL, /* 6725 */ NULL, /* 6726 */ NULL, /* 6727 */ NULL, /* 6728 */ NULL, /* 6729 */ NULL, /* 672a */ NULL, /* 672b */ NULL, /* 672c */ NULL, /* 672d */ NULL, /* 672e */ NULL, /* 672f */ NULL, /* 6730 */ NULL, /* 6731 */ NULL, /* 6732 */ NULL, /* 6733 */ NULL, /* 6734 */ NULL, /* 6735 */ NULL, /* 6736 */ NULL, /* 6737 */ NULL, /* 6738 */ NULL, /* 6739 */ NULL, /* 673a */ NULL, /* 673b */ NULL, /* 673c */ NULL, /* 673d */ NULL, /* 673e */ NULL, /* 673f */ NULL, /* 6740 */ NULL, /* 6741 */ NULL, /* 6742 */ NULL, /* 6743 */ NULL, /* 6744 */ NULL, /* 6745 */ NULL, /* 6746 */ NULL, /* 6747 */ NULL, /* 6748 */ NULL, /* 6749 */ NULL, /* 674a */ NULL, /* 674b */ NULL, /* 674c */ NULL, /* 674d */ NULL, /* 674e */ NULL, /* 674f */ NULL, /* 6750 */ NULL, /* 6751 */ NULL, /* 6752 */ NULL, /* 6753 */ NULL, /* 6754 */ NULL, /* 6755 */ NULL, /* 6756 */ NULL, /* 6757 */ NULL, /* 6758 */ NULL, /* 6759 */ NULL, /* 675a */ NULL, /* 675b */ NULL, /* 675c */ NULL, /* 675d */ NULL, /* 675e */ NULL, /* 675f */ NULL, /* 6760 */ NULL, /* 6761 */ NULL, /* 6762 */ NULL, /* 6763 */ NULL, /* 6764 */ NULL, /* 6765 */ NULL, /* 6766 */ NULL, /* 6767 */ NULL, /* 6768 */ NULL, /* 6769 */ NULL, /* 676a */ NULL, /* 676b */ NULL, /* 676c */ NULL, /* 676d */ NULL, /* 676e */ NULL, /* 676f */ NULL, /* 6770 */ NULL, /* 6771 */ NULL, /* 6772 */ NULL, /* 6773 */ NULL, /* 6774 */ NULL, /* 6775 */ NULL, /* 6776 */ NULL, /* 6777 */ NULL, /* 6778 */ NULL, /* 6779 */ NULL, /* 677a */ NULL, /* 677b */ NULL, /* 677c */ NULL, /* 677d */ NULL, /* 677e */ NULL, /* 677f */ NULL, /* 6780 */ NULL, /* 6781 */ NULL, /* 6782 */ NULL, /* 6783 */ NULL, /* 6784 */ NULL, /* 6785 */ NULL, /* 6786 */ NULL, /* 6787 */ NULL, /* 6788 */ NULL, /* 6789 */ NULL, /* 678a */ NULL, /* 678b */ NULL, /* 678c */ NULL, /* 678d */ NULL, /* 678e */ NULL, /* 678f */ NULL, /* 6790 */ NULL, /* 6791 */ NULL, /* 6792 */ NULL, /* 6793 */ NULL, /* 6794 */ NULL, /* 6795 */ NULL, /* 6796 */ NULL, /* 6797 */ NULL, /* 6798 */ NULL, /* 6799 */ NULL, /* 679a */ NULL, /* 679b */ NULL, /* 679c */ NULL, /* 679d */ NULL, /* 679e */ NULL, /* 679f */ NULL, /* 67a0 */ NULL, /* 67a1 */ NULL, /* 67a2 */ NULL, /* 67a3 */ NULL, /* 67a4 */ NULL, /* 67a5 */ NULL, /* 67a6 */ NULL, /* 67a7 */ NULL, /* 67a8 */ NULL, /* 67a9 */ NULL, /* 67aa */ NULL, /* 67ab */ NULL, /* 67ac */ NULL, /* 67ad */ NULL, /* 67ae */ NULL, /* 67af */ NULL, /* 67b0 */ NULL, /* 67b1 */ NULL, /* 67b2 */ NULL, /* 67b3 */ NULL, /* 67b4 */ NULL, /* 67b5 */ NULL, /* 67b6 */ NULL, /* 67b7 */ NULL, /* 67b8 */ NULL, /* 67b9 */ NULL, /* 67ba */ NULL, /* 67bb */ NULL, /* 67bc */ NULL, /* 67bd */ NULL, /* 67be */ NULL, /* 67bf */ NULL, /* 67c0 */ NULL, /* 67c1 */ NULL, /* 67c2 */ NULL, /* 67c3 */ NULL, /* 67c4 */ NULL, /* 67c5 */ NULL, /* 67c6 */ NULL, /* 67c7 */ NULL, /* 67c8 */ NULL, /* 67c9 */ NULL, /* 67ca */ NULL, /* 67cb */ NULL, /* 67cc */ NULL, /* 67cd */ NULL, /* 67ce */ NULL, /* 67cf */ NULL, /* 67d0 */ NULL, /* 67d1 */ NULL, /* 67d2 */ NULL, /* 67d3 */ NULL, /* 67d4 */ NULL, /* 67d5 */ NULL, /* 67d6 */ NULL, /* 67d7 */ NULL, /* 67d8 */ NULL, /* 67d9 */ NULL, /* 67da */ NULL, /* 67db */ NULL, /* 67dc */ NULL, /* 67dd */ NULL, /* 67de */ NULL, /* 67df */ NULL, /* 67e0 */ NULL, /* 67e1 */ NULL, /* 67e2 */ NULL, /* 67e3 */ NULL, /* 67e4 */ NULL, /* 67e5 */ NULL, /* 67e6 */ NULL, /* 67e7 */ NULL, /* 67e8 */ NULL, /* 67e9 */ NULL, /* 67ea */ NULL, /* 67eb */ NULL, /* 67ec */ NULL, /* 67ed */ NULL, /* 67ee */ NULL, /* 67ef */ NULL, /* 67f0 */ NULL, /* 67f1 */ NULL, /* 67f2 */ NULL, /* 67f3 */ NULL, /* 67f4 */ NULL, /* 67f5 */ NULL, /* 67f6 */ NULL, /* 67f7 */ NULL, /* 67f8 */ NULL, /* 67f9 */ NULL, /* 67fa */ NULL, /* 67fb */ NULL, /* 67fc */ NULL, /* 67fd */ NULL, /* 67fe */ NULL, /* 67ff */ NULL, /* 6800 */ NULL, /* 6801 */ NULL, /* 6802 */ NULL, /* 6803 */ NULL, /* 6804 */ NULL, /* 6805 */ NULL, /* 6806 */ NULL, /* 6807 */ NULL, /* 6808 */ NULL, /* 6809 */ NULL, /* 680a */ NULL, /* 680b */ NULL, /* 680c */ NULL, /* 680d */ NULL, /* 680e */ NULL, /* 680f */ NULL, /* 6810 */ NULL, /* 6811 */ NULL, /* 6812 */ NULL, /* 6813 */ NULL, /* 6814 */ NULL, /* 6815 */ NULL, /* 6816 */ NULL, /* 6817 */ NULL, /* 6818 */ NULL, /* 6819 */ NULL, /* 681a */ NULL, /* 681b */ NULL, /* 681c */ NULL, /* 681d */ NULL, /* 681e */ NULL, /* 681f */ NULL, /* 6820 */ NULL, /* 6821 */ NULL, /* 6822 */ NULL, /* 6823 */ NULL, /* 6824 */ NULL, /* 6825 */ NULL, /* 6826 */ NULL, /* 6827 */ NULL, /* 6828 */ NULL, /* 6829 */ NULL, /* 682a */ NULL, /* 682b */ NULL, /* 682c */ NULL, /* 682d */ NULL, /* 682e */ NULL, /* 682f */ NULL, /* 6830 */ NULL, /* 6831 */ NULL, /* 6832 */ NULL, /* 6833 */ NULL, /* 6834 */ NULL, /* 6835 */ NULL, /* 6836 */ NULL, /* 6837 */ NULL, /* 6838 */ NULL, /* 6839 */ NULL, /* 683a */ NULL, /* 683b */ NULL, /* 683c */ NULL, /* 683d */ NULL, /* 683e */ NULL, /* 683f */ NULL, /* 6840 */ NULL, /* 6841 */ NULL, /* 6842 */ NULL, /* 6843 */ NULL, /* 6844 */ NULL, /* 6845 */ NULL, /* 6846 */ NULL, /* 6847 */ NULL, /* 6848 */ NULL, /* 6849 */ NULL, /* 684a */ NULL, /* 684b */ NULL, /* 684c */ NULL, /* 684d */ NULL, /* 684e */ NULL, /* 684f */ NULL, /* 6850 */ NULL, /* 6851 */ NULL, /* 6852 */ NULL, /* 6853 */ NULL, /* 6854 */ NULL, /* 6855 */ NULL, /* 6856 */ NULL, /* 6857 */ NULL, /* 6858 */ NULL, /* 6859 */ NULL, /* 685a */ NULL, /* 685b */ NULL, /* 685c */ NULL, /* 685d */ NULL, /* 685e */ NULL, /* 685f */ NULL, /* 6860 */ NULL, /* 6861 */ NULL, /* 6862 */ NULL, /* 6863 */ NULL, /* 6864 */ NULL, /* 6865 */ NULL, /* 6866 */ NULL, /* 6867 */ NULL, /* 6868 */ NULL, /* 6869 */ NULL, /* 686a */ NULL, /* 686b */ NULL, /* 686c */ NULL, /* 686d */ NULL, /* 686e */ NULL, /* 686f */ NULL, /* 6870 */ NULL, /* 6871 */ NULL, /* 6872 */ NULL, /* 6873 */ NULL, /* 6874 */ NULL, /* 6875 */ NULL, /* 6876 */ NULL, /* 6877 */ NULL, /* 6878 */ NULL, /* 6879 */ NULL, /* 687a */ NULL, /* 687b */ NULL, /* 687c */ NULL, /* 687d */ NULL, /* 687e */ NULL, /* 687f */ NULL, /* 6880 */ NULL, /* 6881 */ NULL, /* 6882 */ NULL, /* 6883 */ NULL, /* 6884 */ NULL, /* 6885 */ NULL, /* 6886 */ NULL, /* 6887 */ NULL, /* 6888 */ NULL, /* 6889 */ NULL, /* 688a */ NULL, /* 688b */ NULL, /* 688c */ NULL, /* 688d */ NULL, /* 688e */ NULL, /* 688f */ NULL, /* 6890 */ NULL, /* 6891 */ NULL, /* 6892 */ NULL, /* 6893 */ NULL, /* 6894 */ NULL, /* 6895 */ NULL, /* 6896 */ NULL, /* 6897 */ NULL, /* 6898 */ NULL, /* 6899 */ NULL, /* 689a */ NULL, /* 689b */ NULL, /* 689c */ NULL, /* 689d */ NULL, /* 689e */ NULL, /* 689f */ NULL, /* 68a0 */ NULL, /* 68a1 */ NULL, /* 68a2 */ NULL, /* 68a3 */ NULL, /* 68a4 */ NULL, /* 68a5 */ NULL, /* 68a6 */ NULL, /* 68a7 */ NULL, /* 68a8 */ NULL, /* 68a9 */ NULL, /* 68aa */ NULL, /* 68ab */ NULL, /* 68ac */ NULL, /* 68ad */ NULL, /* 68ae */ NULL, /* 68af */ NULL, /* 68b0 */ NULL, /* 68b1 */ NULL, /* 68b2 */ NULL, /* 68b3 */ NULL, /* 68b4 */ NULL, /* 68b5 */ NULL, /* 68b6 */ NULL, /* 68b7 */ NULL, /* 68b8 */ NULL, /* 68b9 */ NULL, /* 68ba */ NULL, /* 68bb */ NULL, /* 68bc */ NULL, /* 68bd */ NULL, /* 68be */ NULL, /* 68bf */ NULL, /* 68c0 */ NULL, /* 68c1 */ NULL, /* 68c2 */ NULL, /* 68c3 */ NULL, /* 68c4 */ NULL, /* 68c5 */ NULL, /* 68c6 */ NULL, /* 68c7 */ NULL, /* 68c8 */ NULL, /* 68c9 */ NULL, /* 68ca */ NULL, /* 68cb */ NULL, /* 68cc */ NULL, /* 68cd */ NULL, /* 68ce */ NULL, /* 68cf */ NULL, /* 68d0 */ NULL, /* 68d1 */ NULL, /* 68d2 */ NULL, /* 68d3 */ NULL, /* 68d4 */ NULL, /* 68d5 */ NULL, /* 68d6 */ NULL, /* 68d7 */ NULL, /* 68d8 */ NULL, /* 68d9 */ NULL, /* 68da */ NULL, /* 68db */ NULL, /* 68dc */ NULL, /* 68dd */ NULL, /* 68de */ NULL, /* 68df */ NULL, /* 68e0 */ NULL, /* 68e1 */ NULL, /* 68e2 */ NULL, /* 68e3 */ NULL, /* 68e4 */ NULL, /* 68e5 */ NULL, /* 68e6 */ NULL, /* 68e7 */ NULL, /* 68e8 */ NULL, /* 68e9 */ NULL, /* 68ea */ NULL, /* 68eb */ NULL, /* 68ec */ NULL, /* 68ed */ NULL, /* 68ee */ NULL, /* 68ef */ NULL, /* 68f0 */ NULL, /* 68f1 */ NULL, /* 68f2 */ NULL, /* 68f3 */ NULL, /* 68f4 */ NULL, /* 68f5 */ NULL, /* 68f6 */ NULL, /* 68f7 */ NULL, /* 68f8 */ NULL, /* 68f9 */ NULL, /* 68fa */ NULL, /* 68fb */ NULL, /* 68fc */ NULL, /* 68fd */ NULL, /* 68fe */ NULL, /* 68ff */ NULL, /* 6900 */ NULL, /* 6901 */ NULL, /* 6902 */ NULL, /* 6903 */ NULL, /* 6904 */ NULL, /* 6905 */ NULL, /* 6906 */ NULL, /* 6907 */ NULL, /* 6908 */ NULL, /* 6909 */ NULL, /* 690a */ NULL, /* 690b */ NULL, /* 690c */ NULL, /* 690d */ NULL, /* 690e */ NULL, /* 690f */ NULL, /* 6910 */ NULL, /* 6911 */ NULL, /* 6912 */ NULL, /* 6913 */ NULL, /* 6914 */ NULL, /* 6915 */ NULL, /* 6916 */ NULL, /* 6917 */ NULL, /* 6918 */ NULL, /* 6919 */ NULL, /* 691a */ NULL, /* 691b */ NULL, /* 691c */ NULL, /* 691d */ NULL, /* 691e */ NULL, /* 691f */ NULL, /* 6920 */ NULL, /* 6921 */ NULL, /* 6922 */ NULL, /* 6923 */ NULL, /* 6924 */ NULL, /* 6925 */ NULL, /* 6926 */ NULL, /* 6927 */ NULL, /* 6928 */ NULL, /* 6929 */ NULL, /* 692a */ NULL, /* 692b */ NULL, /* 692c */ NULL, /* 692d */ NULL, /* 692e */ NULL, /* 692f */ NULL, /* 6930 */ NULL, /* 6931 */ NULL, /* 6932 */ NULL, /* 6933 */ NULL, /* 6934 */ NULL, /* 6935 */ NULL, /* 6936 */ NULL, /* 6937 */ NULL, /* 6938 */ NULL, /* 6939 */ NULL, /* 693a */ NULL, /* 693b */ NULL, /* 693c */ NULL, /* 693d */ NULL, /* 693e */ NULL, /* 693f */ NULL, /* 6940 */ NULL, /* 6941 */ NULL, /* 6942 */ NULL, /* 6943 */ NULL, /* 6944 */ NULL, /* 6945 */ NULL, /* 6946 */ NULL, /* 6947 */ NULL, /* 6948 */ NULL, /* 6949 */ NULL, /* 694a */ NULL, /* 694b */ NULL, /* 694c */ NULL, /* 694d */ NULL, /* 694e */ NULL, /* 694f */ NULL, /* 6950 */ NULL, /* 6951 */ NULL, /* 6952 */ NULL, /* 6953 */ NULL, /* 6954 */ NULL, /* 6955 */ NULL, /* 6956 */ NULL, /* 6957 */ NULL, /* 6958 */ NULL, /* 6959 */ NULL, /* 695a */ NULL, /* 695b */ NULL, /* 695c */ NULL, /* 695d */ NULL, /* 695e */ NULL, /* 695f */ NULL, /* 6960 */ NULL, /* 6961 */ NULL, /* 6962 */ NULL, /* 6963 */ NULL, /* 6964 */ NULL, /* 6965 */ NULL, /* 6966 */ NULL, /* 6967 */ NULL, /* 6968 */ NULL, /* 6969 */ NULL, /* 696a */ NULL, /* 696b */ NULL, /* 696c */ NULL, /* 696d */ NULL, /* 696e */ NULL, /* 696f */ NULL, /* 6970 */ NULL, /* 6971 */ NULL, /* 6972 */ NULL, /* 6973 */ NULL, /* 6974 */ NULL, /* 6975 */ NULL, /* 6976 */ NULL, /* 6977 */ NULL, /* 6978 */ NULL, /* 6979 */ NULL, /* 697a */ NULL, /* 697b */ NULL, /* 697c */ NULL, /* 697d */ NULL, /* 697e */ NULL, /* 697f */ NULL, /* 6980 */ NULL, /* 6981 */ NULL, /* 6982 */ NULL, /* 6983 */ NULL, /* 6984 */ NULL, /* 6985 */ NULL, /* 6986 */ NULL, /* 6987 */ NULL, /* 6988 */ NULL, /* 6989 */ NULL, /* 698a */ NULL, /* 698b */ NULL, /* 698c */ NULL, /* 698d */ NULL, /* 698e */ NULL, /* 698f */ NULL, /* 6990 */ NULL, /* 6991 */ NULL, /* 6992 */ NULL, /* 6993 */ NULL, /* 6994 */ NULL, /* 6995 */ NULL, /* 6996 */ NULL, /* 6997 */ NULL, /* 6998 */ NULL, /* 6999 */ NULL, /* 699a */ NULL, /* 699b */ NULL, /* 699c */ NULL, /* 699d */ NULL, /* 699e */ NULL, /* 699f */ NULL, /* 69a0 */ NULL, /* 69a1 */ NULL, /* 69a2 */ NULL, /* 69a3 */ NULL, /* 69a4 */ NULL, /* 69a5 */ NULL, /* 69a6 */ NULL, /* 69a7 */ NULL, /* 69a8 */ NULL, /* 69a9 */ NULL, /* 69aa */ NULL, /* 69ab */ NULL, /* 69ac */ NULL, /* 69ad */ NULL, /* 69ae */ NULL, /* 69af */ NULL, /* 69b0 */ NULL, /* 69b1 */ NULL, /* 69b2 */ NULL, /* 69b3 */ NULL, /* 69b4 */ NULL, /* 69b5 */ NULL, /* 69b6 */ NULL, /* 69b7 */ NULL, /* 69b8 */ NULL, /* 69b9 */ NULL, /* 69ba */ NULL, /* 69bb */ NULL, /* 69bc */ NULL, /* 69bd */ NULL, /* 69be */ NULL, /* 69bf */ NULL, /* 69c0 */ NULL, /* 69c1 */ NULL, /* 69c2 */ NULL, /* 69c3 */ NULL, /* 69c4 */ NULL, /* 69c5 */ NULL, /* 69c6 */ NULL, /* 69c7 */ NULL, /* 69c8 */ NULL, /* 69c9 */ NULL, /* 69ca */ NULL, /* 69cb */ NULL, /* 69cc */ NULL, /* 69cd */ NULL, /* 69ce */ NULL, /* 69cf */ NULL, /* 69d0 */ NULL, /* 69d1 */ NULL, /* 69d2 */ NULL, /* 69d3 */ NULL, /* 69d4 */ NULL, /* 69d5 */ NULL, /* 69d6 */ NULL, /* 69d7 */ NULL, /* 69d8 */ NULL, /* 69d9 */ NULL, /* 69da */ NULL, /* 69db */ NULL, /* 69dc */ NULL, /* 69dd */ NULL, /* 69de */ NULL, /* 69df */ NULL, /* 69e0 */ NULL, /* 69e1 */ NULL, /* 69e2 */ NULL, /* 69e3 */ NULL, /* 69e4 */ NULL, /* 69e5 */ NULL, /* 69e6 */ NULL, /* 69e7 */ NULL, /* 69e8 */ NULL, /* 69e9 */ NULL, /* 69ea */ NULL, /* 69eb */ NULL, /* 69ec */ NULL, /* 69ed */ NULL, /* 69ee */ NULL, /* 69ef */ NULL, /* 69f0 */ NULL, /* 69f1 */ NULL, /* 69f2 */ NULL, /* 69f3 */ NULL, /* 69f4 */ NULL, /* 69f5 */ NULL, /* 69f6 */ NULL, /* 69f7 */ NULL, /* 69f8 */ NULL, /* 69f9 */ NULL, /* 69fa */ NULL, /* 69fb */ NULL, /* 69fc */ NULL, /* 69fd */ NULL, /* 69fe */ NULL, /* 69ff */ NULL, /* 6a00 */ NULL, /* 6a01 */ NULL, /* 6a02 */ NULL, /* 6a03 */ NULL, /* 6a04 */ NULL, /* 6a05 */ NULL, /* 6a06 */ NULL, /* 6a07 */ NULL, /* 6a08 */ NULL, /* 6a09 */ NULL, /* 6a0a */ NULL, /* 6a0b */ NULL, /* 6a0c */ NULL, /* 6a0d */ NULL, /* 6a0e */ NULL, /* 6a0f */ NULL, /* 6a10 */ NULL, /* 6a11 */ NULL, /* 6a12 */ NULL, /* 6a13 */ NULL, /* 6a14 */ NULL, /* 6a15 */ NULL, /* 6a16 */ NULL, /* 6a17 */ NULL, /* 6a18 */ NULL, /* 6a19 */ NULL, /* 6a1a */ NULL, /* 6a1b */ NULL, /* 6a1c */ NULL, /* 6a1d */ NULL, /* 6a1e */ NULL, /* 6a1f */ NULL, /* 6a20 */ NULL, /* 6a21 */ NULL, /* 6a22 */ NULL, /* 6a23 */ NULL, /* 6a24 */ NULL, /* 6a25 */ NULL, /* 6a26 */ NULL, /* 6a27 */ NULL, /* 6a28 */ NULL, /* 6a29 */ NULL, /* 6a2a */ NULL, /* 6a2b */ NULL, /* 6a2c */ NULL, /* 6a2d */ NULL, /* 6a2e */ NULL, /* 6a2f */ NULL, /* 6a30 */ NULL, /* 6a31 */ NULL, /* 6a32 */ NULL, /* 6a33 */ NULL, /* 6a34 */ NULL, /* 6a35 */ NULL, /* 6a36 */ NULL, /* 6a37 */ NULL, /* 6a38 */ NULL, /* 6a39 */ NULL, /* 6a3a */ NULL, /* 6a3b */ NULL, /* 6a3c */ NULL, /* 6a3d */ NULL, /* 6a3e */ NULL, /* 6a3f */ NULL, /* 6a40 */ NULL, /* 6a41 */ NULL, /* 6a42 */ NULL, /* 6a43 */ NULL, /* 6a44 */ NULL, /* 6a45 */ NULL, /* 6a46 */ NULL, /* 6a47 */ NULL, /* 6a48 */ NULL, /* 6a49 */ NULL, /* 6a4a */ NULL, /* 6a4b */ NULL, /* 6a4c */ NULL, /* 6a4d */ NULL, /* 6a4e */ NULL, /* 6a4f */ NULL, /* 6a50 */ NULL, /* 6a51 */ NULL, /* 6a52 */ NULL, /* 6a53 */ NULL, /* 6a54 */ NULL, /* 6a55 */ NULL, /* 6a56 */ NULL, /* 6a57 */ NULL, /* 6a58 */ NULL, /* 6a59 */ NULL, /* 6a5a */ NULL, /* 6a5b */ NULL, /* 6a5c */ NULL, /* 6a5d */ NULL, /* 6a5e */ NULL, /* 6a5f */ NULL, /* 6a60 */ NULL, /* 6a61 */ NULL, /* 6a62 */ NULL, /* 6a63 */ NULL, /* 6a64 */ NULL, /* 6a65 */ NULL, /* 6a66 */ NULL, /* 6a67 */ NULL, /* 6a68 */ NULL, /* 6a69 */ NULL, /* 6a6a */ NULL, /* 6a6b */ NULL, /* 6a6c */ NULL, /* 6a6d */ NULL, /* 6a6e */ NULL, /* 6a6f */ NULL, /* 6a70 */ NULL, /* 6a71 */ NULL, /* 6a72 */ NULL, /* 6a73 */ NULL, /* 6a74 */ NULL, /* 6a75 */ NULL, /* 6a76 */ NULL, /* 6a77 */ NULL, /* 6a78 */ NULL, /* 6a79 */ NULL, /* 6a7a */ NULL, /* 6a7b */ NULL, /* 6a7c */ NULL, /* 6a7d */ NULL, /* 6a7e */ NULL, /* 6a7f */ NULL, /* 6a80 */ NULL, /* 6a81 */ NULL, /* 6a82 */ NULL, /* 6a83 */ NULL, /* 6a84 */ NULL, /* 6a85 */ NULL, /* 6a86 */ NULL, /* 6a87 */ NULL, /* 6a88 */ NULL, /* 6a89 */ NULL, /* 6a8a */ NULL, /* 6a8b */ NULL, /* 6a8c */ NULL, /* 6a8d */ NULL, /* 6a8e */ NULL, /* 6a8f */ NULL, /* 6a90 */ NULL, /* 6a91 */ NULL, /* 6a92 */ NULL, /* 6a93 */ NULL, /* 6a94 */ NULL, /* 6a95 */ NULL, /* 6a96 */ NULL, /* 6a97 */ NULL, /* 6a98 */ NULL, /* 6a99 */ NULL, /* 6a9a */ NULL, /* 6a9b */ NULL, /* 6a9c */ NULL, /* 6a9d */ NULL, /* 6a9e */ NULL, /* 6a9f */ NULL, /* 6aa0 */ NULL, /* 6aa1 */ NULL, /* 6aa2 */ NULL, /* 6aa3 */ NULL, /* 6aa4 */ NULL, /* 6aa5 */ NULL, /* 6aa6 */ NULL, /* 6aa7 */ NULL, /* 6aa8 */ NULL, /* 6aa9 */ NULL, /* 6aaa */ NULL, /* 6aab */ NULL, /* 6aac */ NULL, /* 6aad */ NULL, /* 6aae */ NULL, /* 6aaf */ NULL, /* 6ab0 */ NULL, /* 6ab1 */ NULL, /* 6ab2 */ NULL, /* 6ab3 */ NULL, /* 6ab4 */ NULL, /* 6ab5 */ NULL, /* 6ab6 */ NULL, /* 6ab7 */ NULL, /* 6ab8 */ NULL, /* 6ab9 */ NULL, /* 6aba */ NULL, /* 6abb */ NULL, /* 6abc */ NULL, /* 6abd */ NULL, /* 6abe */ NULL, /* 6abf */ NULL, /* 6ac0 */ NULL, /* 6ac1 */ NULL, /* 6ac2 */ NULL, /* 6ac3 */ NULL, /* 6ac4 */ NULL, /* 6ac5 */ NULL, /* 6ac6 */ NULL, /* 6ac7 */ NULL, /* 6ac8 */ NULL, /* 6ac9 */ NULL, /* 6aca */ NULL, /* 6acb */ NULL, /* 6acc */ NULL, /* 6acd */ NULL, /* 6ace */ NULL, /* 6acf */ NULL, /* 6ad0 */ NULL, /* 6ad1 */ NULL, /* 6ad2 */ NULL, /* 6ad3 */ NULL, /* 6ad4 */ NULL, /* 6ad5 */ NULL, /* 6ad6 */ NULL, /* 6ad7 */ NULL, /* 6ad8 */ NULL, /* 6ad9 */ NULL, /* 6ada */ NULL, /* 6adb */ NULL, /* 6adc */ NULL, /* 6add */ NULL, /* 6ade */ NULL, /* 6adf */ NULL, /* 6ae0 */ NULL, /* 6ae1 */ NULL, /* 6ae2 */ NULL, /* 6ae3 */ NULL, /* 6ae4 */ NULL, /* 6ae5 */ NULL, /* 6ae6 */ NULL, /* 6ae7 */ NULL, /* 6ae8 */ NULL, /* 6ae9 */ NULL, /* 6aea */ NULL, /* 6aeb */ NULL, /* 6aec */ NULL, /* 6aed */ NULL, /* 6aee */ NULL, /* 6aef */ NULL, /* 6af0 */ NULL, /* 6af1 */ NULL, /* 6af2 */ NULL, /* 6af3 */ NULL, /* 6af4 */ NULL, /* 6af5 */ NULL, /* 6af6 */ NULL, /* 6af7 */ NULL, /* 6af8 */ NULL, /* 6af9 */ NULL, /* 6afa */ NULL, /* 6afb */ NULL, /* 6afc */ NULL, /* 6afd */ NULL, /* 6afe */ NULL, /* 6aff */ NULL, /* 6b00 */ NULL, /* 6b01 */ NULL, /* 6b02 */ NULL, /* 6b03 */ NULL, /* 6b04 */ NULL, /* 6b05 */ NULL, /* 6b06 */ NULL, /* 6b07 */ NULL, /* 6b08 */ NULL, /* 6b09 */ NULL, /* 6b0a */ NULL, /* 6b0b */ NULL, /* 6b0c */ NULL, /* 6b0d */ NULL, /* 6b0e */ NULL, /* 6b0f */ NULL, /* 6b10 */ NULL, /* 6b11 */ NULL, /* 6b12 */ NULL, /* 6b13 */ NULL, /* 6b14 */ NULL, /* 6b15 */ NULL, /* 6b16 */ NULL, /* 6b17 */ NULL, /* 6b18 */ NULL, /* 6b19 */ NULL, /* 6b1a */ NULL, /* 6b1b */ NULL, /* 6b1c */ NULL, /* 6b1d */ NULL, /* 6b1e */ NULL, /* 6b1f */ NULL, /* 6b20 */ NULL, /* 6b21 */ NULL, /* 6b22 */ NULL, /* 6b23 */ NULL, /* 6b24 */ NULL, /* 6b25 */ NULL, /* 6b26 */ NULL, /* 6b27 */ NULL, /* 6b28 */ NULL, /* 6b29 */ NULL, /* 6b2a */ NULL, /* 6b2b */ NULL, /* 6b2c */ NULL, /* 6b2d */ NULL, /* 6b2e */ NULL, /* 6b2f */ NULL, /* 6b30 */ NULL, /* 6b31 */ NULL, /* 6b32 */ NULL, /* 6b33 */ NULL, /* 6b34 */ NULL, /* 6b35 */ NULL, /* 6b36 */ NULL, /* 6b37 */ NULL, /* 6b38 */ NULL, /* 6b39 */ NULL, /* 6b3a */ NULL, /* 6b3b */ NULL, /* 6b3c */ NULL, /* 6b3d */ NULL, /* 6b3e */ NULL, /* 6b3f */ NULL, /* 6b40 */ NULL, /* 6b41 */ NULL, /* 6b42 */ NULL, /* 6b43 */ NULL, /* 6b44 */ NULL, /* 6b45 */ NULL, /* 6b46 */ NULL, /* 6b47 */ NULL, /* 6b48 */ NULL, /* 6b49 */ NULL, /* 6b4a */ NULL, /* 6b4b */ NULL, /* 6b4c */ NULL, /* 6b4d */ NULL, /* 6b4e */ NULL, /* 6b4f */ NULL, /* 6b50 */ NULL, /* 6b51 */ NULL, /* 6b52 */ NULL, /* 6b53 */ NULL, /* 6b54 */ NULL, /* 6b55 */ NULL, /* 6b56 */ NULL, /* 6b57 */ NULL, /* 6b58 */ NULL, /* 6b59 */ NULL, /* 6b5a */ NULL, /* 6b5b */ NULL, /* 6b5c */ NULL, /* 6b5d */ NULL, /* 6b5e */ NULL, /* 6b5f */ NULL, /* 6b60 */ NULL, /* 6b61 */ NULL, /* 6b62 */ NULL, /* 6b63 */ NULL, /* 6b64 */ NULL, /* 6b65 */ NULL, /* 6b66 */ NULL, /* 6b67 */ NULL, /* 6b68 */ NULL, /* 6b69 */ NULL, /* 6b6a */ NULL, /* 6b6b */ NULL, /* 6b6c */ NULL, /* 6b6d */ NULL, /* 6b6e */ NULL, /* 6b6f */ NULL, /* 6b70 */ NULL, /* 6b71 */ NULL, /* 6b72 */ NULL, /* 6b73 */ NULL, /* 6b74 */ NULL, /* 6b75 */ NULL, /* 6b76 */ NULL, /* 6b77 */ NULL, /* 6b78 */ NULL, /* 6b79 */ NULL, /* 6b7a */ NULL, /* 6b7b */ NULL, /* 6b7c */ NULL, /* 6b7d */ NULL, /* 6b7e */ NULL, /* 6b7f */ NULL, /* 6b80 */ NULL, /* 6b81 */ NULL, /* 6b82 */ NULL, /* 6b83 */ NULL, /* 6b84 */ NULL, /* 6b85 */ NULL, /* 6b86 */ NULL, /* 6b87 */ NULL, /* 6b88 */ NULL, /* 6b89 */ NULL, /* 6b8a */ NULL, /* 6b8b */ NULL, /* 6b8c */ NULL, /* 6b8d */ NULL, /* 6b8e */ NULL, /* 6b8f */ NULL, /* 6b90 */ NULL, /* 6b91 */ NULL, /* 6b92 */ NULL, /* 6b93 */ NULL, /* 6b94 */ NULL, /* 6b95 */ NULL, /* 6b96 */ NULL, /* 6b97 */ NULL, /* 6b98 */ NULL, /* 6b99 */ NULL, /* 6b9a */ NULL, /* 6b9b */ NULL, /* 6b9c */ NULL, /* 6b9d */ NULL, /* 6b9e */ NULL, /* 6b9f */ NULL, /* 6ba0 */ NULL, /* 6ba1 */ NULL, /* 6ba2 */ NULL, /* 6ba3 */ NULL, /* 6ba4 */ NULL, /* 6ba5 */ NULL, /* 6ba6 */ NULL, /* 6ba7 */ NULL, /* 6ba8 */ NULL, /* 6ba9 */ NULL, /* 6baa */ NULL, /* 6bab */ NULL, /* 6bac */ NULL, /* 6bad */ NULL, /* 6bae */ NULL, /* 6baf */ NULL, /* 6bb0 */ NULL, /* 6bb1 */ NULL, /* 6bb2 */ NULL, /* 6bb3 */ NULL, /* 6bb4 */ NULL, /* 6bb5 */ NULL, /* 6bb6 */ NULL, /* 6bb7 */ NULL, /* 6bb8 */ NULL, /* 6bb9 */ NULL, /* 6bba */ NULL, /* 6bbb */ NULL, /* 6bbc */ NULL, /* 6bbd */ NULL, /* 6bbe */ NULL, /* 6bbf */ NULL, /* 6bc0 */ NULL, /* 6bc1 */ NULL, /* 6bc2 */ NULL, /* 6bc3 */ NULL, /* 6bc4 */ NULL, /* 6bc5 */ NULL, /* 6bc6 */ NULL, /* 6bc7 */ NULL, /* 6bc8 */ NULL, /* 6bc9 */ NULL, /* 6bca */ NULL, /* 6bcb */ NULL, /* 6bcc */ NULL, /* 6bcd */ NULL, /* 6bce */ NULL, /* 6bcf */ NULL, /* 6bd0 */ NULL, /* 6bd1 */ NULL, /* 6bd2 */ NULL, /* 6bd3 */ NULL, /* 6bd4 */ NULL, /* 6bd5 */ NULL, /* 6bd6 */ NULL, /* 6bd7 */ NULL, /* 6bd8 */ NULL, /* 6bd9 */ NULL, /* 6bda */ NULL, /* 6bdb */ NULL, /* 6bdc */ NULL, /* 6bdd */ NULL, /* 6bde */ NULL, /* 6bdf */ NULL, /* 6be0 */ NULL, /* 6be1 */ NULL, /* 6be2 */ NULL, /* 6be3 */ NULL, /* 6be4 */ NULL, /* 6be5 */ NULL, /* 6be6 */ NULL, /* 6be7 */ NULL, /* 6be8 */ NULL, /* 6be9 */ NULL, /* 6bea */ NULL, /* 6beb */ NULL, /* 6bec */ NULL, /* 6bed */ NULL, /* 6bee */ NULL, /* 6bef */ NULL, /* 6bf0 */ NULL, /* 6bf1 */ NULL, /* 6bf2 */ NULL, /* 6bf3 */ NULL, /* 6bf4 */ NULL, /* 6bf5 */ NULL, /* 6bf6 */ NULL, /* 6bf7 */ NULL, /* 6bf8 */ NULL, /* 6bf9 */ NULL, /* 6bfa */ NULL, /* 6bfb */ NULL, /* 6bfc */ NULL, /* 6bfd */ NULL, /* 6bfe */ NULL, /* 6bff */ NULL, /* 6c00 */ NULL, /* 6c01 */ NULL, /* 6c02 */ NULL, /* 6c03 */ NULL, /* 6c04 */ NULL, /* 6c05 */ NULL, /* 6c06 */ NULL, /* 6c07 */ NULL, /* 6c08 */ NULL, /* 6c09 */ NULL, /* 6c0a */ NULL, /* 6c0b */ NULL, /* 6c0c */ NULL, /* 6c0d */ NULL, /* 6c0e */ NULL, /* 6c0f */ NULL, /* 6c10 */ NULL, /* 6c11 */ NULL, /* 6c12 */ NULL, /* 6c13 */ NULL, /* 6c14 */ NULL, /* 6c15 */ NULL, /* 6c16 */ NULL, /* 6c17 */ NULL, /* 6c18 */ NULL, /* 6c19 */ NULL, /* 6c1a */ NULL, /* 6c1b */ NULL, /* 6c1c */ NULL, /* 6c1d */ NULL, /* 6c1e */ NULL, /* 6c1f */ NULL, /* 6c20 */ NULL, /* 6c21 */ NULL, /* 6c22 */ NULL, /* 6c23 */ NULL, /* 6c24 */ NULL, /* 6c25 */ NULL, /* 6c26 */ NULL, /* 6c27 */ NULL, /* 6c28 */ NULL, /* 6c29 */ NULL, /* 6c2a */ NULL, /* 6c2b */ NULL, /* 6c2c */ NULL, /* 6c2d */ NULL, /* 6c2e */ NULL, /* 6c2f */ NULL, /* 6c30 */ NULL, /* 6c31 */ NULL, /* 6c32 */ NULL, /* 6c33 */ NULL, /* 6c34 */ NULL, /* 6c35 */ NULL, /* 6c36 */ NULL, /* 6c37 */ NULL, /* 6c38 */ NULL, /* 6c39 */ NULL, /* 6c3a */ NULL, /* 6c3b */ NULL, /* 6c3c */ NULL, /* 6c3d */ NULL, /* 6c3e */ NULL, /* 6c3f */ NULL, /* 6c40 */ NULL, /* 6c41 */ NULL, /* 6c42 */ NULL, /* 6c43 */ NULL, /* 6c44 */ NULL, /* 6c45 */ NULL, /* 6c46 */ NULL, /* 6c47 */ NULL, /* 6c48 */ NULL, /* 6c49 */ NULL, /* 6c4a */ NULL, /* 6c4b */ NULL, /* 6c4c */ NULL, /* 6c4d */ NULL, /* 6c4e */ NULL, /* 6c4f */ NULL, /* 6c50 */ NULL, /* 6c51 */ NULL, /* 6c52 */ NULL, /* 6c53 */ NULL, /* 6c54 */ NULL, /* 6c55 */ NULL, /* 6c56 */ NULL, /* 6c57 */ NULL, /* 6c58 */ NULL, /* 6c59 */ NULL, /* 6c5a */ NULL, /* 6c5b */ NULL, /* 6c5c */ NULL, /* 6c5d */ NULL, /* 6c5e */ NULL, /* 6c5f */ NULL, /* 6c60 */ NULL, /* 6c61 */ NULL, /* 6c62 */ NULL, /* 6c63 */ NULL, /* 6c64 */ NULL, /* 6c65 */ NULL, /* 6c66 */ NULL, /* 6c67 */ NULL, /* 6c68 */ NULL, /* 6c69 */ NULL, /* 6c6a */ NULL, /* 6c6b */ NULL, /* 6c6c */ NULL, /* 6c6d */ NULL, /* 6c6e */ NULL, /* 6c6f */ NULL, /* 6c70 */ NULL, /* 6c71 */ NULL, /* 6c72 */ NULL, /* 6c73 */ NULL, /* 6c74 */ NULL, /* 6c75 */ NULL, /* 6c76 */ NULL, /* 6c77 */ NULL, /* 6c78 */ NULL, /* 6c79 */ NULL, /* 6c7a */ NULL, /* 6c7b */ NULL, /* 6c7c */ NULL, /* 6c7d */ NULL, /* 6c7e */ NULL, /* 6c7f */ NULL, /* 6c80 */ NULL, /* 6c81 */ NULL, /* 6c82 */ NULL, /* 6c83 */ NULL, /* 6c84 */ NULL, /* 6c85 */ NULL, /* 6c86 */ NULL, /* 6c87 */ NULL, /* 6c88 */ NULL, /* 6c89 */ NULL, /* 6c8a */ NULL, /* 6c8b */ NULL, /* 6c8c */ NULL, /* 6c8d */ NULL, /* 6c8e */ NULL, /* 6c8f */ NULL, /* 6c90 */ NULL, /* 6c91 */ NULL, /* 6c92 */ NULL, /* 6c93 */ NULL, /* 6c94 */ NULL, /* 6c95 */ NULL, /* 6c96 */ NULL, /* 6c97 */ NULL, /* 6c98 */ NULL, /* 6c99 */ NULL, /* 6c9a */ NULL, /* 6c9b */ NULL, /* 6c9c */ NULL, /* 6c9d */ NULL, /* 6c9e */ NULL, /* 6c9f */ NULL, /* 6ca0 */ NULL, /* 6ca1 */ NULL, /* 6ca2 */ NULL, /* 6ca3 */ NULL, /* 6ca4 */ NULL, /* 6ca5 */ NULL, /* 6ca6 */ NULL, /* 6ca7 */ NULL, /* 6ca8 */ NULL, /* 6ca9 */ NULL, /* 6caa */ NULL, /* 6cab */ NULL, /* 6cac */ NULL, /* 6cad */ NULL, /* 6cae */ NULL, /* 6caf */ NULL, /* 6cb0 */ NULL, /* 6cb1 */ NULL, /* 6cb2 */ NULL, /* 6cb3 */ NULL, /* 6cb4 */ NULL, /* 6cb5 */ NULL, /* 6cb6 */ NULL, /* 6cb7 */ NULL, /* 6cb8 */ NULL, /* 6cb9 */ NULL, /* 6cba */ NULL, /* 6cbb */ NULL, /* 6cbc */ NULL, /* 6cbd */ NULL, /* 6cbe */ NULL, /* 6cbf */ NULL, /* 6cc0 */ NULL, /* 6cc1 */ NULL, /* 6cc2 */ NULL, /* 6cc3 */ NULL, /* 6cc4 */ NULL, /* 6cc5 */ NULL, /* 6cc6 */ NULL, /* 6cc7 */ NULL, /* 6cc8 */ NULL, /* 6cc9 */ NULL, /* 6cca */ NULL, /* 6ccb */ NULL, /* 6ccc */ NULL, /* 6ccd */ NULL, /* 6cce */ NULL, /* 6ccf */ NULL, /* 6cd0 */ NULL, /* 6cd1 */ NULL, /* 6cd2 */ NULL, /* 6cd3 */ NULL, /* 6cd4 */ NULL, /* 6cd5 */ NULL, /* 6cd6 */ NULL, /* 6cd7 */ NULL, /* 6cd8 */ NULL, /* 6cd9 */ NULL, /* 6cda */ NULL, /* 6cdb */ NULL, /* 6cdc */ NULL, /* 6cdd */ NULL, /* 6cde */ NULL, /* 6cdf */ NULL, /* 6ce0 */ NULL, /* 6ce1 */ NULL, /* 6ce2 */ NULL, /* 6ce3 */ NULL, /* 6ce4 */ NULL, /* 6ce5 */ NULL, /* 6ce6 */ NULL, /* 6ce7 */ NULL, /* 6ce8 */ NULL, /* 6ce9 */ NULL, /* 6cea */ NULL, /* 6ceb */ NULL, /* 6cec */ NULL, /* 6ced */ NULL, /* 6cee */ NULL, /* 6cef */ NULL, /* 6cf0 */ NULL, /* 6cf1 */ NULL, /* 6cf2 */ NULL, /* 6cf3 */ NULL, /* 6cf4 */ NULL, /* 6cf5 */ NULL, /* 6cf6 */ NULL, /* 6cf7 */ NULL, /* 6cf8 */ NULL, /* 6cf9 */ NULL, /* 6cfa */ NULL, /* 6cfb */ NULL, /* 6cfc */ NULL, /* 6cfd */ NULL, /* 6cfe */ NULL, /* 6cff */ NULL, /* 6d00 */ NULL, /* 6d01 */ NULL, /* 6d02 */ NULL, /* 6d03 */ NULL, /* 6d04 */ NULL, /* 6d05 */ NULL, /* 6d06 */ NULL, /* 6d07 */ NULL, /* 6d08 */ NULL, /* 6d09 */ NULL, /* 6d0a */ NULL, /* 6d0b */ NULL, /* 6d0c */ NULL, /* 6d0d */ NULL, /* 6d0e */ NULL, /* 6d0f */ NULL, /* 6d10 */ NULL, /* 6d11 */ NULL, /* 6d12 */ NULL, /* 6d13 */ NULL, /* 6d14 */ NULL, /* 6d15 */ NULL, /* 6d16 */ NULL, /* 6d17 */ NULL, /* 6d18 */ NULL, /* 6d19 */ NULL, /* 6d1a */ NULL, /* 6d1b */ NULL, /* 6d1c */ NULL, /* 6d1d */ NULL, /* 6d1e */ NULL, /* 6d1f */ NULL, /* 6d20 */ NULL, /* 6d21 */ NULL, /* 6d22 */ NULL, /* 6d23 */ NULL, /* 6d24 */ NULL, /* 6d25 */ NULL, /* 6d26 */ NULL, /* 6d27 */ NULL, /* 6d28 */ NULL, /* 6d29 */ NULL, /* 6d2a */ NULL, /* 6d2b */ NULL, /* 6d2c */ NULL, /* 6d2d */ NULL, /* 6d2e */ NULL, /* 6d2f */ NULL, /* 6d30 */ NULL, /* 6d31 */ NULL, /* 6d32 */ NULL, /* 6d33 */ NULL, /* 6d34 */ NULL, /* 6d35 */ NULL, /* 6d36 */ NULL, /* 6d37 */ NULL, /* 6d38 */ NULL, /* 6d39 */ NULL, /* 6d3a */ NULL, /* 6d3b */ NULL, /* 6d3c */ NULL, /* 6d3d */ NULL, /* 6d3e */ NULL, /* 6d3f */ NULL, /* 6d40 */ NULL, /* 6d41 */ NULL, /* 6d42 */ NULL, /* 6d43 */ NULL, /* 6d44 */ NULL, /* 6d45 */ NULL, /* 6d46 */ NULL, /* 6d47 */ NULL, /* 6d48 */ NULL, /* 6d49 */ NULL, /* 6d4a */ NULL, /* 6d4b */ NULL, /* 6d4c */ NULL, /* 6d4d */ NULL, /* 6d4e */ NULL, /* 6d4f */ NULL, /* 6d50 */ NULL, /* 6d51 */ NULL, /* 6d52 */ NULL, /* 6d53 */ NULL, /* 6d54 */ NULL, /* 6d55 */ NULL, /* 6d56 */ NULL, /* 6d57 */ NULL, /* 6d58 */ NULL, /* 6d59 */ NULL, /* 6d5a */ NULL, /* 6d5b */ NULL, /* 6d5c */ NULL, /* 6d5d */ NULL, /* 6d5e */ NULL, /* 6d5f */ NULL, /* 6d60 */ NULL, /* 6d61 */ NULL, /* 6d62 */ NULL, /* 6d63 */ NULL, /* 6d64 */ NULL, /* 6d65 */ NULL, /* 6d66 */ NULL, /* 6d67 */ NULL, /* 6d68 */ NULL, /* 6d69 */ NULL, /* 6d6a */ NULL, /* 6d6b */ NULL, /* 6d6c */ NULL, /* 6d6d */ NULL, /* 6d6e */ NULL, /* 6d6f */ NULL, /* 6d70 */ NULL, /* 6d71 */ NULL, /* 6d72 */ NULL, /* 6d73 */ NULL, /* 6d74 */ NULL, /* 6d75 */ NULL, /* 6d76 */ NULL, /* 6d77 */ NULL, /* 6d78 */ NULL, /* 6d79 */ NULL, /* 6d7a */ NULL, /* 6d7b */ NULL, /* 6d7c */ NULL, /* 6d7d */ NULL, /* 6d7e */ NULL, /* 6d7f */ NULL, /* 6d80 */ NULL, /* 6d81 */ NULL, /* 6d82 */ NULL, /* 6d83 */ NULL, /* 6d84 */ NULL, /* 6d85 */ NULL, /* 6d86 */ NULL, /* 6d87 */ NULL, /* 6d88 */ NULL, /* 6d89 */ NULL, /* 6d8a */ NULL, /* 6d8b */ NULL, /* 6d8c */ NULL, /* 6d8d */ NULL, /* 6d8e */ NULL, /* 6d8f */ NULL, /* 6d90 */ NULL, /* 6d91 */ NULL, /* 6d92 */ NULL, /* 6d93 */ NULL, /* 6d94 */ NULL, /* 6d95 */ NULL, /* 6d96 */ NULL, /* 6d97 */ NULL, /* 6d98 */ NULL, /* 6d99 */ NULL, /* 6d9a */ NULL, /* 6d9b */ NULL, /* 6d9c */ NULL, /* 6d9d */ NULL, /* 6d9e */ NULL, /* 6d9f */ NULL, /* 6da0 */ NULL, /* 6da1 */ NULL, /* 6da2 */ NULL, /* 6da3 */ NULL, /* 6da4 */ NULL, /* 6da5 */ NULL, /* 6da6 */ NULL, /* 6da7 */ NULL, /* 6da8 */ NULL, /* 6da9 */ NULL, /* 6daa */ NULL, /* 6dab */ NULL, /* 6dac */ NULL, /* 6dad */ NULL, /* 6dae */ NULL, /* 6daf */ NULL, /* 6db0 */ NULL, /* 6db1 */ NULL, /* 6db2 */ NULL, /* 6db3 */ NULL, /* 6db4 */ NULL, /* 6db5 */ NULL, /* 6db6 */ NULL, /* 6db7 */ NULL, /* 6db8 */ NULL, /* 6db9 */ NULL, /* 6dba */ NULL, /* 6dbb */ NULL, /* 6dbc */ NULL, /* 6dbd */ NULL, /* 6dbe */ NULL, /* 6dbf */ NULL, /* 6dc0 */ NULL, /* 6dc1 */ NULL, /* 6dc2 */ NULL, /* 6dc3 */ NULL, /* 6dc4 */ NULL, /* 6dc5 */ NULL, /* 6dc6 */ NULL, /* 6dc7 */ NULL, /* 6dc8 */ NULL, /* 6dc9 */ NULL, /* 6dca */ NULL, /* 6dcb */ NULL, /* 6dcc */ NULL, /* 6dcd */ NULL, /* 6dce */ NULL, /* 6dcf */ NULL, /* 6dd0 */ NULL, /* 6dd1 */ NULL, /* 6dd2 */ NULL, /* 6dd3 */ NULL, /* 6dd4 */ NULL, /* 6dd5 */ NULL, /* 6dd6 */ NULL, /* 6dd7 */ NULL, /* 6dd8 */ NULL, /* 6dd9 */ NULL, /* 6dda */ NULL, /* 6ddb */ NULL, /* 6ddc */ NULL, /* 6ddd */ NULL, /* 6dde */ NULL, /* 6ddf */ NULL, /* 6de0 */ NULL, /* 6de1 */ NULL, /* 6de2 */ NULL, /* 6de3 */ NULL, /* 6de4 */ NULL, /* 6de5 */ NULL, /* 6de6 */ NULL, /* 6de7 */ NULL, /* 6de8 */ NULL, /* 6de9 */ NULL, /* 6dea */ NULL, /* 6deb */ NULL, /* 6dec */ NULL, /* 6ded */ NULL, /* 6dee */ NULL, /* 6def */ NULL, /* 6df0 */ NULL, /* 6df1 */ NULL, /* 6df2 */ NULL, /* 6df3 */ NULL, /* 6df4 */ NULL, /* 6df5 */ NULL, /* 6df6 */ NULL, /* 6df7 */ NULL, /* 6df8 */ NULL, /* 6df9 */ NULL, /* 6dfa */ NULL, /* 6dfb */ NULL, /* 6dfc */ NULL, /* 6dfd */ NULL, /* 6dfe */ NULL, /* 6dff */ NULL, /* 6e00 */ NULL, /* 6e01 */ NULL, /* 6e02 */ NULL, /* 6e03 */ NULL, /* 6e04 */ NULL, /* 6e05 */ NULL, /* 6e06 */ NULL, /* 6e07 */ NULL, /* 6e08 */ NULL, /* 6e09 */ NULL, /* 6e0a */ NULL, /* 6e0b */ NULL, /* 6e0c */ NULL, /* 6e0d */ NULL, /* 6e0e */ NULL, /* 6e0f */ NULL, /* 6e10 */ NULL, /* 6e11 */ NULL, /* 6e12 */ NULL, /* 6e13 */ NULL, /* 6e14 */ NULL, /* 6e15 */ NULL, /* 6e16 */ NULL, /* 6e17 */ NULL, /* 6e18 */ NULL, /* 6e19 */ NULL, /* 6e1a */ NULL, /* 6e1b */ NULL, /* 6e1c */ NULL, /* 6e1d */ NULL, /* 6e1e */ NULL, /* 6e1f */ NULL, /* 6e20 */ NULL, /* 6e21 */ NULL, /* 6e22 */ NULL, /* 6e23 */ NULL, /* 6e24 */ NULL, /* 6e25 */ NULL, /* 6e26 */ NULL, /* 6e27 */ NULL, /* 6e28 */ NULL, /* 6e29 */ NULL, /* 6e2a */ NULL, /* 6e2b */ NULL, /* 6e2c */ NULL, /* 6e2d */ NULL, /* 6e2e */ NULL, /* 6e2f */ NULL, /* 6e30 */ NULL, /* 6e31 */ NULL, /* 6e32 */ NULL, /* 6e33 */ NULL, /* 6e34 */ NULL, /* 6e35 */ NULL, /* 6e36 */ NULL, /* 6e37 */ NULL, /* 6e38 */ NULL, /* 6e39 */ NULL, /* 6e3a */ NULL, /* 6e3b */ NULL, /* 6e3c */ NULL, /* 6e3d */ NULL, /* 6e3e */ NULL, /* 6e3f */ NULL, /* 6e40 */ NULL, /* 6e41 */ NULL, /* 6e42 */ NULL, /* 6e43 */ NULL, /* 6e44 */ NULL, /* 6e45 */ NULL, /* 6e46 */ NULL, /* 6e47 */ NULL, /* 6e48 */ NULL, /* 6e49 */ NULL, /* 6e4a */ NULL, /* 6e4b */ NULL, /* 6e4c */ NULL, /* 6e4d */ NULL, /* 6e4e */ NULL, /* 6e4f */ NULL, /* 6e50 */ NULL, /* 6e51 */ NULL, /* 6e52 */ NULL, /* 6e53 */ NULL, /* 6e54 */ NULL, /* 6e55 */ NULL, /* 6e56 */ NULL, /* 6e57 */ NULL, /* 6e58 */ NULL, /* 6e59 */ NULL, /* 6e5a */ NULL, /* 6e5b */ NULL, /* 6e5c */ NULL, /* 6e5d */ NULL, /* 6e5e */ NULL, /* 6e5f */ NULL, /* 6e60 */ NULL, /* 6e61 */ NULL, /* 6e62 */ NULL, /* 6e63 */ NULL, /* 6e64 */ NULL, /* 6e65 */ NULL, /* 6e66 */ NULL, /* 6e67 */ NULL, /* 6e68 */ NULL, /* 6e69 */ NULL, /* 6e6a */ NULL, /* 6e6b */ NULL, /* 6e6c */ NULL, /* 6e6d */ NULL, /* 6e6e */ NULL, /* 6e6f */ NULL, /* 6e70 */ NULL, /* 6e71 */ NULL, /* 6e72 */ NULL, /* 6e73 */ NULL, /* 6e74 */ NULL, /* 6e75 */ NULL, /* 6e76 */ NULL, /* 6e77 */ NULL, /* 6e78 */ NULL, /* 6e79 */ NULL, /* 6e7a */ NULL, /* 6e7b */ NULL, /* 6e7c */ NULL, /* 6e7d */ NULL, /* 6e7e */ NULL, /* 6e7f */ NULL, /* 6e80 */ NULL, /* 6e81 */ NULL, /* 6e82 */ NULL, /* 6e83 */ NULL, /* 6e84 */ NULL, /* 6e85 */ NULL, /* 6e86 */ NULL, /* 6e87 */ NULL, /* 6e88 */ NULL, /* 6e89 */ NULL, /* 6e8a */ NULL, /* 6e8b */ NULL, /* 6e8c */ NULL, /* 6e8d */ NULL, /* 6e8e */ NULL, /* 6e8f */ NULL, /* 6e90 */ NULL, /* 6e91 */ NULL, /* 6e92 */ NULL, /* 6e93 */ NULL, /* 6e94 */ NULL, /* 6e95 */ NULL, /* 6e96 */ NULL, /* 6e97 */ NULL, /* 6e98 */ NULL, /* 6e99 */ NULL, /* 6e9a */ NULL, /* 6e9b */ NULL, /* 6e9c */ NULL, /* 6e9d */ NULL, /* 6e9e */ NULL, /* 6e9f */ NULL, /* 6ea0 */ NULL, /* 6ea1 */ NULL, /* 6ea2 */ NULL, /* 6ea3 */ NULL, /* 6ea4 */ NULL, /* 6ea5 */ NULL, /* 6ea6 */ NULL, /* 6ea7 */ NULL, /* 6ea8 */ NULL, /* 6ea9 */ NULL, /* 6eaa */ NULL, /* 6eab */ NULL, /* 6eac */ NULL, /* 6ead */ NULL, /* 6eae */ NULL, /* 6eaf */ NULL, /* 6eb0 */ NULL, /* 6eb1 */ NULL, /* 6eb2 */ NULL, /* 6eb3 */ NULL, /* 6eb4 */ NULL, /* 6eb5 */ NULL, /* 6eb6 */ NULL, /* 6eb7 */ NULL, /* 6eb8 */ NULL, /* 6eb9 */ NULL, /* 6eba */ NULL, /* 6ebb */ NULL, /* 6ebc */ NULL, /* 6ebd */ NULL, /* 6ebe */ NULL, /* 6ebf */ NULL, /* 6ec0 */ NULL, /* 6ec1 */ NULL, /* 6ec2 */ NULL, /* 6ec3 */ NULL, /* 6ec4 */ NULL, /* 6ec5 */ NULL, /* 6ec6 */ NULL, /* 6ec7 */ NULL, /* 6ec8 */ NULL, /* 6ec9 */ NULL, /* 6eca */ NULL, /* 6ecb */ NULL, /* 6ecc */ NULL, /* 6ecd */ NULL, /* 6ece */ NULL, /* 6ecf */ NULL, /* 6ed0 */ NULL, /* 6ed1 */ NULL, /* 6ed2 */ NULL, /* 6ed3 */ NULL, /* 6ed4 */ NULL, /* 6ed5 */ NULL, /* 6ed6 */ NULL, /* 6ed7 */ NULL, /* 6ed8 */ NULL, /* 6ed9 */ NULL, /* 6eda */ NULL, /* 6edb */ NULL, /* 6edc */ NULL, /* 6edd */ NULL, /* 6ede */ NULL, /* 6edf */ NULL, /* 6ee0 */ NULL, /* 6ee1 */ NULL, /* 6ee2 */ NULL, /* 6ee3 */ NULL, /* 6ee4 */ NULL, /* 6ee5 */ NULL, /* 6ee6 */ NULL, /* 6ee7 */ NULL, /* 6ee8 */ NULL, /* 6ee9 */ NULL, /* 6eea */ NULL, /* 6eeb */ NULL, /* 6eec */ NULL, /* 6eed */ NULL, /* 6eee */ NULL, /* 6eef */ NULL, /* 6ef0 */ NULL, /* 6ef1 */ NULL, /* 6ef2 */ NULL, /* 6ef3 */ NULL, /* 6ef4 */ NULL, /* 6ef5 */ NULL, /* 6ef6 */ NULL, /* 6ef7 */ NULL, /* 6ef8 */ NULL, /* 6ef9 */ NULL, /* 6efa */ NULL, /* 6efb */ NULL, /* 6efc */ NULL, /* 6efd */ NULL, /* 6efe */ NULL, /* 6eff */ NULL, /* 6f00 */ NULL, /* 6f01 */ NULL, /* 6f02 */ NULL, /* 6f03 */ NULL, /* 6f04 */ NULL, /* 6f05 */ NULL, /* 6f06 */ NULL, /* 6f07 */ NULL, /* 6f08 */ NULL, /* 6f09 */ NULL, /* 6f0a */ NULL, /* 6f0b */ NULL, /* 6f0c */ NULL, /* 6f0d */ NULL, /* 6f0e */ NULL, /* 6f0f */ NULL, /* 6f10 */ NULL, /* 6f11 */ NULL, /* 6f12 */ NULL, /* 6f13 */ NULL, /* 6f14 */ NULL, /* 6f15 */ NULL, /* 6f16 */ NULL, /* 6f17 */ NULL, /* 6f18 */ NULL, /* 6f19 */ NULL, /* 6f1a */ NULL, /* 6f1b */ NULL, /* 6f1c */ NULL, /* 6f1d */ NULL, /* 6f1e */ NULL, /* 6f1f */ NULL, /* 6f20 */ NULL, /* 6f21 */ NULL, /* 6f22 */ NULL, /* 6f23 */ NULL, /* 6f24 */ NULL, /* 6f25 */ NULL, /* 6f26 */ NULL, /* 6f27 */ NULL, /* 6f28 */ NULL, /* 6f29 */ NULL, /* 6f2a */ NULL, /* 6f2b */ NULL, /* 6f2c */ NULL, /* 6f2d */ NULL, /* 6f2e */ NULL, /* 6f2f */ NULL, /* 6f30 */ NULL, /* 6f31 */ NULL, /* 6f32 */ NULL, /* 6f33 */ NULL, /* 6f34 */ NULL, /* 6f35 */ NULL, /* 6f36 */ NULL, /* 6f37 */ NULL, /* 6f38 */ NULL, /* 6f39 */ NULL, /* 6f3a */ NULL, /* 6f3b */ NULL, /* 6f3c */ NULL, /* 6f3d */ NULL, /* 6f3e */ NULL, /* 6f3f */ NULL, /* 6f40 */ NULL, /* 6f41 */ NULL, /* 6f42 */ NULL, /* 6f43 */ NULL, /* 6f44 */ NULL, /* 6f45 */ NULL, /* 6f46 */ NULL, /* 6f47 */ NULL, /* 6f48 */ NULL, /* 6f49 */ NULL, /* 6f4a */ NULL, /* 6f4b */ NULL, /* 6f4c */ NULL, /* 6f4d */ NULL, /* 6f4e */ NULL, /* 6f4f */ NULL, /* 6f50 */ NULL, /* 6f51 */ NULL, /* 6f52 */ NULL, /* 6f53 */ NULL, /* 6f54 */ NULL, /* 6f55 */ NULL, /* 6f56 */ NULL, /* 6f57 */ NULL, /* 6f58 */ NULL, /* 6f59 */ NULL, /* 6f5a */ NULL, /* 6f5b */ NULL, /* 6f5c */ NULL, /* 6f5d */ NULL, /* 6f5e */ NULL, /* 6f5f */ NULL, /* 6f60 */ NULL, /* 6f61 */ NULL, /* 6f62 */ NULL, /* 6f63 */ NULL, /* 6f64 */ NULL, /* 6f65 */ NULL, /* 6f66 */ NULL, /* 6f67 */ NULL, /* 6f68 */ NULL, /* 6f69 */ NULL, /* 6f6a */ NULL, /* 6f6b */ NULL, /* 6f6c */ NULL, /* 6f6d */ NULL, /* 6f6e */ NULL, /* 6f6f */ NULL, /* 6f70 */ NULL, /* 6f71 */ NULL, /* 6f72 */ NULL, /* 6f73 */ NULL, /* 6f74 */ NULL, /* 6f75 */ NULL, /* 6f76 */ NULL, /* 6f77 */ NULL, /* 6f78 */ NULL, /* 6f79 */ NULL, /* 6f7a */ NULL, /* 6f7b */ NULL, /* 6f7c */ NULL, /* 6f7d */ NULL, /* 6f7e */ NULL, /* 6f7f */ NULL, /* 6f80 */ NULL, /* 6f81 */ NULL, /* 6f82 */ NULL, /* 6f83 */ NULL, /* 6f84 */ NULL, /* 6f85 */ NULL, /* 6f86 */ NULL, /* 6f87 */ NULL, /* 6f88 */ NULL, /* 6f89 */ NULL, /* 6f8a */ NULL, /* 6f8b */ NULL, /* 6f8c */ NULL, /* 6f8d */ NULL, /* 6f8e */ NULL, /* 6f8f */ NULL, /* 6f90 */ NULL, /* 6f91 */ NULL, /* 6f92 */ NULL, /* 6f93 */ NULL, /* 6f94 */ NULL, /* 6f95 */ NULL, /* 6f96 */ NULL, /* 6f97 */ NULL, /* 6f98 */ NULL, /* 6f99 */ NULL, /* 6f9a */ NULL, /* 6f9b */ NULL, /* 6f9c */ NULL, /* 6f9d */ NULL, /* 6f9e */ NULL, /* 6f9f */ NULL, /* 6fa0 */ NULL, /* 6fa1 */ NULL, /* 6fa2 */ NULL, /* 6fa3 */ NULL, /* 6fa4 */ NULL, /* 6fa5 */ NULL, /* 6fa6 */ NULL, /* 6fa7 */ NULL, /* 6fa8 */ NULL, /* 6fa9 */ NULL, /* 6faa */ NULL, /* 6fab */ NULL, /* 6fac */ NULL, /* 6fad */ NULL, /* 6fae */ NULL, /* 6faf */ NULL, /* 6fb0 */ NULL, /* 6fb1 */ NULL, /* 6fb2 */ NULL, /* 6fb3 */ NULL, /* 6fb4 */ NULL, /* 6fb5 */ NULL, /* 6fb6 */ NULL, /* 6fb7 */ NULL, /* 6fb8 */ NULL, /* 6fb9 */ NULL, /* 6fba */ NULL, /* 6fbb */ NULL, /* 6fbc */ NULL, /* 6fbd */ NULL, /* 6fbe */ NULL, /* 6fbf */ NULL, /* 6fc0 */ NULL, /* 6fc1 */ NULL, /* 6fc2 */ NULL, /* 6fc3 */ NULL, /* 6fc4 */ NULL, /* 6fc5 */ NULL, /* 6fc6 */ NULL, /* 6fc7 */ NULL, /* 6fc8 */ NULL, /* 6fc9 */ NULL, /* 6fca */ NULL, /* 6fcb */ NULL, /* 6fcc */ NULL, /* 6fcd */ NULL, /* 6fce */ NULL, /* 6fcf */ NULL, /* 6fd0 */ NULL, /* 6fd1 */ NULL, /* 6fd2 */ NULL, /* 6fd3 */ NULL, /* 6fd4 */ NULL, /* 6fd5 */ NULL, /* 6fd6 */ NULL, /* 6fd7 */ NULL, /* 6fd8 */ NULL, /* 6fd9 */ NULL, /* 6fda */ NULL, /* 6fdb */ NULL, /* 6fdc */ NULL, /* 6fdd */ NULL, /* 6fde */ NULL, /* 6fdf */ NULL, /* 6fe0 */ NULL, /* 6fe1 */ NULL, /* 6fe2 */ NULL, /* 6fe3 */ NULL, /* 6fe4 */ NULL, /* 6fe5 */ NULL, /* 6fe6 */ NULL, /* 6fe7 */ NULL, /* 6fe8 */ NULL, /* 6fe9 */ NULL, /* 6fea */ NULL, /* 6feb */ NULL, /* 6fec */ NULL, /* 6fed */ NULL, /* 6fee */ NULL, /* 6fef */ NULL, /* 6ff0 */ NULL, /* 6ff1 */ NULL, /* 6ff2 */ NULL, /* 6ff3 */ NULL, /* 6ff4 */ NULL, /* 6ff5 */ NULL, /* 6ff6 */ NULL, /* 6ff7 */ NULL, /* 6ff8 */ NULL, /* 6ff9 */ NULL, /* 6ffa */ NULL, /* 6ffb */ NULL, /* 6ffc */ NULL, /* 6ffd */ NULL, /* 6ffe */ NULL, /* 6fff */ NULL, /* 7000 */ NULL, /* 7001 */ NULL, /* 7002 */ NULL, /* 7003 */ NULL, /* 7004 */ NULL, /* 7005 */ NULL, /* 7006 */ NULL, /* 7007 */ NULL, /* 7008 */ NULL, /* 7009 */ NULL, /* 700a */ NULL, /* 700b */ NULL, /* 700c */ NULL, /* 700d */ NULL, /* 700e */ NULL, /* 700f */ NULL, /* 7010 */ NULL, /* 7011 */ NULL, /* 7012 */ NULL, /* 7013 */ NULL, /* 7014 */ NULL, /* 7015 */ NULL, /* 7016 */ NULL, /* 7017 */ NULL, /* 7018 */ NULL, /* 7019 */ NULL, /* 701a */ NULL, /* 701b */ NULL, /* 701c */ NULL, /* 701d */ NULL, /* 701e */ NULL, /* 701f */ NULL, /* 7020 */ NULL, /* 7021 */ NULL, /* 7022 */ NULL, /* 7023 */ NULL, /* 7024 */ NULL, /* 7025 */ NULL, /* 7026 */ NULL, /* 7027 */ NULL, /* 7028 */ NULL, /* 7029 */ NULL, /* 702a */ NULL, /* 702b */ NULL, /* 702c */ NULL, /* 702d */ NULL, /* 702e */ NULL, /* 702f */ NULL, /* 7030 */ NULL, /* 7031 */ NULL, /* 7032 */ NULL, /* 7033 */ NULL, /* 7034 */ NULL, /* 7035 */ NULL, /* 7036 */ NULL, /* 7037 */ NULL, /* 7038 */ NULL, /* 7039 */ NULL, /* 703a */ NULL, /* 703b */ NULL, /* 703c */ NULL, /* 703d */ NULL, /* 703e */ NULL, /* 703f */ NULL, /* 7040 */ NULL, /* 7041 */ NULL, /* 7042 */ NULL, /* 7043 */ NULL, /* 7044 */ NULL, /* 7045 */ NULL, /* 7046 */ NULL, /* 7047 */ NULL, /* 7048 */ NULL, /* 7049 */ NULL, /* 704a */ NULL, /* 704b */ NULL, /* 704c */ NULL, /* 704d */ NULL, /* 704e */ NULL, /* 704f */ NULL, /* 7050 */ NULL, /* 7051 */ NULL, /* 7052 */ NULL, /* 7053 */ NULL, /* 7054 */ NULL, /* 7055 */ NULL, /* 7056 */ NULL, /* 7057 */ NULL, /* 7058 */ NULL, /* 7059 */ NULL, /* 705a */ NULL, /* 705b */ NULL, /* 705c */ NULL, /* 705d */ NULL, /* 705e */ NULL, /* 705f */ NULL, /* 7060 */ NULL, /* 7061 */ NULL, /* 7062 */ NULL, /* 7063 */ NULL, /* 7064 */ NULL, /* 7065 */ NULL, /* 7066 */ NULL, /* 7067 */ NULL, /* 7068 */ NULL, /* 7069 */ NULL, /* 706a */ NULL, /* 706b */ NULL, /* 706c */ NULL, /* 706d */ NULL, /* 706e */ NULL, /* 706f */ NULL, /* 7070 */ NULL, /* 7071 */ NULL, /* 7072 */ NULL, /* 7073 */ NULL, /* 7074 */ NULL, /* 7075 */ NULL, /* 7076 */ NULL, /* 7077 */ NULL, /* 7078 */ NULL, /* 7079 */ NULL, /* 707a */ NULL, /* 707b */ NULL, /* 707c */ NULL, /* 707d */ NULL, /* 707e */ NULL, /* 707f */ NULL, /* 7080 */ NULL, /* 7081 */ NULL, /* 7082 */ NULL, /* 7083 */ NULL, /* 7084 */ NULL, /* 7085 */ NULL, /* 7086 */ NULL, /* 7087 */ NULL, /* 7088 */ NULL, /* 7089 */ NULL, /* 708a */ NULL, /* 708b */ NULL, /* 708c */ NULL, /* 708d */ NULL, /* 708e */ NULL, /* 708f */ NULL, /* 7090 */ NULL, /* 7091 */ NULL, /* 7092 */ NULL, /* 7093 */ NULL, /* 7094 */ NULL, /* 7095 */ NULL, /* 7096 */ NULL, /* 7097 */ NULL, /* 7098 */ NULL, /* 7099 */ NULL, /* 709a */ NULL, /* 709b */ NULL, /* 709c */ NULL, /* 709d */ NULL, /* 709e */ NULL, /* 709f */ NULL, /* 70a0 */ NULL, /* 70a1 */ NULL, /* 70a2 */ NULL, /* 70a3 */ NULL, /* 70a4 */ NULL, /* 70a5 */ NULL, /* 70a6 */ NULL, /* 70a7 */ NULL, /* 70a8 */ NULL, /* 70a9 */ NULL, /* 70aa */ NULL, /* 70ab */ NULL, /* 70ac */ NULL, /* 70ad */ NULL, /* 70ae */ NULL, /* 70af */ NULL, /* 70b0 */ NULL, /* 70b1 */ NULL, /* 70b2 */ NULL, /* 70b3 */ NULL, /* 70b4 */ NULL, /* 70b5 */ NULL, /* 70b6 */ NULL, /* 70b7 */ NULL, /* 70b8 */ NULL, /* 70b9 */ NULL, /* 70ba */ NULL, /* 70bb */ NULL, /* 70bc */ NULL, /* 70bd */ NULL, /* 70be */ NULL, /* 70bf */ NULL, /* 70c0 */ NULL, /* 70c1 */ NULL, /* 70c2 */ NULL, /* 70c3 */ NULL, /* 70c4 */ NULL, /* 70c5 */ NULL, /* 70c6 */ NULL, /* 70c7 */ NULL, /* 70c8 */ NULL, /* 70c9 */ NULL, /* 70ca */ NULL, /* 70cb */ NULL, /* 70cc */ NULL, /* 70cd */ NULL, /* 70ce */ NULL, /* 70cf */ NULL, /* 70d0 */ NULL, /* 70d1 */ NULL, /* 70d2 */ NULL, /* 70d3 */ NULL, /* 70d4 */ NULL, /* 70d5 */ NULL, /* 70d6 */ NULL, /* 70d7 */ NULL, /* 70d8 */ NULL, /* 70d9 */ NULL, /* 70da */ NULL, /* 70db */ NULL, /* 70dc */ NULL, /* 70dd */ NULL, /* 70de */ NULL, /* 70df */ NULL, /* 70e0 */ NULL, /* 70e1 */ NULL, /* 70e2 */ NULL, /* 70e3 */ NULL, /* 70e4 */ NULL, /* 70e5 */ NULL, /* 70e6 */ NULL, /* 70e7 */ NULL, /* 70e8 */ NULL, /* 70e9 */ NULL, /* 70ea */ NULL, /* 70eb */ NULL, /* 70ec */ NULL, /* 70ed */ NULL, /* 70ee */ NULL, /* 70ef */ NULL, /* 70f0 */ NULL, /* 70f1 */ NULL, /* 70f2 */ NULL, /* 70f3 */ NULL, /* 70f4 */ NULL, /* 70f5 */ NULL, /* 70f6 */ NULL, /* 70f7 */ NULL, /* 70f8 */ NULL, /* 70f9 */ NULL, /* 70fa */ NULL, /* 70fb */ NULL, /* 70fc */ NULL, /* 70fd */ NULL, /* 70fe */ NULL, /* 70ff */ NULL, /* 7100 */ NULL, /* 7101 */ NULL, /* 7102 */ NULL, /* 7103 */ NULL, /* 7104 */ NULL, /* 7105 */ NULL, /* 7106 */ NULL, /* 7107 */ NULL, /* 7108 */ NULL, /* 7109 */ NULL, /* 710a */ NULL, /* 710b */ NULL, /* 710c */ NULL, /* 710d */ NULL, /* 710e */ NULL, /* 710f */ NULL, /* 7110 */ NULL, /* 7111 */ NULL, /* 7112 */ NULL, /* 7113 */ NULL, /* 7114 */ NULL, /* 7115 */ NULL, /* 7116 */ NULL, /* 7117 */ NULL, /* 7118 */ NULL, /* 7119 */ NULL, /* 711a */ NULL, /* 711b */ NULL, /* 711c */ NULL, /* 711d */ NULL, /* 711e */ NULL, /* 711f */ NULL, /* 7120 */ NULL, /* 7121 */ NULL, /* 7122 */ NULL, /* 7123 */ NULL, /* 7124 */ NULL, /* 7125 */ NULL, /* 7126 */ NULL, /* 7127 */ NULL, /* 7128 */ NULL, /* 7129 */ NULL, /* 712a */ NULL, /* 712b */ NULL, /* 712c */ NULL, /* 712d */ NULL, /* 712e */ NULL, /* 712f */ NULL, /* 7130 */ NULL, /* 7131 */ NULL, /* 7132 */ NULL, /* 7133 */ NULL, /* 7134 */ NULL, /* 7135 */ NULL, /* 7136 */ NULL, /* 7137 */ NULL, /* 7138 */ NULL, /* 7139 */ NULL, /* 713a */ NULL, /* 713b */ NULL, /* 713c */ NULL, /* 713d */ NULL, /* 713e */ NULL, /* 713f */ NULL, /* 7140 */ NULL, /* 7141 */ NULL, /* 7142 */ NULL, /* 7143 */ NULL, /* 7144 */ NULL, /* 7145 */ NULL, /* 7146 */ NULL, /* 7147 */ NULL, /* 7148 */ NULL, /* 7149 */ NULL, /* 714a */ NULL, /* 714b */ NULL, /* 714c */ NULL, /* 714d */ NULL, /* 714e */ NULL, /* 714f */ NULL, /* 7150 */ NULL, /* 7151 */ NULL, /* 7152 */ NULL, /* 7153 */ NULL, /* 7154 */ NULL, /* 7155 */ NULL, /* 7156 */ NULL, /* 7157 */ NULL, /* 7158 */ NULL, /* 7159 */ NULL, /* 715a */ NULL, /* 715b */ NULL, /* 715c */ NULL, /* 715d */ NULL, /* 715e */ NULL, /* 715f */ NULL, /* 7160 */ NULL, /* 7161 */ NULL, /* 7162 */ NULL, /* 7163 */ NULL, /* 7164 */ NULL, /* 7165 */ NULL, /* 7166 */ NULL, /* 7167 */ NULL, /* 7168 */ NULL, /* 7169 */ NULL, /* 716a */ NULL, /* 716b */ NULL, /* 716c */ NULL, /* 716d */ NULL, /* 716e */ NULL, /* 716f */ NULL, /* 7170 */ NULL, /* 7171 */ NULL, /* 7172 */ NULL, /* 7173 */ NULL, /* 7174 */ NULL, /* 7175 */ NULL, /* 7176 */ NULL, /* 7177 */ NULL, /* 7178 */ NULL, /* 7179 */ NULL, /* 717a */ NULL, /* 717b */ NULL, /* 717c */ NULL, /* 717d */ NULL, /* 717e */ NULL, /* 717f */ NULL, /* 7180 */ NULL, /* 7181 */ NULL, /* 7182 */ NULL, /* 7183 */ NULL, /* 7184 */ NULL, /* 7185 */ NULL, /* 7186 */ NULL, /* 7187 */ NULL, /* 7188 */ NULL, /* 7189 */ NULL, /* 718a */ NULL, /* 718b */ NULL, /* 718c */ NULL, /* 718d */ NULL, /* 718e */ NULL, /* 718f */ NULL, /* 7190 */ NULL, /* 7191 */ NULL, /* 7192 */ NULL, /* 7193 */ NULL, /* 7194 */ NULL, /* 7195 */ NULL, /* 7196 */ NULL, /* 7197 */ NULL, /* 7198 */ NULL, /* 7199 */ NULL, /* 719a */ NULL, /* 719b */ NULL, /* 719c */ NULL, /* 719d */ NULL, /* 719e */ NULL, /* 719f */ NULL, /* 71a0 */ NULL, /* 71a1 */ NULL, /* 71a2 */ NULL, /* 71a3 */ NULL, /* 71a4 */ NULL, /* 71a5 */ NULL, /* 71a6 */ NULL, /* 71a7 */ NULL, /* 71a8 */ NULL, /* 71a9 */ NULL, /* 71aa */ NULL, /* 71ab */ NULL, /* 71ac */ NULL, /* 71ad */ NULL, /* 71ae */ NULL, /* 71af */ NULL, /* 71b0 */ NULL, /* 71b1 */ NULL, /* 71b2 */ NULL, /* 71b3 */ NULL, /* 71b4 */ NULL, /* 71b5 */ NULL, /* 71b6 */ NULL, /* 71b7 */ NULL, /* 71b8 */ NULL, /* 71b9 */ NULL, /* 71ba */ NULL, /* 71bb */ NULL, /* 71bc */ NULL, /* 71bd */ NULL, /* 71be */ NULL, /* 71bf */ NULL, /* 71c0 */ NULL, /* 71c1 */ NULL, /* 71c2 */ NULL, /* 71c3 */ NULL, /* 71c4 */ NULL, /* 71c5 */ NULL, /* 71c6 */ NULL, /* 71c7 */ NULL, /* 71c8 */ NULL, /* 71c9 */ NULL, /* 71ca */ NULL, /* 71cb */ NULL, /* 71cc */ NULL, /* 71cd */ NULL, /* 71ce */ NULL, /* 71cf */ NULL, /* 71d0 */ NULL, /* 71d1 */ NULL, /* 71d2 */ NULL, /* 71d3 */ NULL, /* 71d4 */ NULL, /* 71d5 */ NULL, /* 71d6 */ NULL, /* 71d7 */ NULL, /* 71d8 */ NULL, /* 71d9 */ NULL, /* 71da */ NULL, /* 71db */ NULL, /* 71dc */ NULL, /* 71dd */ NULL, /* 71de */ NULL, /* 71df */ NULL, /* 71e0 */ NULL, /* 71e1 */ NULL, /* 71e2 */ NULL, /* 71e3 */ NULL, /* 71e4 */ NULL, /* 71e5 */ NULL, /* 71e6 */ NULL, /* 71e7 */ NULL, /* 71e8 */ NULL, /* 71e9 */ NULL, /* 71ea */ NULL, /* 71eb */ NULL, /* 71ec */ NULL, /* 71ed */ NULL, /* 71ee */ NULL, /* 71ef */ NULL, /* 71f0 */ NULL, /* 71f1 */ NULL, /* 71f2 */ NULL, /* 71f3 */ NULL, /* 71f4 */ NULL, /* 71f5 */ NULL, /* 71f6 */ NULL, /* 71f7 */ NULL, /* 71f8 */ NULL, /* 71f9 */ NULL, /* 71fa */ NULL, /* 71fb */ NULL, /* 71fc */ NULL, /* 71fd */ NULL, /* 71fe */ NULL, /* 71ff */ NULL, /* 7200 */ NULL, /* 7201 */ NULL, /* 7202 */ NULL, /* 7203 */ NULL, /* 7204 */ NULL, /* 7205 */ NULL, /* 7206 */ NULL, /* 7207 */ NULL, /* 7208 */ NULL, /* 7209 */ NULL, /* 720a */ NULL, /* 720b */ NULL, /* 720c */ NULL, /* 720d */ NULL, /* 720e */ NULL, /* 720f */ NULL, /* 7210 */ NULL, /* 7211 */ NULL, /* 7212 */ NULL, /* 7213 */ NULL, /* 7214 */ NULL, /* 7215 */ NULL, /* 7216 */ NULL, /* 7217 */ NULL, /* 7218 */ NULL, /* 7219 */ NULL, /* 721a */ NULL, /* 721b */ NULL, /* 721c */ NULL, /* 721d */ NULL, /* 721e */ NULL, /* 721f */ NULL, /* 7220 */ NULL, /* 7221 */ NULL, /* 7222 */ NULL, /* 7223 */ NULL, /* 7224 */ NULL, /* 7225 */ NULL, /* 7226 */ NULL, /* 7227 */ NULL, /* 7228 */ NULL, /* 7229 */ NULL, /* 722a */ NULL, /* 722b */ NULL, /* 722c */ NULL, /* 722d */ NULL, /* 722e */ NULL, /* 722f */ NULL, /* 7230 */ NULL, /* 7231 */ NULL, /* 7232 */ NULL, /* 7233 */ NULL, /* 7234 */ NULL, /* 7235 */ NULL, /* 7236 */ NULL, /* 7237 */ NULL, /* 7238 */ NULL, /* 7239 */ NULL, /* 723a */ NULL, /* 723b */ NULL, /* 723c */ NULL, /* 723d */ NULL, /* 723e */ NULL, /* 723f */ NULL, /* 7240 */ NULL, /* 7241 */ NULL, /* 7242 */ NULL, /* 7243 */ NULL, /* 7244 */ NULL, /* 7245 */ NULL, /* 7246 */ NULL, /* 7247 */ NULL, /* 7248 */ NULL, /* 7249 */ NULL, /* 724a */ NULL, /* 724b */ NULL, /* 724c */ NULL, /* 724d */ NULL, /* 724e */ NULL, /* 724f */ NULL, /* 7250 */ NULL, /* 7251 */ NULL, /* 7252 */ NULL, /* 7253 */ NULL, /* 7254 */ NULL, /* 7255 */ NULL, /* 7256 */ NULL, /* 7257 */ NULL, /* 7258 */ NULL, /* 7259 */ NULL, /* 725a */ NULL, /* 725b */ NULL, /* 725c */ NULL, /* 725d */ NULL, /* 725e */ NULL, /* 725f */ NULL, /* 7260 */ NULL, /* 7261 */ NULL, /* 7262 */ NULL, /* 7263 */ NULL, /* 7264 */ NULL, /* 7265 */ NULL, /* 7266 */ NULL, /* 7267 */ NULL, /* 7268 */ NULL, /* 7269 */ NULL, /* 726a */ NULL, /* 726b */ NULL, /* 726c */ NULL, /* 726d */ NULL, /* 726e */ NULL, /* 726f */ NULL, /* 7270 */ NULL, /* 7271 */ NULL, /* 7272 */ NULL, /* 7273 */ NULL, /* 7274 */ NULL, /* 7275 */ NULL, /* 7276 */ NULL, /* 7277 */ NULL, /* 7278 */ NULL, /* 7279 */ NULL, /* 727a */ NULL, /* 727b */ NULL, /* 727c */ NULL, /* 727d */ NULL, /* 727e */ NULL, /* 727f */ NULL, /* 7280 */ NULL, /* 7281 */ NULL, /* 7282 */ NULL, /* 7283 */ NULL, /* 7284 */ NULL, /* 7285 */ NULL, /* 7286 */ NULL, /* 7287 */ NULL, /* 7288 */ NULL, /* 7289 */ NULL, /* 728a */ NULL, /* 728b */ NULL, /* 728c */ NULL, /* 728d */ NULL, /* 728e */ NULL, /* 728f */ NULL, /* 7290 */ NULL, /* 7291 */ NULL, /* 7292 */ NULL, /* 7293 */ NULL, /* 7294 */ NULL, /* 7295 */ NULL, /* 7296 */ NULL, /* 7297 */ NULL, /* 7298 */ NULL, /* 7299 */ NULL, /* 729a */ NULL, /* 729b */ NULL, /* 729c */ NULL, /* 729d */ NULL, /* 729e */ NULL, /* 729f */ NULL, /* 72a0 */ NULL, /* 72a1 */ NULL, /* 72a2 */ NULL, /* 72a3 */ NULL, /* 72a4 */ NULL, /* 72a5 */ NULL, /* 72a6 */ NULL, /* 72a7 */ NULL, /* 72a8 */ NULL, /* 72a9 */ NULL, /* 72aa */ NULL, /* 72ab */ NULL, /* 72ac */ NULL, /* 72ad */ NULL, /* 72ae */ NULL, /* 72af */ NULL, /* 72b0 */ NULL, /* 72b1 */ NULL, /* 72b2 */ NULL, /* 72b3 */ NULL, /* 72b4 */ NULL, /* 72b5 */ NULL, /* 72b6 */ NULL, /* 72b7 */ NULL, /* 72b8 */ NULL, /* 72b9 */ NULL, /* 72ba */ NULL, /* 72bb */ NULL, /* 72bc */ NULL, /* 72bd */ NULL, /* 72be */ NULL, /* 72bf */ NULL, /* 72c0 */ NULL, /* 72c1 */ NULL, /* 72c2 */ NULL, /* 72c3 */ NULL, /* 72c4 */ NULL, /* 72c5 */ NULL, /* 72c6 */ NULL, /* 72c7 */ NULL, /* 72c8 */ NULL, /* 72c9 */ NULL, /* 72ca */ NULL, /* 72cb */ NULL, /* 72cc */ NULL, /* 72cd */ NULL, /* 72ce */ NULL, /* 72cf */ NULL, /* 72d0 */ NULL, /* 72d1 */ NULL, /* 72d2 */ NULL, /* 72d3 */ NULL, /* 72d4 */ NULL, /* 72d5 */ NULL, /* 72d6 */ NULL, /* 72d7 */ NULL, /* 72d8 */ NULL, /* 72d9 */ NULL, /* 72da */ NULL, /* 72db */ NULL, /* 72dc */ NULL, /* 72dd */ NULL, /* 72de */ NULL, /* 72df */ NULL, /* 72e0 */ NULL, /* 72e1 */ NULL, /* 72e2 */ NULL, /* 72e3 */ NULL, /* 72e4 */ NULL, /* 72e5 */ NULL, /* 72e6 */ NULL, /* 72e7 */ NULL, /* 72e8 */ NULL, /* 72e9 */ NULL, /* 72ea */ NULL, /* 72eb */ NULL, /* 72ec */ NULL, /* 72ed */ NULL, /* 72ee */ NULL, /* 72ef */ NULL, /* 72f0 */ NULL, /* 72f1 */ NULL, /* 72f2 */ NULL, /* 72f3 */ NULL, /* 72f4 */ NULL, /* 72f5 */ NULL, /* 72f6 */ NULL, /* 72f7 */ NULL, /* 72f8 */ NULL, /* 72f9 */ NULL, /* 72fa */ NULL, /* 72fb */ NULL, /* 72fc */ NULL, /* 72fd */ NULL, /* 72fe */ NULL, /* 72ff */ NULL, /* 7300 */ NULL, /* 7301 */ NULL, /* 7302 */ NULL, /* 7303 */ NULL, /* 7304 */ NULL, /* 7305 */ NULL, /* 7306 */ NULL, /* 7307 */ NULL, /* 7308 */ NULL, /* 7309 */ NULL, /* 730a */ NULL, /* 730b */ NULL, /* 730c */ NULL, /* 730d */ NULL, /* 730e */ NULL, /* 730f */ NULL, /* 7310 */ NULL, /* 7311 */ NULL, /* 7312 */ NULL, /* 7313 */ NULL, /* 7314 */ NULL, /* 7315 */ NULL, /* 7316 */ NULL, /* 7317 */ NULL, /* 7318 */ NULL, /* 7319 */ NULL, /* 731a */ NULL, /* 731b */ NULL, /* 731c */ NULL, /* 731d */ NULL, /* 731e */ NULL, /* 731f */ NULL, /* 7320 */ NULL, /* 7321 */ NULL, /* 7322 */ NULL, /* 7323 */ NULL, /* 7324 */ NULL, /* 7325 */ NULL, /* 7326 */ NULL, /* 7327 */ NULL, /* 7328 */ NULL, /* 7329 */ NULL, /* 732a */ NULL, /* 732b */ NULL, /* 732c */ NULL, /* 732d */ NULL, /* 732e */ NULL, /* 732f */ NULL, /* 7330 */ NULL, /* 7331 */ NULL, /* 7332 */ NULL, /* 7333 */ NULL, /* 7334 */ NULL, /* 7335 */ NULL, /* 7336 */ NULL, /* 7337 */ NULL, /* 7338 */ NULL, /* 7339 */ NULL, /* 733a */ NULL, /* 733b */ NULL, /* 733c */ NULL, /* 733d */ NULL, /* 733e */ NULL, /* 733f */ NULL, /* 7340 */ NULL, /* 7341 */ NULL, /* 7342 */ NULL, /* 7343 */ NULL, /* 7344 */ NULL, /* 7345 */ NULL, /* 7346 */ NULL, /* 7347 */ NULL, /* 7348 */ NULL, /* 7349 */ NULL, /* 734a */ NULL, /* 734b */ NULL, /* 734c */ NULL, /* 734d */ NULL, /* 734e */ NULL, /* 734f */ NULL, /* 7350 */ NULL, /* 7351 */ NULL, /* 7352 */ NULL, /* 7353 */ NULL, /* 7354 */ NULL, /* 7355 */ NULL, /* 7356 */ NULL, /* 7357 */ NULL, /* 7358 */ NULL, /* 7359 */ NULL, /* 735a */ NULL, /* 735b */ NULL, /* 735c */ NULL, /* 735d */ NULL, /* 735e */ NULL, /* 735f */ NULL, /* 7360 */ NULL, /* 7361 */ NULL, /* 7362 */ NULL, /* 7363 */ NULL, /* 7364 */ NULL, /* 7365 */ NULL, /* 7366 */ NULL, /* 7367 */ NULL, /* 7368 */ NULL, /* 7369 */ NULL, /* 736a */ NULL, /* 736b */ NULL, /* 736c */ NULL, /* 736d */ NULL, /* 736e */ NULL, /* 736f */ NULL, /* 7370 */ NULL, /* 7371 */ NULL, /* 7372 */ NULL, /* 7373 */ NULL, /* 7374 */ NULL, /* 7375 */ NULL, /* 7376 */ NULL, /* 7377 */ NULL, /* 7378 */ NULL, /* 7379 */ NULL, /* 737a */ NULL, /* 737b */ NULL, /* 737c */ NULL, /* 737d */ NULL, /* 737e */ NULL, /* 737f */ NULL, /* 7380 */ NULL, /* 7381 */ NULL, /* 7382 */ NULL, /* 7383 */ NULL, /* 7384 */ NULL, /* 7385 */ NULL, /* 7386 */ NULL, /* 7387 */ NULL, /* 7388 */ NULL, /* 7389 */ NULL, /* 738a */ NULL, /* 738b */ NULL, /* 738c */ NULL, /* 738d */ NULL, /* 738e */ NULL, /* 738f */ NULL, /* 7390 */ NULL, /* 7391 */ NULL, /* 7392 */ NULL, /* 7393 */ NULL, /* 7394 */ NULL, /* 7395 */ NULL, /* 7396 */ NULL, /* 7397 */ NULL, /* 7398 */ NULL, /* 7399 */ NULL, /* 739a */ NULL, /* 739b */ NULL, /* 739c */ NULL, /* 739d */ NULL, /* 739e */ NULL, /* 739f */ NULL, /* 73a0 */ NULL, /* 73a1 */ NULL, /* 73a2 */ NULL, /* 73a3 */ NULL, /* 73a4 */ NULL, /* 73a5 */ NULL, /* 73a6 */ NULL, /* 73a7 */ NULL, /* 73a8 */ NULL, /* 73a9 */ NULL, /* 73aa */ NULL, /* 73ab */ NULL, /* 73ac */ NULL, /* 73ad */ NULL, /* 73ae */ NULL, /* 73af */ NULL, /* 73b0 */ NULL, /* 73b1 */ NULL, /* 73b2 */ NULL, /* 73b3 */ NULL, /* 73b4 */ NULL, /* 73b5 */ NULL, /* 73b6 */ NULL, /* 73b7 */ NULL, /* 73b8 */ NULL, /* 73b9 */ NULL, /* 73ba */ NULL, /* 73bb */ NULL, /* 73bc */ NULL, /* 73bd */ NULL, /* 73be */ NULL, /* 73bf */ NULL, /* 73c0 */ NULL, /* 73c1 */ NULL, /* 73c2 */ NULL, /* 73c3 */ NULL, /* 73c4 */ NULL, /* 73c5 */ NULL, /* 73c6 */ NULL, /* 73c7 */ NULL, /* 73c8 */ NULL, /* 73c9 */ NULL, /* 73ca */ NULL, /* 73cb */ NULL, /* 73cc */ NULL, /* 73cd */ NULL, /* 73ce */ NULL, /* 73cf */ NULL, /* 73d0 */ NULL, /* 73d1 */ NULL, /* 73d2 */ NULL, /* 73d3 */ NULL, /* 73d4 */ NULL, /* 73d5 */ NULL, /* 73d6 */ NULL, /* 73d7 */ NULL, /* 73d8 */ NULL, /* 73d9 */ NULL, /* 73da */ NULL, /* 73db */ NULL, /* 73dc */ NULL, /* 73dd */ NULL, /* 73de */ NULL, /* 73df */ NULL, /* 73e0 */ NULL, /* 73e1 */ NULL, /* 73e2 */ NULL, /* 73e3 */ NULL, /* 73e4 */ NULL, /* 73e5 */ NULL, /* 73e6 */ NULL, /* 73e7 */ NULL, /* 73e8 */ NULL, /* 73e9 */ NULL, /* 73ea */ NULL, /* 73eb */ NULL, /* 73ec */ NULL, /* 73ed */ NULL, /* 73ee */ NULL, /* 73ef */ NULL, /* 73f0 */ NULL, /* 73f1 */ NULL, /* 73f2 */ NULL, /* 73f3 */ NULL, /* 73f4 */ NULL, /* 73f5 */ NULL, /* 73f6 */ NULL, /* 73f7 */ NULL, /* 73f8 */ NULL, /* 73f9 */ NULL, /* 73fa */ NULL, /* 73fb */ NULL, /* 73fc */ NULL, /* 73fd */ NULL, /* 73fe */ NULL, /* 73ff */ NULL, /* 7400 */ NULL, /* 7401 */ NULL, /* 7402 */ NULL, /* 7403 */ NULL, /* 7404 */ NULL, /* 7405 */ NULL, /* 7406 */ NULL, /* 7407 */ NULL, /* 7408 */ NULL, /* 7409 */ NULL, /* 740a */ NULL, /* 740b */ NULL, /* 740c */ NULL, /* 740d */ NULL, /* 740e */ NULL, /* 740f */ NULL, /* 7410 */ NULL, /* 7411 */ NULL, /* 7412 */ NULL, /* 7413 */ NULL, /* 7414 */ NULL, /* 7415 */ NULL, /* 7416 */ NULL, /* 7417 */ NULL, /* 7418 */ NULL, /* 7419 */ NULL, /* 741a */ NULL, /* 741b */ NULL, /* 741c */ NULL, /* 741d */ NULL, /* 741e */ NULL, /* 741f */ NULL, /* 7420 */ NULL, /* 7421 */ NULL, /* 7422 */ NULL, /* 7423 */ NULL, /* 7424 */ NULL, /* 7425 */ NULL, /* 7426 */ NULL, /* 7427 */ NULL, /* 7428 */ NULL, /* 7429 */ NULL, /* 742a */ NULL, /* 742b */ NULL, /* 742c */ NULL, /* 742d */ NULL, /* 742e */ NULL, /* 742f */ NULL, /* 7430 */ NULL, /* 7431 */ NULL, /* 7432 */ NULL, /* 7433 */ NULL, /* 7434 */ NULL, /* 7435 */ NULL, /* 7436 */ NULL, /* 7437 */ NULL, /* 7438 */ NULL, /* 7439 */ NULL, /* 743a */ NULL, /* 743b */ NULL, /* 743c */ NULL, /* 743d */ NULL, /* 743e */ NULL, /* 743f */ NULL, /* 7440 */ NULL, /* 7441 */ NULL, /* 7442 */ NULL, /* 7443 */ NULL, /* 7444 */ NULL, /* 7445 */ NULL, /* 7446 */ NULL, /* 7447 */ NULL, /* 7448 */ NULL, /* 7449 */ NULL, /* 744a */ NULL, /* 744b */ NULL, /* 744c */ NULL, /* 744d */ NULL, /* 744e */ NULL, /* 744f */ NULL, /* 7450 */ NULL, /* 7451 */ NULL, /* 7452 */ NULL, /* 7453 */ NULL, /* 7454 */ NULL, /* 7455 */ NULL, /* 7456 */ NULL, /* 7457 */ NULL, /* 7458 */ NULL, /* 7459 */ NULL, /* 745a */ NULL, /* 745b */ NULL, /* 745c */ NULL, /* 745d */ NULL, /* 745e */ NULL, /* 745f */ NULL, /* 7460 */ NULL, /* 7461 */ NULL, /* 7462 */ NULL, /* 7463 */ NULL, /* 7464 */ NULL, /* 7465 */ NULL, /* 7466 */ NULL, /* 7467 */ NULL, /* 7468 */ NULL, /* 7469 */ NULL, /* 746a */ NULL, /* 746b */ NULL, /* 746c */ NULL, /* 746d */ NULL, /* 746e */ NULL, /* 746f */ NULL, /* 7470 */ NULL, /* 7471 */ NULL, /* 7472 */ NULL, /* 7473 */ NULL, /* 7474 */ NULL, /* 7475 */ NULL, /* 7476 */ NULL, /* 7477 */ NULL, /* 7478 */ NULL, /* 7479 */ NULL, /* 747a */ NULL, /* 747b */ NULL, /* 747c */ NULL, /* 747d */ NULL, /* 747e */ NULL, /* 747f */ NULL, /* 7480 */ NULL, /* 7481 */ NULL, /* 7482 */ NULL, /* 7483 */ NULL, /* 7484 */ NULL, /* 7485 */ NULL, /* 7486 */ NULL, /* 7487 */ NULL, /* 7488 */ NULL, /* 7489 */ NULL, /* 748a */ NULL, /* 748b */ NULL, /* 748c */ NULL, /* 748d */ NULL, /* 748e */ NULL, /* 748f */ NULL, /* 7490 */ NULL, /* 7491 */ NULL, /* 7492 */ NULL, /* 7493 */ NULL, /* 7494 */ NULL, /* 7495 */ NULL, /* 7496 */ NULL, /* 7497 */ NULL, /* 7498 */ NULL, /* 7499 */ NULL, /* 749a */ NULL, /* 749b */ NULL, /* 749c */ NULL, /* 749d */ NULL, /* 749e */ NULL, /* 749f */ NULL, /* 74a0 */ NULL, /* 74a1 */ NULL, /* 74a2 */ NULL, /* 74a3 */ NULL, /* 74a4 */ NULL, /* 74a5 */ NULL, /* 74a6 */ NULL, /* 74a7 */ NULL, /* 74a8 */ NULL, /* 74a9 */ NULL, /* 74aa */ NULL, /* 74ab */ NULL, /* 74ac */ NULL, /* 74ad */ NULL, /* 74ae */ NULL, /* 74af */ NULL, /* 74b0 */ NULL, /* 74b1 */ NULL, /* 74b2 */ NULL, /* 74b3 */ NULL, /* 74b4 */ NULL, /* 74b5 */ NULL, /* 74b6 */ NULL, /* 74b7 */ NULL, /* 74b8 */ NULL, /* 74b9 */ NULL, /* 74ba */ NULL, /* 74bb */ NULL, /* 74bc */ NULL, /* 74bd */ NULL, /* 74be */ NULL, /* 74bf */ NULL, /* 74c0 */ NULL, /* 74c1 */ NULL, /* 74c2 */ NULL, /* 74c3 */ NULL, /* 74c4 */ NULL, /* 74c5 */ NULL, /* 74c6 */ NULL, /* 74c7 */ NULL, /* 74c8 */ NULL, /* 74c9 */ NULL, /* 74ca */ NULL, /* 74cb */ NULL, /* 74cc */ NULL, /* 74cd */ NULL, /* 74ce */ NULL, /* 74cf */ NULL, /* 74d0 */ NULL, /* 74d1 */ NULL, /* 74d2 */ NULL, /* 74d3 */ NULL, /* 74d4 */ NULL, /* 74d5 */ NULL, /* 74d6 */ NULL, /* 74d7 */ NULL, /* 74d8 */ NULL, /* 74d9 */ NULL, /* 74da */ NULL, /* 74db */ NULL, /* 74dc */ NULL, /* 74dd */ NULL, /* 74de */ NULL, /* 74df */ NULL, /* 74e0 */ NULL, /* 74e1 */ NULL, /* 74e2 */ NULL, /* 74e3 */ NULL, /* 74e4 */ NULL, /* 74e5 */ NULL, /* 74e6 */ NULL, /* 74e7 */ NULL, /* 74e8 */ NULL, /* 74e9 */ NULL, /* 74ea */ NULL, /* 74eb */ NULL, /* 74ec */ NULL, /* 74ed */ NULL, /* 74ee */ NULL, /* 74ef */ NULL, /* 74f0 */ NULL, /* 74f1 */ NULL, /* 74f2 */ NULL, /* 74f3 */ NULL, /* 74f4 */ NULL, /* 74f5 */ NULL, /* 74f6 */ NULL, /* 74f7 */ NULL, /* 74f8 */ NULL, /* 74f9 */ NULL, /* 74fa */ NULL, /* 74fb */ NULL, /* 74fc */ NULL, /* 74fd */ NULL, /* 74fe */ NULL, /* 74ff */ NULL, /* 7500 */ NULL, /* 7501 */ NULL, /* 7502 */ NULL, /* 7503 */ NULL, /* 7504 */ NULL, /* 7505 */ NULL, /* 7506 */ NULL, /* 7507 */ NULL, /* 7508 */ NULL, /* 7509 */ NULL, /* 750a */ NULL, /* 750b */ NULL, /* 750c */ NULL, /* 750d */ NULL, /* 750e */ NULL, /* 750f */ NULL, /* 7510 */ NULL, /* 7511 */ NULL, /* 7512 */ NULL, /* 7513 */ NULL, /* 7514 */ NULL, /* 7515 */ NULL, /* 7516 */ NULL, /* 7517 */ NULL, /* 7518 */ NULL, /* 7519 */ NULL, /* 751a */ NULL, /* 751b */ NULL, /* 751c */ NULL, /* 751d */ NULL, /* 751e */ NULL, /* 751f */ NULL, /* 7520 */ NULL, /* 7521 */ NULL, /* 7522 */ NULL, /* 7523 */ NULL, /* 7524 */ NULL, /* 7525 */ NULL, /* 7526 */ NULL, /* 7527 */ NULL, /* 7528 */ NULL, /* 7529 */ NULL, /* 752a */ NULL, /* 752b */ NULL, /* 752c */ NULL, /* 752d */ NULL, /* 752e */ NULL, /* 752f */ NULL, /* 7530 */ NULL, /* 7531 */ NULL, /* 7532 */ NULL, /* 7533 */ NULL, /* 7534 */ NULL, /* 7535 */ NULL, /* 7536 */ NULL, /* 7537 */ NULL, /* 7538 */ NULL, /* 7539 */ NULL, /* 753a */ NULL, /* 753b */ NULL, /* 753c */ NULL, /* 753d */ NULL, /* 753e */ NULL, /* 753f */ NULL, /* 7540 */ NULL, /* 7541 */ NULL, /* 7542 */ NULL, /* 7543 */ NULL, /* 7544 */ NULL, /* 7545 */ NULL, /* 7546 */ NULL, /* 7547 */ NULL, /* 7548 */ NULL, /* 7549 */ NULL, /* 754a */ NULL, /* 754b */ NULL, /* 754c */ NULL, /* 754d */ NULL, /* 754e */ NULL, /* 754f */ NULL, /* 7550 */ NULL, /* 7551 */ NULL, /* 7552 */ NULL, /* 7553 */ NULL, /* 7554 */ NULL, /* 7555 */ NULL, /* 7556 */ NULL, /* 7557 */ NULL, /* 7558 */ NULL, /* 7559 */ NULL, /* 755a */ NULL, /* 755b */ NULL, /* 755c */ NULL, /* 755d */ NULL, /* 755e */ NULL, /* 755f */ NULL, /* 7560 */ NULL, /* 7561 */ NULL, /* 7562 */ NULL, /* 7563 */ NULL, /* 7564 */ NULL, /* 7565 */ NULL, /* 7566 */ NULL, /* 7567 */ NULL, /* 7568 */ NULL, /* 7569 */ NULL, /* 756a */ NULL, /* 756b */ NULL, /* 756c */ NULL, /* 756d */ NULL, /* 756e */ NULL, /* 756f */ NULL, /* 7570 */ NULL, /* 7571 */ NULL, /* 7572 */ NULL, /* 7573 */ NULL, /* 7574 */ NULL, /* 7575 */ NULL, /* 7576 */ NULL, /* 7577 */ NULL, /* 7578 */ NULL, /* 7579 */ NULL, /* 757a */ NULL, /* 757b */ NULL, /* 757c */ NULL, /* 757d */ NULL, /* 757e */ NULL, /* 757f */ NULL, /* 7580 */ NULL, /* 7581 */ NULL, /* 7582 */ NULL, /* 7583 */ NULL, /* 7584 */ NULL, /* 7585 */ NULL, /* 7586 */ NULL, /* 7587 */ NULL, /* 7588 */ NULL, /* 7589 */ NULL, /* 758a */ NULL, /* 758b */ NULL, /* 758c */ NULL, /* 758d */ NULL, /* 758e */ NULL, /* 758f */ NULL, /* 7590 */ NULL, /* 7591 */ NULL, /* 7592 */ NULL, /* 7593 */ NULL, /* 7594 */ NULL, /* 7595 */ NULL, /* 7596 */ NULL, /* 7597 */ NULL, /* 7598 */ NULL, /* 7599 */ NULL, /* 759a */ NULL, /* 759b */ NULL, /* 759c */ NULL, /* 759d */ NULL, /* 759e */ NULL, /* 759f */ NULL, /* 75a0 */ NULL, /* 75a1 */ NULL, /* 75a2 */ NULL, /* 75a3 */ NULL, /* 75a4 */ NULL, /* 75a5 */ NULL, /* 75a6 */ NULL, /* 75a7 */ NULL, /* 75a8 */ NULL, /* 75a9 */ NULL, /* 75aa */ NULL, /* 75ab */ NULL, /* 75ac */ NULL, /* 75ad */ NULL, /* 75ae */ NULL, /* 75af */ NULL, /* 75b0 */ NULL, /* 75b1 */ NULL, /* 75b2 */ NULL, /* 75b3 */ NULL, /* 75b4 */ NULL, /* 75b5 */ NULL, /* 75b6 */ NULL, /* 75b7 */ NULL, /* 75b8 */ NULL, /* 75b9 */ NULL, /* 75ba */ NULL, /* 75bb */ NULL, /* 75bc */ NULL, /* 75bd */ NULL, /* 75be */ NULL, /* 75bf */ NULL, /* 75c0 */ NULL, /* 75c1 */ NULL, /* 75c2 */ NULL, /* 75c3 */ NULL, /* 75c4 */ NULL, /* 75c5 */ NULL, /* 75c6 */ NULL, /* 75c7 */ NULL, /* 75c8 */ NULL, /* 75c9 */ NULL, /* 75ca */ NULL, /* 75cb */ NULL, /* 75cc */ NULL, /* 75cd */ NULL, /* 75ce */ NULL, /* 75cf */ NULL, /* 75d0 */ NULL, /* 75d1 */ NULL, /* 75d2 */ NULL, /* 75d3 */ NULL, /* 75d4 */ NULL, /* 75d5 */ NULL, /* 75d6 */ NULL, /* 75d7 */ NULL, /* 75d8 */ NULL, /* 75d9 */ NULL, /* 75da */ NULL, /* 75db */ NULL, /* 75dc */ NULL, /* 75dd */ NULL, /* 75de */ NULL, /* 75df */ NULL, /* 75e0 */ NULL, /* 75e1 */ NULL, /* 75e2 */ NULL, /* 75e3 */ NULL, /* 75e4 */ NULL, /* 75e5 */ NULL, /* 75e6 */ NULL, /* 75e7 */ NULL, /* 75e8 */ NULL, /* 75e9 */ NULL, /* 75ea */ NULL, /* 75eb */ NULL, /* 75ec */ NULL, /* 75ed */ NULL, /* 75ee */ NULL, /* 75ef */ NULL, /* 75f0 */ NULL, /* 75f1 */ NULL, /* 75f2 */ NULL, /* 75f3 */ NULL, /* 75f4 */ NULL, /* 75f5 */ NULL, /* 75f6 */ NULL, /* 75f7 */ NULL, /* 75f8 */ NULL, /* 75f9 */ NULL, /* 75fa */ NULL, /* 75fb */ NULL, /* 75fc */ NULL, /* 75fd */ NULL, /* 75fe */ NULL, /* 75ff */ NULL, /* 7600 */ NULL, /* 7601 */ NULL, /* 7602 */ NULL, /* 7603 */ NULL, /* 7604 */ NULL, /* 7605 */ NULL, /* 7606 */ NULL, /* 7607 */ NULL, /* 7608 */ NULL, /* 7609 */ NULL, /* 760a */ NULL, /* 760b */ NULL, /* 760c */ NULL, /* 760d */ NULL, /* 760e */ NULL, /* 760f */ NULL, /* 7610 */ NULL, /* 7611 */ NULL, /* 7612 */ NULL, /* 7613 */ NULL, /* 7614 */ NULL, /* 7615 */ NULL, /* 7616 */ NULL, /* 7617 */ NULL, /* 7618 */ NULL, /* 7619 */ NULL, /* 761a */ NULL, /* 761b */ NULL, /* 761c */ NULL, /* 761d */ NULL, /* 761e */ NULL, /* 761f */ NULL, /* 7620 */ NULL, /* 7621 */ NULL, /* 7622 */ NULL, /* 7623 */ NULL, /* 7624 */ NULL, /* 7625 */ NULL, /* 7626 */ NULL, /* 7627 */ NULL, /* 7628 */ NULL, /* 7629 */ NULL, /* 762a */ NULL, /* 762b */ NULL, /* 762c */ NULL, /* 762d */ NULL, /* 762e */ NULL, /* 762f */ NULL, /* 7630 */ NULL, /* 7631 */ NULL, /* 7632 */ NULL, /* 7633 */ NULL, /* 7634 */ NULL, /* 7635 */ NULL, /* 7636 */ NULL, /* 7637 */ NULL, /* 7638 */ NULL, /* 7639 */ NULL, /* 763a */ NULL, /* 763b */ NULL, /* 763c */ NULL, /* 763d */ NULL, /* 763e */ NULL, /* 763f */ NULL, /* 7640 */ NULL, /* 7641 */ NULL, /* 7642 */ NULL, /* 7643 */ NULL, /* 7644 */ NULL, /* 7645 */ NULL, /* 7646 */ NULL, /* 7647 */ NULL, /* 7648 */ NULL, /* 7649 */ NULL, /* 764a */ NULL, /* 764b */ NULL, /* 764c */ NULL, /* 764d */ NULL, /* 764e */ NULL, /* 764f */ NULL, /* 7650 */ NULL, /* 7651 */ NULL, /* 7652 */ NULL, /* 7653 */ NULL, /* 7654 */ NULL, /* 7655 */ NULL, /* 7656 */ NULL, /* 7657 */ NULL, /* 7658 */ NULL, /* 7659 */ NULL, /* 765a */ NULL, /* 765b */ NULL, /* 765c */ NULL, /* 765d */ NULL, /* 765e */ NULL, /* 765f */ NULL, /* 7660 */ NULL, /* 7661 */ NULL, /* 7662 */ NULL, /* 7663 */ NULL, /* 7664 */ NULL, /* 7665 */ NULL, /* 7666 */ NULL, /* 7667 */ NULL, /* 7668 */ NULL, /* 7669 */ NULL, /* 766a */ NULL, /* 766b */ NULL, /* 766c */ NULL, /* 766d */ NULL, /* 766e */ NULL, /* 766f */ NULL, /* 7670 */ NULL, /* 7671 */ NULL, /* 7672 */ NULL, /* 7673 */ NULL, /* 7674 */ NULL, /* 7675 */ NULL, /* 7676 */ NULL, /* 7677 */ NULL, /* 7678 */ NULL, /* 7679 */ NULL, /* 767a */ NULL, /* 767b */ NULL, /* 767c */ NULL, /* 767d */ NULL, /* 767e */ NULL, /* 767f */ NULL, /* 7680 */ NULL, /* 7681 */ NULL, /* 7682 */ NULL, /* 7683 */ NULL, /* 7684 */ NULL, /* 7685 */ NULL, /* 7686 */ NULL, /* 7687 */ NULL, /* 7688 */ NULL, /* 7689 */ NULL, /* 768a */ NULL, /* 768b */ NULL, /* 768c */ NULL, /* 768d */ NULL, /* 768e */ NULL, /* 768f */ NULL, /* 7690 */ NULL, /* 7691 */ NULL, /* 7692 */ NULL, /* 7693 */ NULL, /* 7694 */ NULL, /* 7695 */ NULL, /* 7696 */ NULL, /* 7697 */ NULL, /* 7698 */ NULL, /* 7699 */ NULL, /* 769a */ NULL, /* 769b */ NULL, /* 769c */ NULL, /* 769d */ NULL, /* 769e */ NULL, /* 769f */ NULL, /* 76a0 */ NULL, /* 76a1 */ NULL, /* 76a2 */ NULL, /* 76a3 */ NULL, /* 76a4 */ NULL, /* 76a5 */ NULL, /* 76a6 */ NULL, /* 76a7 */ NULL, /* 76a8 */ NULL, /* 76a9 */ NULL, /* 76aa */ NULL, /* 76ab */ NULL, /* 76ac */ NULL, /* 76ad */ NULL, /* 76ae */ NULL, /* 76af */ NULL, /* 76b0 */ NULL, /* 76b1 */ NULL, /* 76b2 */ NULL, /* 76b3 */ NULL, /* 76b4 */ NULL, /* 76b5 */ NULL, /* 76b6 */ NULL, /* 76b7 */ NULL, /* 76b8 */ NULL, /* 76b9 */ NULL, /* 76ba */ NULL, /* 76bb */ NULL, /* 76bc */ NULL, /* 76bd */ NULL, /* 76be */ NULL, /* 76bf */ NULL, /* 76c0 */ NULL, /* 76c1 */ NULL, /* 76c2 */ NULL, /* 76c3 */ NULL, /* 76c4 */ NULL, /* 76c5 */ NULL, /* 76c6 */ NULL, /* 76c7 */ NULL, /* 76c8 */ NULL, /* 76c9 */ NULL, /* 76ca */ NULL, /* 76cb */ NULL, /* 76cc */ NULL, /* 76cd */ NULL, /* 76ce */ NULL, /* 76cf */ NULL, /* 76d0 */ NULL, /* 76d1 */ NULL, /* 76d2 */ NULL, /* 76d3 */ NULL, /* 76d4 */ NULL, /* 76d5 */ NULL, /* 76d6 */ NULL, /* 76d7 */ NULL, /* 76d8 */ NULL, /* 76d9 */ NULL, /* 76da */ NULL, /* 76db */ NULL, /* 76dc */ NULL, /* 76dd */ NULL, /* 76de */ NULL, /* 76df */ NULL, /* 76e0 */ NULL, /* 76e1 */ NULL, /* 76e2 */ NULL, /* 76e3 */ NULL, /* 76e4 */ NULL, /* 76e5 */ NULL, /* 76e6 */ NULL, /* 76e7 */ NULL, /* 76e8 */ NULL, /* 76e9 */ NULL, /* 76ea */ NULL, /* 76eb */ NULL, /* 76ec */ NULL, /* 76ed */ NULL, /* 76ee */ NULL, /* 76ef */ NULL, /* 76f0 */ NULL, /* 76f1 */ NULL, /* 76f2 */ NULL, /* 76f3 */ NULL, /* 76f4 */ NULL, /* 76f5 */ NULL, /* 76f6 */ NULL, /* 76f7 */ NULL, /* 76f8 */ NULL, /* 76f9 */ NULL, /* 76fa */ NULL, /* 76fb */ NULL, /* 76fc */ NULL, /* 76fd */ NULL, /* 76fe */ NULL, /* 76ff */ NULL, /* 7700 */ NULL, /* 7701 */ NULL, /* 7702 */ NULL, /* 7703 */ NULL, /* 7704 */ NULL, /* 7705 */ NULL, /* 7706 */ NULL, /* 7707 */ NULL, /* 7708 */ NULL, /* 7709 */ NULL, /* 770a */ NULL, /* 770b */ NULL, /* 770c */ NULL, /* 770d */ NULL, /* 770e */ NULL, /* 770f */ NULL, /* 7710 */ NULL, /* 7711 */ NULL, /* 7712 */ NULL, /* 7713 */ NULL, /* 7714 */ NULL, /* 7715 */ NULL, /* 7716 */ NULL, /* 7717 */ NULL, /* 7718 */ NULL, /* 7719 */ NULL, /* 771a */ NULL, /* 771b */ NULL, /* 771c */ NULL, /* 771d */ NULL, /* 771e */ NULL, /* 771f */ NULL, /* 7720 */ NULL, /* 7721 */ NULL, /* 7722 */ NULL, /* 7723 */ NULL, /* 7724 */ NULL, /* 7725 */ NULL, /* 7726 */ NULL, /* 7727 */ NULL, /* 7728 */ NULL, /* 7729 */ NULL, /* 772a */ NULL, /* 772b */ NULL, /* 772c */ NULL, /* 772d */ NULL, /* 772e */ NULL, /* 772f */ NULL, /* 7730 */ NULL, /* 7731 */ NULL, /* 7732 */ NULL, /* 7733 */ NULL, /* 7734 */ NULL, /* 7735 */ NULL, /* 7736 */ NULL, /* 7737 */ NULL, /* 7738 */ NULL, /* 7739 */ NULL, /* 773a */ NULL, /* 773b */ NULL, /* 773c */ NULL, /* 773d */ NULL, /* 773e */ NULL, /* 773f */ NULL, /* 7740 */ NULL, /* 7741 */ NULL, /* 7742 */ NULL, /* 7743 */ NULL, /* 7744 */ NULL, /* 7745 */ NULL, /* 7746 */ NULL, /* 7747 */ NULL, /* 7748 */ NULL, /* 7749 */ NULL, /* 774a */ NULL, /* 774b */ NULL, /* 774c */ NULL, /* 774d */ NULL, /* 774e */ NULL, /* 774f */ NULL, /* 7750 */ NULL, /* 7751 */ NULL, /* 7752 */ NULL, /* 7753 */ NULL, /* 7754 */ NULL, /* 7755 */ NULL, /* 7756 */ NULL, /* 7757 */ NULL, /* 7758 */ NULL, /* 7759 */ NULL, /* 775a */ NULL, /* 775b */ NULL, /* 775c */ NULL, /* 775d */ NULL, /* 775e */ NULL, /* 775f */ NULL, /* 7760 */ NULL, /* 7761 */ NULL, /* 7762 */ NULL, /* 7763 */ NULL, /* 7764 */ NULL, /* 7765 */ NULL, /* 7766 */ NULL, /* 7767 */ NULL, /* 7768 */ NULL, /* 7769 */ NULL, /* 776a */ NULL, /* 776b */ NULL, /* 776c */ NULL, /* 776d */ NULL, /* 776e */ NULL, /* 776f */ NULL, /* 7770 */ NULL, /* 7771 */ NULL, /* 7772 */ NULL, /* 7773 */ NULL, /* 7774 */ NULL, /* 7775 */ NULL, /* 7776 */ NULL, /* 7777 */ NULL, /* 7778 */ NULL, /* 7779 */ NULL, /* 777a */ NULL, /* 777b */ NULL, /* 777c */ NULL, /* 777d */ NULL, /* 777e */ NULL, /* 777f */ NULL, /* 7780 */ NULL, /* 7781 */ NULL, /* 7782 */ NULL, /* 7783 */ NULL, /* 7784 */ NULL, /* 7785 */ NULL, /* 7786 */ NULL, /* 7787 */ NULL, /* 7788 */ NULL, /* 7789 */ NULL, /* 778a */ NULL, /* 778b */ NULL, /* 778c */ NULL, /* 778d */ NULL, /* 778e */ NULL, /* 778f */ NULL, /* 7790 */ NULL, /* 7791 */ NULL, /* 7792 */ NULL, /* 7793 */ NULL, /* 7794 */ NULL, /* 7795 */ NULL, /* 7796 */ NULL, /* 7797 */ NULL, /* 7798 */ NULL, /* 7799 */ NULL, /* 779a */ NULL, /* 779b */ NULL, /* 779c */ NULL, /* 779d */ NULL, /* 779e */ NULL, /* 779f */ NULL, /* 77a0 */ NULL, /* 77a1 */ NULL, /* 77a2 */ NULL, /* 77a3 */ NULL, /* 77a4 */ NULL, /* 77a5 */ NULL, /* 77a6 */ NULL, /* 77a7 */ NULL, /* 77a8 */ NULL, /* 77a9 */ NULL, /* 77aa */ NULL, /* 77ab */ NULL, /* 77ac */ NULL, /* 77ad */ NULL, /* 77ae */ NULL, /* 77af */ NULL, /* 77b0 */ NULL, /* 77b1 */ NULL, /* 77b2 */ NULL, /* 77b3 */ NULL, /* 77b4 */ NULL, /* 77b5 */ NULL, /* 77b6 */ NULL, /* 77b7 */ NULL, /* 77b8 */ NULL, /* 77b9 */ NULL, /* 77ba */ NULL, /* 77bb */ NULL, /* 77bc */ NULL, /* 77bd */ NULL, /* 77be */ NULL, /* 77bf */ NULL, /* 77c0 */ NULL, /* 77c1 */ NULL, /* 77c2 */ NULL, /* 77c3 */ NULL, /* 77c4 */ NULL, /* 77c5 */ NULL, /* 77c6 */ NULL, /* 77c7 */ NULL, /* 77c8 */ NULL, /* 77c9 */ NULL, /* 77ca */ NULL, /* 77cb */ NULL, /* 77cc */ NULL, /* 77cd */ NULL, /* 77ce */ NULL, /* 77cf */ NULL, /* 77d0 */ NULL, /* 77d1 */ NULL, /* 77d2 */ NULL, /* 77d3 */ NULL, /* 77d4 */ NULL, /* 77d5 */ NULL, /* 77d6 */ NULL, /* 77d7 */ NULL, /* 77d8 */ NULL, /* 77d9 */ NULL, /* 77da */ NULL, /* 77db */ NULL, /* 77dc */ NULL, /* 77dd */ NULL, /* 77de */ NULL, /* 77df */ NULL, /* 77e0 */ NULL, /* 77e1 */ NULL, /* 77e2 */ NULL, /* 77e3 */ NULL, /* 77e4 */ NULL, /* 77e5 */ NULL, /* 77e6 */ NULL, /* 77e7 */ NULL, /* 77e8 */ NULL, /* 77e9 */ NULL, /* 77ea */ NULL, /* 77eb */ NULL, /* 77ec */ NULL, /* 77ed */ NULL, /* 77ee */ NULL, /* 77ef */ NULL, /* 77f0 */ NULL, /* 77f1 */ NULL, /* 77f2 */ NULL, /* 77f3 */ NULL, /* 77f4 */ NULL, /* 77f5 */ NULL, /* 77f6 */ NULL, /* 77f7 */ NULL, /* 77f8 */ NULL, /* 77f9 */ NULL, /* 77fa */ NULL, /* 77fb */ NULL, /* 77fc */ NULL, /* 77fd */ NULL, /* 77fe */ NULL, /* 77ff */ NULL, /* 7800 */ NULL, /* 7801 */ NULL, /* 7802 */ NULL, /* 7803 */ NULL, /* 7804 */ NULL, /* 7805 */ NULL, /* 7806 */ NULL, /* 7807 */ NULL, /* 7808 */ NULL, /* 7809 */ NULL, /* 780a */ NULL, /* 780b */ NULL, /* 780c */ NULL, /* 780d */ NULL, /* 780e */ NULL, /* 780f */ NULL, /* 7810 */ NULL, /* 7811 */ NULL, /* 7812 */ NULL, /* 7813 */ NULL, /* 7814 */ NULL, /* 7815 */ NULL, /* 7816 */ NULL, /* 7817 */ NULL, /* 7818 */ NULL, /* 7819 */ NULL, /* 781a */ NULL, /* 781b */ NULL, /* 781c */ NULL, /* 781d */ NULL, /* 781e */ NULL, /* 781f */ NULL, /* 7820 */ NULL, /* 7821 */ NULL, /* 7822 */ NULL, /* 7823 */ NULL, /* 7824 */ NULL, /* 7825 */ NULL, /* 7826 */ NULL, /* 7827 */ NULL, /* 7828 */ NULL, /* 7829 */ NULL, /* 782a */ NULL, /* 782b */ NULL, /* 782c */ NULL, /* 782d */ NULL, /* 782e */ NULL, /* 782f */ NULL, /* 7830 */ NULL, /* 7831 */ NULL, /* 7832 */ NULL, /* 7833 */ NULL, /* 7834 */ NULL, /* 7835 */ NULL, /* 7836 */ NULL, /* 7837 */ NULL, /* 7838 */ NULL, /* 7839 */ NULL, /* 783a */ NULL, /* 783b */ NULL, /* 783c */ NULL, /* 783d */ NULL, /* 783e */ NULL, /* 783f */ NULL, /* 7840 */ NULL, /* 7841 */ NULL, /* 7842 */ NULL, /* 7843 */ NULL, /* 7844 */ NULL, /* 7845 */ NULL, /* 7846 */ NULL, /* 7847 */ NULL, /* 7848 */ NULL, /* 7849 */ NULL, /* 784a */ NULL, /* 784b */ NULL, /* 784c */ NULL, /* 784d */ NULL, /* 784e */ NULL, /* 784f */ NULL, /* 7850 */ NULL, /* 7851 */ NULL, /* 7852 */ NULL, /* 7853 */ NULL, /* 7854 */ NULL, /* 7855 */ NULL, /* 7856 */ NULL, /* 7857 */ NULL, /* 7858 */ NULL, /* 7859 */ NULL, /* 785a */ NULL, /* 785b */ NULL, /* 785c */ NULL, /* 785d */ NULL, /* 785e */ NULL, /* 785f */ NULL, /* 7860 */ NULL, /* 7861 */ NULL, /* 7862 */ NULL, /* 7863 */ NULL, /* 7864 */ NULL, /* 7865 */ NULL, /* 7866 */ NULL, /* 7867 */ NULL, /* 7868 */ NULL, /* 7869 */ NULL, /* 786a */ NULL, /* 786b */ NULL, /* 786c */ NULL, /* 786d */ NULL, /* 786e */ NULL, /* 786f */ NULL, /* 7870 */ NULL, /* 7871 */ NULL, /* 7872 */ NULL, /* 7873 */ NULL, /* 7874 */ NULL, /* 7875 */ NULL, /* 7876 */ NULL, /* 7877 */ NULL, /* 7878 */ NULL, /* 7879 */ NULL, /* 787a */ NULL, /* 787b */ NULL, /* 787c */ NULL, /* 787d */ NULL, /* 787e */ NULL, /* 787f */ NULL, /* 7880 */ NULL, /* 7881 */ NULL, /* 7882 */ NULL, /* 7883 */ NULL, /* 7884 */ NULL, /* 7885 */ NULL, /* 7886 */ NULL, /* 7887 */ NULL, /* 7888 */ NULL, /* 7889 */ NULL, /* 788a */ NULL, /* 788b */ NULL, /* 788c */ NULL, /* 788d */ NULL, /* 788e */ NULL, /* 788f */ NULL, /* 7890 */ NULL, /* 7891 */ NULL, /* 7892 */ NULL, /* 7893 */ NULL, /* 7894 */ NULL, /* 7895 */ NULL, /* 7896 */ NULL, /* 7897 */ NULL, /* 7898 */ NULL, /* 7899 */ NULL, /* 789a */ NULL, /* 789b */ NULL, /* 789c */ NULL, /* 789d */ NULL, /* 789e */ NULL, /* 789f */ NULL, /* 78a0 */ NULL, /* 78a1 */ NULL, /* 78a2 */ NULL, /* 78a3 */ NULL, /* 78a4 */ NULL, /* 78a5 */ NULL, /* 78a6 */ NULL, /* 78a7 */ NULL, /* 78a8 */ NULL, /* 78a9 */ NULL, /* 78aa */ NULL, /* 78ab */ NULL, /* 78ac */ NULL, /* 78ad */ NULL, /* 78ae */ NULL, /* 78af */ NULL, /* 78b0 */ NULL, /* 78b1 */ NULL, /* 78b2 */ NULL, /* 78b3 */ NULL, /* 78b4 */ NULL, /* 78b5 */ NULL, /* 78b6 */ NULL, /* 78b7 */ NULL, /* 78b8 */ NULL, /* 78b9 */ NULL, /* 78ba */ NULL, /* 78bb */ NULL, /* 78bc */ NULL, /* 78bd */ NULL, /* 78be */ NULL, /* 78bf */ NULL, /* 78c0 */ NULL, /* 78c1 */ NULL, /* 78c2 */ NULL, /* 78c3 */ NULL, /* 78c4 */ NULL, /* 78c5 */ NULL, /* 78c6 */ NULL, /* 78c7 */ NULL, /* 78c8 */ NULL, /* 78c9 */ NULL, /* 78ca */ NULL, /* 78cb */ NULL, /* 78cc */ NULL, /* 78cd */ NULL, /* 78ce */ NULL, /* 78cf */ NULL, /* 78d0 */ NULL, /* 78d1 */ NULL, /* 78d2 */ NULL, /* 78d3 */ NULL, /* 78d4 */ NULL, /* 78d5 */ NULL, /* 78d6 */ NULL, /* 78d7 */ NULL, /* 78d8 */ NULL, /* 78d9 */ NULL, /* 78da */ NULL, /* 78db */ NULL, /* 78dc */ NULL, /* 78dd */ NULL, /* 78de */ NULL, /* 78df */ NULL, /* 78e0 */ NULL, /* 78e1 */ NULL, /* 78e2 */ NULL, /* 78e3 */ NULL, /* 78e4 */ NULL, /* 78e5 */ NULL, /* 78e6 */ NULL, /* 78e7 */ NULL, /* 78e8 */ NULL, /* 78e9 */ NULL, /* 78ea */ NULL, /* 78eb */ NULL, /* 78ec */ NULL, /* 78ed */ NULL, /* 78ee */ NULL, /* 78ef */ NULL, /* 78f0 */ NULL, /* 78f1 */ NULL, /* 78f2 */ NULL, /* 78f3 */ NULL, /* 78f4 */ NULL, /* 78f5 */ NULL, /* 78f6 */ NULL, /* 78f7 */ NULL, /* 78f8 */ NULL, /* 78f9 */ NULL, /* 78fa */ NULL, /* 78fb */ NULL, /* 78fc */ NULL, /* 78fd */ NULL, /* 78fe */ NULL, /* 78ff */ NULL, /* 7900 */ NULL, /* 7901 */ NULL, /* 7902 */ NULL, /* 7903 */ NULL, /* 7904 */ NULL, /* 7905 */ NULL, /* 7906 */ NULL, /* 7907 */ NULL, /* 7908 */ NULL, /* 7909 */ NULL, /* 790a */ NULL, /* 790b */ NULL, /* 790c */ NULL, /* 790d */ NULL, /* 790e */ NULL, /* 790f */ NULL, /* 7910 */ NULL, /* 7911 */ NULL, /* 7912 */ NULL, /* 7913 */ NULL, /* 7914 */ NULL, /* 7915 */ NULL, /* 7916 */ NULL, /* 7917 */ NULL, /* 7918 */ NULL, /* 7919 */ NULL, /* 791a */ NULL, /* 791b */ NULL, /* 791c */ NULL, /* 791d */ NULL, /* 791e */ NULL, /* 791f */ NULL, /* 7920 */ NULL, /* 7921 */ NULL, /* 7922 */ NULL, /* 7923 */ NULL, /* 7924 */ NULL, /* 7925 */ NULL, /* 7926 */ NULL, /* 7927 */ NULL, /* 7928 */ NULL, /* 7929 */ NULL, /* 792a */ NULL, /* 792b */ NULL, /* 792c */ NULL, /* 792d */ NULL, /* 792e */ NULL, /* 792f */ NULL, /* 7930 */ NULL, /* 7931 */ NULL, /* 7932 */ NULL, /* 7933 */ NULL, /* 7934 */ NULL, /* 7935 */ NULL, /* 7936 */ NULL, /* 7937 */ NULL, /* 7938 */ NULL, /* 7939 */ NULL, /* 793a */ NULL, /* 793b */ NULL, /* 793c */ NULL, /* 793d */ NULL, /* 793e */ NULL, /* 793f */ NULL, /* 7940 */ NULL, /* 7941 */ NULL, /* 7942 */ NULL, /* 7943 */ NULL, /* 7944 */ NULL, /* 7945 */ NULL, /* 7946 */ NULL, /* 7947 */ NULL, /* 7948 */ NULL, /* 7949 */ NULL, /* 794a */ NULL, /* 794b */ NULL, /* 794c */ NULL, /* 794d */ NULL, /* 794e */ NULL, /* 794f */ NULL, /* 7950 */ NULL, /* 7951 */ NULL, /* 7952 */ NULL, /* 7953 */ NULL, /* 7954 */ NULL, /* 7955 */ NULL, /* 7956 */ NULL, /* 7957 */ NULL, /* 7958 */ NULL, /* 7959 */ NULL, /* 795a */ NULL, /* 795b */ NULL, /* 795c */ NULL, /* 795d */ NULL, /* 795e */ NULL, /* 795f */ NULL, /* 7960 */ NULL, /* 7961 */ NULL, /* 7962 */ NULL, /* 7963 */ NULL, /* 7964 */ NULL, /* 7965 */ NULL, /* 7966 */ NULL, /* 7967 */ NULL, /* 7968 */ NULL, /* 7969 */ NULL, /* 796a */ NULL, /* 796b */ NULL, /* 796c */ NULL, /* 796d */ NULL, /* 796e */ NULL, /* 796f */ NULL, /* 7970 */ NULL, /* 7971 */ NULL, /* 7972 */ NULL, /* 7973 */ NULL, /* 7974 */ NULL, /* 7975 */ NULL, /* 7976 */ NULL, /* 7977 */ NULL, /* 7978 */ NULL, /* 7979 */ NULL, /* 797a */ NULL, /* 797b */ NULL, /* 797c */ NULL, /* 797d */ NULL, /* 797e */ NULL, /* 797f */ NULL, /* 7980 */ NULL, /* 7981 */ NULL, /* 7982 */ NULL, /* 7983 */ NULL, /* 7984 */ NULL, /* 7985 */ NULL, /* 7986 */ NULL, /* 7987 */ NULL, /* 7988 */ NULL, /* 7989 */ NULL, /* 798a */ NULL, /* 798b */ NULL, /* 798c */ NULL, /* 798d */ NULL, /* 798e */ NULL, /* 798f */ NULL, /* 7990 */ NULL, /* 7991 */ NULL, /* 7992 */ NULL, /* 7993 */ NULL, /* 7994 */ NULL, /* 7995 */ NULL, /* 7996 */ NULL, /* 7997 */ NULL, /* 7998 */ NULL, /* 7999 */ NULL, /* 799a */ NULL, /* 799b */ NULL, /* 799c */ NULL, /* 799d */ NULL, /* 799e */ NULL, /* 799f */ NULL, /* 79a0 */ NULL, /* 79a1 */ NULL, /* 79a2 */ NULL, /* 79a3 */ NULL, /* 79a4 */ NULL, /* 79a5 */ NULL, /* 79a6 */ NULL, /* 79a7 */ NULL, /* 79a8 */ NULL, /* 79a9 */ NULL, /* 79aa */ NULL, /* 79ab */ NULL, /* 79ac */ NULL, /* 79ad */ NULL, /* 79ae */ NULL, /* 79af */ NULL, /* 79b0 */ NULL, /* 79b1 */ NULL, /* 79b2 */ NULL, /* 79b3 */ NULL, /* 79b4 */ NULL, /* 79b5 */ NULL, /* 79b6 */ NULL, /* 79b7 */ NULL, /* 79b8 */ NULL, /* 79b9 */ NULL, /* 79ba */ NULL, /* 79bb */ NULL, /* 79bc */ NULL, /* 79bd */ NULL, /* 79be */ NULL, /* 79bf */ NULL, /* 79c0 */ NULL, /* 79c1 */ NULL, /* 79c2 */ NULL, /* 79c3 */ NULL, /* 79c4 */ NULL, /* 79c5 */ NULL, /* 79c6 */ NULL, /* 79c7 */ NULL, /* 79c8 */ NULL, /* 79c9 */ NULL, /* 79ca */ NULL, /* 79cb */ NULL, /* 79cc */ NULL, /* 79cd */ NULL, /* 79ce */ NULL, /* 79cf */ NULL, /* 79d0 */ NULL, /* 79d1 */ NULL, /* 79d2 */ NULL, /* 79d3 */ NULL, /* 79d4 */ NULL, /* 79d5 */ NULL, /* 79d6 */ NULL, /* 79d7 */ NULL, /* 79d8 */ NULL, /* 79d9 */ NULL, /* 79da */ NULL, /* 79db */ NULL, /* 79dc */ NULL, /* 79dd */ NULL, /* 79de */ NULL, /* 79df */ NULL, /* 79e0 */ NULL, /* 79e1 */ NULL, /* 79e2 */ NULL, /* 79e3 */ NULL, /* 79e4 */ NULL, /* 79e5 */ NULL, /* 79e6 */ NULL, /* 79e7 */ NULL, /* 79e8 */ NULL, /* 79e9 */ NULL, /* 79ea */ NULL, /* 79eb */ NULL, /* 79ec */ NULL, /* 79ed */ NULL, /* 79ee */ NULL, /* 79ef */ NULL, /* 79f0 */ NULL, /* 79f1 */ NULL, /* 79f2 */ NULL, /* 79f3 */ NULL, /* 79f4 */ NULL, /* 79f5 */ NULL, /* 79f6 */ NULL, /* 79f7 */ NULL, /* 79f8 */ NULL, /* 79f9 */ NULL, /* 79fa */ NULL, /* 79fb */ NULL, /* 79fc */ NULL, /* 79fd */ NULL, /* 79fe */ NULL, /* 79ff */ NULL, /* 7a00 */ NULL, /* 7a01 */ NULL, /* 7a02 */ NULL, /* 7a03 */ NULL, /* 7a04 */ NULL, /* 7a05 */ NULL, /* 7a06 */ NULL, /* 7a07 */ NULL, /* 7a08 */ NULL, /* 7a09 */ NULL, /* 7a0a */ NULL, /* 7a0b */ NULL, /* 7a0c */ NULL, /* 7a0d */ NULL, /* 7a0e */ NULL, /* 7a0f */ NULL, /* 7a10 */ NULL, /* 7a11 */ NULL, /* 7a12 */ NULL, /* 7a13 */ NULL, /* 7a14 */ NULL, /* 7a15 */ NULL, /* 7a16 */ NULL, /* 7a17 */ NULL, /* 7a18 */ NULL, /* 7a19 */ NULL, /* 7a1a */ NULL, /* 7a1b */ NULL, /* 7a1c */ NULL, /* 7a1d */ NULL, /* 7a1e */ NULL, /* 7a1f */ NULL, /* 7a20 */ NULL, /* 7a21 */ NULL, /* 7a22 */ NULL, /* 7a23 */ NULL, /* 7a24 */ NULL, /* 7a25 */ NULL, /* 7a26 */ NULL, /* 7a27 */ NULL, /* 7a28 */ NULL, /* 7a29 */ NULL, /* 7a2a */ NULL, /* 7a2b */ NULL, /* 7a2c */ NULL, /* 7a2d */ NULL, /* 7a2e */ NULL, /* 7a2f */ NULL, /* 7a30 */ NULL, /* 7a31 */ NULL, /* 7a32 */ NULL, /* 7a33 */ NULL, /* 7a34 */ NULL, /* 7a35 */ NULL, /* 7a36 */ NULL, /* 7a37 */ NULL, /* 7a38 */ NULL, /* 7a39 */ NULL, /* 7a3a */ NULL, /* 7a3b */ NULL, /* 7a3c */ NULL, /* 7a3d */ NULL, /* 7a3e */ NULL, /* 7a3f */ NULL, /* 7a40 */ NULL, /* 7a41 */ NULL, /* 7a42 */ NULL, /* 7a43 */ NULL, /* 7a44 */ NULL, /* 7a45 */ NULL, /* 7a46 */ NULL, /* 7a47 */ NULL, /* 7a48 */ NULL, /* 7a49 */ NULL, /* 7a4a */ NULL, /* 7a4b */ NULL, /* 7a4c */ NULL, /* 7a4d */ NULL, /* 7a4e */ NULL, /* 7a4f */ NULL, /* 7a50 */ NULL, /* 7a51 */ NULL, /* 7a52 */ NULL, /* 7a53 */ NULL, /* 7a54 */ NULL, /* 7a55 */ NULL, /* 7a56 */ NULL, /* 7a57 */ NULL, /* 7a58 */ NULL, /* 7a59 */ NULL, /* 7a5a */ NULL, /* 7a5b */ NULL, /* 7a5c */ NULL, /* 7a5d */ NULL, /* 7a5e */ NULL, /* 7a5f */ NULL, /* 7a60 */ NULL, /* 7a61 */ NULL, /* 7a62 */ NULL, /* 7a63 */ NULL, /* 7a64 */ NULL, /* 7a65 */ NULL, /* 7a66 */ NULL, /* 7a67 */ NULL, /* 7a68 */ NULL, /* 7a69 */ NULL, /* 7a6a */ NULL, /* 7a6b */ NULL, /* 7a6c */ NULL, /* 7a6d */ NULL, /* 7a6e */ NULL, /* 7a6f */ NULL, /* 7a70 */ NULL, /* 7a71 */ NULL, /* 7a72 */ NULL, /* 7a73 */ NULL, /* 7a74 */ NULL, /* 7a75 */ NULL, /* 7a76 */ NULL, /* 7a77 */ NULL, /* 7a78 */ NULL, /* 7a79 */ NULL, /* 7a7a */ NULL, /* 7a7b */ NULL, /* 7a7c */ NULL, /* 7a7d */ NULL, /* 7a7e */ NULL, /* 7a7f */ NULL, /* 7a80 */ NULL, /* 7a81 */ NULL, /* 7a82 */ NULL, /* 7a83 */ NULL, /* 7a84 */ NULL, /* 7a85 */ NULL, /* 7a86 */ NULL, /* 7a87 */ NULL, /* 7a88 */ NULL, /* 7a89 */ NULL, /* 7a8a */ NULL, /* 7a8b */ NULL, /* 7a8c */ NULL, /* 7a8d */ NULL, /* 7a8e */ NULL, /* 7a8f */ NULL, /* 7a90 */ NULL, /* 7a91 */ NULL, /* 7a92 */ NULL, /* 7a93 */ NULL, /* 7a94 */ NULL, /* 7a95 */ NULL, /* 7a96 */ NULL, /* 7a97 */ NULL, /* 7a98 */ NULL, /* 7a99 */ NULL, /* 7a9a */ NULL, /* 7a9b */ NULL, /* 7a9c */ NULL, /* 7a9d */ NULL, /* 7a9e */ NULL, /* 7a9f */ NULL, /* 7aa0 */ NULL, /* 7aa1 */ NULL, /* 7aa2 */ NULL, /* 7aa3 */ NULL, /* 7aa4 */ NULL, /* 7aa5 */ NULL, /* 7aa6 */ NULL, /* 7aa7 */ NULL, /* 7aa8 */ NULL, /* 7aa9 */ NULL, /* 7aaa */ NULL, /* 7aab */ NULL, /* 7aac */ NULL, /* 7aad */ NULL, /* 7aae */ NULL, /* 7aaf */ NULL, /* 7ab0 */ NULL, /* 7ab1 */ NULL, /* 7ab2 */ NULL, /* 7ab3 */ NULL, /* 7ab4 */ NULL, /* 7ab5 */ NULL, /* 7ab6 */ NULL, /* 7ab7 */ NULL, /* 7ab8 */ NULL, /* 7ab9 */ NULL, /* 7aba */ NULL, /* 7abb */ NULL, /* 7abc */ NULL, /* 7abd */ NULL, /* 7abe */ NULL, /* 7abf */ NULL, /* 7ac0 */ NULL, /* 7ac1 */ NULL, /* 7ac2 */ NULL, /* 7ac3 */ NULL, /* 7ac4 */ NULL, /* 7ac5 */ NULL, /* 7ac6 */ NULL, /* 7ac7 */ NULL, /* 7ac8 */ NULL, /* 7ac9 */ NULL, /* 7aca */ NULL, /* 7acb */ NULL, /* 7acc */ NULL, /* 7acd */ NULL, /* 7ace */ NULL, /* 7acf */ NULL, /* 7ad0 */ NULL, /* 7ad1 */ NULL, /* 7ad2 */ NULL, /* 7ad3 */ NULL, /* 7ad4 */ NULL, /* 7ad5 */ NULL, /* 7ad6 */ NULL, /* 7ad7 */ NULL, /* 7ad8 */ NULL, /* 7ad9 */ NULL, /* 7ada */ NULL, /* 7adb */ NULL, /* 7adc */ NULL, /* 7add */ NULL, /* 7ade */ NULL, /* 7adf */ NULL, /* 7ae0 */ NULL, /* 7ae1 */ NULL, /* 7ae2 */ NULL, /* 7ae3 */ NULL, /* 7ae4 */ NULL, /* 7ae5 */ NULL, /* 7ae6 */ NULL, /* 7ae7 */ NULL, /* 7ae8 */ NULL, /* 7ae9 */ NULL, /* 7aea */ NULL, /* 7aeb */ NULL, /* 7aec */ NULL, /* 7aed */ NULL, /* 7aee */ NULL, /* 7aef */ NULL, /* 7af0 */ NULL, /* 7af1 */ NULL, /* 7af2 */ NULL, /* 7af3 */ NULL, /* 7af4 */ NULL, /* 7af5 */ NULL, /* 7af6 */ NULL, /* 7af7 */ NULL, /* 7af8 */ NULL, /* 7af9 */ NULL, /* 7afa */ NULL, /* 7afb */ NULL, /* 7afc */ NULL, /* 7afd */ NULL, /* 7afe */ NULL, /* 7aff */ NULL, /* 7b00 */ NULL, /* 7b01 */ NULL, /* 7b02 */ NULL, /* 7b03 */ NULL, /* 7b04 */ NULL, /* 7b05 */ NULL, /* 7b06 */ NULL, /* 7b07 */ NULL, /* 7b08 */ NULL, /* 7b09 */ NULL, /* 7b0a */ NULL, /* 7b0b */ NULL, /* 7b0c */ NULL, /* 7b0d */ NULL, /* 7b0e */ NULL, /* 7b0f */ NULL, /* 7b10 */ NULL, /* 7b11 */ NULL, /* 7b12 */ NULL, /* 7b13 */ NULL, /* 7b14 */ NULL, /* 7b15 */ NULL, /* 7b16 */ NULL, /* 7b17 */ NULL, /* 7b18 */ NULL, /* 7b19 */ NULL, /* 7b1a */ NULL, /* 7b1b */ NULL, /* 7b1c */ NULL, /* 7b1d */ NULL, /* 7b1e */ NULL, /* 7b1f */ NULL, /* 7b20 */ NULL, /* 7b21 */ NULL, /* 7b22 */ NULL, /* 7b23 */ NULL, /* 7b24 */ NULL, /* 7b25 */ NULL, /* 7b26 */ NULL, /* 7b27 */ NULL, /* 7b28 */ NULL, /* 7b29 */ NULL, /* 7b2a */ NULL, /* 7b2b */ NULL, /* 7b2c */ NULL, /* 7b2d */ NULL, /* 7b2e */ NULL, /* 7b2f */ NULL, /* 7b30 */ NULL, /* 7b31 */ NULL, /* 7b32 */ NULL, /* 7b33 */ NULL, /* 7b34 */ NULL, /* 7b35 */ NULL, /* 7b36 */ NULL, /* 7b37 */ NULL, /* 7b38 */ NULL, /* 7b39 */ NULL, /* 7b3a */ NULL, /* 7b3b */ NULL, /* 7b3c */ NULL, /* 7b3d */ NULL, /* 7b3e */ NULL, /* 7b3f */ NULL, /* 7b40 */ NULL, /* 7b41 */ NULL, /* 7b42 */ NULL, /* 7b43 */ NULL, /* 7b44 */ NULL, /* 7b45 */ NULL, /* 7b46 */ NULL, /* 7b47 */ NULL, /* 7b48 */ NULL, /* 7b49 */ NULL, /* 7b4a */ NULL, /* 7b4b */ NULL, /* 7b4c */ NULL, /* 7b4d */ NULL, /* 7b4e */ NULL, /* 7b4f */ NULL, /* 7b50 */ NULL, /* 7b51 */ NULL, /* 7b52 */ NULL, /* 7b53 */ NULL, /* 7b54 */ NULL, /* 7b55 */ NULL, /* 7b56 */ NULL, /* 7b57 */ NULL, /* 7b58 */ NULL, /* 7b59 */ NULL, /* 7b5a */ NULL, /* 7b5b */ NULL, /* 7b5c */ NULL, /* 7b5d */ NULL, /* 7b5e */ NULL, /* 7b5f */ NULL, /* 7b60 */ NULL, /* 7b61 */ NULL, /* 7b62 */ NULL, /* 7b63 */ NULL, /* 7b64 */ NULL, /* 7b65 */ NULL, /* 7b66 */ NULL, /* 7b67 */ NULL, /* 7b68 */ NULL, /* 7b69 */ NULL, /* 7b6a */ NULL, /* 7b6b */ NULL, /* 7b6c */ NULL, /* 7b6d */ NULL, /* 7b6e */ NULL, /* 7b6f */ NULL, /* 7b70 */ NULL, /* 7b71 */ NULL, /* 7b72 */ NULL, /* 7b73 */ NULL, /* 7b74 */ NULL, /* 7b75 */ NULL, /* 7b76 */ NULL, /* 7b77 */ NULL, /* 7b78 */ NULL, /* 7b79 */ NULL, /* 7b7a */ NULL, /* 7b7b */ NULL, /* 7b7c */ NULL, /* 7b7d */ NULL, /* 7b7e */ NULL, /* 7b7f */ NULL, /* 7b80 */ NULL, /* 7b81 */ NULL, /* 7b82 */ NULL, /* 7b83 */ NULL, /* 7b84 */ NULL, /* 7b85 */ NULL, /* 7b86 */ NULL, /* 7b87 */ NULL, /* 7b88 */ NULL, /* 7b89 */ NULL, /* 7b8a */ NULL, /* 7b8b */ NULL, /* 7b8c */ NULL, /* 7b8d */ NULL, /* 7b8e */ NULL, /* 7b8f */ NULL, /* 7b90 */ NULL, /* 7b91 */ NULL, /* 7b92 */ NULL, /* 7b93 */ NULL, /* 7b94 */ NULL, /* 7b95 */ NULL, /* 7b96 */ NULL, /* 7b97 */ NULL, /* 7b98 */ NULL, /* 7b99 */ NULL, /* 7b9a */ NULL, /* 7b9b */ NULL, /* 7b9c */ NULL, /* 7b9d */ NULL, /* 7b9e */ NULL, /* 7b9f */ NULL, /* 7ba0 */ NULL, /* 7ba1 */ NULL, /* 7ba2 */ NULL, /* 7ba3 */ NULL, /* 7ba4 */ NULL, /* 7ba5 */ NULL, /* 7ba6 */ NULL, /* 7ba7 */ NULL, /* 7ba8 */ NULL, /* 7ba9 */ NULL, /* 7baa */ NULL, /* 7bab */ NULL, /* 7bac */ NULL, /* 7bad */ NULL, /* 7bae */ NULL, /* 7baf */ NULL, /* 7bb0 */ NULL, /* 7bb1 */ NULL, /* 7bb2 */ NULL, /* 7bb3 */ NULL, /* 7bb4 */ NULL, /* 7bb5 */ NULL, /* 7bb6 */ NULL, /* 7bb7 */ NULL, /* 7bb8 */ NULL, /* 7bb9 */ NULL, /* 7bba */ NULL, /* 7bbb */ NULL, /* 7bbc */ NULL, /* 7bbd */ NULL, /* 7bbe */ NULL, /* 7bbf */ NULL, /* 7bc0 */ NULL, /* 7bc1 */ NULL, /* 7bc2 */ NULL, /* 7bc3 */ NULL, /* 7bc4 */ NULL, /* 7bc5 */ NULL, /* 7bc6 */ NULL, /* 7bc7 */ NULL, /* 7bc8 */ NULL, /* 7bc9 */ NULL, /* 7bca */ NULL, /* 7bcb */ NULL, /* 7bcc */ NULL, /* 7bcd */ NULL, /* 7bce */ NULL, /* 7bcf */ NULL, /* 7bd0 */ NULL, /* 7bd1 */ NULL, /* 7bd2 */ NULL, /* 7bd3 */ NULL, /* 7bd4 */ NULL, /* 7bd5 */ NULL, /* 7bd6 */ NULL, /* 7bd7 */ NULL, /* 7bd8 */ NULL, /* 7bd9 */ NULL, /* 7bda */ NULL, /* 7bdb */ NULL, /* 7bdc */ NULL, /* 7bdd */ NULL, /* 7bde */ NULL, /* 7bdf */ NULL, /* 7be0 */ NULL, /* 7be1 */ NULL, /* 7be2 */ NULL, /* 7be3 */ NULL, /* 7be4 */ NULL, /* 7be5 */ NULL, /* 7be6 */ NULL, /* 7be7 */ NULL, /* 7be8 */ NULL, /* 7be9 */ NULL, /* 7bea */ NULL, /* 7beb */ NULL, /* 7bec */ NULL, /* 7bed */ NULL, /* 7bee */ NULL, /* 7bef */ NULL, /* 7bf0 */ NULL, /* 7bf1 */ NULL, /* 7bf2 */ NULL, /* 7bf3 */ NULL, /* 7bf4 */ NULL, /* 7bf5 */ NULL, /* 7bf6 */ NULL, /* 7bf7 */ NULL, /* 7bf8 */ NULL, /* 7bf9 */ NULL, /* 7bfa */ NULL, /* 7bfb */ NULL, /* 7bfc */ NULL, /* 7bfd */ NULL, /* 7bfe */ NULL, /* 7bff */ NULL, /* 7c00 */ NULL, /* 7c01 */ NULL, /* 7c02 */ NULL, /* 7c03 */ NULL, /* 7c04 */ NULL, /* 7c05 */ NULL, /* 7c06 */ NULL, /* 7c07 */ NULL, /* 7c08 */ NULL, /* 7c09 */ NULL, /* 7c0a */ NULL, /* 7c0b */ NULL, /* 7c0c */ NULL, /* 7c0d */ NULL, /* 7c0e */ NULL, /* 7c0f */ NULL, /* 7c10 */ NULL, /* 7c11 */ NULL, /* 7c12 */ NULL, /* 7c13 */ NULL, /* 7c14 */ NULL, /* 7c15 */ NULL, /* 7c16 */ NULL, /* 7c17 */ NULL, /* 7c18 */ NULL, /* 7c19 */ NULL, /* 7c1a */ NULL, /* 7c1b */ NULL, /* 7c1c */ NULL, /* 7c1d */ NULL, /* 7c1e */ NULL, /* 7c1f */ NULL, /* 7c20 */ NULL, /* 7c21 */ NULL, /* 7c22 */ NULL, /* 7c23 */ NULL, /* 7c24 */ NULL, /* 7c25 */ NULL, /* 7c26 */ NULL, /* 7c27 */ NULL, /* 7c28 */ NULL, /* 7c29 */ NULL, /* 7c2a */ NULL, /* 7c2b */ NULL, /* 7c2c */ NULL, /* 7c2d */ NULL, /* 7c2e */ NULL, /* 7c2f */ NULL, /* 7c30 */ NULL, /* 7c31 */ NULL, /* 7c32 */ NULL, /* 7c33 */ NULL, /* 7c34 */ NULL, /* 7c35 */ NULL, /* 7c36 */ NULL, /* 7c37 */ NULL, /* 7c38 */ NULL, /* 7c39 */ NULL, /* 7c3a */ NULL, /* 7c3b */ NULL, /* 7c3c */ NULL, /* 7c3d */ NULL, /* 7c3e */ NULL, /* 7c3f */ NULL, /* 7c40 */ NULL, /* 7c41 */ NULL, /* 7c42 */ NULL, /* 7c43 */ NULL, /* 7c44 */ NULL, /* 7c45 */ NULL, /* 7c46 */ NULL, /* 7c47 */ NULL, /* 7c48 */ NULL, /* 7c49 */ NULL, /* 7c4a */ NULL, /* 7c4b */ NULL, /* 7c4c */ NULL, /* 7c4d */ NULL, /* 7c4e */ NULL, /* 7c4f */ NULL, /* 7c50 */ NULL, /* 7c51 */ NULL, /* 7c52 */ NULL, /* 7c53 */ NULL, /* 7c54 */ NULL, /* 7c55 */ NULL, /* 7c56 */ NULL, /* 7c57 */ NULL, /* 7c58 */ NULL, /* 7c59 */ NULL, /* 7c5a */ NULL, /* 7c5b */ NULL, /* 7c5c */ NULL, /* 7c5d */ NULL, /* 7c5e */ NULL, /* 7c5f */ NULL, /* 7c60 */ NULL, /* 7c61 */ NULL, /* 7c62 */ NULL, /* 7c63 */ NULL, /* 7c64 */ NULL, /* 7c65 */ NULL, /* 7c66 */ NULL, /* 7c67 */ NULL, /* 7c68 */ NULL, /* 7c69 */ NULL, /* 7c6a */ NULL, /* 7c6b */ NULL, /* 7c6c */ NULL, /* 7c6d */ NULL, /* 7c6e */ NULL, /* 7c6f */ NULL, /* 7c70 */ NULL, /* 7c71 */ NULL, /* 7c72 */ NULL, /* 7c73 */ NULL, /* 7c74 */ NULL, /* 7c75 */ NULL, /* 7c76 */ NULL, /* 7c77 */ NULL, /* 7c78 */ NULL, /* 7c79 */ NULL, /* 7c7a */ NULL, /* 7c7b */ NULL, /* 7c7c */ NULL, /* 7c7d */ NULL, /* 7c7e */ NULL, /* 7c7f */ NULL, /* 7c80 */ NULL, /* 7c81 */ NULL, /* 7c82 */ NULL, /* 7c83 */ NULL, /* 7c84 */ NULL, /* 7c85 */ NULL, /* 7c86 */ NULL, /* 7c87 */ NULL, /* 7c88 */ NULL, /* 7c89 */ NULL, /* 7c8a */ NULL, /* 7c8b */ NULL, /* 7c8c */ NULL, /* 7c8d */ NULL, /* 7c8e */ NULL, /* 7c8f */ NULL, /* 7c90 */ NULL, /* 7c91 */ NULL, /* 7c92 */ NULL, /* 7c93 */ NULL, /* 7c94 */ NULL, /* 7c95 */ NULL, /* 7c96 */ NULL, /* 7c97 */ NULL, /* 7c98 */ NULL, /* 7c99 */ NULL, /* 7c9a */ NULL, /* 7c9b */ NULL, /* 7c9c */ NULL, /* 7c9d */ NULL, /* 7c9e */ NULL, /* 7c9f */ NULL, /* 7ca0 */ NULL, /* 7ca1 */ NULL, /* 7ca2 */ NULL, /* 7ca3 */ NULL, /* 7ca4 */ NULL, /* 7ca5 */ NULL, /* 7ca6 */ NULL, /* 7ca7 */ NULL, /* 7ca8 */ NULL, /* 7ca9 */ NULL, /* 7caa */ NULL, /* 7cab */ NULL, /* 7cac */ NULL, /* 7cad */ NULL, /* 7cae */ NULL, /* 7caf */ NULL, /* 7cb0 */ NULL, /* 7cb1 */ NULL, /* 7cb2 */ NULL, /* 7cb3 */ NULL, /* 7cb4 */ NULL, /* 7cb5 */ NULL, /* 7cb6 */ NULL, /* 7cb7 */ NULL, /* 7cb8 */ NULL, /* 7cb9 */ NULL, /* 7cba */ NULL, /* 7cbb */ NULL, /* 7cbc */ NULL, /* 7cbd */ NULL, /* 7cbe */ NULL, /* 7cbf */ NULL, /* 7cc0 */ NULL, /* 7cc1 */ NULL, /* 7cc2 */ NULL, /* 7cc3 */ NULL, /* 7cc4 */ NULL, /* 7cc5 */ NULL, /* 7cc6 */ NULL, /* 7cc7 */ NULL, /* 7cc8 */ NULL, /* 7cc9 */ NULL, /* 7cca */ NULL, /* 7ccb */ NULL, /* 7ccc */ NULL, /* 7ccd */ NULL, /* 7cce */ NULL, /* 7ccf */ NULL, /* 7cd0 */ NULL, /* 7cd1 */ NULL, /* 7cd2 */ NULL, /* 7cd3 */ NULL, /* 7cd4 */ NULL, /* 7cd5 */ NULL, /* 7cd6 */ NULL, /* 7cd7 */ NULL, /* 7cd8 */ NULL, /* 7cd9 */ NULL, /* 7cda */ NULL, /* 7cdb */ NULL, /* 7cdc */ NULL, /* 7cdd */ NULL, /* 7cde */ NULL, /* 7cdf */ NULL, /* 7ce0 */ NULL, /* 7ce1 */ NULL, /* 7ce2 */ NULL, /* 7ce3 */ NULL, /* 7ce4 */ NULL, /* 7ce5 */ NULL, /* 7ce6 */ NULL, /* 7ce7 */ NULL, /* 7ce8 */ NULL, /* 7ce9 */ NULL, /* 7cea */ NULL, /* 7ceb */ NULL, /* 7cec */ NULL, /* 7ced */ NULL, /* 7cee */ NULL, /* 7cef */ NULL, /* 7cf0 */ NULL, /* 7cf1 */ NULL, /* 7cf2 */ NULL, /* 7cf3 */ NULL, /* 7cf4 */ NULL, /* 7cf5 */ NULL, /* 7cf6 */ NULL, /* 7cf7 */ NULL, /* 7cf8 */ NULL, /* 7cf9 */ NULL, /* 7cfa */ NULL, /* 7cfb */ NULL, /* 7cfc */ NULL, /* 7cfd */ NULL, /* 7cfe */ NULL, /* 7cff */ NULL, /* 7d00 */ NULL, /* 7d01 */ NULL, /* 7d02 */ NULL, /* 7d03 */ NULL, /* 7d04 */ NULL, /* 7d05 */ NULL, /* 7d06 */ NULL, /* 7d07 */ NULL, /* 7d08 */ NULL, /* 7d09 */ NULL, /* 7d0a */ NULL, /* 7d0b */ NULL, /* 7d0c */ NULL, /* 7d0d */ NULL, /* 7d0e */ NULL, /* 7d0f */ NULL, /* 7d10 */ NULL, /* 7d11 */ NULL, /* 7d12 */ NULL, /* 7d13 */ NULL, /* 7d14 */ NULL, /* 7d15 */ NULL, /* 7d16 */ NULL, /* 7d17 */ NULL, /* 7d18 */ NULL, /* 7d19 */ NULL, /* 7d1a */ NULL, /* 7d1b */ NULL, /* 7d1c */ NULL, /* 7d1d */ NULL, /* 7d1e */ NULL, /* 7d1f */ NULL, /* 7d20 */ NULL, /* 7d21 */ NULL, /* 7d22 */ NULL, /* 7d23 */ NULL, /* 7d24 */ NULL, /* 7d25 */ NULL, /* 7d26 */ NULL, /* 7d27 */ NULL, /* 7d28 */ NULL, /* 7d29 */ NULL, /* 7d2a */ NULL, /* 7d2b */ NULL, /* 7d2c */ NULL, /* 7d2d */ NULL, /* 7d2e */ NULL, /* 7d2f */ NULL, /* 7d30 */ NULL, /* 7d31 */ NULL, /* 7d32 */ NULL, /* 7d33 */ NULL, /* 7d34 */ NULL, /* 7d35 */ NULL, /* 7d36 */ NULL, /* 7d37 */ NULL, /* 7d38 */ NULL, /* 7d39 */ NULL, /* 7d3a */ NULL, /* 7d3b */ NULL, /* 7d3c */ NULL, /* 7d3d */ NULL, /* 7d3e */ NULL, /* 7d3f */ NULL, /* 7d40 */ NULL, /* 7d41 */ NULL, /* 7d42 */ NULL, /* 7d43 */ NULL, /* 7d44 */ NULL, /* 7d45 */ NULL, /* 7d46 */ NULL, /* 7d47 */ NULL, /* 7d48 */ NULL, /* 7d49 */ NULL, /* 7d4a */ NULL, /* 7d4b */ NULL, /* 7d4c */ NULL, /* 7d4d */ NULL, /* 7d4e */ NULL, /* 7d4f */ NULL, /* 7d50 */ NULL, /* 7d51 */ NULL, /* 7d52 */ NULL, /* 7d53 */ NULL, /* 7d54 */ NULL, /* 7d55 */ NULL, /* 7d56 */ NULL, /* 7d57 */ NULL, /* 7d58 */ NULL, /* 7d59 */ NULL, /* 7d5a */ NULL, /* 7d5b */ NULL, /* 7d5c */ NULL, /* 7d5d */ NULL, /* 7d5e */ NULL, /* 7d5f */ NULL, /* 7d60 */ NULL, /* 7d61 */ NULL, /* 7d62 */ NULL, /* 7d63 */ NULL, /* 7d64 */ NULL, /* 7d65 */ NULL, /* 7d66 */ NULL, /* 7d67 */ NULL, /* 7d68 */ NULL, /* 7d69 */ NULL, /* 7d6a */ NULL, /* 7d6b */ NULL, /* 7d6c */ NULL, /* 7d6d */ NULL, /* 7d6e */ NULL, /* 7d6f */ NULL, /* 7d70 */ NULL, /* 7d71 */ NULL, /* 7d72 */ NULL, /* 7d73 */ NULL, /* 7d74 */ NULL, /* 7d75 */ NULL, /* 7d76 */ NULL, /* 7d77 */ NULL, /* 7d78 */ NULL, /* 7d79 */ NULL, /* 7d7a */ NULL, /* 7d7b */ NULL, /* 7d7c */ NULL, /* 7d7d */ NULL, /* 7d7e */ NULL, /* 7d7f */ NULL, /* 7d80 */ NULL, /* 7d81 */ NULL, /* 7d82 */ NULL, /* 7d83 */ NULL, /* 7d84 */ NULL, /* 7d85 */ NULL, /* 7d86 */ NULL, /* 7d87 */ NULL, /* 7d88 */ NULL, /* 7d89 */ NULL, /* 7d8a */ NULL, /* 7d8b */ NULL, /* 7d8c */ NULL, /* 7d8d */ NULL, /* 7d8e */ NULL, /* 7d8f */ NULL, /* 7d90 */ NULL, /* 7d91 */ NULL, /* 7d92 */ NULL, /* 7d93 */ NULL, /* 7d94 */ NULL, /* 7d95 */ NULL, /* 7d96 */ NULL, /* 7d97 */ NULL, /* 7d98 */ NULL, /* 7d99 */ NULL, /* 7d9a */ NULL, /* 7d9b */ NULL, /* 7d9c */ NULL, /* 7d9d */ NULL, /* 7d9e */ NULL, /* 7d9f */ NULL, /* 7da0 */ NULL, /* 7da1 */ NULL, /* 7da2 */ NULL, /* 7da3 */ NULL, /* 7da4 */ NULL, /* 7da5 */ NULL, /* 7da6 */ NULL, /* 7da7 */ NULL, /* 7da8 */ NULL, /* 7da9 */ NULL, /* 7daa */ NULL, /* 7dab */ NULL, /* 7dac */ NULL, /* 7dad */ NULL, /* 7dae */ NULL, /* 7daf */ NULL, /* 7db0 */ NULL, /* 7db1 */ NULL, /* 7db2 */ NULL, /* 7db3 */ NULL, /* 7db4 */ NULL, /* 7db5 */ NULL, /* 7db6 */ NULL, /* 7db7 */ NULL, /* 7db8 */ NULL, /* 7db9 */ NULL, /* 7dba */ NULL, /* 7dbb */ NULL, /* 7dbc */ NULL, /* 7dbd */ NULL, /* 7dbe */ NULL, /* 7dbf */ NULL, /* 7dc0 */ NULL, /* 7dc1 */ NULL, /* 7dc2 */ NULL, /* 7dc3 */ NULL, /* 7dc4 */ NULL, /* 7dc5 */ NULL, /* 7dc6 */ NULL, /* 7dc7 */ NULL, /* 7dc8 */ NULL, /* 7dc9 */ NULL, /* 7dca */ NULL, /* 7dcb */ NULL, /* 7dcc */ NULL, /* 7dcd */ NULL, /* 7dce */ NULL, /* 7dcf */ NULL, /* 7dd0 */ NULL, /* 7dd1 */ NULL, /* 7dd2 */ NULL, /* 7dd3 */ NULL, /* 7dd4 */ NULL, /* 7dd5 */ NULL, /* 7dd6 */ NULL, /* 7dd7 */ NULL, /* 7dd8 */ NULL, /* 7dd9 */ NULL, /* 7dda */ NULL, /* 7ddb */ NULL, /* 7ddc */ NULL, /* 7ddd */ NULL, /* 7dde */ NULL, /* 7ddf */ NULL, /* 7de0 */ NULL, /* 7de1 */ NULL, /* 7de2 */ NULL, /* 7de3 */ NULL, /* 7de4 */ NULL, /* 7de5 */ NULL, /* 7de6 */ NULL, /* 7de7 */ NULL, /* 7de8 */ NULL, /* 7de9 */ NULL, /* 7dea */ NULL, /* 7deb */ NULL, /* 7dec */ NULL, /* 7ded */ NULL, /* 7dee */ NULL, /* 7def */ NULL, /* 7df0 */ NULL, /* 7df1 */ NULL, /* 7df2 */ NULL, /* 7df3 */ NULL, /* 7df4 */ NULL, /* 7df5 */ NULL, /* 7df6 */ NULL, /* 7df7 */ NULL, /* 7df8 */ NULL, /* 7df9 */ NULL, /* 7dfa */ NULL, /* 7dfb */ NULL, /* 7dfc */ NULL, /* 7dfd */ NULL, /* 7dfe */ NULL, /* 7dff */ NULL, /* 7e00 */ NULL, /* 7e01 */ NULL, /* 7e02 */ NULL, /* 7e03 */ NULL, /* 7e04 */ NULL, /* 7e05 */ NULL, /* 7e06 */ NULL, /* 7e07 */ NULL, /* 7e08 */ NULL, /* 7e09 */ NULL, /* 7e0a */ NULL, /* 7e0b */ NULL, /* 7e0c */ NULL, /* 7e0d */ NULL, /* 7e0e */ NULL, /* 7e0f */ NULL, /* 7e10 */ NULL, /* 7e11 */ NULL, /* 7e12 */ NULL, /* 7e13 */ NULL, /* 7e14 */ NULL, /* 7e15 */ NULL, /* 7e16 */ NULL, /* 7e17 */ NULL, /* 7e18 */ NULL, /* 7e19 */ NULL, /* 7e1a */ NULL, /* 7e1b */ NULL, /* 7e1c */ NULL, /* 7e1d */ NULL, /* 7e1e */ NULL, /* 7e1f */ NULL, /* 7e20 */ NULL, /* 7e21 */ NULL, /* 7e22 */ NULL, /* 7e23 */ NULL, /* 7e24 */ NULL, /* 7e25 */ NULL, /* 7e26 */ NULL, /* 7e27 */ NULL, /* 7e28 */ NULL, /* 7e29 */ NULL, /* 7e2a */ NULL, /* 7e2b */ NULL, /* 7e2c */ NULL, /* 7e2d */ NULL, /* 7e2e */ NULL, /* 7e2f */ NULL, /* 7e30 */ NULL, /* 7e31 */ NULL, /* 7e32 */ NULL, /* 7e33 */ NULL, /* 7e34 */ NULL, /* 7e35 */ NULL, /* 7e36 */ NULL, /* 7e37 */ NULL, /* 7e38 */ NULL, /* 7e39 */ NULL, /* 7e3a */ NULL, /* 7e3b */ NULL, /* 7e3c */ NULL, /* 7e3d */ NULL, /* 7e3e */ NULL, /* 7e3f */ NULL, /* 7e40 */ NULL, /* 7e41 */ NULL, /* 7e42 */ NULL, /* 7e43 */ NULL, /* 7e44 */ NULL, /* 7e45 */ NULL, /* 7e46 */ NULL, /* 7e47 */ NULL, /* 7e48 */ NULL, /* 7e49 */ NULL, /* 7e4a */ NULL, /* 7e4b */ NULL, /* 7e4c */ NULL, /* 7e4d */ NULL, /* 7e4e */ NULL, /* 7e4f */ NULL, /* 7e50 */ NULL, /* 7e51 */ NULL, /* 7e52 */ NULL, /* 7e53 */ NULL, /* 7e54 */ NULL, /* 7e55 */ NULL, /* 7e56 */ NULL, /* 7e57 */ NULL, /* 7e58 */ NULL, /* 7e59 */ NULL, /* 7e5a */ NULL, /* 7e5b */ NULL, /* 7e5c */ NULL, /* 7e5d */ NULL, /* 7e5e */ NULL, /* 7e5f */ NULL, /* 7e60 */ NULL, /* 7e61 */ NULL, /* 7e62 */ NULL, /* 7e63 */ NULL, /* 7e64 */ NULL, /* 7e65 */ NULL, /* 7e66 */ NULL, /* 7e67 */ NULL, /* 7e68 */ NULL, /* 7e69 */ NULL, /* 7e6a */ NULL, /* 7e6b */ NULL, /* 7e6c */ NULL, /* 7e6d */ NULL, /* 7e6e */ NULL, /* 7e6f */ NULL, /* 7e70 */ NULL, /* 7e71 */ NULL, /* 7e72 */ NULL, /* 7e73 */ NULL, /* 7e74 */ NULL, /* 7e75 */ NULL, /* 7e76 */ NULL, /* 7e77 */ NULL, /* 7e78 */ NULL, /* 7e79 */ NULL, /* 7e7a */ NULL, /* 7e7b */ NULL, /* 7e7c */ NULL, /* 7e7d */ NULL, /* 7e7e */ NULL, /* 7e7f */ NULL, /* 7e80 */ NULL, /* 7e81 */ NULL, /* 7e82 */ NULL, /* 7e83 */ NULL, /* 7e84 */ NULL, /* 7e85 */ NULL, /* 7e86 */ NULL, /* 7e87 */ NULL, /* 7e88 */ NULL, /* 7e89 */ NULL, /* 7e8a */ NULL, /* 7e8b */ NULL, /* 7e8c */ NULL, /* 7e8d */ NULL, /* 7e8e */ NULL, /* 7e8f */ NULL, /* 7e90 */ NULL, /* 7e91 */ NULL, /* 7e92 */ NULL, /* 7e93 */ NULL, /* 7e94 */ NULL, /* 7e95 */ NULL, /* 7e96 */ NULL, /* 7e97 */ NULL, /* 7e98 */ NULL, /* 7e99 */ NULL, /* 7e9a */ NULL, /* 7e9b */ NULL, /* 7e9c */ NULL, /* 7e9d */ NULL, /* 7e9e */ NULL, /* 7e9f */ NULL, /* 7ea0 */ NULL, /* 7ea1 */ NULL, /* 7ea2 */ NULL, /* 7ea3 */ NULL, /* 7ea4 */ NULL, /* 7ea5 */ NULL, /* 7ea6 */ NULL, /* 7ea7 */ NULL, /* 7ea8 */ NULL, /* 7ea9 */ NULL, /* 7eaa */ NULL, /* 7eab */ NULL, /* 7eac */ NULL, /* 7ead */ NULL, /* 7eae */ NULL, /* 7eaf */ NULL, /* 7eb0 */ NULL, /* 7eb1 */ NULL, /* 7eb2 */ NULL, /* 7eb3 */ NULL, /* 7eb4 */ NULL, /* 7eb5 */ NULL, /* 7eb6 */ NULL, /* 7eb7 */ NULL, /* 7eb8 */ NULL, /* 7eb9 */ NULL, /* 7eba */ NULL, /* 7ebb */ NULL, /* 7ebc */ NULL, /* 7ebd */ NULL, /* 7ebe */ NULL, /* 7ebf */ NULL, /* 7ec0 */ NULL, /* 7ec1 */ NULL, /* 7ec2 */ NULL, /* 7ec3 */ NULL, /* 7ec4 */ NULL, /* 7ec5 */ NULL, /* 7ec6 */ NULL, /* 7ec7 */ NULL, /* 7ec8 */ NULL, /* 7ec9 */ NULL, /* 7eca */ NULL, /* 7ecb */ NULL, /* 7ecc */ NULL, /* 7ecd */ NULL, /* 7ece */ NULL, /* 7ecf */ NULL, /* 7ed0 */ NULL, /* 7ed1 */ NULL, /* 7ed2 */ NULL, /* 7ed3 */ NULL, /* 7ed4 */ NULL, /* 7ed5 */ NULL, /* 7ed6 */ NULL, /* 7ed7 */ NULL, /* 7ed8 */ NULL, /* 7ed9 */ NULL, /* 7eda */ NULL, /* 7edb */ NULL, /* 7edc */ NULL, /* 7edd */ NULL, /* 7ede */ NULL, /* 7edf */ NULL, /* 7ee0 */ NULL, /* 7ee1 */ NULL, /* 7ee2 */ NULL, /* 7ee3 */ NULL, /* 7ee4 */ NULL, /* 7ee5 */ NULL, /* 7ee6 */ NULL, /* 7ee7 */ NULL, /* 7ee8 */ NULL, /* 7ee9 */ NULL, /* 7eea */ NULL, /* 7eeb */ NULL, /* 7eec */ NULL, /* 7eed */ NULL, /* 7eee */ NULL, /* 7eef */ NULL, /* 7ef0 */ NULL, /* 7ef1 */ NULL, /* 7ef2 */ NULL, /* 7ef3 */ NULL, /* 7ef4 */ NULL, /* 7ef5 */ NULL, /* 7ef6 */ NULL, /* 7ef7 */ NULL, /* 7ef8 */ NULL, /* 7ef9 */ NULL, /* 7efa */ NULL, /* 7efb */ NULL, /* 7efc */ NULL, /* 7efd */ NULL, /* 7efe */ NULL, /* 7eff */ NULL, /* 7f00 */ NULL, /* 7f01 */ NULL, /* 7f02 */ NULL, /* 7f03 */ NULL, /* 7f04 */ NULL, /* 7f05 */ NULL, /* 7f06 */ NULL, /* 7f07 */ NULL, /* 7f08 */ NULL, /* 7f09 */ NULL, /* 7f0a */ NULL, /* 7f0b */ NULL, /* 7f0c */ NULL, /* 7f0d */ NULL, /* 7f0e */ NULL, /* 7f0f */ NULL, /* 7f10 */ NULL, /* 7f11 */ NULL, /* 7f12 */ NULL, /* 7f13 */ NULL, /* 7f14 */ NULL, /* 7f15 */ NULL, /* 7f16 */ NULL, /* 7f17 */ NULL, /* 7f18 */ NULL, /* 7f19 */ NULL, /* 7f1a */ NULL, /* 7f1b */ NULL, /* 7f1c */ NULL, /* 7f1d */ NULL, /* 7f1e */ NULL, /* 7f1f */ NULL, /* 7f20 */ NULL, /* 7f21 */ NULL, /* 7f22 */ NULL, /* 7f23 */ NULL, /* 7f24 */ NULL, /* 7f25 */ NULL, /* 7f26 */ NULL, /* 7f27 */ NULL, /* 7f28 */ NULL, /* 7f29 */ NULL, /* 7f2a */ NULL, /* 7f2b */ NULL, /* 7f2c */ NULL, /* 7f2d */ NULL, /* 7f2e */ NULL, /* 7f2f */ NULL, /* 7f30 */ NULL, /* 7f31 */ NULL, /* 7f32 */ NULL, /* 7f33 */ NULL, /* 7f34 */ NULL, /* 7f35 */ NULL, /* 7f36 */ NULL, /* 7f37 */ NULL, /* 7f38 */ NULL, /* 7f39 */ NULL, /* 7f3a */ NULL, /* 7f3b */ NULL, /* 7f3c */ NULL, /* 7f3d */ NULL, /* 7f3e */ NULL, /* 7f3f */ NULL, /* 7f40 */ NULL, /* 7f41 */ NULL, /* 7f42 */ NULL, /* 7f43 */ NULL, /* 7f44 */ NULL, /* 7f45 */ NULL, /* 7f46 */ NULL, /* 7f47 */ NULL, /* 7f48 */ NULL, /* 7f49 */ NULL, /* 7f4a */ NULL, /* 7f4b */ NULL, /* 7f4c */ NULL, /* 7f4d */ NULL, /* 7f4e */ NULL, /* 7f4f */ NULL, /* 7f50 */ NULL, /* 7f51 */ NULL, /* 7f52 */ NULL, /* 7f53 */ NULL, /* 7f54 */ NULL, /* 7f55 */ NULL, /* 7f56 */ NULL, /* 7f57 */ NULL, /* 7f58 */ NULL, /* 7f59 */ NULL, /* 7f5a */ NULL, /* 7f5b */ NULL, /* 7f5c */ NULL, /* 7f5d */ NULL, /* 7f5e */ NULL, /* 7f5f */ NULL, /* 7f60 */ NULL, /* 7f61 */ NULL, /* 7f62 */ NULL, /* 7f63 */ NULL, /* 7f64 */ NULL, /* 7f65 */ NULL, /* 7f66 */ NULL, /* 7f67 */ NULL, /* 7f68 */ NULL, /* 7f69 */ NULL, /* 7f6a */ NULL, /* 7f6b */ NULL, /* 7f6c */ NULL, /* 7f6d */ NULL, /* 7f6e */ NULL, /* 7f6f */ NULL, /* 7f70 */ NULL, /* 7f71 */ NULL, /* 7f72 */ NULL, /* 7f73 */ NULL, /* 7f74 */ NULL, /* 7f75 */ NULL, /* 7f76 */ NULL, /* 7f77 */ NULL, /* 7f78 */ NULL, /* 7f79 */ NULL, /* 7f7a */ NULL, /* 7f7b */ NULL, /* 7f7c */ NULL, /* 7f7d */ NULL, /* 7f7e */ NULL, /* 7f7f */ NULL, /* 7f80 */ NULL, /* 7f81 */ NULL, /* 7f82 */ NULL, /* 7f83 */ NULL, /* 7f84 */ NULL, /* 7f85 */ NULL, /* 7f86 */ NULL, /* 7f87 */ NULL, /* 7f88 */ NULL, /* 7f89 */ NULL, /* 7f8a */ NULL, /* 7f8b */ NULL, /* 7f8c */ NULL, /* 7f8d */ NULL, /* 7f8e */ NULL, /* 7f8f */ NULL, /* 7f90 */ NULL, /* 7f91 */ NULL, /* 7f92 */ NULL, /* 7f93 */ NULL, /* 7f94 */ NULL, /* 7f95 */ NULL, /* 7f96 */ NULL, /* 7f97 */ NULL, /* 7f98 */ NULL, /* 7f99 */ NULL, /* 7f9a */ NULL, /* 7f9b */ NULL, /* 7f9c */ NULL, /* 7f9d */ NULL, /* 7f9e */ NULL, /* 7f9f */ NULL, /* 7fa0 */ NULL, /* 7fa1 */ NULL, /* 7fa2 */ NULL, /* 7fa3 */ NULL, /* 7fa4 */ NULL, /* 7fa5 */ NULL, /* 7fa6 */ NULL, /* 7fa7 */ NULL, /* 7fa8 */ NULL, /* 7fa9 */ NULL, /* 7faa */ NULL, /* 7fab */ NULL, /* 7fac */ NULL, /* 7fad */ NULL, /* 7fae */ NULL, /* 7faf */ NULL, /* 7fb0 */ NULL, /* 7fb1 */ NULL, /* 7fb2 */ NULL, /* 7fb3 */ NULL, /* 7fb4 */ NULL, /* 7fb5 */ NULL, /* 7fb6 */ NULL, /* 7fb7 */ NULL, /* 7fb8 */ NULL, /* 7fb9 */ NULL, /* 7fba */ NULL, /* 7fbb */ NULL, /* 7fbc */ NULL, /* 7fbd */ NULL, /* 7fbe */ NULL, /* 7fbf */ NULL, /* 7fc0 */ NULL, /* 7fc1 */ NULL, /* 7fc2 */ NULL, /* 7fc3 */ NULL, /* 7fc4 */ NULL, /* 7fc5 */ NULL, /* 7fc6 */ NULL, /* 7fc7 */ NULL, /* 7fc8 */ NULL, /* 7fc9 */ NULL, /* 7fca */ NULL, /* 7fcb */ NULL, /* 7fcc */ NULL, /* 7fcd */ NULL, /* 7fce */ NULL, /* 7fcf */ NULL, /* 7fd0 */ NULL, /* 7fd1 */ NULL, /* 7fd2 */ NULL, /* 7fd3 */ NULL, /* 7fd4 */ NULL, /* 7fd5 */ NULL, /* 7fd6 */ NULL, /* 7fd7 */ NULL, /* 7fd8 */ NULL, /* 7fd9 */ NULL, /* 7fda */ NULL, /* 7fdb */ NULL, /* 7fdc */ NULL, /* 7fdd */ NULL, /* 7fde */ NULL, /* 7fdf */ NULL, /* 7fe0 */ NULL, /* 7fe1 */ NULL, /* 7fe2 */ NULL, /* 7fe3 */ NULL, /* 7fe4 */ NULL, /* 7fe5 */ NULL, /* 7fe6 */ NULL, /* 7fe7 */ NULL, /* 7fe8 */ NULL, /* 7fe9 */ NULL, /* 7fea */ NULL, /* 7feb */ NULL, /* 7fec */ NULL, /* 7fed */ NULL, /* 7fee */ NULL, /* 7fef */ NULL, /* 7ff0 */ NULL, /* 7ff1 */ NULL, /* 7ff2 */ NULL, /* 7ff3 */ NULL, /* 7ff4 */ NULL, /* 7ff5 */ NULL, /* 7ff6 */ NULL, /* 7ff7 */ NULL, /* 7ff8 */ NULL, /* 7ff9 */ NULL, /* 7ffa */ NULL, /* 7ffb */ NULL, /* 7ffc */ NULL, /* 7ffd */ NULL, /* 7ffe */ NULL, /* 7fff */ NULL, /* 8000 */ NULL, /* 8001 */ NULL, /* 8002 */ NULL, /* 8003 */ NULL, /* 8004 */ NULL, /* 8005 */ NULL, /* 8006 */ NULL, /* 8007 */ NULL, /* 8008 */ NULL, /* 8009 */ NULL, /* 800a */ NULL, /* 800b */ NULL, /* 800c */ NULL, /* 800d */ NULL, /* 800e */ NULL, /* 800f */ NULL, /* 8010 */ NULL, /* 8011 */ NULL, /* 8012 */ NULL, /* 8013 */ NULL, /* 8014 */ NULL, /* 8015 */ NULL, /* 8016 */ NULL, /* 8017 */ NULL, /* 8018 */ NULL, /* 8019 */ NULL, /* 801a */ NULL, /* 801b */ NULL, /* 801c */ NULL, /* 801d */ NULL, /* 801e */ NULL, /* 801f */ NULL, /* 8020 */ NULL, /* 8021 */ NULL, /* 8022 */ NULL, /* 8023 */ NULL, /* 8024 */ NULL, /* 8025 */ NULL, /* 8026 */ NULL, /* 8027 */ NULL, /* 8028 */ NULL, /* 8029 */ NULL, /* 802a */ NULL, /* 802b */ NULL, /* 802c */ NULL, /* 802d */ NULL, /* 802e */ NULL, /* 802f */ NULL, /* 8030 */ NULL, /* 8031 */ NULL, /* 8032 */ NULL, /* 8033 */ NULL, /* 8034 */ NULL, /* 8035 */ NULL, /* 8036 */ NULL, /* 8037 */ NULL, /* 8038 */ NULL, /* 8039 */ NULL, /* 803a */ NULL, /* 803b */ NULL, /* 803c */ NULL, /* 803d */ NULL, /* 803e */ NULL, /* 803f */ NULL, /* 8040 */ NULL, /* 8041 */ NULL, /* 8042 */ NULL, /* 8043 */ NULL, /* 8044 */ NULL, /* 8045 */ NULL, /* 8046 */ NULL, /* 8047 */ NULL, /* 8048 */ NULL, /* 8049 */ NULL, /* 804a */ NULL, /* 804b */ NULL, /* 804c */ NULL, /* 804d */ NULL, /* 804e */ NULL, /* 804f */ NULL, /* 8050 */ NULL, /* 8051 */ NULL, /* 8052 */ NULL, /* 8053 */ NULL, /* 8054 */ NULL, /* 8055 */ NULL, /* 8056 */ NULL, /* 8057 */ NULL, /* 8058 */ NULL, /* 8059 */ NULL, /* 805a */ NULL, /* 805b */ NULL, /* 805c */ NULL, /* 805d */ NULL, /* 805e */ NULL, /* 805f */ NULL, /* 8060 */ NULL, /* 8061 */ NULL, /* 8062 */ NULL, /* 8063 */ NULL, /* 8064 */ NULL, /* 8065 */ NULL, /* 8066 */ NULL, /* 8067 */ NULL, /* 8068 */ NULL, /* 8069 */ NULL, /* 806a */ NULL, /* 806b */ NULL, /* 806c */ NULL, /* 806d */ NULL, /* 806e */ NULL, /* 806f */ NULL, /* 8070 */ NULL, /* 8071 */ NULL, /* 8072 */ NULL, /* 8073 */ NULL, /* 8074 */ NULL, /* 8075 */ NULL, /* 8076 */ NULL, /* 8077 */ NULL, /* 8078 */ NULL, /* 8079 */ NULL, /* 807a */ NULL, /* 807b */ NULL, /* 807c */ NULL, /* 807d */ NULL, /* 807e */ NULL, /* 807f */ NULL, /* 8080 */ NULL, /* 8081 */ NULL, /* 8082 */ NULL, /* 8083 */ NULL, /* 8084 */ NULL, /* 8085 */ NULL, /* 8086 */ NULL, /* 8087 */ NULL, /* 8088 */ NULL, /* 8089 */ NULL, /* 808a */ NULL, /* 808b */ NULL, /* 808c */ NULL, /* 808d */ NULL, /* 808e */ NULL, /* 808f */ NULL, /* 8090 */ NULL, /* 8091 */ NULL, /* 8092 */ NULL, /* 8093 */ NULL, /* 8094 */ NULL, /* 8095 */ NULL, /* 8096 */ NULL, /* 8097 */ NULL, /* 8098 */ NULL, /* 8099 */ NULL, /* 809a */ NULL, /* 809b */ NULL, /* 809c */ NULL, /* 809d */ NULL, /* 809e */ NULL, /* 809f */ NULL, /* 80a0 */ NULL, /* 80a1 */ NULL, /* 80a2 */ NULL, /* 80a3 */ NULL, /* 80a4 */ NULL, /* 80a5 */ NULL, /* 80a6 */ NULL, /* 80a7 */ NULL, /* 80a8 */ NULL, /* 80a9 */ NULL, /* 80aa */ NULL, /* 80ab */ NULL, /* 80ac */ NULL, /* 80ad */ NULL, /* 80ae */ NULL, /* 80af */ NULL, /* 80b0 */ NULL, /* 80b1 */ NULL, /* 80b2 */ NULL, /* 80b3 */ NULL, /* 80b4 */ NULL, /* 80b5 */ NULL, /* 80b6 */ NULL, /* 80b7 */ NULL, /* 80b8 */ NULL, /* 80b9 */ NULL, /* 80ba */ NULL, /* 80bb */ NULL, /* 80bc */ NULL, /* 80bd */ NULL, /* 80be */ NULL, /* 80bf */ NULL, /* 80c0 */ NULL, /* 80c1 */ NULL, /* 80c2 */ NULL, /* 80c3 */ NULL, /* 80c4 */ NULL, /* 80c5 */ NULL, /* 80c6 */ NULL, /* 80c7 */ NULL, /* 80c8 */ NULL, /* 80c9 */ NULL, /* 80ca */ NULL, /* 80cb */ NULL, /* 80cc */ NULL, /* 80cd */ NULL, /* 80ce */ NULL, /* 80cf */ NULL, /* 80d0 */ NULL, /* 80d1 */ NULL, /* 80d2 */ NULL, /* 80d3 */ NULL, /* 80d4 */ NULL, /* 80d5 */ NULL, /* 80d6 */ NULL, /* 80d7 */ NULL, /* 80d8 */ NULL, /* 80d9 */ NULL, /* 80da */ NULL, /* 80db */ NULL, /* 80dc */ NULL, /* 80dd */ NULL, /* 80de */ NULL, /* 80df */ NULL, /* 80e0 */ NULL, /* 80e1 */ NULL, /* 80e2 */ NULL, /* 80e3 */ NULL, /* 80e4 */ NULL, /* 80e5 */ NULL, /* 80e6 */ NULL, /* 80e7 */ NULL, /* 80e8 */ NULL, /* 80e9 */ NULL, /* 80ea */ NULL, /* 80eb */ NULL, /* 80ec */ NULL, /* 80ed */ NULL, /* 80ee */ NULL, /* 80ef */ NULL, /* 80f0 */ NULL, /* 80f1 */ NULL, /* 80f2 */ NULL, /* 80f3 */ NULL, /* 80f4 */ NULL, /* 80f5 */ NULL, /* 80f6 */ NULL, /* 80f7 */ NULL, /* 80f8 */ NULL, /* 80f9 */ NULL, /* 80fa */ NULL, /* 80fb */ NULL, /* 80fc */ NULL, /* 80fd */ NULL, /* 80fe */ NULL, /* 80ff */ NULL, /* 8100 */ NULL, /* 8101 */ NULL, /* 8102 */ NULL, /* 8103 */ NULL, /* 8104 */ NULL, /* 8105 */ NULL, /* 8106 */ NULL, /* 8107 */ NULL, /* 8108 */ NULL, /* 8109 */ NULL, /* 810a */ NULL, /* 810b */ NULL, /* 810c */ NULL, /* 810d */ NULL, /* 810e */ NULL, /* 810f */ NULL, /* 8110 */ NULL, /* 8111 */ NULL, /* 8112 */ NULL, /* 8113 */ NULL, /* 8114 */ NULL, /* 8115 */ NULL, /* 8116 */ NULL, /* 8117 */ NULL, /* 8118 */ NULL, /* 8119 */ NULL, /* 811a */ NULL, /* 811b */ NULL, /* 811c */ NULL, /* 811d */ NULL, /* 811e */ NULL, /* 811f */ NULL, /* 8120 */ NULL, /* 8121 */ NULL, /* 8122 */ NULL, /* 8123 */ NULL, /* 8124 */ NULL, /* 8125 */ NULL, /* 8126 */ NULL, /* 8127 */ NULL, /* 8128 */ NULL, /* 8129 */ NULL, /* 812a */ NULL, /* 812b */ NULL, /* 812c */ NULL, /* 812d */ NULL, /* 812e */ NULL, /* 812f */ NULL, /* 8130 */ NULL, /* 8131 */ NULL, /* 8132 */ NULL, /* 8133 */ NULL, /* 8134 */ NULL, /* 8135 */ NULL, /* 8136 */ NULL, /* 8137 */ NULL, /* 8138 */ NULL, /* 8139 */ NULL, /* 813a */ NULL, /* 813b */ NULL, /* 813c */ NULL, /* 813d */ NULL, /* 813e */ NULL, /* 813f */ NULL, /* 8140 */ NULL, /* 8141 */ NULL, /* 8142 */ NULL, /* 8143 */ NULL, /* 8144 */ NULL, /* 8145 */ NULL, /* 8146 */ NULL, /* 8147 */ NULL, /* 8148 */ NULL, /* 8149 */ NULL, /* 814a */ NULL, /* 814b */ NULL, /* 814c */ NULL, /* 814d */ NULL, /* 814e */ NULL, /* 814f */ NULL, /* 8150 */ NULL, /* 8151 */ NULL, /* 8152 */ NULL, /* 8153 */ NULL, /* 8154 */ NULL, /* 8155 */ NULL, /* 8156 */ NULL, /* 8157 */ NULL, /* 8158 */ NULL, /* 8159 */ NULL, /* 815a */ NULL, /* 815b */ NULL, /* 815c */ NULL, /* 815d */ NULL, /* 815e */ NULL, /* 815f */ NULL, /* 8160 */ NULL, /* 8161 */ NULL, /* 8162 */ NULL, /* 8163 */ NULL, /* 8164 */ NULL, /* 8165 */ NULL, /* 8166 */ NULL, /* 8167 */ NULL, /* 8168 */ NULL, /* 8169 */ NULL, /* 816a */ NULL, /* 816b */ NULL, /* 816c */ NULL, /* 816d */ NULL, /* 816e */ NULL, /* 816f */ NULL, /* 8170 */ NULL, /* 8171 */ NULL, /* 8172 */ NULL, /* 8173 */ NULL, /* 8174 */ NULL, /* 8175 */ NULL, /* 8176 */ NULL, /* 8177 */ NULL, /* 8178 */ NULL, /* 8179 */ NULL, /* 817a */ NULL, /* 817b */ NULL, /* 817c */ NULL, /* 817d */ NULL, /* 817e */ NULL, /* 817f */ NULL, /* 8180 */ NULL, /* 8181 */ NULL, /* 8182 */ NULL, /* 8183 */ NULL, /* 8184 */ NULL, /* 8185 */ NULL, /* 8186 */ NULL, /* 8187 */ NULL, /* 8188 */ NULL, /* 8189 */ NULL, /* 818a */ NULL, /* 818b */ NULL, /* 818c */ NULL, /* 818d */ NULL, /* 818e */ NULL, /* 818f */ NULL, /* 8190 */ NULL, /* 8191 */ NULL, /* 8192 */ NULL, /* 8193 */ NULL, /* 8194 */ NULL, /* 8195 */ NULL, /* 8196 */ NULL, /* 8197 */ NULL, /* 8198 */ NULL, /* 8199 */ NULL, /* 819a */ NULL, /* 819b */ NULL, /* 819c */ NULL, /* 819d */ NULL, /* 819e */ NULL, /* 819f */ NULL, /* 81a0 */ NULL, /* 81a1 */ NULL, /* 81a2 */ NULL, /* 81a3 */ NULL, /* 81a4 */ NULL, /* 81a5 */ NULL, /* 81a6 */ NULL, /* 81a7 */ NULL, /* 81a8 */ NULL, /* 81a9 */ NULL, /* 81aa */ NULL, /* 81ab */ NULL, /* 81ac */ NULL, /* 81ad */ NULL, /* 81ae */ NULL, /* 81af */ NULL, /* 81b0 */ NULL, /* 81b1 */ NULL, /* 81b2 */ NULL, /* 81b3 */ NULL, /* 81b4 */ NULL, /* 81b5 */ NULL, /* 81b6 */ NULL, /* 81b7 */ NULL, /* 81b8 */ NULL, /* 81b9 */ NULL, /* 81ba */ NULL, /* 81bb */ NULL, /* 81bc */ NULL, /* 81bd */ NULL, /* 81be */ NULL, /* 81bf */ NULL, /* 81c0 */ NULL, /* 81c1 */ NULL, /* 81c2 */ NULL, /* 81c3 */ NULL, /* 81c4 */ NULL, /* 81c5 */ NULL, /* 81c6 */ NULL, /* 81c7 */ NULL, /* 81c8 */ NULL, /* 81c9 */ NULL, /* 81ca */ NULL, /* 81cb */ NULL, /* 81cc */ NULL, /* 81cd */ NULL, /* 81ce */ NULL, /* 81cf */ NULL, /* 81d0 */ NULL, /* 81d1 */ NULL, /* 81d2 */ NULL, /* 81d3 */ NULL, /* 81d4 */ NULL, /* 81d5 */ NULL, /* 81d6 */ NULL, /* 81d7 */ NULL, /* 81d8 */ NULL, /* 81d9 */ NULL, /* 81da */ NULL, /* 81db */ NULL, /* 81dc */ NULL, /* 81dd */ NULL, /* 81de */ NULL, /* 81df */ NULL, /* 81e0 */ NULL, /* 81e1 */ NULL, /* 81e2 */ NULL, /* 81e3 */ NULL, /* 81e4 */ NULL, /* 81e5 */ NULL, /* 81e6 */ NULL, /* 81e7 */ NULL, /* 81e8 */ NULL, /* 81e9 */ NULL, /* 81ea */ NULL, /* 81eb */ NULL, /* 81ec */ NULL, /* 81ed */ NULL, /* 81ee */ NULL, /* 81ef */ NULL, /* 81f0 */ NULL, /* 81f1 */ NULL, /* 81f2 */ NULL, /* 81f3 */ NULL, /* 81f4 */ NULL, /* 81f5 */ NULL, /* 81f6 */ NULL, /* 81f7 */ NULL, /* 81f8 */ NULL, /* 81f9 */ NULL, /* 81fa */ NULL, /* 81fb */ NULL, /* 81fc */ NULL, /* 81fd */ NULL, /* 81fe */ NULL, /* 81ff */ NULL, /* 8200 */ NULL, /* 8201 */ NULL, /* 8202 */ NULL, /* 8203 */ NULL, /* 8204 */ NULL, /* 8205 */ NULL, /* 8206 */ NULL, /* 8207 */ NULL, /* 8208 */ NULL, /* 8209 */ NULL, /* 820a */ NULL, /* 820b */ NULL, /* 820c */ NULL, /* 820d */ NULL, /* 820e */ NULL, /* 820f */ NULL, /* 8210 */ NULL, /* 8211 */ NULL, /* 8212 */ NULL, /* 8213 */ NULL, /* 8214 */ NULL, /* 8215 */ NULL, /* 8216 */ NULL, /* 8217 */ NULL, /* 8218 */ NULL, /* 8219 */ NULL, /* 821a */ NULL, /* 821b */ NULL, /* 821c */ NULL, /* 821d */ NULL, /* 821e */ NULL, /* 821f */ NULL, /* 8220 */ NULL, /* 8221 */ NULL, /* 8222 */ NULL, /* 8223 */ NULL, /* 8224 */ NULL, /* 8225 */ NULL, /* 8226 */ NULL, /* 8227 */ NULL, /* 8228 */ NULL, /* 8229 */ NULL, /* 822a */ NULL, /* 822b */ NULL, /* 822c */ NULL, /* 822d */ NULL, /* 822e */ NULL, /* 822f */ NULL, /* 8230 */ NULL, /* 8231 */ NULL, /* 8232 */ NULL, /* 8233 */ NULL, /* 8234 */ NULL, /* 8235 */ NULL, /* 8236 */ NULL, /* 8237 */ NULL, /* 8238 */ NULL, /* 8239 */ NULL, /* 823a */ NULL, /* 823b */ NULL, /* 823c */ NULL, /* 823d */ NULL, /* 823e */ NULL, /* 823f */ NULL, /* 8240 */ NULL, /* 8241 */ NULL, /* 8242 */ NULL, /* 8243 */ NULL, /* 8244 */ NULL, /* 8245 */ NULL, /* 8246 */ NULL, /* 8247 */ NULL, /* 8248 */ NULL, /* 8249 */ NULL, /* 824a */ NULL, /* 824b */ NULL, /* 824c */ NULL, /* 824d */ NULL, /* 824e */ NULL, /* 824f */ NULL, /* 8250 */ NULL, /* 8251 */ NULL, /* 8252 */ NULL, /* 8253 */ NULL, /* 8254 */ NULL, /* 8255 */ NULL, /* 8256 */ NULL, /* 8257 */ NULL, /* 8258 */ NULL, /* 8259 */ NULL, /* 825a */ NULL, /* 825b */ NULL, /* 825c */ NULL, /* 825d */ NULL, /* 825e */ NULL, /* 825f */ NULL, /* 8260 */ NULL, /* 8261 */ NULL, /* 8262 */ NULL, /* 8263 */ NULL, /* 8264 */ NULL, /* 8265 */ NULL, /* 8266 */ NULL, /* 8267 */ NULL, /* 8268 */ NULL, /* 8269 */ NULL, /* 826a */ NULL, /* 826b */ NULL, /* 826c */ NULL, /* 826d */ NULL, /* 826e */ NULL, /* 826f */ NULL, /* 8270 */ NULL, /* 8271 */ NULL, /* 8272 */ NULL, /* 8273 */ NULL, /* 8274 */ NULL, /* 8275 */ NULL, /* 8276 */ NULL, /* 8277 */ NULL, /* 8278 */ NULL, /* 8279 */ NULL, /* 827a */ NULL, /* 827b */ NULL, /* 827c */ NULL, /* 827d */ NULL, /* 827e */ NULL, /* 827f */ NULL, /* 8280 */ NULL, /* 8281 */ NULL, /* 8282 */ NULL, /* 8283 */ NULL, /* 8284 */ NULL, /* 8285 */ NULL, /* 8286 */ NULL, /* 8287 */ NULL, /* 8288 */ NULL, /* 8289 */ NULL, /* 828a */ NULL, /* 828b */ NULL, /* 828c */ NULL, /* 828d */ NULL, /* 828e */ NULL, /* 828f */ NULL, /* 8290 */ NULL, /* 8291 */ NULL, /* 8292 */ NULL, /* 8293 */ NULL, /* 8294 */ NULL, /* 8295 */ NULL, /* 8296 */ NULL, /* 8297 */ NULL, /* 8298 */ NULL, /* 8299 */ NULL, /* 829a */ NULL, /* 829b */ NULL, /* 829c */ NULL, /* 829d */ NULL, /* 829e */ NULL, /* 829f */ NULL, /* 82a0 */ NULL, /* 82a1 */ NULL, /* 82a2 */ NULL, /* 82a3 */ NULL, /* 82a4 */ NULL, /* 82a5 */ NULL, /* 82a6 */ NULL, /* 82a7 */ NULL, /* 82a8 */ NULL, /* 82a9 */ NULL, /* 82aa */ NULL, /* 82ab */ NULL, /* 82ac */ NULL, /* 82ad */ NULL, /* 82ae */ NULL, /* 82af */ NULL, /* 82b0 */ NULL, /* 82b1 */ NULL, /* 82b2 */ NULL, /* 82b3 */ NULL, /* 82b4 */ NULL, /* 82b5 */ NULL, /* 82b6 */ NULL, /* 82b7 */ NULL, /* 82b8 */ NULL, /* 82b9 */ NULL, /* 82ba */ NULL, /* 82bb */ NULL, /* 82bc */ NULL, /* 82bd */ NULL, /* 82be */ NULL, /* 82bf */ NULL, /* 82c0 */ NULL, /* 82c1 */ NULL, /* 82c2 */ NULL, /* 82c3 */ NULL, /* 82c4 */ NULL, /* 82c5 */ NULL, /* 82c6 */ NULL, /* 82c7 */ NULL, /* 82c8 */ NULL, /* 82c9 */ NULL, /* 82ca */ NULL, /* 82cb */ NULL, /* 82cc */ NULL, /* 82cd */ NULL, /* 82ce */ NULL, /* 82cf */ NULL, /* 82d0 */ NULL, /* 82d1 */ NULL, /* 82d2 */ NULL, /* 82d3 */ NULL, /* 82d4 */ NULL, /* 82d5 */ NULL, /* 82d6 */ NULL, /* 82d7 */ NULL, /* 82d8 */ NULL, /* 82d9 */ NULL, /* 82da */ NULL, /* 82db */ NULL, /* 82dc */ NULL, /* 82dd */ NULL, /* 82de */ NULL, /* 82df */ NULL, /* 82e0 */ NULL, /* 82e1 */ NULL, /* 82e2 */ NULL, /* 82e3 */ NULL, /* 82e4 */ NULL, /* 82e5 */ NULL, /* 82e6 */ NULL, /* 82e7 */ NULL, /* 82e8 */ NULL, /* 82e9 */ NULL, /* 82ea */ NULL, /* 82eb */ NULL, /* 82ec */ NULL, /* 82ed */ NULL, /* 82ee */ NULL, /* 82ef */ NULL, /* 82f0 */ NULL, /* 82f1 */ NULL, /* 82f2 */ NULL, /* 82f3 */ NULL, /* 82f4 */ NULL, /* 82f5 */ NULL, /* 82f6 */ NULL, /* 82f7 */ NULL, /* 82f8 */ NULL, /* 82f9 */ NULL, /* 82fa */ NULL, /* 82fb */ NULL, /* 82fc */ NULL, /* 82fd */ NULL, /* 82fe */ NULL, /* 82ff */ NULL, /* 8300 */ NULL, /* 8301 */ NULL, /* 8302 */ NULL, /* 8303 */ NULL, /* 8304 */ NULL, /* 8305 */ NULL, /* 8306 */ NULL, /* 8307 */ NULL, /* 8308 */ NULL, /* 8309 */ NULL, /* 830a */ NULL, /* 830b */ NULL, /* 830c */ NULL, /* 830d */ NULL, /* 830e */ NULL, /* 830f */ NULL, /* 8310 */ NULL, /* 8311 */ NULL, /* 8312 */ NULL, /* 8313 */ NULL, /* 8314 */ NULL, /* 8315 */ NULL, /* 8316 */ NULL, /* 8317 */ NULL, /* 8318 */ NULL, /* 8319 */ NULL, /* 831a */ NULL, /* 831b */ NULL, /* 831c */ NULL, /* 831d */ NULL, /* 831e */ NULL, /* 831f */ NULL, /* 8320 */ NULL, /* 8321 */ NULL, /* 8322 */ NULL, /* 8323 */ NULL, /* 8324 */ NULL, /* 8325 */ NULL, /* 8326 */ NULL, /* 8327 */ NULL, /* 8328 */ NULL, /* 8329 */ NULL, /* 832a */ NULL, /* 832b */ NULL, /* 832c */ NULL, /* 832d */ NULL, /* 832e */ NULL, /* 832f */ NULL, /* 8330 */ NULL, /* 8331 */ NULL, /* 8332 */ NULL, /* 8333 */ NULL, /* 8334 */ NULL, /* 8335 */ NULL, /* 8336 */ NULL, /* 8337 */ NULL, /* 8338 */ NULL, /* 8339 */ NULL, /* 833a */ NULL, /* 833b */ NULL, /* 833c */ NULL, /* 833d */ NULL, /* 833e */ NULL, /* 833f */ NULL, /* 8340 */ NULL, /* 8341 */ NULL, /* 8342 */ NULL, /* 8343 */ NULL, /* 8344 */ NULL, /* 8345 */ NULL, /* 8346 */ NULL, /* 8347 */ NULL, /* 8348 */ NULL, /* 8349 */ NULL, /* 834a */ NULL, /* 834b */ NULL, /* 834c */ NULL, /* 834d */ NULL, /* 834e */ NULL, /* 834f */ NULL, /* 8350 */ NULL, /* 8351 */ NULL, /* 8352 */ NULL, /* 8353 */ NULL, /* 8354 */ NULL, /* 8355 */ NULL, /* 8356 */ NULL, /* 8357 */ NULL, /* 8358 */ NULL, /* 8359 */ NULL, /* 835a */ NULL, /* 835b */ NULL, /* 835c */ NULL, /* 835d */ NULL, /* 835e */ NULL, /* 835f */ NULL, /* 8360 */ NULL, /* 8361 */ NULL, /* 8362 */ NULL, /* 8363 */ NULL, /* 8364 */ NULL, /* 8365 */ NULL, /* 8366 */ NULL, /* 8367 */ NULL, /* 8368 */ NULL, /* 8369 */ NULL, /* 836a */ NULL, /* 836b */ NULL, /* 836c */ NULL, /* 836d */ NULL, /* 836e */ NULL, /* 836f */ NULL, /* 8370 */ NULL, /* 8371 */ NULL, /* 8372 */ NULL, /* 8373 */ NULL, /* 8374 */ NULL, /* 8375 */ NULL, /* 8376 */ NULL, /* 8377 */ NULL, /* 8378 */ NULL, /* 8379 */ NULL, /* 837a */ NULL, /* 837b */ NULL, /* 837c */ NULL, /* 837d */ NULL, /* 837e */ NULL, /* 837f */ NULL, /* 8380 */ NULL, /* 8381 */ NULL, /* 8382 */ NULL, /* 8383 */ NULL, /* 8384 */ NULL, /* 8385 */ NULL, /* 8386 */ NULL, /* 8387 */ NULL, /* 8388 */ NULL, /* 8389 */ NULL, /* 838a */ NULL, /* 838b */ NULL, /* 838c */ NULL, /* 838d */ NULL, /* 838e */ NULL, /* 838f */ NULL, /* 8390 */ NULL, /* 8391 */ NULL, /* 8392 */ NULL, /* 8393 */ NULL, /* 8394 */ NULL, /* 8395 */ NULL, /* 8396 */ NULL, /* 8397 */ NULL, /* 8398 */ NULL, /* 8399 */ NULL, /* 839a */ NULL, /* 839b */ NULL, /* 839c */ NULL, /* 839d */ NULL, /* 839e */ NULL, /* 839f */ NULL, /* 83a0 */ NULL, /* 83a1 */ NULL, /* 83a2 */ NULL, /* 83a3 */ NULL, /* 83a4 */ NULL, /* 83a5 */ NULL, /* 83a6 */ NULL, /* 83a7 */ NULL, /* 83a8 */ NULL, /* 83a9 */ NULL, /* 83aa */ NULL, /* 83ab */ NULL, /* 83ac */ NULL, /* 83ad */ NULL, /* 83ae */ NULL, /* 83af */ NULL, /* 83b0 */ NULL, /* 83b1 */ NULL, /* 83b2 */ NULL, /* 83b3 */ NULL, /* 83b4 */ NULL, /* 83b5 */ NULL, /* 83b6 */ NULL, /* 83b7 */ NULL, /* 83b8 */ NULL, /* 83b9 */ NULL, /* 83ba */ NULL, /* 83bb */ NULL, /* 83bc */ NULL, /* 83bd */ NULL, /* 83be */ NULL, /* 83bf */ NULL, /* 83c0 */ NULL, /* 83c1 */ NULL, /* 83c2 */ NULL, /* 83c3 */ NULL, /* 83c4 */ NULL, /* 83c5 */ NULL, /* 83c6 */ NULL, /* 83c7 */ NULL, /* 83c8 */ NULL, /* 83c9 */ NULL, /* 83ca */ NULL, /* 83cb */ NULL, /* 83cc */ NULL, /* 83cd */ NULL, /* 83ce */ NULL, /* 83cf */ NULL, /* 83d0 */ NULL, /* 83d1 */ NULL, /* 83d2 */ NULL, /* 83d3 */ NULL, /* 83d4 */ NULL, /* 83d5 */ NULL, /* 83d6 */ NULL, /* 83d7 */ NULL, /* 83d8 */ NULL, /* 83d9 */ NULL, /* 83da */ NULL, /* 83db */ NULL, /* 83dc */ NULL, /* 83dd */ NULL, /* 83de */ NULL, /* 83df */ NULL, /* 83e0 */ NULL, /* 83e1 */ NULL, /* 83e2 */ NULL, /* 83e3 */ NULL, /* 83e4 */ NULL, /* 83e5 */ NULL, /* 83e6 */ NULL, /* 83e7 */ NULL, /* 83e8 */ NULL, /* 83e9 */ NULL, /* 83ea */ NULL, /* 83eb */ NULL, /* 83ec */ NULL, /* 83ed */ NULL, /* 83ee */ NULL, /* 83ef */ NULL, /* 83f0 */ NULL, /* 83f1 */ NULL, /* 83f2 */ NULL, /* 83f3 */ NULL, /* 83f4 */ NULL, /* 83f5 */ NULL, /* 83f6 */ NULL, /* 83f7 */ NULL, /* 83f8 */ NULL, /* 83f9 */ NULL, /* 83fa */ NULL, /* 83fb */ NULL, /* 83fc */ NULL, /* 83fd */ NULL, /* 83fe */ NULL, /* 83ff */ NULL, /* 8400 */ NULL, /* 8401 */ NULL, /* 8402 */ NULL, /* 8403 */ NULL, /* 8404 */ NULL, /* 8405 */ NULL, /* 8406 */ NULL, /* 8407 */ NULL, /* 8408 */ NULL, /* 8409 */ NULL, /* 840a */ NULL, /* 840b */ NULL, /* 840c */ NULL, /* 840d */ NULL, /* 840e */ NULL, /* 840f */ NULL, /* 8410 */ NULL, /* 8411 */ NULL, /* 8412 */ NULL, /* 8413 */ NULL, /* 8414 */ NULL, /* 8415 */ NULL, /* 8416 */ NULL, /* 8417 */ NULL, /* 8418 */ NULL, /* 8419 */ NULL, /* 841a */ NULL, /* 841b */ NULL, /* 841c */ NULL, /* 841d */ NULL, /* 841e */ NULL, /* 841f */ NULL, /* 8420 */ NULL, /* 8421 */ NULL, /* 8422 */ NULL, /* 8423 */ NULL, /* 8424 */ NULL, /* 8425 */ NULL, /* 8426 */ NULL, /* 8427 */ NULL, /* 8428 */ NULL, /* 8429 */ NULL, /* 842a */ NULL, /* 842b */ NULL, /* 842c */ NULL, /* 842d */ NULL, /* 842e */ NULL, /* 842f */ NULL, /* 8430 */ NULL, /* 8431 */ NULL, /* 8432 */ NULL, /* 8433 */ NULL, /* 8434 */ NULL, /* 8435 */ NULL, /* 8436 */ NULL, /* 8437 */ NULL, /* 8438 */ NULL, /* 8439 */ NULL, /* 843a */ NULL, /* 843b */ NULL, /* 843c */ NULL, /* 843d */ NULL, /* 843e */ NULL, /* 843f */ NULL, /* 8440 */ NULL, /* 8441 */ NULL, /* 8442 */ NULL, /* 8443 */ NULL, /* 8444 */ NULL, /* 8445 */ NULL, /* 8446 */ NULL, /* 8447 */ NULL, /* 8448 */ NULL, /* 8449 */ NULL, /* 844a */ NULL, /* 844b */ NULL, /* 844c */ NULL, /* 844d */ NULL, /* 844e */ NULL, /* 844f */ NULL, /* 8450 */ NULL, /* 8451 */ NULL, /* 8452 */ NULL, /* 8453 */ NULL, /* 8454 */ NULL, /* 8455 */ NULL, /* 8456 */ NULL, /* 8457 */ NULL, /* 8458 */ NULL, /* 8459 */ NULL, /* 845a */ NULL, /* 845b */ NULL, /* 845c */ NULL, /* 845d */ NULL, /* 845e */ NULL, /* 845f */ NULL, /* 8460 */ NULL, /* 8461 */ NULL, /* 8462 */ NULL, /* 8463 */ NULL, /* 8464 */ NULL, /* 8465 */ NULL, /* 8466 */ NULL, /* 8467 */ NULL, /* 8468 */ NULL, /* 8469 */ NULL, /* 846a */ NULL, /* 846b */ NULL, /* 846c */ NULL, /* 846d */ NULL, /* 846e */ NULL, /* 846f */ NULL, /* 8470 */ NULL, /* 8471 */ NULL, /* 8472 */ NULL, /* 8473 */ NULL, /* 8474 */ NULL, /* 8475 */ NULL, /* 8476 */ NULL, /* 8477 */ NULL, /* 8478 */ NULL, /* 8479 */ NULL, /* 847a */ NULL, /* 847b */ NULL, /* 847c */ NULL, /* 847d */ NULL, /* 847e */ NULL, /* 847f */ NULL, /* 8480 */ NULL, /* 8481 */ NULL, /* 8482 */ NULL, /* 8483 */ NULL, /* 8484 */ NULL, /* 8485 */ NULL, /* 8486 */ NULL, /* 8487 */ NULL, /* 8488 */ NULL, /* 8489 */ NULL, /* 848a */ NULL, /* 848b */ NULL, /* 848c */ NULL, /* 848d */ NULL, /* 848e */ NULL, /* 848f */ NULL, /* 8490 */ NULL, /* 8491 */ NULL, /* 8492 */ NULL, /* 8493 */ NULL, /* 8494 */ NULL, /* 8495 */ NULL, /* 8496 */ NULL, /* 8497 */ NULL, /* 8498 */ NULL, /* 8499 */ NULL, /* 849a */ NULL, /* 849b */ NULL, /* 849c */ NULL, /* 849d */ NULL, /* 849e */ NULL, /* 849f */ NULL, /* 84a0 */ NULL, /* 84a1 */ NULL, /* 84a2 */ NULL, /* 84a3 */ NULL, /* 84a4 */ NULL, /* 84a5 */ NULL, /* 84a6 */ NULL, /* 84a7 */ NULL, /* 84a8 */ NULL, /* 84a9 */ NULL, /* 84aa */ NULL, /* 84ab */ NULL, /* 84ac */ NULL, /* 84ad */ NULL, /* 84ae */ NULL, /* 84af */ NULL, /* 84b0 */ NULL, /* 84b1 */ NULL, /* 84b2 */ NULL, /* 84b3 */ NULL, /* 84b4 */ NULL, /* 84b5 */ NULL, /* 84b6 */ NULL, /* 84b7 */ NULL, /* 84b8 */ NULL, /* 84b9 */ NULL, /* 84ba */ NULL, /* 84bb */ NULL, /* 84bc */ NULL, /* 84bd */ NULL, /* 84be */ NULL, /* 84bf */ NULL, /* 84c0 */ NULL, /* 84c1 */ NULL, /* 84c2 */ NULL, /* 84c3 */ NULL, /* 84c4 */ NULL, /* 84c5 */ NULL, /* 84c6 */ NULL, /* 84c7 */ NULL, /* 84c8 */ NULL, /* 84c9 */ NULL, /* 84ca */ NULL, /* 84cb */ NULL, /* 84cc */ NULL, /* 84cd */ NULL, /* 84ce */ NULL, /* 84cf */ NULL, /* 84d0 */ NULL, /* 84d1 */ NULL, /* 84d2 */ NULL, /* 84d3 */ NULL, /* 84d4 */ NULL, /* 84d5 */ NULL, /* 84d6 */ NULL, /* 84d7 */ NULL, /* 84d8 */ NULL, /* 84d9 */ NULL, /* 84da */ NULL, /* 84db */ NULL, /* 84dc */ NULL, /* 84dd */ NULL, /* 84de */ NULL, /* 84df */ NULL, /* 84e0 */ NULL, /* 84e1 */ NULL, /* 84e2 */ NULL, /* 84e3 */ NULL, /* 84e4 */ NULL, /* 84e5 */ NULL, /* 84e6 */ NULL, /* 84e7 */ NULL, /* 84e8 */ NULL, /* 84e9 */ NULL, /* 84ea */ NULL, /* 84eb */ NULL, /* 84ec */ NULL, /* 84ed */ NULL, /* 84ee */ NULL, /* 84ef */ NULL, /* 84f0 */ NULL, /* 84f1 */ NULL, /* 84f2 */ NULL, /* 84f3 */ NULL, /* 84f4 */ NULL, /* 84f5 */ NULL, /* 84f6 */ NULL, /* 84f7 */ NULL, /* 84f8 */ NULL, /* 84f9 */ NULL, /* 84fa */ NULL, /* 84fb */ NULL, /* 84fc */ NULL, /* 84fd */ NULL, /* 84fe */ NULL, /* 84ff */ NULL, /* 8500 */ NULL, /* 8501 */ NULL, /* 8502 */ NULL, /* 8503 */ NULL, /* 8504 */ NULL, /* 8505 */ NULL, /* 8506 */ NULL, /* 8507 */ NULL, /* 8508 */ NULL, /* 8509 */ NULL, /* 850a */ NULL, /* 850b */ NULL, /* 850c */ NULL, /* 850d */ NULL, /* 850e */ NULL, /* 850f */ NULL, /* 8510 */ NULL, /* 8511 */ NULL, /* 8512 */ NULL, /* 8513 */ NULL, /* 8514 */ NULL, /* 8515 */ NULL, /* 8516 */ NULL, /* 8517 */ NULL, /* 8518 */ NULL, /* 8519 */ NULL, /* 851a */ NULL, /* 851b */ NULL, /* 851c */ NULL, /* 851d */ NULL, /* 851e */ NULL, /* 851f */ NULL, /* 8520 */ NULL, /* 8521 */ NULL, /* 8522 */ NULL, /* 8523 */ NULL, /* 8524 */ NULL, /* 8525 */ NULL, /* 8526 */ NULL, /* 8527 */ NULL, /* 8528 */ NULL, /* 8529 */ NULL, /* 852a */ NULL, /* 852b */ NULL, /* 852c */ NULL, /* 852d */ NULL, /* 852e */ NULL, /* 852f */ NULL, /* 8530 */ NULL, /* 8531 */ NULL, /* 8532 */ NULL, /* 8533 */ NULL, /* 8534 */ NULL, /* 8535 */ NULL, /* 8536 */ NULL, /* 8537 */ NULL, /* 8538 */ NULL, /* 8539 */ NULL, /* 853a */ NULL, /* 853b */ NULL, /* 853c */ NULL, /* 853d */ NULL, /* 853e */ NULL, /* 853f */ NULL, /* 8540 */ NULL, /* 8541 */ NULL, /* 8542 */ NULL, /* 8543 */ NULL, /* 8544 */ NULL, /* 8545 */ NULL, /* 8546 */ NULL, /* 8547 */ NULL, /* 8548 */ NULL, /* 8549 */ NULL, /* 854a */ NULL, /* 854b */ NULL, /* 854c */ NULL, /* 854d */ NULL, /* 854e */ NULL, /* 854f */ NULL, /* 8550 */ NULL, /* 8551 */ NULL, /* 8552 */ NULL, /* 8553 */ NULL, /* 8554 */ NULL, /* 8555 */ NULL, /* 8556 */ NULL, /* 8557 */ NULL, /* 8558 */ NULL, /* 8559 */ NULL, /* 855a */ NULL, /* 855b */ NULL, /* 855c */ NULL, /* 855d */ NULL, /* 855e */ NULL, /* 855f */ NULL, /* 8560 */ NULL, /* 8561 */ NULL, /* 8562 */ NULL, /* 8563 */ NULL, /* 8564 */ NULL, /* 8565 */ NULL, /* 8566 */ NULL, /* 8567 */ NULL, /* 8568 */ NULL, /* 8569 */ NULL, /* 856a */ NULL, /* 856b */ NULL, /* 856c */ NULL, /* 856d */ NULL, /* 856e */ NULL, /* 856f */ NULL, /* 8570 */ NULL, /* 8571 */ NULL, /* 8572 */ NULL, /* 8573 */ NULL, /* 8574 */ NULL, /* 8575 */ NULL, /* 8576 */ NULL, /* 8577 */ NULL, /* 8578 */ NULL, /* 8579 */ NULL, /* 857a */ NULL, /* 857b */ NULL, /* 857c */ NULL, /* 857d */ NULL, /* 857e */ NULL, /* 857f */ NULL, /* 8580 */ NULL, /* 8581 */ NULL, /* 8582 */ NULL, /* 8583 */ NULL, /* 8584 */ NULL, /* 8585 */ NULL, /* 8586 */ NULL, /* 8587 */ NULL, /* 8588 */ NULL, /* 8589 */ NULL, /* 858a */ NULL, /* 858b */ NULL, /* 858c */ NULL, /* 858d */ NULL, /* 858e */ NULL, /* 858f */ NULL, /* 8590 */ NULL, /* 8591 */ NULL, /* 8592 */ NULL, /* 8593 */ NULL, /* 8594 */ NULL, /* 8595 */ NULL, /* 8596 */ NULL, /* 8597 */ NULL, /* 8598 */ NULL, /* 8599 */ NULL, /* 859a */ NULL, /* 859b */ NULL, /* 859c */ NULL, /* 859d */ NULL, /* 859e */ NULL, /* 859f */ NULL, /* 85a0 */ NULL, /* 85a1 */ NULL, /* 85a2 */ NULL, /* 85a3 */ NULL, /* 85a4 */ NULL, /* 85a5 */ NULL, /* 85a6 */ NULL, /* 85a7 */ NULL, /* 85a8 */ NULL, /* 85a9 */ NULL, /* 85aa */ NULL, /* 85ab */ NULL, /* 85ac */ NULL, /* 85ad */ NULL, /* 85ae */ NULL, /* 85af */ NULL, /* 85b0 */ NULL, /* 85b1 */ NULL, /* 85b2 */ NULL, /* 85b3 */ NULL, /* 85b4 */ NULL, /* 85b5 */ NULL, /* 85b6 */ NULL, /* 85b7 */ NULL, /* 85b8 */ NULL, /* 85b9 */ NULL, /* 85ba */ NULL, /* 85bb */ NULL, /* 85bc */ NULL, /* 85bd */ NULL, /* 85be */ NULL, /* 85bf */ NULL, /* 85c0 */ NULL, /* 85c1 */ NULL, /* 85c2 */ NULL, /* 85c3 */ NULL, /* 85c4 */ NULL, /* 85c5 */ NULL, /* 85c6 */ NULL, /* 85c7 */ NULL, /* 85c8 */ NULL, /* 85c9 */ NULL, /* 85ca */ NULL, /* 85cb */ NULL, /* 85cc */ NULL, /* 85cd */ NULL, /* 85ce */ NULL, /* 85cf */ NULL, /* 85d0 */ NULL, /* 85d1 */ NULL, /* 85d2 */ NULL, /* 85d3 */ NULL, /* 85d4 */ NULL, /* 85d5 */ NULL, /* 85d6 */ NULL, /* 85d7 */ NULL, /* 85d8 */ NULL, /* 85d9 */ NULL, /* 85da */ NULL, /* 85db */ NULL, /* 85dc */ NULL, /* 85dd */ NULL, /* 85de */ NULL, /* 85df */ NULL, /* 85e0 */ NULL, /* 85e1 */ NULL, /* 85e2 */ NULL, /* 85e3 */ NULL, /* 85e4 */ NULL, /* 85e5 */ NULL, /* 85e6 */ NULL, /* 85e7 */ NULL, /* 85e8 */ NULL, /* 85e9 */ NULL, /* 85ea */ NULL, /* 85eb */ NULL, /* 85ec */ NULL, /* 85ed */ NULL, /* 85ee */ NULL, /* 85ef */ NULL, /* 85f0 */ NULL, /* 85f1 */ NULL, /* 85f2 */ NULL, /* 85f3 */ NULL, /* 85f4 */ NULL, /* 85f5 */ NULL, /* 85f6 */ NULL, /* 85f7 */ NULL, /* 85f8 */ NULL, /* 85f9 */ NULL, /* 85fa */ NULL, /* 85fb */ NULL, /* 85fc */ NULL, /* 85fd */ NULL, /* 85fe */ NULL, /* 85ff */ NULL, /* 8600 */ NULL, /* 8601 */ NULL, /* 8602 */ NULL, /* 8603 */ NULL, /* 8604 */ NULL, /* 8605 */ NULL, /* 8606 */ NULL, /* 8607 */ NULL, /* 8608 */ NULL, /* 8609 */ NULL, /* 860a */ NULL, /* 860b */ NULL, /* 860c */ NULL, /* 860d */ NULL, /* 860e */ NULL, /* 860f */ NULL, /* 8610 */ NULL, /* 8611 */ NULL, /* 8612 */ NULL, /* 8613 */ NULL, /* 8614 */ NULL, /* 8615 */ NULL, /* 8616 */ NULL, /* 8617 */ NULL, /* 8618 */ NULL, /* 8619 */ NULL, /* 861a */ NULL, /* 861b */ NULL, /* 861c */ NULL, /* 861d */ NULL, /* 861e */ NULL, /* 861f */ NULL, /* 8620 */ NULL, /* 8621 */ NULL, /* 8622 */ NULL, /* 8623 */ NULL, /* 8624 */ NULL, /* 8625 */ NULL, /* 8626 */ NULL, /* 8627 */ NULL, /* 8628 */ NULL, /* 8629 */ NULL, /* 862a */ NULL, /* 862b */ NULL, /* 862c */ NULL, /* 862d */ NULL, /* 862e */ NULL, /* 862f */ NULL, /* 8630 */ NULL, /* 8631 */ NULL, /* 8632 */ NULL, /* 8633 */ NULL, /* 8634 */ NULL, /* 8635 */ NULL, /* 8636 */ NULL, /* 8637 */ NULL, /* 8638 */ NULL, /* 8639 */ NULL, /* 863a */ NULL, /* 863b */ NULL, /* 863c */ NULL, /* 863d */ NULL, /* 863e */ NULL, /* 863f */ NULL, /* 8640 */ NULL, /* 8641 */ NULL, /* 8642 */ NULL, /* 8643 */ NULL, /* 8644 */ NULL, /* 8645 */ NULL, /* 8646 */ NULL, /* 8647 */ NULL, /* 8648 */ NULL, /* 8649 */ NULL, /* 864a */ NULL, /* 864b */ NULL, /* 864c */ NULL, /* 864d */ NULL, /* 864e */ NULL, /* 864f */ NULL, /* 8650 */ NULL, /* 8651 */ NULL, /* 8652 */ NULL, /* 8653 */ NULL, /* 8654 */ NULL, /* 8655 */ NULL, /* 8656 */ NULL, /* 8657 */ NULL, /* 8658 */ NULL, /* 8659 */ NULL, /* 865a */ NULL, /* 865b */ NULL, /* 865c */ NULL, /* 865d */ NULL, /* 865e */ NULL, /* 865f */ NULL, /* 8660 */ NULL, /* 8661 */ NULL, /* 8662 */ NULL, /* 8663 */ NULL, /* 8664 */ NULL, /* 8665 */ NULL, /* 8666 */ NULL, /* 8667 */ NULL, /* 8668 */ NULL, /* 8669 */ NULL, /* 866a */ NULL, /* 866b */ NULL, /* 866c */ NULL, /* 866d */ NULL, /* 866e */ NULL, /* 866f */ NULL, /* 8670 */ NULL, /* 8671 */ NULL, /* 8672 */ NULL, /* 8673 */ NULL, /* 8674 */ NULL, /* 8675 */ NULL, /* 8676 */ NULL, /* 8677 */ NULL, /* 8678 */ NULL, /* 8679 */ NULL, /* 867a */ NULL, /* 867b */ NULL, /* 867c */ NULL, /* 867d */ NULL, /* 867e */ NULL, /* 867f */ NULL, /* 8680 */ NULL, /* 8681 */ NULL, /* 8682 */ NULL, /* 8683 */ NULL, /* 8684 */ NULL, /* 8685 */ NULL, /* 8686 */ NULL, /* 8687 */ NULL, /* 8688 */ NULL, /* 8689 */ NULL, /* 868a */ NULL, /* 868b */ NULL, /* 868c */ NULL, /* 868d */ NULL, /* 868e */ NULL, /* 868f */ NULL, /* 8690 */ NULL, /* 8691 */ NULL, /* 8692 */ NULL, /* 8693 */ NULL, /* 8694 */ NULL, /* 8695 */ NULL, /* 8696 */ NULL, /* 8697 */ NULL, /* 8698 */ NULL, /* 8699 */ NULL, /* 869a */ NULL, /* 869b */ NULL, /* 869c */ NULL, /* 869d */ NULL, /* 869e */ NULL, /* 869f */ NULL, /* 86a0 */ NULL, /* 86a1 */ NULL, /* 86a2 */ NULL, /* 86a3 */ NULL, /* 86a4 */ NULL, /* 86a5 */ NULL, /* 86a6 */ NULL, /* 86a7 */ NULL, /* 86a8 */ NULL, /* 86a9 */ NULL, /* 86aa */ NULL, /* 86ab */ NULL, /* 86ac */ NULL, /* 86ad */ NULL, /* 86ae */ NULL, /* 86af */ NULL, /* 86b0 */ NULL, /* 86b1 */ NULL, /* 86b2 */ NULL, /* 86b3 */ NULL, /* 86b4 */ NULL, /* 86b5 */ NULL, /* 86b6 */ NULL, /* 86b7 */ NULL, /* 86b8 */ NULL, /* 86b9 */ NULL, /* 86ba */ NULL, /* 86bb */ NULL, /* 86bc */ NULL, /* 86bd */ NULL, /* 86be */ NULL, /* 86bf */ NULL, /* 86c0 */ NULL, /* 86c1 */ NULL, /* 86c2 */ NULL, /* 86c3 */ NULL, /* 86c4 */ NULL, /* 86c5 */ NULL, /* 86c6 */ NULL, /* 86c7 */ NULL, /* 86c8 */ NULL, /* 86c9 */ NULL, /* 86ca */ NULL, /* 86cb */ NULL, /* 86cc */ NULL, /* 86cd */ NULL, /* 86ce */ NULL, /* 86cf */ NULL, /* 86d0 */ NULL, /* 86d1 */ NULL, /* 86d2 */ NULL, /* 86d3 */ NULL, /* 86d4 */ NULL, /* 86d5 */ NULL, /* 86d6 */ NULL, /* 86d7 */ NULL, /* 86d8 */ NULL, /* 86d9 */ NULL, /* 86da */ NULL, /* 86db */ NULL, /* 86dc */ NULL, /* 86dd */ NULL, /* 86de */ NULL, /* 86df */ NULL, /* 86e0 */ NULL, /* 86e1 */ NULL, /* 86e2 */ NULL, /* 86e3 */ NULL, /* 86e4 */ NULL, /* 86e5 */ NULL, /* 86e6 */ NULL, /* 86e7 */ NULL, /* 86e8 */ NULL, /* 86e9 */ NULL, /* 86ea */ NULL, /* 86eb */ NULL, /* 86ec */ NULL, /* 86ed */ NULL, /* 86ee */ NULL, /* 86ef */ NULL, /* 86f0 */ NULL, /* 86f1 */ NULL, /* 86f2 */ NULL, /* 86f3 */ NULL, /* 86f4 */ NULL, /* 86f5 */ NULL, /* 86f6 */ NULL, /* 86f7 */ NULL, /* 86f8 */ NULL, /* 86f9 */ NULL, /* 86fa */ NULL, /* 86fb */ NULL, /* 86fc */ NULL, /* 86fd */ NULL, /* 86fe */ NULL, /* 86ff */ NULL, /* 8700 */ NULL, /* 8701 */ NULL, /* 8702 */ NULL, /* 8703 */ NULL, /* 8704 */ NULL, /* 8705 */ NULL, /* 8706 */ NULL, /* 8707 */ NULL, /* 8708 */ NULL, /* 8709 */ NULL, /* 870a */ NULL, /* 870b */ NULL, /* 870c */ NULL, /* 870d */ NULL, /* 870e */ NULL, /* 870f */ NULL, /* 8710 */ NULL, /* 8711 */ NULL, /* 8712 */ NULL, /* 8713 */ NULL, /* 8714 */ NULL, /* 8715 */ NULL, /* 8716 */ NULL, /* 8717 */ NULL, /* 8718 */ NULL, /* 8719 */ NULL, /* 871a */ NULL, /* 871b */ NULL, /* 871c */ NULL, /* 871d */ NULL, /* 871e */ NULL, /* 871f */ NULL, /* 8720 */ NULL, /* 8721 */ NULL, /* 8722 */ NULL, /* 8723 */ NULL, /* 8724 */ NULL, /* 8725 */ NULL, /* 8726 */ NULL, /* 8727 */ NULL, /* 8728 */ NULL, /* 8729 */ NULL, /* 872a */ NULL, /* 872b */ NULL, /* 872c */ NULL, /* 872d */ NULL, /* 872e */ NULL, /* 872f */ NULL, /* 8730 */ NULL, /* 8731 */ NULL, /* 8732 */ NULL, /* 8733 */ NULL, /* 8734 */ NULL, /* 8735 */ NULL, /* 8736 */ NULL, /* 8737 */ NULL, /* 8738 */ NULL, /* 8739 */ NULL, /* 873a */ NULL, /* 873b */ NULL, /* 873c */ NULL, /* 873d */ NULL, /* 873e */ NULL, /* 873f */ NULL, /* 8740 */ NULL, /* 8741 */ NULL, /* 8742 */ NULL, /* 8743 */ NULL, /* 8744 */ NULL, /* 8745 */ NULL, /* 8746 */ NULL, /* 8747 */ NULL, /* 8748 */ NULL, /* 8749 */ NULL, /* 874a */ NULL, /* 874b */ NULL, /* 874c */ NULL, /* 874d */ NULL, /* 874e */ NULL, /* 874f */ NULL, /* 8750 */ NULL, /* 8751 */ NULL, /* 8752 */ NULL, /* 8753 */ NULL, /* 8754 */ NULL, /* 8755 */ NULL, /* 8756 */ NULL, /* 8757 */ NULL, /* 8758 */ NULL, /* 8759 */ NULL, /* 875a */ NULL, /* 875b */ NULL, /* 875c */ NULL, /* 875d */ NULL, /* 875e */ NULL, /* 875f */ NULL, /* 8760 */ NULL, /* 8761 */ NULL, /* 8762 */ NULL, /* 8763 */ NULL, /* 8764 */ NULL, /* 8765 */ NULL, /* 8766 */ NULL, /* 8767 */ NULL, /* 8768 */ NULL, /* 8769 */ NULL, /* 876a */ NULL, /* 876b */ NULL, /* 876c */ NULL, /* 876d */ NULL, /* 876e */ NULL, /* 876f */ NULL, /* 8770 */ NULL, /* 8771 */ NULL, /* 8772 */ NULL, /* 8773 */ NULL, /* 8774 */ NULL, /* 8775 */ NULL, /* 8776 */ NULL, /* 8777 */ NULL, /* 8778 */ NULL, /* 8779 */ NULL, /* 877a */ NULL, /* 877b */ NULL, /* 877c */ NULL, /* 877d */ NULL, /* 877e */ NULL, /* 877f */ NULL, /* 8780 */ NULL, /* 8781 */ NULL, /* 8782 */ NULL, /* 8783 */ NULL, /* 8784 */ NULL, /* 8785 */ NULL, /* 8786 */ NULL, /* 8787 */ NULL, /* 8788 */ NULL, /* 8789 */ NULL, /* 878a */ NULL, /* 878b */ NULL, /* 878c */ NULL, /* 878d */ NULL, /* 878e */ NULL, /* 878f */ NULL, /* 8790 */ NULL, /* 8791 */ NULL, /* 8792 */ NULL, /* 8793 */ NULL, /* 8794 */ NULL, /* 8795 */ NULL, /* 8796 */ NULL, /* 8797 */ NULL, /* 8798 */ NULL, /* 8799 */ NULL, /* 879a */ NULL, /* 879b */ NULL, /* 879c */ NULL, /* 879d */ NULL, /* 879e */ NULL, /* 879f */ NULL, /* 87a0 */ NULL, /* 87a1 */ NULL, /* 87a2 */ NULL, /* 87a3 */ NULL, /* 87a4 */ NULL, /* 87a5 */ NULL, /* 87a6 */ NULL, /* 87a7 */ NULL, /* 87a8 */ NULL, /* 87a9 */ NULL, /* 87aa */ NULL, /* 87ab */ NULL, /* 87ac */ NULL, /* 87ad */ NULL, /* 87ae */ NULL, /* 87af */ NULL, /* 87b0 */ NULL, /* 87b1 */ NULL, /* 87b2 */ NULL, /* 87b3 */ NULL, /* 87b4 */ NULL, /* 87b5 */ NULL, /* 87b6 */ NULL, /* 87b7 */ NULL, /* 87b8 */ NULL, /* 87b9 */ NULL, /* 87ba */ NULL, /* 87bb */ NULL, /* 87bc */ NULL, /* 87bd */ NULL, /* 87be */ NULL, /* 87bf */ NULL, /* 87c0 */ NULL, /* 87c1 */ NULL, /* 87c2 */ NULL, /* 87c3 */ NULL, /* 87c4 */ NULL, /* 87c5 */ NULL, /* 87c6 */ NULL, /* 87c7 */ NULL, /* 87c8 */ NULL, /* 87c9 */ NULL, /* 87ca */ NULL, /* 87cb */ NULL, /* 87cc */ NULL, /* 87cd */ NULL, /* 87ce */ NULL, /* 87cf */ NULL, /* 87d0 */ NULL, /* 87d1 */ NULL, /* 87d2 */ NULL, /* 87d3 */ NULL, /* 87d4 */ NULL, /* 87d5 */ NULL, /* 87d6 */ NULL, /* 87d7 */ NULL, /* 87d8 */ NULL, /* 87d9 */ NULL, /* 87da */ NULL, /* 87db */ NULL, /* 87dc */ NULL, /* 87dd */ NULL, /* 87de */ NULL, /* 87df */ NULL, /* 87e0 */ NULL, /* 87e1 */ NULL, /* 87e2 */ NULL, /* 87e3 */ NULL, /* 87e4 */ NULL, /* 87e5 */ NULL, /* 87e6 */ NULL, /* 87e7 */ NULL, /* 87e8 */ NULL, /* 87e9 */ NULL, /* 87ea */ NULL, /* 87eb */ NULL, /* 87ec */ NULL, /* 87ed */ NULL, /* 87ee */ NULL, /* 87ef */ NULL, /* 87f0 */ NULL, /* 87f1 */ NULL, /* 87f2 */ NULL, /* 87f3 */ NULL, /* 87f4 */ NULL, /* 87f5 */ NULL, /* 87f6 */ NULL, /* 87f7 */ NULL, /* 87f8 */ NULL, /* 87f9 */ NULL, /* 87fa */ NULL, /* 87fb */ NULL, /* 87fc */ NULL, /* 87fd */ NULL, /* 87fe */ NULL, /* 87ff */ NULL, /* 8800 */ NULL, /* 8801 */ NULL, /* 8802 */ NULL, /* 8803 */ NULL, /* 8804 */ NULL, /* 8805 */ NULL, /* 8806 */ NULL, /* 8807 */ NULL, /* 8808 */ NULL, /* 8809 */ NULL, /* 880a */ NULL, /* 880b */ NULL, /* 880c */ NULL, /* 880d */ NULL, /* 880e */ NULL, /* 880f */ NULL, /* 8810 */ NULL, /* 8811 */ NULL, /* 8812 */ NULL, /* 8813 */ NULL, /* 8814 */ NULL, /* 8815 */ NULL, /* 8816 */ NULL, /* 8817 */ NULL, /* 8818 */ NULL, /* 8819 */ NULL, /* 881a */ NULL, /* 881b */ NULL, /* 881c */ NULL, /* 881d */ NULL, /* 881e */ NULL, /* 881f */ NULL, /* 8820 */ NULL, /* 8821 */ NULL, /* 8822 */ NULL, /* 8823 */ NULL, /* 8824 */ NULL, /* 8825 */ NULL, /* 8826 */ NULL, /* 8827 */ NULL, /* 8828 */ NULL, /* 8829 */ NULL, /* 882a */ NULL, /* 882b */ NULL, /* 882c */ NULL, /* 882d */ NULL, /* 882e */ NULL, /* 882f */ NULL, /* 8830 */ NULL, /* 8831 */ NULL, /* 8832 */ NULL, /* 8833 */ NULL, /* 8834 */ NULL, /* 8835 */ NULL, /* 8836 */ NULL, /* 8837 */ NULL, /* 8838 */ NULL, /* 8839 */ NULL, /* 883a */ NULL, /* 883b */ NULL, /* 883c */ NULL, /* 883d */ NULL, /* 883e */ NULL, /* 883f */ NULL, /* 8840 */ NULL, /* 8841 */ NULL, /* 8842 */ NULL, /* 8843 */ NULL, /* 8844 */ NULL, /* 8845 */ NULL, /* 8846 */ NULL, /* 8847 */ NULL, /* 8848 */ NULL, /* 8849 */ NULL, /* 884a */ NULL, /* 884b */ NULL, /* 884c */ NULL, /* 884d */ NULL, /* 884e */ NULL, /* 884f */ NULL, /* 8850 */ NULL, /* 8851 */ NULL, /* 8852 */ NULL, /* 8853 */ NULL, /* 8854 */ NULL, /* 8855 */ NULL, /* 8856 */ NULL, /* 8857 */ NULL, /* 8858 */ NULL, /* 8859 */ NULL, /* 885a */ NULL, /* 885b */ NULL, /* 885c */ NULL, /* 885d */ NULL, /* 885e */ NULL, /* 885f */ NULL, /* 8860 */ NULL, /* 8861 */ NULL, /* 8862 */ NULL, /* 8863 */ NULL, /* 8864 */ NULL, /* 8865 */ NULL, /* 8866 */ NULL, /* 8867 */ NULL, /* 8868 */ NULL, /* 8869 */ NULL, /* 886a */ NULL, /* 886b */ NULL, /* 886c */ NULL, /* 886d */ NULL, /* 886e */ NULL, /* 886f */ NULL, /* 8870 */ NULL, /* 8871 */ NULL, /* 8872 */ NULL, /* 8873 */ NULL, /* 8874 */ NULL, /* 8875 */ NULL, /* 8876 */ NULL, /* 8877 */ NULL, /* 8878 */ NULL, /* 8879 */ NULL, /* 887a */ NULL, /* 887b */ NULL, /* 887c */ NULL, /* 887d */ NULL, /* 887e */ NULL, /* 887f */ NULL, /* 8880 */ NULL, /* 8881 */ NULL, /* 8882 */ NULL, /* 8883 */ NULL, /* 8884 */ NULL, /* 8885 */ NULL, /* 8886 */ NULL, /* 8887 */ NULL, /* 8888 */ NULL, /* 8889 */ NULL, /* 888a */ NULL, /* 888b */ NULL, /* 888c */ NULL, /* 888d */ NULL, /* 888e */ NULL, /* 888f */ NULL, /* 8890 */ NULL, /* 8891 */ NULL, /* 8892 */ NULL, /* 8893 */ NULL, /* 8894 */ NULL, /* 8895 */ NULL, /* 8896 */ NULL, /* 8897 */ NULL, /* 8898 */ NULL, /* 8899 */ NULL, /* 889a */ NULL, /* 889b */ NULL, /* 889c */ NULL, /* 889d */ NULL, /* 889e */ NULL, /* 889f */ NULL, /* 88a0 */ NULL, /* 88a1 */ NULL, /* 88a2 */ NULL, /* 88a3 */ NULL, /* 88a4 */ NULL, /* 88a5 */ NULL, /* 88a6 */ NULL, /* 88a7 */ NULL, /* 88a8 */ NULL, /* 88a9 */ NULL, /* 88aa */ NULL, /* 88ab */ NULL, /* 88ac */ NULL, /* 88ad */ NULL, /* 88ae */ NULL, /* 88af */ NULL, /* 88b0 */ NULL, /* 88b1 */ NULL, /* 88b2 */ NULL, /* 88b3 */ NULL, /* 88b4 */ NULL, /* 88b5 */ NULL, /* 88b6 */ NULL, /* 88b7 */ NULL, /* 88b8 */ NULL, /* 88b9 */ NULL, /* 88ba */ NULL, /* 88bb */ NULL, /* 88bc */ NULL, /* 88bd */ NULL, /* 88be */ NULL, /* 88bf */ NULL, /* 88c0 */ NULL, /* 88c1 */ NULL, /* 88c2 */ NULL, /* 88c3 */ NULL, /* 88c4 */ NULL, /* 88c5 */ NULL, /* 88c6 */ NULL, /* 88c7 */ NULL, /* 88c8 */ NULL, /* 88c9 */ NULL, /* 88ca */ NULL, /* 88cb */ NULL, /* 88cc */ NULL, /* 88cd */ NULL, /* 88ce */ NULL, /* 88cf */ NULL, /* 88d0 */ NULL, /* 88d1 */ NULL, /* 88d2 */ NULL, /* 88d3 */ NULL, /* 88d4 */ NULL, /* 88d5 */ NULL, /* 88d6 */ NULL, /* 88d7 */ NULL, /* 88d8 */ NULL, /* 88d9 */ NULL, /* 88da */ NULL, /* 88db */ NULL, /* 88dc */ NULL, /* 88dd */ NULL, /* 88de */ NULL, /* 88df */ NULL, /* 88e0 */ NULL, /* 88e1 */ NULL, /* 88e2 */ NULL, /* 88e3 */ NULL, /* 88e4 */ NULL, /* 88e5 */ NULL, /* 88e6 */ NULL, /* 88e7 */ NULL, /* 88e8 */ NULL, /* 88e9 */ NULL, /* 88ea */ NULL, /* 88eb */ NULL, /* 88ec */ NULL, /* 88ed */ NULL, /* 88ee */ NULL, /* 88ef */ NULL, /* 88f0 */ NULL, /* 88f1 */ NULL, /* 88f2 */ NULL, /* 88f3 */ NULL, /* 88f4 */ NULL, /* 88f5 */ NULL, /* 88f6 */ NULL, /* 88f7 */ NULL, /* 88f8 */ NULL, /* 88f9 */ NULL, /* 88fa */ NULL, /* 88fb */ NULL, /* 88fc */ NULL, /* 88fd */ NULL, /* 88fe */ NULL, /* 88ff */ NULL, /* 8900 */ NULL, /* 8901 */ NULL, /* 8902 */ NULL, /* 8903 */ NULL, /* 8904 */ NULL, /* 8905 */ NULL, /* 8906 */ NULL, /* 8907 */ NULL, /* 8908 */ NULL, /* 8909 */ NULL, /* 890a */ NULL, /* 890b */ NULL, /* 890c */ NULL, /* 890d */ NULL, /* 890e */ NULL, /* 890f */ NULL, /* 8910 */ NULL, /* 8911 */ NULL, /* 8912 */ NULL, /* 8913 */ NULL, /* 8914 */ NULL, /* 8915 */ NULL, /* 8916 */ NULL, /* 8917 */ NULL, /* 8918 */ NULL, /* 8919 */ NULL, /* 891a */ NULL, /* 891b */ NULL, /* 891c */ NULL, /* 891d */ NULL, /* 891e */ NULL, /* 891f */ NULL, /* 8920 */ NULL, /* 8921 */ NULL, /* 8922 */ NULL, /* 8923 */ NULL, /* 8924 */ NULL, /* 8925 */ NULL, /* 8926 */ NULL, /* 8927 */ NULL, /* 8928 */ NULL, /* 8929 */ NULL, /* 892a */ NULL, /* 892b */ NULL, /* 892c */ NULL, /* 892d */ NULL, /* 892e */ NULL, /* 892f */ NULL, /* 8930 */ NULL, /* 8931 */ NULL, /* 8932 */ NULL, /* 8933 */ NULL, /* 8934 */ NULL, /* 8935 */ NULL, /* 8936 */ NULL, /* 8937 */ NULL, /* 8938 */ NULL, /* 8939 */ NULL, /* 893a */ NULL, /* 893b */ NULL, /* 893c */ NULL, /* 893d */ NULL, /* 893e */ NULL, /* 893f */ NULL, /* 8940 */ NULL, /* 8941 */ NULL, /* 8942 */ NULL, /* 8943 */ NULL, /* 8944 */ NULL, /* 8945 */ NULL, /* 8946 */ NULL, /* 8947 */ NULL, /* 8948 */ NULL, /* 8949 */ NULL, /* 894a */ NULL, /* 894b */ NULL, /* 894c */ NULL, /* 894d */ NULL, /* 894e */ NULL, /* 894f */ NULL, /* 8950 */ NULL, /* 8951 */ NULL, /* 8952 */ NULL, /* 8953 */ NULL, /* 8954 */ NULL, /* 8955 */ NULL, /* 8956 */ NULL, /* 8957 */ NULL, /* 8958 */ NULL, /* 8959 */ NULL, /* 895a */ NULL, /* 895b */ NULL, /* 895c */ NULL, /* 895d */ NULL, /* 895e */ NULL, /* 895f */ NULL, /* 8960 */ NULL, /* 8961 */ NULL, /* 8962 */ NULL, /* 8963 */ NULL, /* 8964 */ NULL, /* 8965 */ NULL, /* 8966 */ NULL, /* 8967 */ NULL, /* 8968 */ NULL, /* 8969 */ NULL, /* 896a */ NULL, /* 896b */ NULL, /* 896c */ NULL, /* 896d */ NULL, /* 896e */ NULL, /* 896f */ NULL, /* 8970 */ NULL, /* 8971 */ NULL, /* 8972 */ NULL, /* 8973 */ NULL, /* 8974 */ NULL, /* 8975 */ NULL, /* 8976 */ NULL, /* 8977 */ NULL, /* 8978 */ NULL, /* 8979 */ NULL, /* 897a */ NULL, /* 897b */ NULL, /* 897c */ NULL, /* 897d */ NULL, /* 897e */ NULL, /* 897f */ NULL, /* 8980 */ NULL, /* 8981 */ NULL, /* 8982 */ NULL, /* 8983 */ NULL, /* 8984 */ NULL, /* 8985 */ NULL, /* 8986 */ NULL, /* 8987 */ NULL, /* 8988 */ NULL, /* 8989 */ NULL, /* 898a */ NULL, /* 898b */ NULL, /* 898c */ NULL, /* 898d */ NULL, /* 898e */ NULL, /* 898f */ NULL, /* 8990 */ NULL, /* 8991 */ NULL, /* 8992 */ NULL, /* 8993 */ NULL, /* 8994 */ NULL, /* 8995 */ NULL, /* 8996 */ NULL, /* 8997 */ NULL, /* 8998 */ NULL, /* 8999 */ NULL, /* 899a */ NULL, /* 899b */ NULL, /* 899c */ NULL, /* 899d */ NULL, /* 899e */ NULL, /* 899f */ NULL, /* 89a0 */ NULL, /* 89a1 */ NULL, /* 89a2 */ NULL, /* 89a3 */ NULL, /* 89a4 */ NULL, /* 89a5 */ NULL, /* 89a6 */ NULL, /* 89a7 */ NULL, /* 89a8 */ NULL, /* 89a9 */ NULL, /* 89aa */ NULL, /* 89ab */ NULL, /* 89ac */ NULL, /* 89ad */ NULL, /* 89ae */ NULL, /* 89af */ NULL, /* 89b0 */ NULL, /* 89b1 */ NULL, /* 89b2 */ NULL, /* 89b3 */ NULL, /* 89b4 */ NULL, /* 89b5 */ NULL, /* 89b6 */ NULL, /* 89b7 */ NULL, /* 89b8 */ NULL, /* 89b9 */ NULL, /* 89ba */ NULL, /* 89bb */ NULL, /* 89bc */ NULL, /* 89bd */ NULL, /* 89be */ NULL, /* 89bf */ NULL, /* 89c0 */ NULL, /* 89c1 */ NULL, /* 89c2 */ NULL, /* 89c3 */ NULL, /* 89c4 */ NULL, /* 89c5 */ NULL, /* 89c6 */ NULL, /* 89c7 */ NULL, /* 89c8 */ NULL, /* 89c9 */ NULL, /* 89ca */ NULL, /* 89cb */ NULL, /* 89cc */ NULL, /* 89cd */ NULL, /* 89ce */ NULL, /* 89cf */ NULL, /* 89d0 */ NULL, /* 89d1 */ NULL, /* 89d2 */ NULL, /* 89d3 */ NULL, /* 89d4 */ NULL, /* 89d5 */ NULL, /* 89d6 */ NULL, /* 89d7 */ NULL, /* 89d8 */ NULL, /* 89d9 */ NULL, /* 89da */ NULL, /* 89db */ NULL, /* 89dc */ NULL, /* 89dd */ NULL, /* 89de */ NULL, /* 89df */ NULL, /* 89e0 */ NULL, /* 89e1 */ NULL, /* 89e2 */ NULL, /* 89e3 */ NULL, /* 89e4 */ NULL, /* 89e5 */ NULL, /* 89e6 */ NULL, /* 89e7 */ NULL, /* 89e8 */ NULL, /* 89e9 */ NULL, /* 89ea */ NULL, /* 89eb */ NULL, /* 89ec */ NULL, /* 89ed */ NULL, /* 89ee */ NULL, /* 89ef */ NULL, /* 89f0 */ NULL, /* 89f1 */ NULL, /* 89f2 */ NULL, /* 89f3 */ NULL, /* 89f4 */ NULL, /* 89f5 */ NULL, /* 89f6 */ NULL, /* 89f7 */ NULL, /* 89f8 */ NULL, /* 89f9 */ NULL, /* 89fa */ NULL, /* 89fb */ NULL, /* 89fc */ NULL, /* 89fd */ NULL, /* 89fe */ NULL, /* 89ff */ NULL, /* 8a00 */ NULL, /* 8a01 */ NULL, /* 8a02 */ NULL, /* 8a03 */ NULL, /* 8a04 */ NULL, /* 8a05 */ NULL, /* 8a06 */ NULL, /* 8a07 */ NULL, /* 8a08 */ NULL, /* 8a09 */ NULL, /* 8a0a */ NULL, /* 8a0b */ NULL, /* 8a0c */ NULL, /* 8a0d */ NULL, /* 8a0e */ NULL, /* 8a0f */ NULL, /* 8a10 */ NULL, /* 8a11 */ NULL, /* 8a12 */ NULL, /* 8a13 */ NULL, /* 8a14 */ NULL, /* 8a15 */ NULL, /* 8a16 */ NULL, /* 8a17 */ NULL, /* 8a18 */ NULL, /* 8a19 */ NULL, /* 8a1a */ NULL, /* 8a1b */ NULL, /* 8a1c */ NULL, /* 8a1d */ NULL, /* 8a1e */ NULL, /* 8a1f */ NULL, /* 8a20 */ NULL, /* 8a21 */ NULL, /* 8a22 */ NULL, /* 8a23 */ NULL, /* 8a24 */ NULL, /* 8a25 */ NULL, /* 8a26 */ NULL, /* 8a27 */ NULL, /* 8a28 */ NULL, /* 8a29 */ NULL, /* 8a2a */ NULL, /* 8a2b */ NULL, /* 8a2c */ NULL, /* 8a2d */ NULL, /* 8a2e */ NULL, /* 8a2f */ NULL, /* 8a30 */ NULL, /* 8a31 */ NULL, /* 8a32 */ NULL, /* 8a33 */ NULL, /* 8a34 */ NULL, /* 8a35 */ NULL, /* 8a36 */ NULL, /* 8a37 */ NULL, /* 8a38 */ NULL, /* 8a39 */ NULL, /* 8a3a */ NULL, /* 8a3b */ NULL, /* 8a3c */ NULL, /* 8a3d */ NULL, /* 8a3e */ NULL, /* 8a3f */ NULL, /* 8a40 */ NULL, /* 8a41 */ NULL, /* 8a42 */ NULL, /* 8a43 */ NULL, /* 8a44 */ NULL, /* 8a45 */ NULL, /* 8a46 */ NULL, /* 8a47 */ NULL, /* 8a48 */ NULL, /* 8a49 */ NULL, /* 8a4a */ NULL, /* 8a4b */ NULL, /* 8a4c */ NULL, /* 8a4d */ NULL, /* 8a4e */ NULL, /* 8a4f */ NULL, /* 8a50 */ NULL, /* 8a51 */ NULL, /* 8a52 */ NULL, /* 8a53 */ NULL, /* 8a54 */ NULL, /* 8a55 */ NULL, /* 8a56 */ NULL, /* 8a57 */ NULL, /* 8a58 */ NULL, /* 8a59 */ NULL, /* 8a5a */ NULL, /* 8a5b */ NULL, /* 8a5c */ NULL, /* 8a5d */ NULL, /* 8a5e */ NULL, /* 8a5f */ NULL, /* 8a60 */ NULL, /* 8a61 */ NULL, /* 8a62 */ NULL, /* 8a63 */ NULL, /* 8a64 */ NULL, /* 8a65 */ NULL, /* 8a66 */ NULL, /* 8a67 */ NULL, /* 8a68 */ NULL, /* 8a69 */ NULL, /* 8a6a */ NULL, /* 8a6b */ NULL, /* 8a6c */ NULL, /* 8a6d */ NULL, /* 8a6e */ NULL, /* 8a6f */ NULL, /* 8a70 */ NULL, /* 8a71 */ NULL, /* 8a72 */ NULL, /* 8a73 */ NULL, /* 8a74 */ NULL, /* 8a75 */ NULL, /* 8a76 */ NULL, /* 8a77 */ NULL, /* 8a78 */ NULL, /* 8a79 */ NULL, /* 8a7a */ NULL, /* 8a7b */ NULL, /* 8a7c */ NULL, /* 8a7d */ NULL, /* 8a7e */ NULL, /* 8a7f */ NULL, /* 8a80 */ NULL, /* 8a81 */ NULL, /* 8a82 */ NULL, /* 8a83 */ NULL, /* 8a84 */ NULL, /* 8a85 */ NULL, /* 8a86 */ NULL, /* 8a87 */ NULL, /* 8a88 */ NULL, /* 8a89 */ NULL, /* 8a8a */ NULL, /* 8a8b */ NULL, /* 8a8c */ NULL, /* 8a8d */ NULL, /* 8a8e */ NULL, /* 8a8f */ NULL, /* 8a90 */ NULL, /* 8a91 */ NULL, /* 8a92 */ NULL, /* 8a93 */ NULL, /* 8a94 */ NULL, /* 8a95 */ NULL, /* 8a96 */ NULL, /* 8a97 */ NULL, /* 8a98 */ NULL, /* 8a99 */ NULL, /* 8a9a */ NULL, /* 8a9b */ NULL, /* 8a9c */ NULL, /* 8a9d */ NULL, /* 8a9e */ NULL, /* 8a9f */ NULL, /* 8aa0 */ NULL, /* 8aa1 */ NULL, /* 8aa2 */ NULL, /* 8aa3 */ NULL, /* 8aa4 */ NULL, /* 8aa5 */ NULL, /* 8aa6 */ NULL, /* 8aa7 */ NULL, /* 8aa8 */ NULL, /* 8aa9 */ NULL, /* 8aaa */ NULL, /* 8aab */ NULL, /* 8aac */ NULL, /* 8aad */ NULL, /* 8aae */ NULL, /* 8aaf */ NULL, /* 8ab0 */ NULL, /* 8ab1 */ NULL, /* 8ab2 */ NULL, /* 8ab3 */ NULL, /* 8ab4 */ NULL, /* 8ab5 */ NULL, /* 8ab6 */ NULL, /* 8ab7 */ NULL, /* 8ab8 */ NULL, /* 8ab9 */ NULL, /* 8aba */ NULL, /* 8abb */ NULL, /* 8abc */ NULL, /* 8abd */ NULL, /* 8abe */ NULL, /* 8abf */ NULL, /* 8ac0 */ NULL, /* 8ac1 */ NULL, /* 8ac2 */ NULL, /* 8ac3 */ NULL, /* 8ac4 */ NULL, /* 8ac5 */ NULL, /* 8ac6 */ NULL, /* 8ac7 */ NULL, /* 8ac8 */ NULL, /* 8ac9 */ NULL, /* 8aca */ NULL, /* 8acb */ NULL, /* 8acc */ NULL, /* 8acd */ NULL, /* 8ace */ NULL, /* 8acf */ NULL, /* 8ad0 */ NULL, /* 8ad1 */ NULL, /* 8ad2 */ NULL, /* 8ad3 */ NULL, /* 8ad4 */ NULL, /* 8ad5 */ NULL, /* 8ad6 */ NULL, /* 8ad7 */ NULL, /* 8ad8 */ NULL, /* 8ad9 */ NULL, /* 8ada */ NULL, /* 8adb */ NULL, /* 8adc */ NULL, /* 8add */ NULL, /* 8ade */ NULL, /* 8adf */ NULL, /* 8ae0 */ NULL, /* 8ae1 */ NULL, /* 8ae2 */ NULL, /* 8ae3 */ NULL, /* 8ae4 */ NULL, /* 8ae5 */ NULL, /* 8ae6 */ NULL, /* 8ae7 */ NULL, /* 8ae8 */ NULL, /* 8ae9 */ NULL, /* 8aea */ NULL, /* 8aeb */ NULL, /* 8aec */ NULL, /* 8aed */ NULL, /* 8aee */ NULL, /* 8aef */ NULL, /* 8af0 */ NULL, /* 8af1 */ NULL, /* 8af2 */ NULL, /* 8af3 */ NULL, /* 8af4 */ NULL, /* 8af5 */ NULL, /* 8af6 */ NULL, /* 8af7 */ NULL, /* 8af8 */ NULL, /* 8af9 */ NULL, /* 8afa */ NULL, /* 8afb */ NULL, /* 8afc */ NULL, /* 8afd */ NULL, /* 8afe */ NULL, /* 8aff */ NULL, /* 8b00 */ NULL, /* 8b01 */ NULL, /* 8b02 */ NULL, /* 8b03 */ NULL, /* 8b04 */ NULL, /* 8b05 */ NULL, /* 8b06 */ NULL, /* 8b07 */ NULL, /* 8b08 */ NULL, /* 8b09 */ NULL, /* 8b0a */ NULL, /* 8b0b */ NULL, /* 8b0c */ NULL, /* 8b0d */ NULL, /* 8b0e */ NULL, /* 8b0f */ NULL, /* 8b10 */ NULL, /* 8b11 */ NULL, /* 8b12 */ NULL, /* 8b13 */ NULL, /* 8b14 */ NULL, /* 8b15 */ NULL, /* 8b16 */ NULL, /* 8b17 */ NULL, /* 8b18 */ NULL, /* 8b19 */ NULL, /* 8b1a */ NULL, /* 8b1b */ NULL, /* 8b1c */ NULL, /* 8b1d */ NULL, /* 8b1e */ NULL, /* 8b1f */ NULL, /* 8b20 */ NULL, /* 8b21 */ NULL, /* 8b22 */ NULL, /* 8b23 */ NULL, /* 8b24 */ NULL, /* 8b25 */ NULL, /* 8b26 */ NULL, /* 8b27 */ NULL, /* 8b28 */ NULL, /* 8b29 */ NULL, /* 8b2a */ NULL, /* 8b2b */ NULL, /* 8b2c */ NULL, /* 8b2d */ NULL, /* 8b2e */ NULL, /* 8b2f */ NULL, /* 8b30 */ NULL, /* 8b31 */ NULL, /* 8b32 */ NULL, /* 8b33 */ NULL, /* 8b34 */ NULL, /* 8b35 */ NULL, /* 8b36 */ NULL, /* 8b37 */ NULL, /* 8b38 */ NULL, /* 8b39 */ NULL, /* 8b3a */ NULL, /* 8b3b */ NULL, /* 8b3c */ NULL, /* 8b3d */ NULL, /* 8b3e */ NULL, /* 8b3f */ NULL, /* 8b40 */ NULL, /* 8b41 */ NULL, /* 8b42 */ NULL, /* 8b43 */ NULL, /* 8b44 */ NULL, /* 8b45 */ NULL, /* 8b46 */ NULL, /* 8b47 */ NULL, /* 8b48 */ NULL, /* 8b49 */ NULL, /* 8b4a */ NULL, /* 8b4b */ NULL, /* 8b4c */ NULL, /* 8b4d */ NULL, /* 8b4e */ NULL, /* 8b4f */ NULL, /* 8b50 */ NULL, /* 8b51 */ NULL, /* 8b52 */ NULL, /* 8b53 */ NULL, /* 8b54 */ NULL, /* 8b55 */ NULL, /* 8b56 */ NULL, /* 8b57 */ NULL, /* 8b58 */ NULL, /* 8b59 */ NULL, /* 8b5a */ NULL, /* 8b5b */ NULL, /* 8b5c */ NULL, /* 8b5d */ NULL, /* 8b5e */ NULL, /* 8b5f */ NULL, /* 8b60 */ NULL, /* 8b61 */ NULL, /* 8b62 */ NULL, /* 8b63 */ NULL, /* 8b64 */ NULL, /* 8b65 */ NULL, /* 8b66 */ NULL, /* 8b67 */ NULL, /* 8b68 */ NULL, /* 8b69 */ NULL, /* 8b6a */ NULL, /* 8b6b */ NULL, /* 8b6c */ NULL, /* 8b6d */ NULL, /* 8b6e */ NULL, /* 8b6f */ NULL, /* 8b70 */ NULL, /* 8b71 */ NULL, /* 8b72 */ NULL, /* 8b73 */ NULL, /* 8b74 */ NULL, /* 8b75 */ NULL, /* 8b76 */ NULL, /* 8b77 */ NULL, /* 8b78 */ NULL, /* 8b79 */ NULL, /* 8b7a */ NULL, /* 8b7b */ NULL, /* 8b7c */ NULL, /* 8b7d */ NULL, /* 8b7e */ NULL, /* 8b7f */ NULL, /* 8b80 */ NULL, /* 8b81 */ NULL, /* 8b82 */ NULL, /* 8b83 */ NULL, /* 8b84 */ NULL, /* 8b85 */ NULL, /* 8b86 */ NULL, /* 8b87 */ NULL, /* 8b88 */ NULL, /* 8b89 */ NULL, /* 8b8a */ NULL, /* 8b8b */ NULL, /* 8b8c */ NULL, /* 8b8d */ NULL, /* 8b8e */ NULL, /* 8b8f */ NULL, /* 8b90 */ NULL, /* 8b91 */ NULL, /* 8b92 */ NULL, /* 8b93 */ NULL, /* 8b94 */ NULL, /* 8b95 */ NULL, /* 8b96 */ NULL, /* 8b97 */ NULL, /* 8b98 */ NULL, /* 8b99 */ NULL, /* 8b9a */ NULL, /* 8b9b */ NULL, /* 8b9c */ NULL, /* 8b9d */ NULL, /* 8b9e */ NULL, /* 8b9f */ NULL, /* 8ba0 */ NULL, /* 8ba1 */ NULL, /* 8ba2 */ NULL, /* 8ba3 */ NULL, /* 8ba4 */ NULL, /* 8ba5 */ NULL, /* 8ba6 */ NULL, /* 8ba7 */ NULL, /* 8ba8 */ NULL, /* 8ba9 */ NULL, /* 8baa */ NULL, /* 8bab */ NULL, /* 8bac */ NULL, /* 8bad */ NULL, /* 8bae */ NULL, /* 8baf */ NULL, /* 8bb0 */ NULL, /* 8bb1 */ NULL, /* 8bb2 */ NULL, /* 8bb3 */ NULL, /* 8bb4 */ NULL, /* 8bb5 */ NULL, /* 8bb6 */ NULL, /* 8bb7 */ NULL, /* 8bb8 */ NULL, /* 8bb9 */ NULL, /* 8bba */ NULL, /* 8bbb */ NULL, /* 8bbc */ NULL, /* 8bbd */ NULL, /* 8bbe */ NULL, /* 8bbf */ NULL, /* 8bc0 */ NULL, /* 8bc1 */ NULL, /* 8bc2 */ NULL, /* 8bc3 */ NULL, /* 8bc4 */ NULL, /* 8bc5 */ NULL, /* 8bc6 */ NULL, /* 8bc7 */ NULL, /* 8bc8 */ NULL, /* 8bc9 */ NULL, /* 8bca */ NULL, /* 8bcb */ NULL, /* 8bcc */ NULL, /* 8bcd */ NULL, /* 8bce */ NULL, /* 8bcf */ NULL, /* 8bd0 */ NULL, /* 8bd1 */ NULL, /* 8bd2 */ NULL, /* 8bd3 */ NULL, /* 8bd4 */ NULL, /* 8bd5 */ NULL, /* 8bd6 */ NULL, /* 8bd7 */ NULL, /* 8bd8 */ NULL, /* 8bd9 */ NULL, /* 8bda */ NULL, /* 8bdb */ NULL, /* 8bdc */ NULL, /* 8bdd */ NULL, /* 8bde */ NULL, /* 8bdf */ NULL, /* 8be0 */ NULL, /* 8be1 */ NULL, /* 8be2 */ NULL, /* 8be3 */ NULL, /* 8be4 */ NULL, /* 8be5 */ NULL, /* 8be6 */ NULL, /* 8be7 */ NULL, /* 8be8 */ NULL, /* 8be9 */ NULL, /* 8bea */ NULL, /* 8beb */ NULL, /* 8bec */ NULL, /* 8bed */ NULL, /* 8bee */ NULL, /* 8bef */ NULL, /* 8bf0 */ NULL, /* 8bf1 */ NULL, /* 8bf2 */ NULL, /* 8bf3 */ NULL, /* 8bf4 */ NULL, /* 8bf5 */ NULL, /* 8bf6 */ NULL, /* 8bf7 */ NULL, /* 8bf8 */ NULL, /* 8bf9 */ NULL, /* 8bfa */ NULL, /* 8bfb */ NULL, /* 8bfc */ NULL, /* 8bfd */ NULL, /* 8bfe */ NULL, /* 8bff */ NULL, /* 8c00 */ NULL, /* 8c01 */ NULL, /* 8c02 */ NULL, /* 8c03 */ NULL, /* 8c04 */ NULL, /* 8c05 */ NULL, /* 8c06 */ NULL, /* 8c07 */ NULL, /* 8c08 */ NULL, /* 8c09 */ NULL, /* 8c0a */ NULL, /* 8c0b */ NULL, /* 8c0c */ NULL, /* 8c0d */ NULL, /* 8c0e */ NULL, /* 8c0f */ NULL, /* 8c10 */ NULL, /* 8c11 */ NULL, /* 8c12 */ NULL, /* 8c13 */ NULL, /* 8c14 */ NULL, /* 8c15 */ NULL, /* 8c16 */ NULL, /* 8c17 */ NULL, /* 8c18 */ NULL, /* 8c19 */ NULL, /* 8c1a */ NULL, /* 8c1b */ NULL, /* 8c1c */ NULL, /* 8c1d */ NULL, /* 8c1e */ NULL, /* 8c1f */ NULL, /* 8c20 */ NULL, /* 8c21 */ NULL, /* 8c22 */ NULL, /* 8c23 */ NULL, /* 8c24 */ NULL, /* 8c25 */ NULL, /* 8c26 */ NULL, /* 8c27 */ NULL, /* 8c28 */ NULL, /* 8c29 */ NULL, /* 8c2a */ NULL, /* 8c2b */ NULL, /* 8c2c */ NULL, /* 8c2d */ NULL, /* 8c2e */ NULL, /* 8c2f */ NULL, /* 8c30 */ NULL, /* 8c31 */ NULL, /* 8c32 */ NULL, /* 8c33 */ NULL, /* 8c34 */ NULL, /* 8c35 */ NULL, /* 8c36 */ NULL, /* 8c37 */ NULL, /* 8c38 */ NULL, /* 8c39 */ NULL, /* 8c3a */ NULL, /* 8c3b */ NULL, /* 8c3c */ NULL, /* 8c3d */ NULL, /* 8c3e */ NULL, /* 8c3f */ NULL, /* 8c40 */ NULL, /* 8c41 */ NULL, /* 8c42 */ NULL, /* 8c43 */ NULL, /* 8c44 */ NULL, /* 8c45 */ NULL, /* 8c46 */ NULL, /* 8c47 */ NULL, /* 8c48 */ NULL, /* 8c49 */ NULL, /* 8c4a */ NULL, /* 8c4b */ NULL, /* 8c4c */ NULL, /* 8c4d */ NULL, /* 8c4e */ NULL, /* 8c4f */ NULL, /* 8c50 */ NULL, /* 8c51 */ NULL, /* 8c52 */ NULL, /* 8c53 */ NULL, /* 8c54 */ NULL, /* 8c55 */ NULL, /* 8c56 */ NULL, /* 8c57 */ NULL, /* 8c58 */ NULL, /* 8c59 */ NULL, /* 8c5a */ NULL, /* 8c5b */ NULL, /* 8c5c */ NULL, /* 8c5d */ NULL, /* 8c5e */ NULL, /* 8c5f */ NULL, /* 8c60 */ NULL, /* 8c61 */ NULL, /* 8c62 */ NULL, /* 8c63 */ NULL, /* 8c64 */ NULL, /* 8c65 */ NULL, /* 8c66 */ NULL, /* 8c67 */ NULL, /* 8c68 */ NULL, /* 8c69 */ NULL, /* 8c6a */ NULL, /* 8c6b */ NULL, /* 8c6c */ NULL, /* 8c6d */ NULL, /* 8c6e */ NULL, /* 8c6f */ NULL, /* 8c70 */ NULL, /* 8c71 */ NULL, /* 8c72 */ NULL, /* 8c73 */ NULL, /* 8c74 */ NULL, /* 8c75 */ NULL, /* 8c76 */ NULL, /* 8c77 */ NULL, /* 8c78 */ NULL, /* 8c79 */ NULL, /* 8c7a */ NULL, /* 8c7b */ NULL, /* 8c7c */ NULL, /* 8c7d */ NULL, /* 8c7e */ NULL, /* 8c7f */ NULL, /* 8c80 */ NULL, /* 8c81 */ NULL, /* 8c82 */ NULL, /* 8c83 */ NULL, /* 8c84 */ NULL, /* 8c85 */ NULL, /* 8c86 */ NULL, /* 8c87 */ NULL, /* 8c88 */ NULL, /* 8c89 */ NULL, /* 8c8a */ NULL, /* 8c8b */ NULL, /* 8c8c */ NULL, /* 8c8d */ NULL, /* 8c8e */ NULL, /* 8c8f */ NULL, /* 8c90 */ NULL, /* 8c91 */ NULL, /* 8c92 */ NULL, /* 8c93 */ NULL, /* 8c94 */ NULL, /* 8c95 */ NULL, /* 8c96 */ NULL, /* 8c97 */ NULL, /* 8c98 */ NULL, /* 8c99 */ NULL, /* 8c9a */ NULL, /* 8c9b */ NULL, /* 8c9c */ NULL, /* 8c9d */ NULL, /* 8c9e */ NULL, /* 8c9f */ NULL, /* 8ca0 */ NULL, /* 8ca1 */ NULL, /* 8ca2 */ NULL, /* 8ca3 */ NULL, /* 8ca4 */ NULL, /* 8ca5 */ NULL, /* 8ca6 */ NULL, /* 8ca7 */ NULL, /* 8ca8 */ NULL, /* 8ca9 */ NULL, /* 8caa */ NULL, /* 8cab */ NULL, /* 8cac */ NULL, /* 8cad */ NULL, /* 8cae */ NULL, /* 8caf */ NULL, /* 8cb0 */ NULL, /* 8cb1 */ NULL, /* 8cb2 */ NULL, /* 8cb3 */ NULL, /* 8cb4 */ NULL, /* 8cb5 */ NULL, /* 8cb6 */ NULL, /* 8cb7 */ NULL, /* 8cb8 */ NULL, /* 8cb9 */ NULL, /* 8cba */ NULL, /* 8cbb */ NULL, /* 8cbc */ NULL, /* 8cbd */ NULL, /* 8cbe */ NULL, /* 8cbf */ NULL, /* 8cc0 */ NULL, /* 8cc1 */ NULL, /* 8cc2 */ NULL, /* 8cc3 */ NULL, /* 8cc4 */ NULL, /* 8cc5 */ NULL, /* 8cc6 */ NULL, /* 8cc7 */ NULL, /* 8cc8 */ NULL, /* 8cc9 */ NULL, /* 8cca */ NULL, /* 8ccb */ NULL, /* 8ccc */ NULL, /* 8ccd */ NULL, /* 8cce */ NULL, /* 8ccf */ NULL, /* 8cd0 */ NULL, /* 8cd1 */ NULL, /* 8cd2 */ NULL, /* 8cd3 */ NULL, /* 8cd4 */ NULL, /* 8cd5 */ NULL, /* 8cd6 */ NULL, /* 8cd7 */ NULL, /* 8cd8 */ NULL, /* 8cd9 */ NULL, /* 8cda */ NULL, /* 8cdb */ NULL, /* 8cdc */ NULL, /* 8cdd */ NULL, /* 8cde */ NULL, /* 8cdf */ NULL, /* 8ce0 */ NULL, /* 8ce1 */ NULL, /* 8ce2 */ NULL, /* 8ce3 */ NULL, /* 8ce4 */ NULL, /* 8ce5 */ NULL, /* 8ce6 */ NULL, /* 8ce7 */ NULL, /* 8ce8 */ NULL, /* 8ce9 */ NULL, /* 8cea */ NULL, /* 8ceb */ NULL, /* 8cec */ NULL, /* 8ced */ NULL, /* 8cee */ NULL, /* 8cef */ NULL, /* 8cf0 */ NULL, /* 8cf1 */ NULL, /* 8cf2 */ NULL, /* 8cf3 */ NULL, /* 8cf4 */ NULL, /* 8cf5 */ NULL, /* 8cf6 */ NULL, /* 8cf7 */ NULL, /* 8cf8 */ NULL, /* 8cf9 */ NULL, /* 8cfa */ NULL, /* 8cfb */ NULL, /* 8cfc */ NULL, /* 8cfd */ NULL, /* 8cfe */ NULL, /* 8cff */ NULL, /* 8d00 */ NULL, /* 8d01 */ NULL, /* 8d02 */ NULL, /* 8d03 */ NULL, /* 8d04 */ NULL, /* 8d05 */ NULL, /* 8d06 */ NULL, /* 8d07 */ NULL, /* 8d08 */ NULL, /* 8d09 */ NULL, /* 8d0a */ NULL, /* 8d0b */ NULL, /* 8d0c */ NULL, /* 8d0d */ NULL, /* 8d0e */ NULL, /* 8d0f */ NULL, /* 8d10 */ NULL, /* 8d11 */ NULL, /* 8d12 */ NULL, /* 8d13 */ NULL, /* 8d14 */ NULL, /* 8d15 */ NULL, /* 8d16 */ NULL, /* 8d17 */ NULL, /* 8d18 */ NULL, /* 8d19 */ NULL, /* 8d1a */ NULL, /* 8d1b */ NULL, /* 8d1c */ NULL, /* 8d1d */ NULL, /* 8d1e */ NULL, /* 8d1f */ NULL, /* 8d20 */ NULL, /* 8d21 */ NULL, /* 8d22 */ NULL, /* 8d23 */ NULL, /* 8d24 */ NULL, /* 8d25 */ NULL, /* 8d26 */ NULL, /* 8d27 */ NULL, /* 8d28 */ NULL, /* 8d29 */ NULL, /* 8d2a */ NULL, /* 8d2b */ NULL, /* 8d2c */ NULL, /* 8d2d */ NULL, /* 8d2e */ NULL, /* 8d2f */ NULL, /* 8d30 */ NULL, /* 8d31 */ NULL, /* 8d32 */ NULL, /* 8d33 */ NULL, /* 8d34 */ NULL, /* 8d35 */ NULL, /* 8d36 */ NULL, /* 8d37 */ NULL, /* 8d38 */ NULL, /* 8d39 */ NULL, /* 8d3a */ NULL, /* 8d3b */ NULL, /* 8d3c */ NULL, /* 8d3d */ NULL, /* 8d3e */ NULL, /* 8d3f */ NULL, /* 8d40 */ NULL, /* 8d41 */ NULL, /* 8d42 */ NULL, /* 8d43 */ NULL, /* 8d44 */ NULL, /* 8d45 */ NULL, /* 8d46 */ NULL, /* 8d47 */ NULL, /* 8d48 */ NULL, /* 8d49 */ NULL, /* 8d4a */ NULL, /* 8d4b */ NULL, /* 8d4c */ NULL, /* 8d4d */ NULL, /* 8d4e */ NULL, /* 8d4f */ NULL, /* 8d50 */ NULL, /* 8d51 */ NULL, /* 8d52 */ NULL, /* 8d53 */ NULL, /* 8d54 */ NULL, /* 8d55 */ NULL, /* 8d56 */ NULL, /* 8d57 */ NULL, /* 8d58 */ NULL, /* 8d59 */ NULL, /* 8d5a */ NULL, /* 8d5b */ NULL, /* 8d5c */ NULL, /* 8d5d */ NULL, /* 8d5e */ NULL, /* 8d5f */ NULL, /* 8d60 */ NULL, /* 8d61 */ NULL, /* 8d62 */ NULL, /* 8d63 */ NULL, /* 8d64 */ NULL, /* 8d65 */ NULL, /* 8d66 */ NULL, /* 8d67 */ NULL, /* 8d68 */ NULL, /* 8d69 */ NULL, /* 8d6a */ NULL, /* 8d6b */ NULL, /* 8d6c */ NULL, /* 8d6d */ NULL, /* 8d6e */ NULL, /* 8d6f */ NULL, /* 8d70 */ NULL, /* 8d71 */ NULL, /* 8d72 */ NULL, /* 8d73 */ NULL, /* 8d74 */ NULL, /* 8d75 */ NULL, /* 8d76 */ NULL, /* 8d77 */ NULL, /* 8d78 */ NULL, /* 8d79 */ NULL, /* 8d7a */ NULL, /* 8d7b */ NULL, /* 8d7c */ NULL, /* 8d7d */ NULL, /* 8d7e */ NULL, /* 8d7f */ NULL, /* 8d80 */ NULL, /* 8d81 */ NULL, /* 8d82 */ NULL, /* 8d83 */ NULL, /* 8d84 */ NULL, /* 8d85 */ NULL, /* 8d86 */ NULL, /* 8d87 */ NULL, /* 8d88 */ NULL, /* 8d89 */ NULL, /* 8d8a */ NULL, /* 8d8b */ NULL, /* 8d8c */ NULL, /* 8d8d */ NULL, /* 8d8e */ NULL, /* 8d8f */ NULL, /* 8d90 */ NULL, /* 8d91 */ NULL, /* 8d92 */ NULL, /* 8d93 */ NULL, /* 8d94 */ NULL, /* 8d95 */ NULL, /* 8d96 */ NULL, /* 8d97 */ NULL, /* 8d98 */ NULL, /* 8d99 */ NULL, /* 8d9a */ NULL, /* 8d9b */ NULL, /* 8d9c */ NULL, /* 8d9d */ NULL, /* 8d9e */ NULL, /* 8d9f */ NULL, /* 8da0 */ NULL, /* 8da1 */ NULL, /* 8da2 */ NULL, /* 8da3 */ NULL, /* 8da4 */ NULL, /* 8da5 */ NULL, /* 8da6 */ NULL, /* 8da7 */ NULL, /* 8da8 */ NULL, /* 8da9 */ NULL, /* 8daa */ NULL, /* 8dab */ NULL, /* 8dac */ NULL, /* 8dad */ NULL, /* 8dae */ NULL, /* 8daf */ NULL, /* 8db0 */ NULL, /* 8db1 */ NULL, /* 8db2 */ NULL, /* 8db3 */ NULL, /* 8db4 */ NULL, /* 8db5 */ NULL, /* 8db6 */ NULL, /* 8db7 */ NULL, /* 8db8 */ NULL, /* 8db9 */ NULL, /* 8dba */ NULL, /* 8dbb */ NULL, /* 8dbc */ NULL, /* 8dbd */ NULL, /* 8dbe */ NULL, /* 8dbf */ NULL, /* 8dc0 */ NULL, /* 8dc1 */ NULL, /* 8dc2 */ NULL, /* 8dc3 */ NULL, /* 8dc4 */ NULL, /* 8dc5 */ NULL, /* 8dc6 */ NULL, /* 8dc7 */ NULL, /* 8dc8 */ NULL, /* 8dc9 */ NULL, /* 8dca */ NULL, /* 8dcb */ NULL, /* 8dcc */ NULL, /* 8dcd */ NULL, /* 8dce */ NULL, /* 8dcf */ NULL, /* 8dd0 */ NULL, /* 8dd1 */ NULL, /* 8dd2 */ NULL, /* 8dd3 */ NULL, /* 8dd4 */ NULL, /* 8dd5 */ NULL, /* 8dd6 */ NULL, /* 8dd7 */ NULL, /* 8dd8 */ NULL, /* 8dd9 */ NULL, /* 8dda */ NULL, /* 8ddb */ NULL, /* 8ddc */ NULL, /* 8ddd */ NULL, /* 8dde */ NULL, /* 8ddf */ NULL, /* 8de0 */ NULL, /* 8de1 */ NULL, /* 8de2 */ NULL, /* 8de3 */ NULL, /* 8de4 */ NULL, /* 8de5 */ NULL, /* 8de6 */ NULL, /* 8de7 */ NULL, /* 8de8 */ NULL, /* 8de9 */ NULL, /* 8dea */ NULL, /* 8deb */ NULL, /* 8dec */ NULL, /* 8ded */ NULL, /* 8dee */ NULL, /* 8def */ NULL, /* 8df0 */ NULL, /* 8df1 */ NULL, /* 8df2 */ NULL, /* 8df3 */ NULL, /* 8df4 */ NULL, /* 8df5 */ NULL, /* 8df6 */ NULL, /* 8df7 */ NULL, /* 8df8 */ NULL, /* 8df9 */ NULL, /* 8dfa */ NULL, /* 8dfb */ NULL, /* 8dfc */ NULL, /* 8dfd */ NULL, /* 8dfe */ NULL, /* 8dff */ NULL, /* 8e00 */ NULL, /* 8e01 */ NULL, /* 8e02 */ NULL, /* 8e03 */ NULL, /* 8e04 */ NULL, /* 8e05 */ NULL, /* 8e06 */ NULL, /* 8e07 */ NULL, /* 8e08 */ NULL, /* 8e09 */ NULL, /* 8e0a */ NULL, /* 8e0b */ NULL, /* 8e0c */ NULL, /* 8e0d */ NULL, /* 8e0e */ NULL, /* 8e0f */ NULL, /* 8e10 */ NULL, /* 8e11 */ NULL, /* 8e12 */ NULL, /* 8e13 */ NULL, /* 8e14 */ NULL, /* 8e15 */ NULL, /* 8e16 */ NULL, /* 8e17 */ NULL, /* 8e18 */ NULL, /* 8e19 */ NULL, /* 8e1a */ NULL, /* 8e1b */ NULL, /* 8e1c */ NULL, /* 8e1d */ NULL, /* 8e1e */ NULL, /* 8e1f */ NULL, /* 8e20 */ NULL, /* 8e21 */ NULL, /* 8e22 */ NULL, /* 8e23 */ NULL, /* 8e24 */ NULL, /* 8e25 */ NULL, /* 8e26 */ NULL, /* 8e27 */ NULL, /* 8e28 */ NULL, /* 8e29 */ NULL, /* 8e2a */ NULL, /* 8e2b */ NULL, /* 8e2c */ NULL, /* 8e2d */ NULL, /* 8e2e */ NULL, /* 8e2f */ NULL, /* 8e30 */ NULL, /* 8e31 */ NULL, /* 8e32 */ NULL, /* 8e33 */ NULL, /* 8e34 */ NULL, /* 8e35 */ NULL, /* 8e36 */ NULL, /* 8e37 */ NULL, /* 8e38 */ NULL, /* 8e39 */ NULL, /* 8e3a */ NULL, /* 8e3b */ NULL, /* 8e3c */ NULL, /* 8e3d */ NULL, /* 8e3e */ NULL, /* 8e3f */ NULL, /* 8e40 */ NULL, /* 8e41 */ NULL, /* 8e42 */ NULL, /* 8e43 */ NULL, /* 8e44 */ NULL, /* 8e45 */ NULL, /* 8e46 */ NULL, /* 8e47 */ NULL, /* 8e48 */ NULL, /* 8e49 */ NULL, /* 8e4a */ NULL, /* 8e4b */ NULL, /* 8e4c */ NULL, /* 8e4d */ NULL, /* 8e4e */ NULL, /* 8e4f */ NULL, /* 8e50 */ NULL, /* 8e51 */ NULL, /* 8e52 */ NULL, /* 8e53 */ NULL, /* 8e54 */ NULL, /* 8e55 */ NULL, /* 8e56 */ NULL, /* 8e57 */ NULL, /* 8e58 */ NULL, /* 8e59 */ NULL, /* 8e5a */ NULL, /* 8e5b */ NULL, /* 8e5c */ NULL, /* 8e5d */ NULL, /* 8e5e */ NULL, /* 8e5f */ NULL, /* 8e60 */ NULL, /* 8e61 */ NULL, /* 8e62 */ NULL, /* 8e63 */ NULL, /* 8e64 */ NULL, /* 8e65 */ NULL, /* 8e66 */ NULL, /* 8e67 */ NULL, /* 8e68 */ NULL, /* 8e69 */ NULL, /* 8e6a */ NULL, /* 8e6b */ NULL, /* 8e6c */ NULL, /* 8e6d */ NULL, /* 8e6e */ NULL, /* 8e6f */ NULL, /* 8e70 */ NULL, /* 8e71 */ NULL, /* 8e72 */ NULL, /* 8e73 */ NULL, /* 8e74 */ NULL, /* 8e75 */ NULL, /* 8e76 */ NULL, /* 8e77 */ NULL, /* 8e78 */ NULL, /* 8e79 */ NULL, /* 8e7a */ NULL, /* 8e7b */ NULL, /* 8e7c */ NULL, /* 8e7d */ NULL, /* 8e7e */ NULL, /* 8e7f */ NULL, /* 8e80 */ NULL, /* 8e81 */ NULL, /* 8e82 */ NULL, /* 8e83 */ NULL, /* 8e84 */ NULL, /* 8e85 */ NULL, /* 8e86 */ NULL, /* 8e87 */ NULL, /* 8e88 */ NULL, /* 8e89 */ NULL, /* 8e8a */ NULL, /* 8e8b */ NULL, /* 8e8c */ NULL, /* 8e8d */ NULL, /* 8e8e */ NULL, /* 8e8f */ NULL, /* 8e90 */ NULL, /* 8e91 */ NULL, /* 8e92 */ NULL, /* 8e93 */ NULL, /* 8e94 */ NULL, /* 8e95 */ NULL, /* 8e96 */ NULL, /* 8e97 */ NULL, /* 8e98 */ NULL, /* 8e99 */ NULL, /* 8e9a */ NULL, /* 8e9b */ NULL, /* 8e9c */ NULL, /* 8e9d */ NULL, /* 8e9e */ NULL, /* 8e9f */ NULL, /* 8ea0 */ NULL, /* 8ea1 */ NULL, /* 8ea2 */ NULL, /* 8ea3 */ NULL, /* 8ea4 */ NULL, /* 8ea5 */ NULL, /* 8ea6 */ NULL, /* 8ea7 */ NULL, /* 8ea8 */ NULL, /* 8ea9 */ NULL, /* 8eaa */ NULL, /* 8eab */ NULL, /* 8eac */ NULL, /* 8ead */ NULL, /* 8eae */ NULL, /* 8eaf */ NULL, /* 8eb0 */ NULL, /* 8eb1 */ NULL, /* 8eb2 */ NULL, /* 8eb3 */ NULL, /* 8eb4 */ NULL, /* 8eb5 */ NULL, /* 8eb6 */ NULL, /* 8eb7 */ NULL, /* 8eb8 */ NULL, /* 8eb9 */ NULL, /* 8eba */ NULL, /* 8ebb */ NULL, /* 8ebc */ NULL, /* 8ebd */ NULL, /* 8ebe */ NULL, /* 8ebf */ NULL, /* 8ec0 */ NULL, /* 8ec1 */ NULL, /* 8ec2 */ NULL, /* 8ec3 */ NULL, /* 8ec4 */ NULL, /* 8ec5 */ NULL, /* 8ec6 */ NULL, /* 8ec7 */ NULL, /* 8ec8 */ NULL, /* 8ec9 */ NULL, /* 8eca */ NULL, /* 8ecb */ NULL, /* 8ecc */ NULL, /* 8ecd */ NULL, /* 8ece */ NULL, /* 8ecf */ NULL, /* 8ed0 */ NULL, /* 8ed1 */ NULL, /* 8ed2 */ NULL, /* 8ed3 */ NULL, /* 8ed4 */ NULL, /* 8ed5 */ NULL, /* 8ed6 */ NULL, /* 8ed7 */ NULL, /* 8ed8 */ NULL, /* 8ed9 */ NULL, /* 8eda */ NULL, /* 8edb */ NULL, /* 8edc */ NULL, /* 8edd */ NULL, /* 8ede */ NULL, /* 8edf */ NULL, /* 8ee0 */ NULL, /* 8ee1 */ NULL, /* 8ee2 */ NULL, /* 8ee3 */ NULL, /* 8ee4 */ NULL, /* 8ee5 */ NULL, /* 8ee6 */ NULL, /* 8ee7 */ NULL, /* 8ee8 */ NULL, /* 8ee9 */ NULL, /* 8eea */ NULL, /* 8eeb */ NULL, /* 8eec */ NULL, /* 8eed */ NULL, /* 8eee */ NULL, /* 8eef */ NULL, /* 8ef0 */ NULL, /* 8ef1 */ NULL, /* 8ef2 */ NULL, /* 8ef3 */ NULL, /* 8ef4 */ NULL, /* 8ef5 */ NULL, /* 8ef6 */ NULL, /* 8ef7 */ NULL, /* 8ef8 */ NULL, /* 8ef9 */ NULL, /* 8efa */ NULL, /* 8efb */ NULL, /* 8efc */ NULL, /* 8efd */ NULL, /* 8efe */ NULL, /* 8eff */ NULL, /* 8f00 */ NULL, /* 8f01 */ NULL, /* 8f02 */ NULL, /* 8f03 */ NULL, /* 8f04 */ NULL, /* 8f05 */ NULL, /* 8f06 */ NULL, /* 8f07 */ NULL, /* 8f08 */ NULL, /* 8f09 */ NULL, /* 8f0a */ NULL, /* 8f0b */ NULL, /* 8f0c */ NULL, /* 8f0d */ NULL, /* 8f0e */ NULL, /* 8f0f */ NULL, /* 8f10 */ NULL, /* 8f11 */ NULL, /* 8f12 */ NULL, /* 8f13 */ NULL, /* 8f14 */ NULL, /* 8f15 */ NULL, /* 8f16 */ NULL, /* 8f17 */ NULL, /* 8f18 */ NULL, /* 8f19 */ NULL, /* 8f1a */ NULL, /* 8f1b */ NULL, /* 8f1c */ NULL, /* 8f1d */ NULL, /* 8f1e */ NULL, /* 8f1f */ NULL, /* 8f20 */ NULL, /* 8f21 */ NULL, /* 8f22 */ NULL, /* 8f23 */ NULL, /* 8f24 */ NULL, /* 8f25 */ NULL, /* 8f26 */ NULL, /* 8f27 */ NULL, /* 8f28 */ NULL, /* 8f29 */ NULL, /* 8f2a */ NULL, /* 8f2b */ NULL, /* 8f2c */ NULL, /* 8f2d */ NULL, /* 8f2e */ NULL, /* 8f2f */ NULL, /* 8f30 */ NULL, /* 8f31 */ NULL, /* 8f32 */ NULL, /* 8f33 */ NULL, /* 8f34 */ NULL, /* 8f35 */ NULL, /* 8f36 */ NULL, /* 8f37 */ NULL, /* 8f38 */ NULL, /* 8f39 */ NULL, /* 8f3a */ NULL, /* 8f3b */ NULL, /* 8f3c */ NULL, /* 8f3d */ NULL, /* 8f3e */ NULL, /* 8f3f */ NULL, /* 8f40 */ NULL, /* 8f41 */ NULL, /* 8f42 */ NULL, /* 8f43 */ NULL, /* 8f44 */ NULL, /* 8f45 */ NULL, /* 8f46 */ NULL, /* 8f47 */ NULL, /* 8f48 */ NULL, /* 8f49 */ NULL, /* 8f4a */ NULL, /* 8f4b */ NULL, /* 8f4c */ NULL, /* 8f4d */ NULL, /* 8f4e */ NULL, /* 8f4f */ NULL, /* 8f50 */ NULL, /* 8f51 */ NULL, /* 8f52 */ NULL, /* 8f53 */ NULL, /* 8f54 */ NULL, /* 8f55 */ NULL, /* 8f56 */ NULL, /* 8f57 */ NULL, /* 8f58 */ NULL, /* 8f59 */ NULL, /* 8f5a */ NULL, /* 8f5b */ NULL, /* 8f5c */ NULL, /* 8f5d */ NULL, /* 8f5e */ NULL, /* 8f5f */ NULL, /* 8f60 */ NULL, /* 8f61 */ NULL, /* 8f62 */ NULL, /* 8f63 */ NULL, /* 8f64 */ NULL, /* 8f65 */ NULL, /* 8f66 */ NULL, /* 8f67 */ NULL, /* 8f68 */ NULL, /* 8f69 */ NULL, /* 8f6a */ NULL, /* 8f6b */ NULL, /* 8f6c */ NULL, /* 8f6d */ NULL, /* 8f6e */ NULL, /* 8f6f */ NULL, /* 8f70 */ NULL, /* 8f71 */ NULL, /* 8f72 */ NULL, /* 8f73 */ NULL, /* 8f74 */ NULL, /* 8f75 */ NULL, /* 8f76 */ NULL, /* 8f77 */ NULL, /* 8f78 */ NULL, /* 8f79 */ NULL, /* 8f7a */ NULL, /* 8f7b */ NULL, /* 8f7c */ NULL, /* 8f7d */ NULL, /* 8f7e */ NULL, /* 8f7f */ NULL, /* 8f80 */ NULL, /* 8f81 */ NULL, /* 8f82 */ NULL, /* 8f83 */ NULL, /* 8f84 */ NULL, /* 8f85 */ NULL, /* 8f86 */ NULL, /* 8f87 */ NULL, /* 8f88 */ NULL, /* 8f89 */ NULL, /* 8f8a */ NULL, /* 8f8b */ NULL, /* 8f8c */ NULL, /* 8f8d */ NULL, /* 8f8e */ NULL, /* 8f8f */ NULL, /* 8f90 */ NULL, /* 8f91 */ NULL, /* 8f92 */ NULL, /* 8f93 */ NULL, /* 8f94 */ NULL, /* 8f95 */ NULL, /* 8f96 */ NULL, /* 8f97 */ NULL, /* 8f98 */ NULL, /* 8f99 */ NULL, /* 8f9a */ NULL, /* 8f9b */ NULL, /* 8f9c */ NULL, /* 8f9d */ NULL, /* 8f9e */ NULL, /* 8f9f */ NULL, /* 8fa0 */ NULL, /* 8fa1 */ NULL, /* 8fa2 */ NULL, /* 8fa3 */ NULL, /* 8fa4 */ NULL, /* 8fa5 */ NULL, /* 8fa6 */ NULL, /* 8fa7 */ NULL, /* 8fa8 */ NULL, /* 8fa9 */ NULL, /* 8faa */ NULL, /* 8fab */ NULL, /* 8fac */ NULL, /* 8fad */ NULL, /* 8fae */ NULL, /* 8faf */ NULL, /* 8fb0 */ NULL, /* 8fb1 */ NULL, /* 8fb2 */ NULL, /* 8fb3 */ NULL, /* 8fb4 */ NULL, /* 8fb5 */ NULL, /* 8fb6 */ NULL, /* 8fb7 */ NULL, /* 8fb8 */ NULL, /* 8fb9 */ NULL, /* 8fba */ NULL, /* 8fbb */ NULL, /* 8fbc */ NULL, /* 8fbd */ NULL, /* 8fbe */ NULL, /* 8fbf */ NULL, /* 8fc0 */ NULL, /* 8fc1 */ NULL, /* 8fc2 */ NULL, /* 8fc3 */ NULL, /* 8fc4 */ NULL, /* 8fc5 */ NULL, /* 8fc6 */ NULL, /* 8fc7 */ NULL, /* 8fc8 */ NULL, /* 8fc9 */ NULL, /* 8fca */ NULL, /* 8fcb */ NULL, /* 8fcc */ NULL, /* 8fcd */ NULL, /* 8fce */ NULL, /* 8fcf */ NULL, /* 8fd0 */ NULL, /* 8fd1 */ NULL, /* 8fd2 */ NULL, /* 8fd3 */ NULL, /* 8fd4 */ NULL, /* 8fd5 */ NULL, /* 8fd6 */ NULL, /* 8fd7 */ NULL, /* 8fd8 */ NULL, /* 8fd9 */ NULL, /* 8fda */ NULL, /* 8fdb */ NULL, /* 8fdc */ NULL, /* 8fdd */ NULL, /* 8fde */ NULL, /* 8fdf */ NULL, /* 8fe0 */ NULL, /* 8fe1 */ NULL, /* 8fe2 */ NULL, /* 8fe3 */ NULL, /* 8fe4 */ NULL, /* 8fe5 */ NULL, /* 8fe6 */ NULL, /* 8fe7 */ NULL, /* 8fe8 */ NULL, /* 8fe9 */ NULL, /* 8fea */ NULL, /* 8feb */ NULL, /* 8fec */ NULL, /* 8fed */ NULL, /* 8fee */ NULL, /* 8fef */ NULL, /* 8ff0 */ NULL, /* 8ff1 */ NULL, /* 8ff2 */ NULL, /* 8ff3 */ NULL, /* 8ff4 */ NULL, /* 8ff5 */ NULL, /* 8ff6 */ NULL, /* 8ff7 */ NULL, /* 8ff8 */ NULL, /* 8ff9 */ NULL, /* 8ffa */ NULL, /* 8ffb */ NULL, /* 8ffc */ NULL, /* 8ffd */ NULL, /* 8ffe */ NULL, /* 8fff */ NULL, /* 9000 */ NULL, /* 9001 */ NULL, /* 9002 */ NULL, /* 9003 */ NULL, /* 9004 */ NULL, /* 9005 */ NULL, /* 9006 */ NULL, /* 9007 */ NULL, /* 9008 */ NULL, /* 9009 */ NULL, /* 900a */ NULL, /* 900b */ NULL, /* 900c */ NULL, /* 900d */ NULL, /* 900e */ NULL, /* 900f */ NULL, /* 9010 */ NULL, /* 9011 */ NULL, /* 9012 */ NULL, /* 9013 */ NULL, /* 9014 */ NULL, /* 9015 */ NULL, /* 9016 */ NULL, /* 9017 */ NULL, /* 9018 */ NULL, /* 9019 */ NULL, /* 901a */ NULL, /* 901b */ NULL, /* 901c */ NULL, /* 901d */ NULL, /* 901e */ NULL, /* 901f */ NULL, /* 9020 */ NULL, /* 9021 */ NULL, /* 9022 */ NULL, /* 9023 */ NULL, /* 9024 */ NULL, /* 9025 */ NULL, /* 9026 */ NULL, /* 9027 */ NULL, /* 9028 */ NULL, /* 9029 */ NULL, /* 902a */ NULL, /* 902b */ NULL, /* 902c */ NULL, /* 902d */ NULL, /* 902e */ NULL, /* 902f */ NULL, /* 9030 */ NULL, /* 9031 */ NULL, /* 9032 */ NULL, /* 9033 */ NULL, /* 9034 */ NULL, /* 9035 */ NULL, /* 9036 */ NULL, /* 9037 */ NULL, /* 9038 */ NULL, /* 9039 */ NULL, /* 903a */ NULL, /* 903b */ NULL, /* 903c */ NULL, /* 903d */ NULL, /* 903e */ NULL, /* 903f */ NULL, /* 9040 */ NULL, /* 9041 */ NULL, /* 9042 */ NULL, /* 9043 */ NULL, /* 9044 */ NULL, /* 9045 */ NULL, /* 9046 */ NULL, /* 9047 */ NULL, /* 9048 */ NULL, /* 9049 */ NULL, /* 904a */ NULL, /* 904b */ NULL, /* 904c */ NULL, /* 904d */ NULL, /* 904e */ NULL, /* 904f */ NULL, /* 9050 */ NULL, /* 9051 */ NULL, /* 9052 */ NULL, /* 9053 */ NULL, /* 9054 */ NULL, /* 9055 */ NULL, /* 9056 */ NULL, /* 9057 */ NULL, /* 9058 */ NULL, /* 9059 */ NULL, /* 905a */ NULL, /* 905b */ NULL, /* 905c */ NULL, /* 905d */ NULL, /* 905e */ NULL, /* 905f */ NULL, /* 9060 */ NULL, /* 9061 */ NULL, /* 9062 */ NULL, /* 9063 */ NULL, /* 9064 */ NULL, /* 9065 */ NULL, /* 9066 */ NULL, /* 9067 */ NULL, /* 9068 */ NULL, /* 9069 */ NULL, /* 906a */ NULL, /* 906b */ NULL, /* 906c */ NULL, /* 906d */ NULL, /* 906e */ NULL, /* 906f */ NULL, /* 9070 */ NULL, /* 9071 */ NULL, /* 9072 */ NULL, /* 9073 */ NULL, /* 9074 */ NULL, /* 9075 */ NULL, /* 9076 */ NULL, /* 9077 */ NULL, /* 9078 */ NULL, /* 9079 */ NULL, /* 907a */ NULL, /* 907b */ NULL, /* 907c */ NULL, /* 907d */ NULL, /* 907e */ NULL, /* 907f */ NULL, /* 9080 */ NULL, /* 9081 */ NULL, /* 9082 */ NULL, /* 9083 */ NULL, /* 9084 */ NULL, /* 9085 */ NULL, /* 9086 */ NULL, /* 9087 */ NULL, /* 9088 */ NULL, /* 9089 */ NULL, /* 908a */ NULL, /* 908b */ NULL, /* 908c */ NULL, /* 908d */ NULL, /* 908e */ NULL, /* 908f */ NULL, /* 9090 */ NULL, /* 9091 */ NULL, /* 9092 */ NULL, /* 9093 */ NULL, /* 9094 */ NULL, /* 9095 */ NULL, /* 9096 */ NULL, /* 9097 */ NULL, /* 9098 */ NULL, /* 9099 */ NULL, /* 909a */ NULL, /* 909b */ NULL, /* 909c */ NULL, /* 909d */ NULL, /* 909e */ NULL, /* 909f */ NULL, /* 90a0 */ NULL, /* 90a1 */ NULL, /* 90a2 */ NULL, /* 90a3 */ NULL, /* 90a4 */ NULL, /* 90a5 */ NULL, /* 90a6 */ NULL, /* 90a7 */ NULL, /* 90a8 */ NULL, /* 90a9 */ NULL, /* 90aa */ NULL, /* 90ab */ NULL, /* 90ac */ NULL, /* 90ad */ NULL, /* 90ae */ NULL, /* 90af */ NULL, /* 90b0 */ NULL, /* 90b1 */ NULL, /* 90b2 */ NULL, /* 90b3 */ NULL, /* 90b4 */ NULL, /* 90b5 */ NULL, /* 90b6 */ NULL, /* 90b7 */ NULL, /* 90b8 */ NULL, /* 90b9 */ NULL, /* 90ba */ NULL, /* 90bb */ NULL, /* 90bc */ NULL, /* 90bd */ NULL, /* 90be */ NULL, /* 90bf */ NULL, /* 90c0 */ NULL, /* 90c1 */ NULL, /* 90c2 */ NULL, /* 90c3 */ NULL, /* 90c4 */ NULL, /* 90c5 */ NULL, /* 90c6 */ NULL, /* 90c7 */ NULL, /* 90c8 */ NULL, /* 90c9 */ NULL, /* 90ca */ NULL, /* 90cb */ NULL, /* 90cc */ NULL, /* 90cd */ NULL, /* 90ce */ NULL, /* 90cf */ NULL, /* 90d0 */ NULL, /* 90d1 */ NULL, /* 90d2 */ NULL, /* 90d3 */ NULL, /* 90d4 */ NULL, /* 90d5 */ NULL, /* 90d6 */ NULL, /* 90d7 */ NULL, /* 90d8 */ NULL, /* 90d9 */ NULL, /* 90da */ NULL, /* 90db */ NULL, /* 90dc */ NULL, /* 90dd */ NULL, /* 90de */ NULL, /* 90df */ NULL, /* 90e0 */ NULL, /* 90e1 */ NULL, /* 90e2 */ NULL, /* 90e3 */ NULL, /* 90e4 */ NULL, /* 90e5 */ NULL, /* 90e6 */ NULL, /* 90e7 */ NULL, /* 90e8 */ NULL, /* 90e9 */ NULL, /* 90ea */ NULL, /* 90eb */ NULL, /* 90ec */ NULL, /* 90ed */ NULL, /* 90ee */ NULL, /* 90ef */ NULL, /* 90f0 */ NULL, /* 90f1 */ NULL, /* 90f2 */ NULL, /* 90f3 */ NULL, /* 90f4 */ NULL, /* 90f5 */ NULL, /* 90f6 */ NULL, /* 90f7 */ NULL, /* 90f8 */ NULL, /* 90f9 */ NULL, /* 90fa */ NULL, /* 90fb */ NULL, /* 90fc */ NULL, /* 90fd */ NULL, /* 90fe */ NULL, /* 90ff */ NULL, /* 9100 */ NULL, /* 9101 */ NULL, /* 9102 */ NULL, /* 9103 */ NULL, /* 9104 */ NULL, /* 9105 */ NULL, /* 9106 */ NULL, /* 9107 */ NULL, /* 9108 */ NULL, /* 9109 */ NULL, /* 910a */ NULL, /* 910b */ NULL, /* 910c */ NULL, /* 910d */ NULL, /* 910e */ NULL, /* 910f */ NULL, /* 9110 */ NULL, /* 9111 */ NULL, /* 9112 */ NULL, /* 9113 */ NULL, /* 9114 */ NULL, /* 9115 */ NULL, /* 9116 */ NULL, /* 9117 */ NULL, /* 9118 */ NULL, /* 9119 */ NULL, /* 911a */ NULL, /* 911b */ NULL, /* 911c */ NULL, /* 911d */ NULL, /* 911e */ NULL, /* 911f */ NULL, /* 9120 */ NULL, /* 9121 */ NULL, /* 9122 */ NULL, /* 9123 */ NULL, /* 9124 */ NULL, /* 9125 */ NULL, /* 9126 */ NULL, /* 9127 */ NULL, /* 9128 */ NULL, /* 9129 */ NULL, /* 912a */ NULL, /* 912b */ NULL, /* 912c */ NULL, /* 912d */ NULL, /* 912e */ NULL, /* 912f */ NULL, /* 9130 */ NULL, /* 9131 */ NULL, /* 9132 */ NULL, /* 9133 */ NULL, /* 9134 */ NULL, /* 9135 */ NULL, /* 9136 */ NULL, /* 9137 */ NULL, /* 9138 */ NULL, /* 9139 */ NULL, /* 913a */ NULL, /* 913b */ NULL, /* 913c */ NULL, /* 913d */ NULL, /* 913e */ NULL, /* 913f */ NULL, /* 9140 */ NULL, /* 9141 */ NULL, /* 9142 */ NULL, /* 9143 */ NULL, /* 9144 */ NULL, /* 9145 */ NULL, /* 9146 */ NULL, /* 9147 */ NULL, /* 9148 */ NULL, /* 9149 */ NULL, /* 914a */ NULL, /* 914b */ NULL, /* 914c */ NULL, /* 914d */ NULL, /* 914e */ NULL, /* 914f */ NULL, /* 9150 */ NULL, /* 9151 */ NULL, /* 9152 */ NULL, /* 9153 */ NULL, /* 9154 */ NULL, /* 9155 */ NULL, /* 9156 */ NULL, /* 9157 */ NULL, /* 9158 */ NULL, /* 9159 */ NULL, /* 915a */ NULL, /* 915b */ NULL, /* 915c */ NULL, /* 915d */ NULL, /* 915e */ NULL, /* 915f */ NULL, /* 9160 */ NULL, /* 9161 */ NULL, /* 9162 */ NULL, /* 9163 */ NULL, /* 9164 */ NULL, /* 9165 */ NULL, /* 9166 */ NULL, /* 9167 */ NULL, /* 9168 */ NULL, /* 9169 */ NULL, /* 916a */ NULL, /* 916b */ NULL, /* 916c */ NULL, /* 916d */ NULL, /* 916e */ NULL, /* 916f */ NULL, /* 9170 */ NULL, /* 9171 */ NULL, /* 9172 */ NULL, /* 9173 */ NULL, /* 9174 */ NULL, /* 9175 */ NULL, /* 9176 */ NULL, /* 9177 */ NULL, /* 9178 */ NULL, /* 9179 */ NULL, /* 917a */ NULL, /* 917b */ NULL, /* 917c */ NULL, /* 917d */ NULL, /* 917e */ NULL, /* 917f */ NULL, /* 9180 */ NULL, /* 9181 */ NULL, /* 9182 */ NULL, /* 9183 */ NULL, /* 9184 */ NULL, /* 9185 */ NULL, /* 9186 */ NULL, /* 9187 */ NULL, /* 9188 */ NULL, /* 9189 */ NULL, /* 918a */ NULL, /* 918b */ NULL, /* 918c */ NULL, /* 918d */ NULL, /* 918e */ NULL, /* 918f */ NULL, /* 9190 */ NULL, /* 9191 */ NULL, /* 9192 */ NULL, /* 9193 */ NULL, /* 9194 */ NULL, /* 9195 */ NULL, /* 9196 */ NULL, /* 9197 */ NULL, /* 9198 */ NULL, /* 9199 */ NULL, /* 919a */ NULL, /* 919b */ NULL, /* 919c */ NULL, /* 919d */ NULL, /* 919e */ NULL, /* 919f */ NULL, /* 91a0 */ NULL, /* 91a1 */ NULL, /* 91a2 */ NULL, /* 91a3 */ NULL, /* 91a4 */ NULL, /* 91a5 */ NULL, /* 91a6 */ NULL, /* 91a7 */ NULL, /* 91a8 */ NULL, /* 91a9 */ NULL, /* 91aa */ NULL, /* 91ab */ NULL, /* 91ac */ NULL, /* 91ad */ NULL, /* 91ae */ NULL, /* 91af */ NULL, /* 91b0 */ NULL, /* 91b1 */ NULL, /* 91b2 */ NULL, /* 91b3 */ NULL, /* 91b4 */ NULL, /* 91b5 */ NULL, /* 91b6 */ NULL, /* 91b7 */ NULL, /* 91b8 */ NULL, /* 91b9 */ NULL, /* 91ba */ NULL, /* 91bb */ NULL, /* 91bc */ NULL, /* 91bd */ NULL, /* 91be */ NULL, /* 91bf */ NULL, /* 91c0 */ NULL, /* 91c1 */ NULL, /* 91c2 */ NULL, /* 91c3 */ NULL, /* 91c4 */ NULL, /* 91c5 */ NULL, /* 91c6 */ NULL, /* 91c7 */ NULL, /* 91c8 */ NULL, /* 91c9 */ NULL, /* 91ca */ NULL, /* 91cb */ NULL, /* 91cc */ NULL, /* 91cd */ NULL, /* 91ce */ NULL, /* 91cf */ NULL, /* 91d0 */ NULL, /* 91d1 */ NULL, /* 91d2 */ NULL, /* 91d3 */ NULL, /* 91d4 */ NULL, /* 91d5 */ NULL, /* 91d6 */ NULL, /* 91d7 */ NULL, /* 91d8 */ NULL, /* 91d9 */ NULL, /* 91da */ NULL, /* 91db */ NULL, /* 91dc */ NULL, /* 91dd */ NULL, /* 91de */ NULL, /* 91df */ NULL, /* 91e0 */ NULL, /* 91e1 */ NULL, /* 91e2 */ NULL, /* 91e3 */ NULL, /* 91e4 */ NULL, /* 91e5 */ NULL, /* 91e6 */ NULL, /* 91e7 */ NULL, /* 91e8 */ NULL, /* 91e9 */ NULL, /* 91ea */ NULL, /* 91eb */ NULL, /* 91ec */ NULL, /* 91ed */ NULL, /* 91ee */ NULL, /* 91ef */ NULL, /* 91f0 */ NULL, /* 91f1 */ NULL, /* 91f2 */ NULL, /* 91f3 */ NULL, /* 91f4 */ NULL, /* 91f5 */ NULL, /* 91f6 */ NULL, /* 91f7 */ NULL, /* 91f8 */ NULL, /* 91f9 */ NULL, /* 91fa */ NULL, /* 91fb */ NULL, /* 91fc */ NULL, /* 91fd */ NULL, /* 91fe */ NULL, /* 91ff */ NULL, /* 9200 */ NULL, /* 9201 */ NULL, /* 9202 */ NULL, /* 9203 */ NULL, /* 9204 */ NULL, /* 9205 */ NULL, /* 9206 */ NULL, /* 9207 */ NULL, /* 9208 */ NULL, /* 9209 */ NULL, /* 920a */ NULL, /* 920b */ NULL, /* 920c */ NULL, /* 920d */ NULL, /* 920e */ NULL, /* 920f */ NULL, /* 9210 */ NULL, /* 9211 */ NULL, /* 9212 */ NULL, /* 9213 */ NULL, /* 9214 */ NULL, /* 9215 */ NULL, /* 9216 */ NULL, /* 9217 */ NULL, /* 9218 */ NULL, /* 9219 */ NULL, /* 921a */ NULL, /* 921b */ NULL, /* 921c */ NULL, /* 921d */ NULL, /* 921e */ NULL, /* 921f */ NULL, /* 9220 */ NULL, /* 9221 */ NULL, /* 9222 */ NULL, /* 9223 */ NULL, /* 9224 */ NULL, /* 9225 */ NULL, /* 9226 */ NULL, /* 9227 */ NULL, /* 9228 */ NULL, /* 9229 */ NULL, /* 922a */ NULL, /* 922b */ NULL, /* 922c */ NULL, /* 922d */ NULL, /* 922e */ NULL, /* 922f */ NULL, /* 9230 */ NULL, /* 9231 */ NULL, /* 9232 */ NULL, /* 9233 */ NULL, /* 9234 */ NULL, /* 9235 */ NULL, /* 9236 */ NULL, /* 9237 */ NULL, /* 9238 */ NULL, /* 9239 */ NULL, /* 923a */ NULL, /* 923b */ NULL, /* 923c */ NULL, /* 923d */ NULL, /* 923e */ NULL, /* 923f */ NULL, /* 9240 */ NULL, /* 9241 */ NULL, /* 9242 */ NULL, /* 9243 */ NULL, /* 9244 */ NULL, /* 9245 */ NULL, /* 9246 */ NULL, /* 9247 */ NULL, /* 9248 */ NULL, /* 9249 */ NULL, /* 924a */ NULL, /* 924b */ NULL, /* 924c */ NULL, /* 924d */ NULL, /* 924e */ NULL, /* 924f */ NULL, /* 9250 */ NULL, /* 9251 */ NULL, /* 9252 */ NULL, /* 9253 */ NULL, /* 9254 */ NULL, /* 9255 */ NULL, /* 9256 */ NULL, /* 9257 */ NULL, /* 9258 */ NULL, /* 9259 */ NULL, /* 925a */ NULL, /* 925b */ NULL, /* 925c */ NULL, /* 925d */ NULL, /* 925e */ NULL, /* 925f */ NULL, /* 9260 */ NULL, /* 9261 */ NULL, /* 9262 */ NULL, /* 9263 */ NULL, /* 9264 */ NULL, /* 9265 */ NULL, /* 9266 */ NULL, /* 9267 */ NULL, /* 9268 */ NULL, /* 9269 */ NULL, /* 926a */ NULL, /* 926b */ NULL, /* 926c */ NULL, /* 926d */ NULL, /* 926e */ NULL, /* 926f */ NULL, /* 9270 */ NULL, /* 9271 */ NULL, /* 9272 */ NULL, /* 9273 */ NULL, /* 9274 */ NULL, /* 9275 */ NULL, /* 9276 */ NULL, /* 9277 */ NULL, /* 9278 */ NULL, /* 9279 */ NULL, /* 927a */ NULL, /* 927b */ NULL, /* 927c */ NULL, /* 927d */ NULL, /* 927e */ NULL, /* 927f */ NULL, /* 9280 */ NULL, /* 9281 */ NULL, /* 9282 */ NULL, /* 9283 */ NULL, /* 9284 */ NULL, /* 9285 */ NULL, /* 9286 */ NULL, /* 9287 */ NULL, /* 9288 */ NULL, /* 9289 */ NULL, /* 928a */ NULL, /* 928b */ NULL, /* 928c */ NULL, /* 928d */ NULL, /* 928e */ NULL, /* 928f */ NULL, /* 9290 */ NULL, /* 9291 */ NULL, /* 9292 */ NULL, /* 9293 */ NULL, /* 9294 */ NULL, /* 9295 */ NULL, /* 9296 */ NULL, /* 9297 */ NULL, /* 9298 */ NULL, /* 9299 */ NULL, /* 929a */ NULL, /* 929b */ NULL, /* 929c */ NULL, /* 929d */ NULL, /* 929e */ NULL, /* 929f */ NULL, /* 92a0 */ NULL, /* 92a1 */ NULL, /* 92a2 */ NULL, /* 92a3 */ NULL, /* 92a4 */ NULL, /* 92a5 */ NULL, /* 92a6 */ NULL, /* 92a7 */ NULL, /* 92a8 */ NULL, /* 92a9 */ NULL, /* 92aa */ NULL, /* 92ab */ NULL, /* 92ac */ NULL, /* 92ad */ NULL, /* 92ae */ NULL, /* 92af */ NULL, /* 92b0 */ NULL, /* 92b1 */ NULL, /* 92b2 */ NULL, /* 92b3 */ NULL, /* 92b4 */ NULL, /* 92b5 */ NULL, /* 92b6 */ NULL, /* 92b7 */ NULL, /* 92b8 */ NULL, /* 92b9 */ NULL, /* 92ba */ NULL, /* 92bb */ NULL, /* 92bc */ NULL, /* 92bd */ NULL, /* 92be */ NULL, /* 92bf */ NULL, /* 92c0 */ NULL, /* 92c1 */ NULL, /* 92c2 */ NULL, /* 92c3 */ NULL, /* 92c4 */ NULL, /* 92c5 */ NULL, /* 92c6 */ NULL, /* 92c7 */ NULL, /* 92c8 */ NULL, /* 92c9 */ NULL, /* 92ca */ NULL, /* 92cb */ NULL, /* 92cc */ NULL, /* 92cd */ NULL, /* 92ce */ NULL, /* 92cf */ NULL, /* 92d0 */ NULL, /* 92d1 */ NULL, /* 92d2 */ NULL, /* 92d3 */ NULL, /* 92d4 */ NULL, /* 92d5 */ NULL, /* 92d6 */ NULL, /* 92d7 */ NULL, /* 92d8 */ NULL, /* 92d9 */ NULL, /* 92da */ NULL, /* 92db */ NULL, /* 92dc */ NULL, /* 92dd */ NULL, /* 92de */ NULL, /* 92df */ NULL, /* 92e0 */ NULL, /* 92e1 */ NULL, /* 92e2 */ NULL, /* 92e3 */ NULL, /* 92e4 */ NULL, /* 92e5 */ NULL, /* 92e6 */ NULL, /* 92e7 */ NULL, /* 92e8 */ NULL, /* 92e9 */ NULL, /* 92ea */ NULL, /* 92eb */ NULL, /* 92ec */ NULL, /* 92ed */ NULL, /* 92ee */ NULL, /* 92ef */ NULL, /* 92f0 */ NULL, /* 92f1 */ NULL, /* 92f2 */ NULL, /* 92f3 */ NULL, /* 92f4 */ NULL, /* 92f5 */ NULL, /* 92f6 */ NULL, /* 92f7 */ NULL, /* 92f8 */ NULL, /* 92f9 */ NULL, /* 92fa */ NULL, /* 92fb */ NULL, /* 92fc */ NULL, /* 92fd */ NULL, /* 92fe */ NULL, /* 92ff */ NULL, /* 9300 */ NULL, /* 9301 */ NULL, /* 9302 */ NULL, /* 9303 */ NULL, /* 9304 */ NULL, /* 9305 */ NULL, /* 9306 */ NULL, /* 9307 */ NULL, /* 9308 */ NULL, /* 9309 */ NULL, /* 930a */ NULL, /* 930b */ NULL, /* 930c */ NULL, /* 930d */ NULL, /* 930e */ NULL, /* 930f */ NULL, /* 9310 */ NULL, /* 9311 */ NULL, /* 9312 */ NULL, /* 9313 */ NULL, /* 9314 */ NULL, /* 9315 */ NULL, /* 9316 */ NULL, /* 9317 */ NULL, /* 9318 */ NULL, /* 9319 */ NULL, /* 931a */ NULL, /* 931b */ NULL, /* 931c */ NULL, /* 931d */ NULL, /* 931e */ NULL, /* 931f */ NULL, /* 9320 */ NULL, /* 9321 */ NULL, /* 9322 */ NULL, /* 9323 */ NULL, /* 9324 */ NULL, /* 9325 */ NULL, /* 9326 */ NULL, /* 9327 */ NULL, /* 9328 */ NULL, /* 9329 */ NULL, /* 932a */ NULL, /* 932b */ NULL, /* 932c */ NULL, /* 932d */ NULL, /* 932e */ NULL, /* 932f */ NULL, /* 9330 */ NULL, /* 9331 */ NULL, /* 9332 */ NULL, /* 9333 */ NULL, /* 9334 */ NULL, /* 9335 */ NULL, /* 9336 */ NULL, /* 9337 */ NULL, /* 9338 */ NULL, /* 9339 */ NULL, /* 933a */ NULL, /* 933b */ NULL, /* 933c */ NULL, /* 933d */ NULL, /* 933e */ NULL, /* 933f */ NULL, /* 9340 */ NULL, /* 9341 */ NULL, /* 9342 */ NULL, /* 9343 */ NULL, /* 9344 */ NULL, /* 9345 */ NULL, /* 9346 */ NULL, /* 9347 */ NULL, /* 9348 */ NULL, /* 9349 */ NULL, /* 934a */ NULL, /* 934b */ NULL, /* 934c */ NULL, /* 934d */ NULL, /* 934e */ NULL, /* 934f */ NULL, /* 9350 */ NULL, /* 9351 */ NULL, /* 9352 */ NULL, /* 9353 */ NULL, /* 9354 */ NULL, /* 9355 */ NULL, /* 9356 */ NULL, /* 9357 */ NULL, /* 9358 */ NULL, /* 9359 */ NULL, /* 935a */ NULL, /* 935b */ NULL, /* 935c */ NULL, /* 935d */ NULL, /* 935e */ NULL, /* 935f */ NULL, /* 9360 */ NULL, /* 9361 */ NULL, /* 9362 */ NULL, /* 9363 */ NULL, /* 9364 */ NULL, /* 9365 */ NULL, /* 9366 */ NULL, /* 9367 */ NULL, /* 9368 */ NULL, /* 9369 */ NULL, /* 936a */ NULL, /* 936b */ NULL, /* 936c */ NULL, /* 936d */ NULL, /* 936e */ NULL, /* 936f */ NULL, /* 9370 */ NULL, /* 9371 */ NULL, /* 9372 */ NULL, /* 9373 */ NULL, /* 9374 */ NULL, /* 9375 */ NULL, /* 9376 */ NULL, /* 9377 */ NULL, /* 9378 */ NULL, /* 9379 */ NULL, /* 937a */ NULL, /* 937b */ NULL, /* 937c */ NULL, /* 937d */ NULL, /* 937e */ NULL, /* 937f */ NULL, /* 9380 */ NULL, /* 9381 */ NULL, /* 9382 */ NULL, /* 9383 */ NULL, /* 9384 */ NULL, /* 9385 */ NULL, /* 9386 */ NULL, /* 9387 */ NULL, /* 9388 */ NULL, /* 9389 */ NULL, /* 938a */ NULL, /* 938b */ NULL, /* 938c */ NULL, /* 938d */ NULL, /* 938e */ NULL, /* 938f */ NULL, /* 9390 */ NULL, /* 9391 */ NULL, /* 9392 */ NULL, /* 9393 */ NULL, /* 9394 */ NULL, /* 9395 */ NULL, /* 9396 */ NULL, /* 9397 */ NULL, /* 9398 */ NULL, /* 9399 */ NULL, /* 939a */ NULL, /* 939b */ NULL, /* 939c */ NULL, /* 939d */ NULL, /* 939e */ NULL, /* 939f */ NULL, /* 93a0 */ NULL, /* 93a1 */ NULL, /* 93a2 */ NULL, /* 93a3 */ NULL, /* 93a4 */ NULL, /* 93a5 */ NULL, /* 93a6 */ NULL, /* 93a7 */ NULL, /* 93a8 */ NULL, /* 93a9 */ NULL, /* 93aa */ NULL, /* 93ab */ NULL, /* 93ac */ NULL, /* 93ad */ NULL, /* 93ae */ NULL, /* 93af */ NULL, /* 93b0 */ NULL, /* 93b1 */ NULL, /* 93b2 */ NULL, /* 93b3 */ NULL, /* 93b4 */ NULL, /* 93b5 */ NULL, /* 93b6 */ NULL, /* 93b7 */ NULL, /* 93b8 */ NULL, /* 93b9 */ NULL, /* 93ba */ NULL, /* 93bb */ NULL, /* 93bc */ NULL, /* 93bd */ NULL, /* 93be */ NULL, /* 93bf */ NULL, /* 93c0 */ NULL, /* 93c1 */ NULL, /* 93c2 */ NULL, /* 93c3 */ NULL, /* 93c4 */ NULL, /* 93c5 */ NULL, /* 93c6 */ NULL, /* 93c7 */ NULL, /* 93c8 */ NULL, /* 93c9 */ NULL, /* 93ca */ NULL, /* 93cb */ NULL, /* 93cc */ NULL, /* 93cd */ NULL, /* 93ce */ NULL, /* 93cf */ NULL, /* 93d0 */ NULL, /* 93d1 */ NULL, /* 93d2 */ NULL, /* 93d3 */ NULL, /* 93d4 */ NULL, /* 93d5 */ NULL, /* 93d6 */ NULL, /* 93d7 */ NULL, /* 93d8 */ NULL, /* 93d9 */ NULL, /* 93da */ NULL, /* 93db */ NULL, /* 93dc */ NULL, /* 93dd */ NULL, /* 93de */ NULL, /* 93df */ NULL, /* 93e0 */ NULL, /* 93e1 */ NULL, /* 93e2 */ NULL, /* 93e3 */ NULL, /* 93e4 */ NULL, /* 93e5 */ NULL, /* 93e6 */ NULL, /* 93e7 */ NULL, /* 93e8 */ NULL, /* 93e9 */ NULL, /* 93ea */ NULL, /* 93eb */ NULL, /* 93ec */ NULL, /* 93ed */ NULL, /* 93ee */ NULL, /* 93ef */ NULL, /* 93f0 */ NULL, /* 93f1 */ NULL, /* 93f2 */ NULL, /* 93f3 */ NULL, /* 93f4 */ NULL, /* 93f5 */ NULL, /* 93f6 */ NULL, /* 93f7 */ NULL, /* 93f8 */ NULL, /* 93f9 */ NULL, /* 93fa */ NULL, /* 93fb */ NULL, /* 93fc */ NULL, /* 93fd */ NULL, /* 93fe */ NULL, /* 93ff */ NULL, /* 9400 */ NULL, /* 9401 */ NULL, /* 9402 */ NULL, /* 9403 */ NULL, /* 9404 */ NULL, /* 9405 */ NULL, /* 9406 */ NULL, /* 9407 */ NULL, /* 9408 */ NULL, /* 9409 */ NULL, /* 940a */ NULL, /* 940b */ NULL, /* 940c */ NULL, /* 940d */ NULL, /* 940e */ NULL, /* 940f */ NULL, /* 9410 */ NULL, /* 9411 */ NULL, /* 9412 */ NULL, /* 9413 */ NULL, /* 9414 */ NULL, /* 9415 */ NULL, /* 9416 */ NULL, /* 9417 */ NULL, /* 9418 */ NULL, /* 9419 */ NULL, /* 941a */ NULL, /* 941b */ NULL, /* 941c */ NULL, /* 941d */ NULL, /* 941e */ NULL, /* 941f */ NULL, /* 9420 */ NULL, /* 9421 */ NULL, /* 9422 */ NULL, /* 9423 */ NULL, /* 9424 */ NULL, /* 9425 */ NULL, /* 9426 */ NULL, /* 9427 */ NULL, /* 9428 */ NULL, /* 9429 */ NULL, /* 942a */ NULL, /* 942b */ NULL, /* 942c */ NULL, /* 942d */ NULL, /* 942e */ NULL, /* 942f */ NULL, /* 9430 */ NULL, /* 9431 */ NULL, /* 9432 */ NULL, /* 9433 */ NULL, /* 9434 */ NULL, /* 9435 */ NULL, /* 9436 */ NULL, /* 9437 */ NULL, /* 9438 */ NULL, /* 9439 */ NULL, /* 943a */ NULL, /* 943b */ NULL, /* 943c */ NULL, /* 943d */ NULL, /* 943e */ NULL, /* 943f */ NULL, /* 9440 */ NULL, /* 9441 */ NULL, /* 9442 */ NULL, /* 9443 */ NULL, /* 9444 */ NULL, /* 9445 */ NULL, /* 9446 */ NULL, /* 9447 */ NULL, /* 9448 */ NULL, /* 9449 */ NULL, /* 944a */ NULL, /* 944b */ NULL, /* 944c */ NULL, /* 944d */ NULL, /* 944e */ NULL, /* 944f */ NULL, /* 9450 */ NULL, /* 9451 */ NULL, /* 9452 */ NULL, /* 9453 */ NULL, /* 9454 */ NULL, /* 9455 */ NULL, /* 9456 */ NULL, /* 9457 */ NULL, /* 9458 */ NULL, /* 9459 */ NULL, /* 945a */ NULL, /* 945b */ NULL, /* 945c */ NULL, /* 945d */ NULL, /* 945e */ NULL, /* 945f */ NULL, /* 9460 */ NULL, /* 9461 */ NULL, /* 9462 */ NULL, /* 9463 */ NULL, /* 9464 */ NULL, /* 9465 */ NULL, /* 9466 */ NULL, /* 9467 */ NULL, /* 9468 */ NULL, /* 9469 */ NULL, /* 946a */ NULL, /* 946b */ NULL, /* 946c */ NULL, /* 946d */ NULL, /* 946e */ NULL, /* 946f */ NULL, /* 9470 */ NULL, /* 9471 */ NULL, /* 9472 */ NULL, /* 9473 */ NULL, /* 9474 */ NULL, /* 9475 */ NULL, /* 9476 */ NULL, /* 9477 */ NULL, /* 9478 */ NULL, /* 9479 */ NULL, /* 947a */ NULL, /* 947b */ NULL, /* 947c */ NULL, /* 947d */ NULL, /* 947e */ NULL, /* 947f */ NULL, /* 9480 */ NULL, /* 9481 */ NULL, /* 9482 */ NULL, /* 9483 */ NULL, /* 9484 */ NULL, /* 9485 */ NULL, /* 9486 */ NULL, /* 9487 */ NULL, /* 9488 */ NULL, /* 9489 */ NULL, /* 948a */ NULL, /* 948b */ NULL, /* 948c */ NULL, /* 948d */ NULL, /* 948e */ NULL, /* 948f */ NULL, /* 9490 */ NULL, /* 9491 */ NULL, /* 9492 */ NULL, /* 9493 */ NULL, /* 9494 */ NULL, /* 9495 */ NULL, /* 9496 */ NULL, /* 9497 */ NULL, /* 9498 */ NULL, /* 9499 */ NULL, /* 949a */ NULL, /* 949b */ NULL, /* 949c */ NULL, /* 949d */ NULL, /* 949e */ NULL, /* 949f */ NULL, /* 94a0 */ NULL, /* 94a1 */ NULL, /* 94a2 */ NULL, /* 94a3 */ NULL, /* 94a4 */ NULL, /* 94a5 */ NULL, /* 94a6 */ NULL, /* 94a7 */ NULL, /* 94a8 */ NULL, /* 94a9 */ NULL, /* 94aa */ NULL, /* 94ab */ NULL, /* 94ac */ NULL, /* 94ad */ NULL, /* 94ae */ NULL, /* 94af */ NULL, /* 94b0 */ NULL, /* 94b1 */ NULL, /* 94b2 */ NULL, /* 94b3 */ NULL, /* 94b4 */ NULL, /* 94b5 */ NULL, /* 94b6 */ NULL, /* 94b7 */ NULL, /* 94b8 */ NULL, /* 94b9 */ NULL, /* 94ba */ NULL, /* 94bb */ NULL, /* 94bc */ NULL, /* 94bd */ NULL, /* 94be */ NULL, /* 94bf */ NULL, /* 94c0 */ NULL, /* 94c1 */ NULL, /* 94c2 */ NULL, /* 94c3 */ NULL, /* 94c4 */ NULL, /* 94c5 */ NULL, /* 94c6 */ NULL, /* 94c7 */ NULL, /* 94c8 */ NULL, /* 94c9 */ NULL, /* 94ca */ NULL, /* 94cb */ NULL, /* 94cc */ NULL, /* 94cd */ NULL, /* 94ce */ NULL, /* 94cf */ NULL, /* 94d0 */ NULL, /* 94d1 */ NULL, /* 94d2 */ NULL, /* 94d3 */ NULL, /* 94d4 */ NULL, /* 94d5 */ NULL, /* 94d6 */ NULL, /* 94d7 */ NULL, /* 94d8 */ NULL, /* 94d9 */ NULL, /* 94da */ NULL, /* 94db */ NULL, /* 94dc */ NULL, /* 94dd */ NULL, /* 94de */ NULL, /* 94df */ NULL, /* 94e0 */ NULL, /* 94e1 */ NULL, /* 94e2 */ NULL, /* 94e3 */ NULL, /* 94e4 */ NULL, /* 94e5 */ NULL, /* 94e6 */ NULL, /* 94e7 */ NULL, /* 94e8 */ NULL, /* 94e9 */ NULL, /* 94ea */ NULL, /* 94eb */ NULL, /* 94ec */ NULL, /* 94ed */ NULL, /* 94ee */ NULL, /* 94ef */ NULL, /* 94f0 */ NULL, /* 94f1 */ NULL, /* 94f2 */ NULL, /* 94f3 */ NULL, /* 94f4 */ NULL, /* 94f5 */ NULL, /* 94f6 */ NULL, /* 94f7 */ NULL, /* 94f8 */ NULL, /* 94f9 */ NULL, /* 94fa */ NULL, /* 94fb */ NULL, /* 94fc */ NULL, /* 94fd */ NULL, /* 94fe */ NULL, /* 94ff */ NULL, /* 9500 */ NULL, /* 9501 */ NULL, /* 9502 */ NULL, /* 9503 */ NULL, /* 9504 */ NULL, /* 9505 */ NULL, /* 9506 */ NULL, /* 9507 */ NULL, /* 9508 */ NULL, /* 9509 */ NULL, /* 950a */ NULL, /* 950b */ NULL, /* 950c */ NULL, /* 950d */ NULL, /* 950e */ NULL, /* 950f */ NULL, /* 9510 */ NULL, /* 9511 */ NULL, /* 9512 */ NULL, /* 9513 */ NULL, /* 9514 */ NULL, /* 9515 */ NULL, /* 9516 */ NULL, /* 9517 */ NULL, /* 9518 */ NULL, /* 9519 */ NULL, /* 951a */ NULL, /* 951b */ NULL, /* 951c */ NULL, /* 951d */ NULL, /* 951e */ NULL, /* 951f */ NULL, /* 9520 */ NULL, /* 9521 */ NULL, /* 9522 */ NULL, /* 9523 */ NULL, /* 9524 */ NULL, /* 9525 */ NULL, /* 9526 */ NULL, /* 9527 */ NULL, /* 9528 */ NULL, /* 9529 */ NULL, /* 952a */ NULL, /* 952b */ NULL, /* 952c */ NULL, /* 952d */ NULL, /* 952e */ NULL, /* 952f */ NULL, /* 9530 */ NULL, /* 9531 */ NULL, /* 9532 */ NULL, /* 9533 */ NULL, /* 9534 */ NULL, /* 9535 */ NULL, /* 9536 */ NULL, /* 9537 */ NULL, /* 9538 */ NULL, /* 9539 */ NULL, /* 953a */ NULL, /* 953b */ NULL, /* 953c */ NULL, /* 953d */ NULL, /* 953e */ NULL, /* 953f */ NULL, /* 9540 */ NULL, /* 9541 */ NULL, /* 9542 */ NULL, /* 9543 */ NULL, /* 9544 */ NULL, /* 9545 */ NULL, /* 9546 */ NULL, /* 9547 */ NULL, /* 9548 */ NULL, /* 9549 */ NULL, /* 954a */ NULL, /* 954b */ NULL, /* 954c */ NULL, /* 954d */ NULL, /* 954e */ NULL, /* 954f */ NULL, /* 9550 */ NULL, /* 9551 */ NULL, /* 9552 */ NULL, /* 9553 */ NULL, /* 9554 */ NULL, /* 9555 */ NULL, /* 9556 */ NULL, /* 9557 */ NULL, /* 9558 */ NULL, /* 9559 */ NULL, /* 955a */ NULL, /* 955b */ NULL, /* 955c */ NULL, /* 955d */ NULL, /* 955e */ NULL, /* 955f */ NULL, /* 9560 */ NULL, /* 9561 */ NULL, /* 9562 */ NULL, /* 9563 */ NULL, /* 9564 */ NULL, /* 9565 */ NULL, /* 9566 */ NULL, /* 9567 */ NULL, /* 9568 */ NULL, /* 9569 */ NULL, /* 956a */ NULL, /* 956b */ NULL, /* 956c */ NULL, /* 956d */ NULL, /* 956e */ NULL, /* 956f */ NULL, /* 9570 */ NULL, /* 9571 */ NULL, /* 9572 */ NULL, /* 9573 */ NULL, /* 9574 */ NULL, /* 9575 */ NULL, /* 9576 */ NULL, /* 9577 */ NULL, /* 9578 */ NULL, /* 9579 */ NULL, /* 957a */ NULL, /* 957b */ NULL, /* 957c */ NULL, /* 957d */ NULL, /* 957e */ NULL, /* 957f */ NULL, /* 9580 */ NULL, /* 9581 */ NULL, /* 9582 */ NULL, /* 9583 */ NULL, /* 9584 */ NULL, /* 9585 */ NULL, /* 9586 */ NULL, /* 9587 */ NULL, /* 9588 */ NULL, /* 9589 */ NULL, /* 958a */ NULL, /* 958b */ NULL, /* 958c */ NULL, /* 958d */ NULL, /* 958e */ NULL, /* 958f */ NULL, /* 9590 */ NULL, /* 9591 */ NULL, /* 9592 */ NULL, /* 9593 */ NULL, /* 9594 */ NULL, /* 9595 */ NULL, /* 9596 */ NULL, /* 9597 */ NULL, /* 9598 */ NULL, /* 9599 */ NULL, /* 959a */ NULL, /* 959b */ NULL, /* 959c */ NULL, /* 959d */ NULL, /* 959e */ NULL, /* 959f */ NULL, /* 95a0 */ NULL, /* 95a1 */ NULL, /* 95a2 */ NULL, /* 95a3 */ NULL, /* 95a4 */ NULL, /* 95a5 */ NULL, /* 95a6 */ NULL, /* 95a7 */ NULL, /* 95a8 */ NULL, /* 95a9 */ NULL, /* 95aa */ NULL, /* 95ab */ NULL, /* 95ac */ NULL, /* 95ad */ NULL, /* 95ae */ NULL, /* 95af */ NULL, /* 95b0 */ NULL, /* 95b1 */ NULL, /* 95b2 */ NULL, /* 95b3 */ NULL, /* 95b4 */ NULL, /* 95b5 */ NULL, /* 95b6 */ NULL, /* 95b7 */ NULL, /* 95b8 */ NULL, /* 95b9 */ NULL, /* 95ba */ NULL, /* 95bb */ NULL, /* 95bc */ NULL, /* 95bd */ NULL, /* 95be */ NULL, /* 95bf */ NULL, /* 95c0 */ NULL, /* 95c1 */ NULL, /* 95c2 */ NULL, /* 95c3 */ NULL, /* 95c4 */ NULL, /* 95c5 */ NULL, /* 95c6 */ NULL, /* 95c7 */ NULL, /* 95c8 */ NULL, /* 95c9 */ NULL, /* 95ca */ NULL, /* 95cb */ NULL, /* 95cc */ NULL, /* 95cd */ NULL, /* 95ce */ NULL, /* 95cf */ NULL, /* 95d0 */ NULL, /* 95d1 */ NULL, /* 95d2 */ NULL, /* 95d3 */ NULL, /* 95d4 */ NULL, /* 95d5 */ NULL, /* 95d6 */ NULL, /* 95d7 */ NULL, /* 95d8 */ NULL, /* 95d9 */ NULL, /* 95da */ NULL, /* 95db */ NULL, /* 95dc */ NULL, /* 95dd */ NULL, /* 95de */ NULL, /* 95df */ NULL, /* 95e0 */ NULL, /* 95e1 */ NULL, /* 95e2 */ NULL, /* 95e3 */ NULL, /* 95e4 */ NULL, /* 95e5 */ NULL, /* 95e6 */ NULL, /* 95e7 */ NULL, /* 95e8 */ NULL, /* 95e9 */ NULL, /* 95ea */ NULL, /* 95eb */ NULL, /* 95ec */ NULL, /* 95ed */ NULL, /* 95ee */ NULL, /* 95ef */ NULL, /* 95f0 */ NULL, /* 95f1 */ NULL, /* 95f2 */ NULL, /* 95f3 */ NULL, /* 95f4 */ NULL, /* 95f5 */ NULL, /* 95f6 */ NULL, /* 95f7 */ NULL, /* 95f8 */ NULL, /* 95f9 */ NULL, /* 95fa */ NULL, /* 95fb */ NULL, /* 95fc */ NULL, /* 95fd */ NULL, /* 95fe */ NULL, /* 95ff */ NULL, /* 9600 */ NULL, /* 9601 */ NULL, /* 9602 */ NULL, /* 9603 */ NULL, /* 9604 */ NULL, /* 9605 */ NULL, /* 9606 */ NULL, /* 9607 */ NULL, /* 9608 */ NULL, /* 9609 */ NULL, /* 960a */ NULL, /* 960b */ NULL, /* 960c */ NULL, /* 960d */ NULL, /* 960e */ NULL, /* 960f */ NULL, /* 9610 */ NULL, /* 9611 */ NULL, /* 9612 */ NULL, /* 9613 */ NULL, /* 9614 */ NULL, /* 9615 */ NULL, /* 9616 */ NULL, /* 9617 */ NULL, /* 9618 */ NULL, /* 9619 */ NULL, /* 961a */ NULL, /* 961b */ NULL, /* 961c */ NULL, /* 961d */ NULL, /* 961e */ NULL, /* 961f */ NULL, /* 9620 */ NULL, /* 9621 */ NULL, /* 9622 */ NULL, /* 9623 */ NULL, /* 9624 */ NULL, /* 9625 */ NULL, /* 9626 */ NULL, /* 9627 */ NULL, /* 9628 */ NULL, /* 9629 */ NULL, /* 962a */ NULL, /* 962b */ NULL, /* 962c */ NULL, /* 962d */ NULL, /* 962e */ NULL, /* 962f */ NULL, /* 9630 */ NULL, /* 9631 */ NULL, /* 9632 */ NULL, /* 9633 */ NULL, /* 9634 */ NULL, /* 9635 */ NULL, /* 9636 */ NULL, /* 9637 */ NULL, /* 9638 */ NULL, /* 9639 */ NULL, /* 963a */ NULL, /* 963b */ NULL, /* 963c */ NULL, /* 963d */ NULL, /* 963e */ NULL, /* 963f */ NULL, /* 9640 */ NULL, /* 9641 */ NULL, /* 9642 */ NULL, /* 9643 */ NULL, /* 9644 */ NULL, /* 9645 */ NULL, /* 9646 */ NULL, /* 9647 */ NULL, /* 9648 */ NULL, /* 9649 */ NULL, /* 964a */ NULL, /* 964b */ NULL, /* 964c */ NULL, /* 964d */ NULL, /* 964e */ NULL, /* 964f */ NULL, /* 9650 */ NULL, /* 9651 */ NULL, /* 9652 */ NULL, /* 9653 */ NULL, /* 9654 */ NULL, /* 9655 */ NULL, /* 9656 */ NULL, /* 9657 */ NULL, /* 9658 */ NULL, /* 9659 */ NULL, /* 965a */ NULL, /* 965b */ NULL, /* 965c */ NULL, /* 965d */ NULL, /* 965e */ NULL, /* 965f */ NULL, /* 9660 */ NULL, /* 9661 */ NULL, /* 9662 */ NULL, /* 9663 */ NULL, /* 9664 */ NULL, /* 9665 */ NULL, /* 9666 */ NULL, /* 9667 */ NULL, /* 9668 */ NULL, /* 9669 */ NULL, /* 966a */ NULL, /* 966b */ NULL, /* 966c */ NULL, /* 966d */ NULL, /* 966e */ NULL, /* 966f */ NULL, /* 9670 */ NULL, /* 9671 */ NULL, /* 9672 */ NULL, /* 9673 */ NULL, /* 9674 */ NULL, /* 9675 */ NULL, /* 9676 */ NULL, /* 9677 */ NULL, /* 9678 */ NULL, /* 9679 */ NULL, /* 967a */ NULL, /* 967b */ NULL, /* 967c */ NULL, /* 967d */ NULL, /* 967e */ NULL, /* 967f */ NULL, /* 9680 */ NULL, /* 9681 */ NULL, /* 9682 */ NULL, /* 9683 */ NULL, /* 9684 */ NULL, /* 9685 */ NULL, /* 9686 */ NULL, /* 9687 */ NULL, /* 9688 */ NULL, /* 9689 */ NULL, /* 968a */ NULL, /* 968b */ NULL, /* 968c */ NULL, /* 968d */ NULL, /* 968e */ NULL, /* 968f */ NULL, /* 9690 */ NULL, /* 9691 */ NULL, /* 9692 */ NULL, /* 9693 */ NULL, /* 9694 */ NULL, /* 9695 */ NULL, /* 9696 */ NULL, /* 9697 */ NULL, /* 9698 */ NULL, /* 9699 */ NULL, /* 969a */ NULL, /* 969b */ NULL, /* 969c */ NULL, /* 969d */ NULL, /* 969e */ NULL, /* 969f */ NULL, /* 96a0 */ NULL, /* 96a1 */ NULL, /* 96a2 */ NULL, /* 96a3 */ NULL, /* 96a4 */ NULL, /* 96a5 */ NULL, /* 96a6 */ NULL, /* 96a7 */ NULL, /* 96a8 */ NULL, /* 96a9 */ NULL, /* 96aa */ NULL, /* 96ab */ NULL, /* 96ac */ NULL, /* 96ad */ NULL, /* 96ae */ NULL, /* 96af */ NULL, /* 96b0 */ NULL, /* 96b1 */ NULL, /* 96b2 */ NULL, /* 96b3 */ NULL, /* 96b4 */ NULL, /* 96b5 */ NULL, /* 96b6 */ NULL, /* 96b7 */ NULL, /* 96b8 */ NULL, /* 96b9 */ NULL, /* 96ba */ NULL, /* 96bb */ NULL, /* 96bc */ NULL, /* 96bd */ NULL, /* 96be */ NULL, /* 96bf */ NULL, /* 96c0 */ NULL, /* 96c1 */ NULL, /* 96c2 */ NULL, /* 96c3 */ NULL, /* 96c4 */ NULL, /* 96c5 */ NULL, /* 96c6 */ NULL, /* 96c7 */ NULL, /* 96c8 */ NULL, /* 96c9 */ NULL, /* 96ca */ NULL, /* 96cb */ NULL, /* 96cc */ NULL, /* 96cd */ NULL, /* 96ce */ NULL, /* 96cf */ NULL, /* 96d0 */ NULL, /* 96d1 */ NULL, /* 96d2 */ NULL, /* 96d3 */ NULL, /* 96d4 */ NULL, /* 96d5 */ NULL, /* 96d6 */ NULL, /* 96d7 */ NULL, /* 96d8 */ NULL, /* 96d9 */ NULL, /* 96da */ NULL, /* 96db */ NULL, /* 96dc */ NULL, /* 96dd */ NULL, /* 96de */ NULL, /* 96df */ NULL, /* 96e0 */ NULL, /* 96e1 */ NULL, /* 96e2 */ NULL, /* 96e3 */ NULL, /* 96e4 */ NULL, /* 96e5 */ NULL, /* 96e6 */ NULL, /* 96e7 */ NULL, /* 96e8 */ NULL, /* 96e9 */ NULL, /* 96ea */ NULL, /* 96eb */ NULL, /* 96ec */ NULL, /* 96ed */ NULL, /* 96ee */ NULL, /* 96ef */ NULL, /* 96f0 */ NULL, /* 96f1 */ NULL, /* 96f2 */ NULL, /* 96f3 */ NULL, /* 96f4 */ NULL, /* 96f5 */ NULL, /* 96f6 */ NULL, /* 96f7 */ NULL, /* 96f8 */ NULL, /* 96f9 */ NULL, /* 96fa */ NULL, /* 96fb */ NULL, /* 96fc */ NULL, /* 96fd */ NULL, /* 96fe */ NULL, /* 96ff */ NULL, /* 9700 */ NULL, /* 9701 */ NULL, /* 9702 */ NULL, /* 9703 */ NULL, /* 9704 */ NULL, /* 9705 */ NULL, /* 9706 */ NULL, /* 9707 */ NULL, /* 9708 */ NULL, /* 9709 */ NULL, /* 970a */ NULL, /* 970b */ NULL, /* 970c */ NULL, /* 970d */ NULL, /* 970e */ NULL, /* 970f */ NULL, /* 9710 */ NULL, /* 9711 */ NULL, /* 9712 */ NULL, /* 9713 */ NULL, /* 9714 */ NULL, /* 9715 */ NULL, /* 9716 */ NULL, /* 9717 */ NULL, /* 9718 */ NULL, /* 9719 */ NULL, /* 971a */ NULL, /* 971b */ NULL, /* 971c */ NULL, /* 971d */ NULL, /* 971e */ NULL, /* 971f */ NULL, /* 9720 */ NULL, /* 9721 */ NULL, /* 9722 */ NULL, /* 9723 */ NULL, /* 9724 */ NULL, /* 9725 */ NULL, /* 9726 */ NULL, /* 9727 */ NULL, /* 9728 */ NULL, /* 9729 */ NULL, /* 972a */ NULL, /* 972b */ NULL, /* 972c */ NULL, /* 972d */ NULL, /* 972e */ NULL, /* 972f */ NULL, /* 9730 */ NULL, /* 9731 */ NULL, /* 9732 */ NULL, /* 9733 */ NULL, /* 9734 */ NULL, /* 9735 */ NULL, /* 9736 */ NULL, /* 9737 */ NULL, /* 9738 */ NULL, /* 9739 */ NULL, /* 973a */ NULL, /* 973b */ NULL, /* 973c */ NULL, /* 973d */ NULL, /* 973e */ NULL, /* 973f */ NULL, /* 9740 */ NULL, /* 9741 */ NULL, /* 9742 */ NULL, /* 9743 */ NULL, /* 9744 */ NULL, /* 9745 */ NULL, /* 9746 */ NULL, /* 9747 */ NULL, /* 9748 */ NULL, /* 9749 */ NULL, /* 974a */ NULL, /* 974b */ NULL, /* 974c */ NULL, /* 974d */ NULL, /* 974e */ NULL, /* 974f */ NULL, /* 9750 */ NULL, /* 9751 */ NULL, /* 9752 */ NULL, /* 9753 */ NULL, /* 9754 */ NULL, /* 9755 */ NULL, /* 9756 */ NULL, /* 9757 */ NULL, /* 9758 */ NULL, /* 9759 */ NULL, /* 975a */ NULL, /* 975b */ NULL, /* 975c */ NULL, /* 975d */ NULL, /* 975e */ NULL, /* 975f */ NULL, /* 9760 */ NULL, /* 9761 */ NULL, /* 9762 */ NULL, /* 9763 */ NULL, /* 9764 */ NULL, /* 9765 */ NULL, /* 9766 */ NULL, /* 9767 */ NULL, /* 9768 */ NULL, /* 9769 */ NULL, /* 976a */ NULL, /* 976b */ NULL, /* 976c */ NULL, /* 976d */ NULL, /* 976e */ NULL, /* 976f */ NULL, /* 9770 */ NULL, /* 9771 */ NULL, /* 9772 */ NULL, /* 9773 */ NULL, /* 9774 */ NULL, /* 9775 */ NULL, /* 9776 */ NULL, /* 9777 */ NULL, /* 9778 */ NULL, /* 9779 */ NULL, /* 977a */ NULL, /* 977b */ NULL, /* 977c */ NULL, /* 977d */ NULL, /* 977e */ NULL, /* 977f */ NULL, /* 9780 */ NULL, /* 9781 */ NULL, /* 9782 */ NULL, /* 9783 */ NULL, /* 9784 */ NULL, /* 9785 */ NULL, /* 9786 */ NULL, /* 9787 */ NULL, /* 9788 */ NULL, /* 9789 */ NULL, /* 978a */ NULL, /* 978b */ NULL, /* 978c */ NULL, /* 978d */ NULL, /* 978e */ NULL, /* 978f */ NULL, /* 9790 */ NULL, /* 9791 */ NULL, /* 9792 */ NULL, /* 9793 */ NULL, /* 9794 */ NULL, /* 9795 */ NULL, /* 9796 */ NULL, /* 9797 */ NULL, /* 9798 */ NULL, /* 9799 */ NULL, /* 979a */ NULL, /* 979b */ NULL, /* 979c */ NULL, /* 979d */ NULL, /* 979e */ NULL, /* 979f */ NULL, /* 97a0 */ NULL, /* 97a1 */ NULL, /* 97a2 */ NULL, /* 97a3 */ NULL, /* 97a4 */ NULL, /* 97a5 */ NULL, /* 97a6 */ NULL, /* 97a7 */ NULL, /* 97a8 */ NULL, /* 97a9 */ NULL, /* 97aa */ NULL, /* 97ab */ NULL, /* 97ac */ NULL, /* 97ad */ NULL, /* 97ae */ NULL, /* 97af */ NULL, /* 97b0 */ NULL, /* 97b1 */ NULL, /* 97b2 */ NULL, /* 97b3 */ NULL, /* 97b4 */ NULL, /* 97b5 */ NULL, /* 97b6 */ NULL, /* 97b7 */ NULL, /* 97b8 */ NULL, /* 97b9 */ NULL, /* 97ba */ NULL, /* 97bb */ NULL, /* 97bc */ NULL, /* 97bd */ NULL, /* 97be */ NULL, /* 97bf */ NULL, /* 97c0 */ NULL, /* 97c1 */ NULL, /* 97c2 */ NULL, /* 97c3 */ NULL, /* 97c4 */ NULL, /* 97c5 */ NULL, /* 97c6 */ NULL, /* 97c7 */ NULL, /* 97c8 */ NULL, /* 97c9 */ NULL, /* 97ca */ NULL, /* 97cb */ NULL, /* 97cc */ NULL, /* 97cd */ NULL, /* 97ce */ NULL, /* 97cf */ NULL, /* 97d0 */ NULL, /* 97d1 */ NULL, /* 97d2 */ NULL, /* 97d3 */ NULL, /* 97d4 */ NULL, /* 97d5 */ NULL, /* 97d6 */ NULL, /* 97d7 */ NULL, /* 97d8 */ NULL, /* 97d9 */ NULL, /* 97da */ NULL, /* 97db */ NULL, /* 97dc */ NULL, /* 97dd */ NULL, /* 97de */ NULL, /* 97df */ NULL, /* 97e0 */ NULL, /* 97e1 */ NULL, /* 97e2 */ NULL, /* 97e3 */ NULL, /* 97e4 */ NULL, /* 97e5 */ NULL, /* 97e6 */ NULL, /* 97e7 */ NULL, /* 97e8 */ NULL, /* 97e9 */ NULL, /* 97ea */ NULL, /* 97eb */ NULL, /* 97ec */ NULL, /* 97ed */ NULL, /* 97ee */ NULL, /* 97ef */ NULL, /* 97f0 */ NULL, /* 97f1 */ NULL, /* 97f2 */ NULL, /* 97f3 */ NULL, /* 97f4 */ NULL, /* 97f5 */ NULL, /* 97f6 */ NULL, /* 97f7 */ NULL, /* 97f8 */ NULL, /* 97f9 */ NULL, /* 97fa */ NULL, /* 97fb */ NULL, /* 97fc */ NULL, /* 97fd */ NULL, /* 97fe */ NULL, /* 97ff */ NULL, /* 9800 */ NULL, /* 9801 */ NULL, /* 9802 */ NULL, /* 9803 */ NULL, /* 9804 */ NULL, /* 9805 */ NULL, /* 9806 */ NULL, /* 9807 */ NULL, /* 9808 */ NULL, /* 9809 */ NULL, /* 980a */ NULL, /* 980b */ NULL, /* 980c */ NULL, /* 980d */ NULL, /* 980e */ NULL, /* 980f */ NULL, /* 9810 */ NULL, /* 9811 */ NULL, /* 9812 */ NULL, /* 9813 */ NULL, /* 9814 */ NULL, /* 9815 */ NULL, /* 9816 */ NULL, /* 9817 */ NULL, /* 9818 */ NULL, /* 9819 */ NULL, /* 981a */ NULL, /* 981b */ NULL, /* 981c */ NULL, /* 981d */ NULL, /* 981e */ NULL, /* 981f */ NULL, /* 9820 */ NULL, /* 9821 */ NULL, /* 9822 */ NULL, /* 9823 */ NULL, /* 9824 */ NULL, /* 9825 */ NULL, /* 9826 */ NULL, /* 9827 */ NULL, /* 9828 */ NULL, /* 9829 */ NULL, /* 982a */ NULL, /* 982b */ NULL, /* 982c */ NULL, /* 982d */ NULL, /* 982e */ NULL, /* 982f */ NULL, /* 9830 */ NULL, /* 9831 */ NULL, /* 9832 */ NULL, /* 9833 */ NULL, /* 9834 */ NULL, /* 9835 */ NULL, /* 9836 */ NULL, /* 9837 */ NULL, /* 9838 */ NULL, /* 9839 */ NULL, /* 983a */ NULL, /* 983b */ NULL, /* 983c */ NULL, /* 983d */ NULL, /* 983e */ NULL, /* 983f */ NULL, /* 9840 */ NULL, /* 9841 */ NULL, /* 9842 */ NULL, /* 9843 */ NULL, /* 9844 */ NULL, /* 9845 */ NULL, /* 9846 */ NULL, /* 9847 */ NULL, /* 9848 */ NULL, /* 9849 */ NULL, /* 984a */ NULL, /* 984b */ NULL, /* 984c */ NULL, /* 984d */ NULL, /* 984e */ NULL, /* 984f */ NULL, /* 9850 */ NULL, /* 9851 */ NULL, /* 9852 */ NULL, /* 9853 */ NULL, /* 9854 */ NULL, /* 9855 */ NULL, /* 9856 */ NULL, /* 9857 */ NULL, /* 9858 */ NULL, /* 9859 */ NULL, /* 985a */ NULL, /* 985b */ NULL, /* 985c */ NULL, /* 985d */ NULL, /* 985e */ NULL, /* 985f */ NULL, /* 9860 */ NULL, /* 9861 */ NULL, /* 9862 */ NULL, /* 9863 */ NULL, /* 9864 */ NULL, /* 9865 */ NULL, /* 9866 */ NULL, /* 9867 */ NULL, /* 9868 */ NULL, /* 9869 */ NULL, /* 986a */ NULL, /* 986b */ NULL, /* 986c */ NULL, /* 986d */ NULL, /* 986e */ NULL, /* 986f */ NULL, /* 9870 */ NULL, /* 9871 */ NULL, /* 9872 */ NULL, /* 9873 */ NULL, /* 9874 */ NULL, /* 9875 */ NULL, /* 9876 */ NULL, /* 9877 */ NULL, /* 9878 */ NULL, /* 9879 */ NULL, /* 987a */ NULL, /* 987b */ NULL, /* 987c */ NULL, /* 987d */ NULL, /* 987e */ NULL, /* 987f */ NULL, /* 9880 */ NULL, /* 9881 */ NULL, /* 9882 */ NULL, /* 9883 */ NULL, /* 9884 */ NULL, /* 9885 */ NULL, /* 9886 */ NULL, /* 9887 */ NULL, /* 9888 */ NULL, /* 9889 */ NULL, /* 988a */ NULL, /* 988b */ NULL, /* 988c */ NULL, /* 988d */ NULL, /* 988e */ NULL, /* 988f */ NULL, /* 9890 */ NULL, /* 9891 */ NULL, /* 9892 */ NULL, /* 9893 */ NULL, /* 9894 */ NULL, /* 9895 */ NULL, /* 9896 */ NULL, /* 9897 */ NULL, /* 9898 */ NULL, /* 9899 */ NULL, /* 989a */ NULL, /* 989b */ NULL, /* 989c */ NULL, /* 989d */ NULL, /* 989e */ NULL, /* 989f */ NULL, /* 98a0 */ NULL, /* 98a1 */ NULL, /* 98a2 */ NULL, /* 98a3 */ NULL, /* 98a4 */ NULL, /* 98a5 */ NULL, /* 98a6 */ NULL, /* 98a7 */ NULL, /* 98a8 */ NULL, /* 98a9 */ NULL, /* 98aa */ NULL, /* 98ab */ NULL, /* 98ac */ NULL, /* 98ad */ NULL, /* 98ae */ NULL, /* 98af */ NULL, /* 98b0 */ NULL, /* 98b1 */ NULL, /* 98b2 */ NULL, /* 98b3 */ NULL, /* 98b4 */ NULL, /* 98b5 */ NULL, /* 98b6 */ NULL, /* 98b7 */ NULL, /* 98b8 */ NULL, /* 98b9 */ NULL, /* 98ba */ NULL, /* 98bb */ NULL, /* 98bc */ NULL, /* 98bd */ NULL, /* 98be */ NULL, /* 98bf */ NULL, /* 98c0 */ NULL, /* 98c1 */ NULL, /* 98c2 */ NULL, /* 98c3 */ NULL, /* 98c4 */ NULL, /* 98c5 */ NULL, /* 98c6 */ NULL, /* 98c7 */ NULL, /* 98c8 */ NULL, /* 98c9 */ NULL, /* 98ca */ NULL, /* 98cb */ NULL, /* 98cc */ NULL, /* 98cd */ NULL, /* 98ce */ NULL, /* 98cf */ NULL, /* 98d0 */ NULL, /* 98d1 */ NULL, /* 98d2 */ NULL, /* 98d3 */ NULL, /* 98d4 */ NULL, /* 98d5 */ NULL, /* 98d6 */ NULL, /* 98d7 */ NULL, /* 98d8 */ NULL, /* 98d9 */ NULL, /* 98da */ NULL, /* 98db */ NULL, /* 98dc */ NULL, /* 98dd */ NULL, /* 98de */ NULL, /* 98df */ NULL, /* 98e0 */ NULL, /* 98e1 */ NULL, /* 98e2 */ NULL, /* 98e3 */ NULL, /* 98e4 */ NULL, /* 98e5 */ NULL, /* 98e6 */ NULL, /* 98e7 */ NULL, /* 98e8 */ NULL, /* 98e9 */ NULL, /* 98ea */ NULL, /* 98eb */ NULL, /* 98ec */ NULL, /* 98ed */ NULL, /* 98ee */ NULL, /* 98ef */ NULL, /* 98f0 */ NULL, /* 98f1 */ NULL, /* 98f2 */ NULL, /* 98f3 */ NULL, /* 98f4 */ NULL, /* 98f5 */ NULL, /* 98f6 */ NULL, /* 98f7 */ NULL, /* 98f8 */ NULL, /* 98f9 */ NULL, /* 98fa */ NULL, /* 98fb */ NULL, /* 98fc */ NULL, /* 98fd */ NULL, /* 98fe */ NULL, /* 98ff */ NULL, /* 9900 */ NULL, /* 9901 */ NULL, /* 9902 */ NULL, /* 9903 */ NULL, /* 9904 */ NULL, /* 9905 */ NULL, /* 9906 */ NULL, /* 9907 */ NULL, /* 9908 */ NULL, /* 9909 */ NULL, /* 990a */ NULL, /* 990b */ NULL, /* 990c */ NULL, /* 990d */ NULL, /* 990e */ NULL, /* 990f */ NULL, /* 9910 */ NULL, /* 9911 */ NULL, /* 9912 */ NULL, /* 9913 */ NULL, /* 9914 */ NULL, /* 9915 */ NULL, /* 9916 */ NULL, /* 9917 */ NULL, /* 9918 */ NULL, /* 9919 */ NULL, /* 991a */ NULL, /* 991b */ NULL, /* 991c */ NULL, /* 991d */ NULL, /* 991e */ NULL, /* 991f */ NULL, /* 9920 */ NULL, /* 9921 */ NULL, /* 9922 */ NULL, /* 9923 */ NULL, /* 9924 */ NULL, /* 9925 */ NULL, /* 9926 */ NULL, /* 9927 */ NULL, /* 9928 */ NULL, /* 9929 */ NULL, /* 992a */ NULL, /* 992b */ NULL, /* 992c */ NULL, /* 992d */ NULL, /* 992e */ NULL, /* 992f */ NULL, /* 9930 */ NULL, /* 9931 */ NULL, /* 9932 */ NULL, /* 9933 */ NULL, /* 9934 */ NULL, /* 9935 */ NULL, /* 9936 */ NULL, /* 9937 */ NULL, /* 9938 */ NULL, /* 9939 */ NULL, /* 993a */ NULL, /* 993b */ NULL, /* 993c */ NULL, /* 993d */ NULL, /* 993e */ NULL, /* 993f */ NULL, /* 9940 */ NULL, /* 9941 */ NULL, /* 9942 */ NULL, /* 9943 */ NULL, /* 9944 */ NULL, /* 9945 */ NULL, /* 9946 */ NULL, /* 9947 */ NULL, /* 9948 */ NULL, /* 9949 */ NULL, /* 994a */ NULL, /* 994b */ NULL, /* 994c */ NULL, /* 994d */ NULL, /* 994e */ NULL, /* 994f */ NULL, /* 9950 */ NULL, /* 9951 */ NULL, /* 9952 */ NULL, /* 9953 */ NULL, /* 9954 */ NULL, /* 9955 */ NULL, /* 9956 */ NULL, /* 9957 */ NULL, /* 9958 */ NULL, /* 9959 */ NULL, /* 995a */ NULL, /* 995b */ NULL, /* 995c */ NULL, /* 995d */ NULL, /* 995e */ NULL, /* 995f */ NULL, /* 9960 */ NULL, /* 9961 */ NULL, /* 9962 */ NULL, /* 9963 */ NULL, /* 9964 */ NULL, /* 9965 */ NULL, /* 9966 */ NULL, /* 9967 */ NULL, /* 9968 */ NULL, /* 9969 */ NULL, /* 996a */ NULL, /* 996b */ NULL, /* 996c */ NULL, /* 996d */ NULL, /* 996e */ NULL, /* 996f */ NULL, /* 9970 */ NULL, /* 9971 */ NULL, /* 9972 */ NULL, /* 9973 */ NULL, /* 9974 */ NULL, /* 9975 */ NULL, /* 9976 */ NULL, /* 9977 */ NULL, /* 9978 */ NULL, /* 9979 */ NULL, /* 997a */ NULL, /* 997b */ NULL, /* 997c */ NULL, /* 997d */ NULL, /* 997e */ NULL, /* 997f */ NULL, /* 9980 */ NULL, /* 9981 */ NULL, /* 9982 */ NULL, /* 9983 */ NULL, /* 9984 */ NULL, /* 9985 */ NULL, /* 9986 */ NULL, /* 9987 */ NULL, /* 9988 */ NULL, /* 9989 */ NULL, /* 998a */ NULL, /* 998b */ NULL, /* 998c */ NULL, /* 998d */ NULL, /* 998e */ NULL, /* 998f */ NULL, /* 9990 */ NULL, /* 9991 */ NULL, /* 9992 */ NULL, /* 9993 */ NULL, /* 9994 */ NULL, /* 9995 */ NULL, /* 9996 */ NULL, /* 9997 */ NULL, /* 9998 */ NULL, /* 9999 */ NULL, /* 999a */ NULL, /* 999b */ NULL, /* 999c */ NULL, /* 999d */ NULL, /* 999e */ NULL, /* 999f */ NULL, /* 99a0 */ NULL, /* 99a1 */ NULL, /* 99a2 */ NULL, /* 99a3 */ NULL, /* 99a4 */ NULL, /* 99a5 */ NULL, /* 99a6 */ NULL, /* 99a7 */ NULL, /* 99a8 */ NULL, /* 99a9 */ NULL, /* 99aa */ NULL, /* 99ab */ NULL, /* 99ac */ NULL, /* 99ad */ NULL, /* 99ae */ NULL, /* 99af */ NULL, /* 99b0 */ NULL, /* 99b1 */ NULL, /* 99b2 */ NULL, /* 99b3 */ NULL, /* 99b4 */ NULL, /* 99b5 */ NULL, /* 99b6 */ NULL, /* 99b7 */ NULL, /* 99b8 */ NULL, /* 99b9 */ NULL, /* 99ba */ NULL, /* 99bb */ NULL, /* 99bc */ NULL, /* 99bd */ NULL, /* 99be */ NULL, /* 99bf */ NULL, /* 99c0 */ NULL, /* 99c1 */ NULL, /* 99c2 */ NULL, /* 99c3 */ NULL, /* 99c4 */ NULL, /* 99c5 */ NULL, /* 99c6 */ NULL, /* 99c7 */ NULL, /* 99c8 */ NULL, /* 99c9 */ NULL, /* 99ca */ NULL, /* 99cb */ NULL, /* 99cc */ NULL, /* 99cd */ NULL, /* 99ce */ NULL, /* 99cf */ NULL, /* 99d0 */ NULL, /* 99d1 */ NULL, /* 99d2 */ NULL, /* 99d3 */ NULL, /* 99d4 */ NULL, /* 99d5 */ NULL, /* 99d6 */ NULL, /* 99d7 */ NULL, /* 99d8 */ NULL, /* 99d9 */ NULL, /* 99da */ NULL, /* 99db */ NULL, /* 99dc */ NULL, /* 99dd */ NULL, /* 99de */ NULL, /* 99df */ NULL, /* 99e0 */ NULL, /* 99e1 */ NULL, /* 99e2 */ NULL, /* 99e3 */ NULL, /* 99e4 */ NULL, /* 99e5 */ NULL, /* 99e6 */ NULL, /* 99e7 */ NULL, /* 99e8 */ NULL, /* 99e9 */ NULL, /* 99ea */ NULL, /* 99eb */ NULL, /* 99ec */ NULL, /* 99ed */ NULL, /* 99ee */ NULL, /* 99ef */ NULL, /* 99f0 */ NULL, /* 99f1 */ NULL, /* 99f2 */ NULL, /* 99f3 */ NULL, /* 99f4 */ NULL, /* 99f5 */ NULL, /* 99f6 */ NULL, /* 99f7 */ NULL, /* 99f8 */ NULL, /* 99f9 */ NULL, /* 99fa */ NULL, /* 99fb */ NULL, /* 99fc */ NULL, /* 99fd */ NULL, /* 99fe */ NULL, /* 99ff */ NULL, /* 9a00 */ NULL, /* 9a01 */ NULL, /* 9a02 */ NULL, /* 9a03 */ NULL, /* 9a04 */ NULL, /* 9a05 */ NULL, /* 9a06 */ NULL, /* 9a07 */ NULL, /* 9a08 */ NULL, /* 9a09 */ NULL, /* 9a0a */ NULL, /* 9a0b */ NULL, /* 9a0c */ NULL, /* 9a0d */ NULL, /* 9a0e */ NULL, /* 9a0f */ NULL, /* 9a10 */ NULL, /* 9a11 */ NULL, /* 9a12 */ NULL, /* 9a13 */ NULL, /* 9a14 */ NULL, /* 9a15 */ NULL, /* 9a16 */ NULL, /* 9a17 */ NULL, /* 9a18 */ NULL, /* 9a19 */ NULL, /* 9a1a */ NULL, /* 9a1b */ NULL, /* 9a1c */ NULL, /* 9a1d */ NULL, /* 9a1e */ NULL, /* 9a1f */ NULL, /* 9a20 */ NULL, /* 9a21 */ NULL, /* 9a22 */ NULL, /* 9a23 */ NULL, /* 9a24 */ NULL, /* 9a25 */ NULL, /* 9a26 */ NULL, /* 9a27 */ NULL, /* 9a28 */ NULL, /* 9a29 */ NULL, /* 9a2a */ NULL, /* 9a2b */ NULL, /* 9a2c */ NULL, /* 9a2d */ NULL, /* 9a2e */ NULL, /* 9a2f */ NULL, /* 9a30 */ NULL, /* 9a31 */ NULL, /* 9a32 */ NULL, /* 9a33 */ NULL, /* 9a34 */ NULL, /* 9a35 */ NULL, /* 9a36 */ NULL, /* 9a37 */ NULL, /* 9a38 */ NULL, /* 9a39 */ NULL, /* 9a3a */ NULL, /* 9a3b */ NULL, /* 9a3c */ NULL, /* 9a3d */ NULL, /* 9a3e */ NULL, /* 9a3f */ NULL, /* 9a40 */ NULL, /* 9a41 */ NULL, /* 9a42 */ NULL, /* 9a43 */ NULL, /* 9a44 */ NULL, /* 9a45 */ NULL, /* 9a46 */ NULL, /* 9a47 */ NULL, /* 9a48 */ NULL, /* 9a49 */ NULL, /* 9a4a */ NULL, /* 9a4b */ NULL, /* 9a4c */ NULL, /* 9a4d */ NULL, /* 9a4e */ NULL, /* 9a4f */ NULL, /* 9a50 */ NULL, /* 9a51 */ NULL, /* 9a52 */ NULL, /* 9a53 */ NULL, /* 9a54 */ NULL, /* 9a55 */ NULL, /* 9a56 */ NULL, /* 9a57 */ NULL, /* 9a58 */ NULL, /* 9a59 */ NULL, /* 9a5a */ NULL, /* 9a5b */ NULL, /* 9a5c */ NULL, /* 9a5d */ NULL, /* 9a5e */ NULL, /* 9a5f */ NULL, /* 9a60 */ NULL, /* 9a61 */ NULL, /* 9a62 */ NULL, /* 9a63 */ NULL, /* 9a64 */ NULL, /* 9a65 */ NULL, /* 9a66 */ NULL, /* 9a67 */ NULL, /* 9a68 */ NULL, /* 9a69 */ NULL, /* 9a6a */ NULL, /* 9a6b */ NULL, /* 9a6c */ NULL, /* 9a6d */ NULL, /* 9a6e */ NULL, /* 9a6f */ NULL, /* 9a70 */ NULL, /* 9a71 */ NULL, /* 9a72 */ NULL, /* 9a73 */ NULL, /* 9a74 */ NULL, /* 9a75 */ NULL, /* 9a76 */ NULL, /* 9a77 */ NULL, /* 9a78 */ NULL, /* 9a79 */ NULL, /* 9a7a */ NULL, /* 9a7b */ NULL, /* 9a7c */ NULL, /* 9a7d */ NULL, /* 9a7e */ NULL, /* 9a7f */ NULL, /* 9a80 */ NULL, /* 9a81 */ NULL, /* 9a82 */ NULL, /* 9a83 */ NULL, /* 9a84 */ NULL, /* 9a85 */ NULL, /* 9a86 */ NULL, /* 9a87 */ NULL, /* 9a88 */ NULL, /* 9a89 */ NULL, /* 9a8a */ NULL, /* 9a8b */ NULL, /* 9a8c */ NULL, /* 9a8d */ NULL, /* 9a8e */ NULL, /* 9a8f */ NULL, /* 9a90 */ NULL, /* 9a91 */ NULL, /* 9a92 */ NULL, /* 9a93 */ NULL, /* 9a94 */ NULL, /* 9a95 */ NULL, /* 9a96 */ NULL, /* 9a97 */ NULL, /* 9a98 */ NULL, /* 9a99 */ NULL, /* 9a9a */ NULL, /* 9a9b */ NULL, /* 9a9c */ NULL, /* 9a9d */ NULL, /* 9a9e */ NULL, /* 9a9f */ NULL, /* 9aa0 */ NULL, /* 9aa1 */ NULL, /* 9aa2 */ NULL, /* 9aa3 */ NULL, /* 9aa4 */ NULL, /* 9aa5 */ NULL, /* 9aa6 */ NULL, /* 9aa7 */ NULL, /* 9aa8 */ NULL, /* 9aa9 */ NULL, /* 9aaa */ NULL, /* 9aab */ NULL, /* 9aac */ NULL, /* 9aad */ NULL, /* 9aae */ NULL, /* 9aaf */ NULL, /* 9ab0 */ NULL, /* 9ab1 */ NULL, /* 9ab2 */ NULL, /* 9ab3 */ NULL, /* 9ab4 */ NULL, /* 9ab5 */ NULL, /* 9ab6 */ NULL, /* 9ab7 */ NULL, /* 9ab8 */ NULL, /* 9ab9 */ NULL, /* 9aba */ NULL, /* 9abb */ NULL, /* 9abc */ NULL, /* 9abd */ NULL, /* 9abe */ NULL, /* 9abf */ NULL, /* 9ac0 */ NULL, /* 9ac1 */ NULL, /* 9ac2 */ NULL, /* 9ac3 */ NULL, /* 9ac4 */ NULL, /* 9ac5 */ NULL, /* 9ac6 */ NULL, /* 9ac7 */ NULL, /* 9ac8 */ NULL, /* 9ac9 */ NULL, /* 9aca */ NULL, /* 9acb */ NULL, /* 9acc */ NULL, /* 9acd */ NULL, /* 9ace */ NULL, /* 9acf */ NULL, /* 9ad0 */ NULL, /* 9ad1 */ NULL, /* 9ad2 */ NULL, /* 9ad3 */ NULL, /* 9ad4 */ NULL, /* 9ad5 */ NULL, /* 9ad6 */ NULL, /* 9ad7 */ NULL, /* 9ad8 */ NULL, /* 9ad9 */ NULL, /* 9ada */ NULL, /* 9adb */ NULL, /* 9adc */ NULL, /* 9add */ NULL, /* 9ade */ NULL, /* 9adf */ NULL, /* 9ae0 */ NULL, /* 9ae1 */ NULL, /* 9ae2 */ NULL, /* 9ae3 */ NULL, /* 9ae4 */ NULL, /* 9ae5 */ NULL, /* 9ae6 */ NULL, /* 9ae7 */ NULL, /* 9ae8 */ NULL, /* 9ae9 */ NULL, /* 9aea */ NULL, /* 9aeb */ NULL, /* 9aec */ NULL, /* 9aed */ NULL, /* 9aee */ NULL, /* 9aef */ NULL, /* 9af0 */ NULL, /* 9af1 */ NULL, /* 9af2 */ NULL, /* 9af3 */ NULL, /* 9af4 */ NULL, /* 9af5 */ NULL, /* 9af6 */ NULL, /* 9af7 */ NULL, /* 9af8 */ NULL, /* 9af9 */ NULL, /* 9afa */ NULL, /* 9afb */ NULL, /* 9afc */ NULL, /* 9afd */ NULL, /* 9afe */ NULL, /* 9aff */ NULL, /* 9b00 */ NULL, /* 9b01 */ NULL, /* 9b02 */ NULL, /* 9b03 */ NULL, /* 9b04 */ NULL, /* 9b05 */ NULL, /* 9b06 */ NULL, /* 9b07 */ NULL, /* 9b08 */ NULL, /* 9b09 */ NULL, /* 9b0a */ NULL, /* 9b0b */ NULL, /* 9b0c */ NULL, /* 9b0d */ NULL, /* 9b0e */ NULL, /* 9b0f */ NULL, /* 9b10 */ NULL, /* 9b11 */ NULL, /* 9b12 */ NULL, /* 9b13 */ NULL, /* 9b14 */ NULL, /* 9b15 */ NULL, /* 9b16 */ NULL, /* 9b17 */ NULL, /* 9b18 */ NULL, /* 9b19 */ NULL, /* 9b1a */ NULL, /* 9b1b */ NULL, /* 9b1c */ NULL, /* 9b1d */ NULL, /* 9b1e */ NULL, /* 9b1f */ NULL, /* 9b20 */ NULL, /* 9b21 */ NULL, /* 9b22 */ NULL, /* 9b23 */ NULL, /* 9b24 */ NULL, /* 9b25 */ NULL, /* 9b26 */ NULL, /* 9b27 */ NULL, /* 9b28 */ NULL, /* 9b29 */ NULL, /* 9b2a */ NULL, /* 9b2b */ NULL, /* 9b2c */ NULL, /* 9b2d */ NULL, /* 9b2e */ NULL, /* 9b2f */ NULL, /* 9b30 */ NULL, /* 9b31 */ NULL, /* 9b32 */ NULL, /* 9b33 */ NULL, /* 9b34 */ NULL, /* 9b35 */ NULL, /* 9b36 */ NULL, /* 9b37 */ NULL, /* 9b38 */ NULL, /* 9b39 */ NULL, /* 9b3a */ NULL, /* 9b3b */ NULL, /* 9b3c */ NULL, /* 9b3d */ NULL, /* 9b3e */ NULL, /* 9b3f */ NULL, /* 9b40 */ NULL, /* 9b41 */ NULL, /* 9b42 */ NULL, /* 9b43 */ NULL, /* 9b44 */ NULL, /* 9b45 */ NULL, /* 9b46 */ NULL, /* 9b47 */ NULL, /* 9b48 */ NULL, /* 9b49 */ NULL, /* 9b4a */ NULL, /* 9b4b */ NULL, /* 9b4c */ NULL, /* 9b4d */ NULL, /* 9b4e */ NULL, /* 9b4f */ NULL, /* 9b50 */ NULL, /* 9b51 */ NULL, /* 9b52 */ NULL, /* 9b53 */ NULL, /* 9b54 */ NULL, /* 9b55 */ NULL, /* 9b56 */ NULL, /* 9b57 */ NULL, /* 9b58 */ NULL, /* 9b59 */ NULL, /* 9b5a */ NULL, /* 9b5b */ NULL, /* 9b5c */ NULL, /* 9b5d */ NULL, /* 9b5e */ NULL, /* 9b5f */ NULL, /* 9b60 */ NULL, /* 9b61 */ NULL, /* 9b62 */ NULL, /* 9b63 */ NULL, /* 9b64 */ NULL, /* 9b65 */ NULL, /* 9b66 */ NULL, /* 9b67 */ NULL, /* 9b68 */ NULL, /* 9b69 */ NULL, /* 9b6a */ NULL, /* 9b6b */ NULL, /* 9b6c */ NULL, /* 9b6d */ NULL, /* 9b6e */ NULL, /* 9b6f */ NULL, /* 9b70 */ NULL, /* 9b71 */ NULL, /* 9b72 */ NULL, /* 9b73 */ NULL, /* 9b74 */ NULL, /* 9b75 */ NULL, /* 9b76 */ NULL, /* 9b77 */ NULL, /* 9b78 */ NULL, /* 9b79 */ NULL, /* 9b7a */ NULL, /* 9b7b */ NULL, /* 9b7c */ NULL, /* 9b7d */ NULL, /* 9b7e */ NULL, /* 9b7f */ NULL, /* 9b80 */ NULL, /* 9b81 */ NULL, /* 9b82 */ NULL, /* 9b83 */ NULL, /* 9b84 */ NULL, /* 9b85 */ NULL, /* 9b86 */ NULL, /* 9b87 */ NULL, /* 9b88 */ NULL, /* 9b89 */ NULL, /* 9b8a */ NULL, /* 9b8b */ NULL, /* 9b8c */ NULL, /* 9b8d */ NULL, /* 9b8e */ NULL, /* 9b8f */ NULL, /* 9b90 */ NULL, /* 9b91 */ NULL, /* 9b92 */ NULL, /* 9b93 */ NULL, /* 9b94 */ NULL, /* 9b95 */ NULL, /* 9b96 */ NULL, /* 9b97 */ NULL, /* 9b98 */ NULL, /* 9b99 */ NULL, /* 9b9a */ NULL, /* 9b9b */ NULL, /* 9b9c */ NULL, /* 9b9d */ NULL, /* 9b9e */ NULL, /* 9b9f */ NULL, /* 9ba0 */ NULL, /* 9ba1 */ NULL, /* 9ba2 */ NULL, /* 9ba3 */ NULL, /* 9ba4 */ NULL, /* 9ba5 */ NULL, /* 9ba6 */ NULL, /* 9ba7 */ NULL, /* 9ba8 */ NULL, /* 9ba9 */ NULL, /* 9baa */ NULL, /* 9bab */ NULL, /* 9bac */ NULL, /* 9bad */ NULL, /* 9bae */ NULL, /* 9baf */ NULL, /* 9bb0 */ NULL, /* 9bb1 */ NULL, /* 9bb2 */ NULL, /* 9bb3 */ NULL, /* 9bb4 */ NULL, /* 9bb5 */ NULL, /* 9bb6 */ NULL, /* 9bb7 */ NULL, /* 9bb8 */ NULL, /* 9bb9 */ NULL, /* 9bba */ NULL, /* 9bbb */ NULL, /* 9bbc */ NULL, /* 9bbd */ NULL, /* 9bbe */ NULL, /* 9bbf */ NULL, /* 9bc0 */ NULL, /* 9bc1 */ NULL, /* 9bc2 */ NULL, /* 9bc3 */ NULL, /* 9bc4 */ NULL, /* 9bc5 */ NULL, /* 9bc6 */ NULL, /* 9bc7 */ NULL, /* 9bc8 */ NULL, /* 9bc9 */ NULL, /* 9bca */ NULL, /* 9bcb */ NULL, /* 9bcc */ NULL, /* 9bcd */ NULL, /* 9bce */ NULL, /* 9bcf */ NULL, /* 9bd0 */ NULL, /* 9bd1 */ NULL, /* 9bd2 */ NULL, /* 9bd3 */ NULL, /* 9bd4 */ NULL, /* 9bd5 */ NULL, /* 9bd6 */ NULL, /* 9bd7 */ NULL, /* 9bd8 */ NULL, /* 9bd9 */ NULL, /* 9bda */ NULL, /* 9bdb */ NULL, /* 9bdc */ NULL, /* 9bdd */ NULL, /* 9bde */ NULL, /* 9bdf */ NULL, /* 9be0 */ NULL, /* 9be1 */ NULL, /* 9be2 */ NULL, /* 9be3 */ NULL, /* 9be4 */ NULL, /* 9be5 */ NULL, /* 9be6 */ NULL, /* 9be7 */ NULL, /* 9be8 */ NULL, /* 9be9 */ NULL, /* 9bea */ NULL, /* 9beb */ NULL, /* 9bec */ NULL, /* 9bed */ NULL, /* 9bee */ NULL, /* 9bef */ NULL, /* 9bf0 */ NULL, /* 9bf1 */ NULL, /* 9bf2 */ NULL, /* 9bf3 */ NULL, /* 9bf4 */ NULL, /* 9bf5 */ NULL, /* 9bf6 */ NULL, /* 9bf7 */ NULL, /* 9bf8 */ NULL, /* 9bf9 */ NULL, /* 9bfa */ NULL, /* 9bfb */ NULL, /* 9bfc */ NULL, /* 9bfd */ NULL, /* 9bfe */ NULL, /* 9bff */ NULL, /* 9c00 */ NULL, /* 9c01 */ NULL, /* 9c02 */ NULL, /* 9c03 */ NULL, /* 9c04 */ NULL, /* 9c05 */ NULL, /* 9c06 */ NULL, /* 9c07 */ NULL, /* 9c08 */ NULL, /* 9c09 */ NULL, /* 9c0a */ NULL, /* 9c0b */ NULL, /* 9c0c */ NULL, /* 9c0d */ NULL, /* 9c0e */ NULL, /* 9c0f */ NULL, /* 9c10 */ NULL, /* 9c11 */ NULL, /* 9c12 */ NULL, /* 9c13 */ NULL, /* 9c14 */ NULL, /* 9c15 */ NULL, /* 9c16 */ NULL, /* 9c17 */ NULL, /* 9c18 */ NULL, /* 9c19 */ NULL, /* 9c1a */ NULL, /* 9c1b */ NULL, /* 9c1c */ NULL, /* 9c1d */ NULL, /* 9c1e */ NULL, /* 9c1f */ NULL, /* 9c20 */ NULL, /* 9c21 */ NULL, /* 9c22 */ NULL, /* 9c23 */ NULL, /* 9c24 */ NULL, /* 9c25 */ NULL, /* 9c26 */ NULL, /* 9c27 */ NULL, /* 9c28 */ NULL, /* 9c29 */ NULL, /* 9c2a */ NULL, /* 9c2b */ NULL, /* 9c2c */ NULL, /* 9c2d */ NULL, /* 9c2e */ NULL, /* 9c2f */ NULL, /* 9c30 */ NULL, /* 9c31 */ NULL, /* 9c32 */ NULL, /* 9c33 */ NULL, /* 9c34 */ NULL, /* 9c35 */ NULL, /* 9c36 */ NULL, /* 9c37 */ NULL, /* 9c38 */ NULL, /* 9c39 */ NULL, /* 9c3a */ NULL, /* 9c3b */ NULL, /* 9c3c */ NULL, /* 9c3d */ NULL, /* 9c3e */ NULL, /* 9c3f */ NULL, /* 9c40 */ NULL, /* 9c41 */ NULL, /* 9c42 */ NULL, /* 9c43 */ NULL, /* 9c44 */ NULL, /* 9c45 */ NULL, /* 9c46 */ NULL, /* 9c47 */ NULL, /* 9c48 */ NULL, /* 9c49 */ NULL, /* 9c4a */ NULL, /* 9c4b */ NULL, /* 9c4c */ NULL, /* 9c4d */ NULL, /* 9c4e */ NULL, /* 9c4f */ NULL, /* 9c50 */ NULL, /* 9c51 */ NULL, /* 9c52 */ NULL, /* 9c53 */ NULL, /* 9c54 */ NULL, /* 9c55 */ NULL, /* 9c56 */ NULL, /* 9c57 */ NULL, /* 9c58 */ NULL, /* 9c59 */ NULL, /* 9c5a */ NULL, /* 9c5b */ NULL, /* 9c5c */ NULL, /* 9c5d */ NULL, /* 9c5e */ NULL, /* 9c5f */ NULL, /* 9c60 */ NULL, /* 9c61 */ NULL, /* 9c62 */ NULL, /* 9c63 */ NULL, /* 9c64 */ NULL, /* 9c65 */ NULL, /* 9c66 */ NULL, /* 9c67 */ NULL, /* 9c68 */ NULL, /* 9c69 */ NULL, /* 9c6a */ NULL, /* 9c6b */ NULL, /* 9c6c */ NULL, /* 9c6d */ NULL, /* 9c6e */ NULL, /* 9c6f */ NULL, /* 9c70 */ NULL, /* 9c71 */ NULL, /* 9c72 */ NULL, /* 9c73 */ NULL, /* 9c74 */ NULL, /* 9c75 */ NULL, /* 9c76 */ NULL, /* 9c77 */ NULL, /* 9c78 */ NULL, /* 9c79 */ NULL, /* 9c7a */ NULL, /* 9c7b */ NULL, /* 9c7c */ NULL, /* 9c7d */ NULL, /* 9c7e */ NULL, /* 9c7f */ NULL, /* 9c80 */ NULL, /* 9c81 */ NULL, /* 9c82 */ NULL, /* 9c83 */ NULL, /* 9c84 */ NULL, /* 9c85 */ NULL, /* 9c86 */ NULL, /* 9c87 */ NULL, /* 9c88 */ NULL, /* 9c89 */ NULL, /* 9c8a */ NULL, /* 9c8b */ NULL, /* 9c8c */ NULL, /* 9c8d */ NULL, /* 9c8e */ NULL, /* 9c8f */ NULL, /* 9c90 */ NULL, /* 9c91 */ NULL, /* 9c92 */ NULL, /* 9c93 */ NULL, /* 9c94 */ NULL, /* 9c95 */ NULL, /* 9c96 */ NULL, /* 9c97 */ NULL, /* 9c98 */ NULL, /* 9c99 */ NULL, /* 9c9a */ NULL, /* 9c9b */ NULL, /* 9c9c */ NULL, /* 9c9d */ NULL, /* 9c9e */ NULL, /* 9c9f */ NULL, /* 9ca0 */ NULL, /* 9ca1 */ NULL, /* 9ca2 */ NULL, /* 9ca3 */ NULL, /* 9ca4 */ NULL, /* 9ca5 */ NULL, /* 9ca6 */ NULL, /* 9ca7 */ NULL, /* 9ca8 */ NULL, /* 9ca9 */ NULL, /* 9caa */ NULL, /* 9cab */ NULL, /* 9cac */ NULL, /* 9cad */ NULL, /* 9cae */ NULL, /* 9caf */ NULL, /* 9cb0 */ NULL, /* 9cb1 */ NULL, /* 9cb2 */ NULL, /* 9cb3 */ NULL, /* 9cb4 */ NULL, /* 9cb5 */ NULL, /* 9cb6 */ NULL, /* 9cb7 */ NULL, /* 9cb8 */ NULL, /* 9cb9 */ NULL, /* 9cba */ NULL, /* 9cbb */ NULL, /* 9cbc */ NULL, /* 9cbd */ NULL, /* 9cbe */ NULL, /* 9cbf */ NULL, /* 9cc0 */ NULL, /* 9cc1 */ NULL, /* 9cc2 */ NULL, /* 9cc3 */ NULL, /* 9cc4 */ NULL, /* 9cc5 */ NULL, /* 9cc6 */ NULL, /* 9cc7 */ NULL, /* 9cc8 */ NULL, /* 9cc9 */ NULL, /* 9cca */ NULL, /* 9ccb */ NULL, /* 9ccc */ NULL, /* 9ccd */ NULL, /* 9cce */ NULL, /* 9ccf */ NULL, /* 9cd0 */ NULL, /* 9cd1 */ NULL, /* 9cd2 */ NULL, /* 9cd3 */ NULL, /* 9cd4 */ NULL, /* 9cd5 */ NULL, /* 9cd6 */ NULL, /* 9cd7 */ NULL, /* 9cd8 */ NULL, /* 9cd9 */ NULL, /* 9cda */ NULL, /* 9cdb */ NULL, /* 9cdc */ NULL, /* 9cdd */ NULL, /* 9cde */ NULL, /* 9cdf */ NULL, /* 9ce0 */ NULL, /* 9ce1 */ NULL, /* 9ce2 */ NULL, /* 9ce3 */ NULL, /* 9ce4 */ NULL, /* 9ce5 */ NULL, /* 9ce6 */ NULL, /* 9ce7 */ NULL, /* 9ce8 */ NULL, /* 9ce9 */ NULL, /* 9cea */ NULL, /* 9ceb */ NULL, /* 9cec */ NULL, /* 9ced */ NULL, /* 9cee */ NULL, /* 9cef */ NULL, /* 9cf0 */ NULL, /* 9cf1 */ NULL, /* 9cf2 */ NULL, /* 9cf3 */ NULL, /* 9cf4 */ NULL, /* 9cf5 */ NULL, /* 9cf6 */ NULL, /* 9cf7 */ NULL, /* 9cf8 */ NULL, /* 9cf9 */ NULL, /* 9cfa */ NULL, /* 9cfb */ NULL, /* 9cfc */ NULL, /* 9cfd */ NULL, /* 9cfe */ NULL, /* 9cff */ NULL, /* 9d00 */ NULL, /* 9d01 */ NULL, /* 9d02 */ NULL, /* 9d03 */ NULL, /* 9d04 */ NULL, /* 9d05 */ NULL, /* 9d06 */ NULL, /* 9d07 */ NULL, /* 9d08 */ NULL, /* 9d09 */ NULL, /* 9d0a */ NULL, /* 9d0b */ NULL, /* 9d0c */ NULL, /* 9d0d */ NULL, /* 9d0e */ NULL, /* 9d0f */ NULL, /* 9d10 */ NULL, /* 9d11 */ NULL, /* 9d12 */ NULL, /* 9d13 */ NULL, /* 9d14 */ NULL, /* 9d15 */ NULL, /* 9d16 */ NULL, /* 9d17 */ NULL, /* 9d18 */ NULL, /* 9d19 */ NULL, /* 9d1a */ NULL, /* 9d1b */ NULL, /* 9d1c */ NULL, /* 9d1d */ NULL, /* 9d1e */ NULL, /* 9d1f */ NULL, /* 9d20 */ NULL, /* 9d21 */ NULL, /* 9d22 */ NULL, /* 9d23 */ NULL, /* 9d24 */ NULL, /* 9d25 */ NULL, /* 9d26 */ NULL, /* 9d27 */ NULL, /* 9d28 */ NULL, /* 9d29 */ NULL, /* 9d2a */ NULL, /* 9d2b */ NULL, /* 9d2c */ NULL, /* 9d2d */ NULL, /* 9d2e */ NULL, /* 9d2f */ NULL, /* 9d30 */ NULL, /* 9d31 */ NULL, /* 9d32 */ NULL, /* 9d33 */ NULL, /* 9d34 */ NULL, /* 9d35 */ NULL, /* 9d36 */ NULL, /* 9d37 */ NULL, /* 9d38 */ NULL, /* 9d39 */ NULL, /* 9d3a */ NULL, /* 9d3b */ NULL, /* 9d3c */ NULL, /* 9d3d */ NULL, /* 9d3e */ NULL, /* 9d3f */ NULL, /* 9d40 */ NULL, /* 9d41 */ NULL, /* 9d42 */ NULL, /* 9d43 */ NULL, /* 9d44 */ NULL, /* 9d45 */ NULL, /* 9d46 */ NULL, /* 9d47 */ NULL, /* 9d48 */ NULL, /* 9d49 */ NULL, /* 9d4a */ NULL, /* 9d4b */ NULL, /* 9d4c */ NULL, /* 9d4d */ NULL, /* 9d4e */ NULL, /* 9d4f */ NULL, /* 9d50 */ NULL, /* 9d51 */ NULL, /* 9d52 */ NULL, /* 9d53 */ NULL, /* 9d54 */ NULL, /* 9d55 */ NULL, /* 9d56 */ NULL, /* 9d57 */ NULL, /* 9d58 */ NULL, /* 9d59 */ NULL, /* 9d5a */ NULL, /* 9d5b */ NULL, /* 9d5c */ NULL, /* 9d5d */ NULL, /* 9d5e */ NULL, /* 9d5f */ NULL, /* 9d60 */ NULL, /* 9d61 */ NULL, /* 9d62 */ NULL, /* 9d63 */ NULL, /* 9d64 */ NULL, /* 9d65 */ NULL, /* 9d66 */ NULL, /* 9d67 */ NULL, /* 9d68 */ NULL, /* 9d69 */ NULL, /* 9d6a */ NULL, /* 9d6b */ NULL, /* 9d6c */ NULL, /* 9d6d */ NULL, /* 9d6e */ NULL, /* 9d6f */ NULL, /* 9d70 */ NULL, /* 9d71 */ NULL, /* 9d72 */ NULL, /* 9d73 */ NULL, /* 9d74 */ NULL, /* 9d75 */ NULL, /* 9d76 */ NULL, /* 9d77 */ NULL, /* 9d78 */ NULL, /* 9d79 */ NULL, /* 9d7a */ NULL, /* 9d7b */ NULL, /* 9d7c */ NULL, /* 9d7d */ NULL, /* 9d7e */ NULL, /* 9d7f */ NULL, /* 9d80 */ NULL, /* 9d81 */ NULL, /* 9d82 */ NULL, /* 9d83 */ NULL, /* 9d84 */ NULL, /* 9d85 */ NULL, /* 9d86 */ NULL, /* 9d87 */ NULL, /* 9d88 */ NULL, /* 9d89 */ NULL, /* 9d8a */ NULL, /* 9d8b */ NULL, /* 9d8c */ NULL, /* 9d8d */ NULL, /* 9d8e */ NULL, /* 9d8f */ NULL, /* 9d90 */ NULL, /* 9d91 */ NULL, /* 9d92 */ NULL, /* 9d93 */ NULL, /* 9d94 */ NULL, /* 9d95 */ NULL, /* 9d96 */ NULL, /* 9d97 */ NULL, /* 9d98 */ NULL, /* 9d99 */ NULL, /* 9d9a */ NULL, /* 9d9b */ NULL, /* 9d9c */ NULL, /* 9d9d */ NULL, /* 9d9e */ NULL, /* 9d9f */ NULL, /* 9da0 */ NULL, /* 9da1 */ NULL, /* 9da2 */ NULL, /* 9da3 */ NULL, /* 9da4 */ NULL, /* 9da5 */ NULL, /* 9da6 */ NULL, /* 9da7 */ NULL, /* 9da8 */ NULL, /* 9da9 */ NULL, /* 9daa */ NULL, /* 9dab */ NULL, /* 9dac */ NULL, /* 9dad */ NULL, /* 9dae */ NULL, /* 9daf */ NULL, /* 9db0 */ NULL, /* 9db1 */ NULL, /* 9db2 */ NULL, /* 9db3 */ NULL, /* 9db4 */ NULL, /* 9db5 */ NULL, /* 9db6 */ NULL, /* 9db7 */ NULL, /* 9db8 */ NULL, /* 9db9 */ NULL, /* 9dba */ NULL, /* 9dbb */ NULL, /* 9dbc */ NULL, /* 9dbd */ NULL, /* 9dbe */ NULL, /* 9dbf */ NULL, /* 9dc0 */ NULL, /* 9dc1 */ NULL, /* 9dc2 */ NULL, /* 9dc3 */ NULL, /* 9dc4 */ NULL, /* 9dc5 */ NULL, /* 9dc6 */ NULL, /* 9dc7 */ NULL, /* 9dc8 */ NULL, /* 9dc9 */ NULL, /* 9dca */ NULL, /* 9dcb */ NULL, /* 9dcc */ NULL, /* 9dcd */ NULL, /* 9dce */ NULL, /* 9dcf */ NULL, /* 9dd0 */ NULL, /* 9dd1 */ NULL, /* 9dd2 */ NULL, /* 9dd3 */ NULL, /* 9dd4 */ NULL, /* 9dd5 */ NULL, /* 9dd6 */ NULL, /* 9dd7 */ NULL, /* 9dd8 */ NULL, /* 9dd9 */ NULL, /* 9dda */ NULL, /* 9ddb */ NULL, /* 9ddc */ NULL, /* 9ddd */ NULL, /* 9dde */ NULL, /* 9ddf */ NULL, /* 9de0 */ NULL, /* 9de1 */ NULL, /* 9de2 */ NULL, /* 9de3 */ NULL, /* 9de4 */ NULL, /* 9de5 */ NULL, /* 9de6 */ NULL, /* 9de7 */ NULL, /* 9de8 */ NULL, /* 9de9 */ NULL, /* 9dea */ NULL, /* 9deb */ NULL, /* 9dec */ NULL, /* 9ded */ NULL, /* 9dee */ NULL, /* 9def */ NULL, /* 9df0 */ NULL, /* 9df1 */ NULL, /* 9df2 */ NULL, /* 9df3 */ NULL, /* 9df4 */ NULL, /* 9df5 */ NULL, /* 9df6 */ NULL, /* 9df7 */ NULL, /* 9df8 */ NULL, /* 9df9 */ NULL, /* 9dfa */ NULL, /* 9dfb */ NULL, /* 9dfc */ NULL, /* 9dfd */ NULL, /* 9dfe */ NULL, /* 9dff */ NULL, /* 9e00 */ NULL, /* 9e01 */ NULL, /* 9e02 */ NULL, /* 9e03 */ NULL, /* 9e04 */ NULL, /* 9e05 */ NULL, /* 9e06 */ NULL, /* 9e07 */ NULL, /* 9e08 */ NULL, /* 9e09 */ NULL, /* 9e0a */ NULL, /* 9e0b */ NULL, /* 9e0c */ NULL, /* 9e0d */ NULL, /* 9e0e */ NULL, /* 9e0f */ NULL, /* 9e10 */ NULL, /* 9e11 */ NULL, /* 9e12 */ NULL, /* 9e13 */ NULL, /* 9e14 */ NULL, /* 9e15 */ NULL, /* 9e16 */ NULL, /* 9e17 */ NULL, /* 9e18 */ NULL, /* 9e19 */ NULL, /* 9e1a */ NULL, /* 9e1b */ NULL, /* 9e1c */ NULL, /* 9e1d */ NULL, /* 9e1e */ NULL, /* 9e1f */ NULL, /* 9e20 */ NULL, /* 9e21 */ NULL, /* 9e22 */ NULL, /* 9e23 */ NULL, /* 9e24 */ NULL, /* 9e25 */ NULL, /* 9e26 */ NULL, /* 9e27 */ NULL, /* 9e28 */ NULL, /* 9e29 */ NULL, /* 9e2a */ NULL, /* 9e2b */ NULL, /* 9e2c */ NULL, /* 9e2d */ NULL, /* 9e2e */ NULL, /* 9e2f */ NULL, /* 9e30 */ NULL, /* 9e31 */ NULL, /* 9e32 */ NULL, /* 9e33 */ NULL, /* 9e34 */ NULL, /* 9e35 */ NULL, /* 9e36 */ NULL, /* 9e37 */ NULL, /* 9e38 */ NULL, /* 9e39 */ NULL, /* 9e3a */ NULL, /* 9e3b */ NULL, /* 9e3c */ NULL, /* 9e3d */ NULL, /* 9e3e */ NULL, /* 9e3f */ NULL, /* 9e40 */ NULL, /* 9e41 */ NULL, /* 9e42 */ NULL, /* 9e43 */ NULL, /* 9e44 */ NULL, /* 9e45 */ NULL, /* 9e46 */ NULL, /* 9e47 */ NULL, /* 9e48 */ NULL, /* 9e49 */ NULL, /* 9e4a */ NULL, /* 9e4b */ NULL, /* 9e4c */ NULL, /* 9e4d */ NULL, /* 9e4e */ NULL, /* 9e4f */ NULL, /* 9e50 */ NULL, /* 9e51 */ NULL, /* 9e52 */ NULL, /* 9e53 */ NULL, /* 9e54 */ NULL, /* 9e55 */ NULL, /* 9e56 */ NULL, /* 9e57 */ NULL, /* 9e58 */ NULL, /* 9e59 */ NULL, /* 9e5a */ NULL, /* 9e5b */ NULL, /* 9e5c */ NULL, /* 9e5d */ NULL, /* 9e5e */ NULL, /* 9e5f */ NULL, /* 9e60 */ NULL, /* 9e61 */ NULL, /* 9e62 */ NULL, /* 9e63 */ NULL, /* 9e64 */ NULL, /* 9e65 */ NULL, /* 9e66 */ NULL, /* 9e67 */ NULL, /* 9e68 */ NULL, /* 9e69 */ NULL, /* 9e6a */ NULL, /* 9e6b */ NULL, /* 9e6c */ NULL, /* 9e6d */ NULL, /* 9e6e */ NULL, /* 9e6f */ NULL, /* 9e70 */ NULL, /* 9e71 */ NULL, /* 9e72 */ NULL, /* 9e73 */ NULL, /* 9e74 */ NULL, /* 9e75 */ NULL, /* 9e76 */ NULL, /* 9e77 */ NULL, /* 9e78 */ NULL, /* 9e79 */ NULL, /* 9e7a */ NULL, /* 9e7b */ NULL, /* 9e7c */ NULL, /* 9e7d */ NULL, /* 9e7e */ NULL, /* 9e7f */ NULL, /* 9e80 */ NULL, /* 9e81 */ NULL, /* 9e82 */ NULL, /* 9e83 */ NULL, /* 9e84 */ NULL, /* 9e85 */ NULL, /* 9e86 */ NULL, /* 9e87 */ NULL, /* 9e88 */ NULL, /* 9e89 */ NULL, /* 9e8a */ NULL, /* 9e8b */ NULL, /* 9e8c */ NULL, /* 9e8d */ NULL, /* 9e8e */ NULL, /* 9e8f */ NULL, /* 9e90 */ NULL, /* 9e91 */ NULL, /* 9e92 */ NULL, /* 9e93 */ NULL, /* 9e94 */ NULL, /* 9e95 */ NULL, /* 9e96 */ NULL, /* 9e97 */ NULL, /* 9e98 */ NULL, /* 9e99 */ NULL, /* 9e9a */ NULL, /* 9e9b */ NULL, /* 9e9c */ NULL, /* 9e9d */ NULL, /* 9e9e */ NULL, /* 9e9f */ NULL, /* 9ea0 */ NULL, /* 9ea1 */ NULL, /* 9ea2 */ NULL, /* 9ea3 */ NULL, /* 9ea4 */ NULL, /* 9ea5 */ NULL, /* 9ea6 */ NULL, /* 9ea7 */ NULL, /* 9ea8 */ NULL, /* 9ea9 */ NULL, /* 9eaa */ NULL, /* 9eab */ NULL, /* 9eac */ NULL, /* 9ead */ NULL, /* 9eae */ NULL, /* 9eaf */ NULL, /* 9eb0 */ NULL, /* 9eb1 */ NULL, /* 9eb2 */ NULL, /* 9eb3 */ NULL, /* 9eb4 */ NULL, /* 9eb5 */ NULL, /* 9eb6 */ NULL, /* 9eb7 */ NULL, /* 9eb8 */ NULL, /* 9eb9 */ NULL, /* 9eba */ NULL, /* 9ebb */ NULL, /* 9ebc */ NULL, /* 9ebd */ NULL, /* 9ebe */ NULL, /* 9ebf */ NULL, /* 9ec0 */ NULL, /* 9ec1 */ NULL, /* 9ec2 */ NULL, /* 9ec3 */ NULL, /* 9ec4 */ NULL, /* 9ec5 */ NULL, /* 9ec6 */ NULL, /* 9ec7 */ NULL, /* 9ec8 */ NULL, /* 9ec9 */ NULL, /* 9eca */ NULL, /* 9ecb */ NULL, /* 9ecc */ NULL, /* 9ecd */ NULL, /* 9ece */ NULL, /* 9ecf */ NULL, /* 9ed0 */ NULL, /* 9ed1 */ NULL, /* 9ed2 */ NULL, /* 9ed3 */ NULL, /* 9ed4 */ NULL, /* 9ed5 */ NULL, /* 9ed6 */ NULL, /* 9ed7 */ NULL, /* 9ed8 */ NULL, /* 9ed9 */ NULL, /* 9eda */ NULL, /* 9edb */ NULL, /* 9edc */ NULL, /* 9edd */ NULL, /* 9ede */ NULL, /* 9edf */ NULL, /* 9ee0 */ NULL, /* 9ee1 */ NULL, /* 9ee2 */ NULL, /* 9ee3 */ NULL, /* 9ee4 */ NULL, /* 9ee5 */ NULL, /* 9ee6 */ NULL, /* 9ee7 */ NULL, /* 9ee8 */ NULL, /* 9ee9 */ NULL, /* 9eea */ NULL, /* 9eeb */ NULL, /* 9eec */ NULL, /* 9eed */ NULL, /* 9eee */ NULL, /* 9eef */ NULL, /* 9ef0 */ NULL, /* 9ef1 */ NULL, /* 9ef2 */ NULL, /* 9ef3 */ NULL, /* 9ef4 */ NULL, /* 9ef5 */ NULL, /* 9ef6 */ NULL, /* 9ef7 */ NULL, /* 9ef8 */ NULL, /* 9ef9 */ NULL, /* 9efa */ NULL, /* 9efb */ NULL, /* 9efc */ NULL, /* 9efd */ NULL, /* 9efe */ NULL, /* 9eff */ NULL, /* 9f00 */ NULL, /* 9f01 */ NULL, /* 9f02 */ NULL, /* 9f03 */ NULL, /* 9f04 */ NULL, /* 9f05 */ NULL, /* 9f06 */ NULL, /* 9f07 */ NULL, /* 9f08 */ NULL, /* 9f09 */ NULL, /* 9f0a */ NULL, /* 9f0b */ NULL, /* 9f0c */ NULL, /* 9f0d */ NULL, /* 9f0e */ NULL, /* 9f0f */ NULL, /* 9f10 */ NULL, /* 9f11 */ NULL, /* 9f12 */ NULL, /* 9f13 */ NULL, /* 9f14 */ NULL, /* 9f15 */ NULL, /* 9f16 */ NULL, /* 9f17 */ NULL, /* 9f18 */ NULL, /* 9f19 */ NULL, /* 9f1a */ NULL, /* 9f1b */ NULL, /* 9f1c */ NULL, /* 9f1d */ NULL, /* 9f1e */ NULL, /* 9f1f */ NULL, /* 9f20 */ NULL, /* 9f21 */ NULL, /* 9f22 */ NULL, /* 9f23 */ NULL, /* 9f24 */ NULL, /* 9f25 */ NULL, /* 9f26 */ NULL, /* 9f27 */ NULL, /* 9f28 */ NULL, /* 9f29 */ NULL, /* 9f2a */ NULL, /* 9f2b */ NULL, /* 9f2c */ NULL, /* 9f2d */ NULL, /* 9f2e */ NULL, /* 9f2f */ NULL, /* 9f30 */ NULL, /* 9f31 */ NULL, /* 9f32 */ NULL, /* 9f33 */ NULL, /* 9f34 */ NULL, /* 9f35 */ NULL, /* 9f36 */ NULL, /* 9f37 */ NULL, /* 9f38 */ NULL, /* 9f39 */ NULL, /* 9f3a */ NULL, /* 9f3b */ NULL, /* 9f3c */ NULL, /* 9f3d */ NULL, /* 9f3e */ NULL, /* 9f3f */ NULL, /* 9f40 */ NULL, /* 9f41 */ NULL, /* 9f42 */ NULL, /* 9f43 */ NULL, /* 9f44 */ NULL, /* 9f45 */ NULL, /* 9f46 */ NULL, /* 9f47 */ NULL, /* 9f48 */ NULL, /* 9f49 */ NULL, /* 9f4a */ NULL, /* 9f4b */ NULL, /* 9f4c */ NULL, /* 9f4d */ NULL, /* 9f4e */ NULL, /* 9f4f */ NULL, /* 9f50 */ NULL, /* 9f51 */ NULL, /* 9f52 */ NULL, /* 9f53 */ NULL, /* 9f54 */ NULL, /* 9f55 */ NULL, /* 9f56 */ NULL, /* 9f57 */ NULL, /* 9f58 */ NULL, /* 9f59 */ NULL, /* 9f5a */ NULL, /* 9f5b */ NULL, /* 9f5c */ NULL, /* 9f5d */ NULL, /* 9f5e */ NULL, /* 9f5f */ NULL, /* 9f60 */ NULL, /* 9f61 */ NULL, /* 9f62 */ NULL, /* 9f63 */ NULL, /* 9f64 */ NULL, /* 9f65 */ NULL, /* 9f66 */ NULL, /* 9f67 */ NULL, /* 9f68 */ NULL, /* 9f69 */ NULL, /* 9f6a */ NULL, /* 9f6b */ NULL, /* 9f6c */ NULL, /* 9f6d */ NULL, /* 9f6e */ NULL, /* 9f6f */ NULL, /* 9f70 */ NULL, /* 9f71 */ NULL, /* 9f72 */ NULL, /* 9f73 */ NULL, /* 9f74 */ NULL, /* 9f75 */ NULL, /* 9f76 */ NULL, /* 9f77 */ NULL, /* 9f78 */ NULL, /* 9f79 */ NULL, /* 9f7a */ NULL, /* 9f7b */ NULL, /* 9f7c */ NULL, /* 9f7d */ NULL, /* 9f7e */ NULL, /* 9f7f */ NULL, /* 9f80 */ NULL, /* 9f81 */ NULL, /* 9f82 */ NULL, /* 9f83 */ NULL, /* 9f84 */ NULL, /* 9f85 */ NULL, /* 9f86 */ NULL, /* 9f87 */ NULL, /* 9f88 */ NULL, /* 9f89 */ NULL, /* 9f8a */ NULL, /* 9f8b */ NULL, /* 9f8c */ NULL, /* 9f8d */ NULL, /* 9f8e */ NULL, /* 9f8f */ NULL, /* 9f90 */ NULL, /* 9f91 */ NULL, /* 9f92 */ NULL, /* 9f93 */ NULL, /* 9f94 */ NULL, /* 9f95 */ NULL, /* 9f96 */ NULL, /* 9f97 */ NULL, /* 9f98 */ NULL, /* 9f99 */ NULL, /* 9f9a */ NULL, /* 9f9b */ NULL, /* 9f9c */ NULL, /* 9f9d */ NULL, /* 9f9e */ NULL, /* 9f9f */ NULL, /* 9fa0 */ NULL, /* 9fa1 */ NULL, /* 9fa2 */ NULL, /* 9fa3 */ NULL, /* 9fa4 */ NULL, /* 9fa5 */ NULL, /* 9fa6 */ NULL, /* 9fa7 */ NULL, /* 9fa8 */ NULL, /* 9fa9 */ NULL, /* 9faa */ NULL, /* 9fab */ NULL, /* 9fac */ NULL, /* 9fad */ NULL, /* 9fae */ NULL, /* 9faf */ NULL, /* 9fb0 */ NULL, /* 9fb1 */ NULL, /* 9fb2 */ NULL, /* 9fb3 */ NULL, /* 9fb4 */ NULL, /* 9fb5 */ NULL, /* 9fb6 */ NULL, /* 9fb7 */ NULL, /* 9fb8 */ NULL, /* 9fb9 */ NULL, /* 9fba */ NULL, /* 9fbb */ NULL, /* 9fbc */ NULL, /* 9fbd */ NULL, /* 9fbe */ NULL, /* 9fbf */ NULL, /* 9fc0 */ NULL, /* 9fc1 */ NULL, /* 9fc2 */ NULL, /* 9fc3 */ NULL, /* 9fc4 */ NULL, /* 9fc5 */ NULL, /* 9fc6 */ NULL, /* 9fc7 */ NULL, /* 9fc8 */ NULL, /* 9fc9 */ NULL, /* 9fca */ NULL, /* 9fcb */ NULL, /* 9fcc */ NULL, /* 9fcd */ NULL, /* 9fce */ NULL, /* 9fcf */ NULL, /* 9fd0 */ NULL, /* 9fd1 */ NULL, /* 9fd2 */ NULL, /* 9fd3 */ NULL, /* 9fd4 */ NULL, /* 9fd5 */ NULL, /* 9fd6 */ NULL, /* 9fd7 */ NULL, /* 9fd8 */ NULL, /* 9fd9 */ NULL, /* 9fda */ NULL, /* 9fdb */ NULL, /* 9fdc */ NULL, /* 9fdd */ NULL, /* 9fde */ NULL, /* 9fdf */ NULL, /* 9fe0 */ NULL, /* 9fe1 */ NULL, /* 9fe2 */ NULL, /* 9fe3 */ NULL, /* 9fe4 */ NULL, /* 9fe5 */ NULL, /* 9fe6 */ NULL, /* 9fe7 */ NULL, /* 9fe8 */ NULL, /* 9fe9 */ NULL, /* 9fea */ NULL, /* 9feb */ NULL, /* 9fec */ NULL, /* 9fed */ NULL, /* 9fee */ NULL, /* 9fef */ NULL, /* 9ff0 */ NULL, /* 9ff1 */ NULL, /* 9ff2 */ NULL, /* 9ff3 */ NULL, /* 9ff4 */ NULL, /* 9ff5 */ NULL, /* 9ff6 */ NULL, /* 9ff7 */ NULL, /* 9ff8 */ NULL, /* 9ff9 */ NULL, /* 9ffa */ NULL, /* 9ffb */ NULL, /* 9ffc */ NULL, /* 9ffd */ NULL, /* 9ffe */ NULL, /* 9fff */ NULL, /* a000 */ NULL, /* a001 */ NULL, /* a002 */ NULL, /* a003 */ NULL, /* a004 */ NULL, /* a005 */ NULL, /* a006 */ NULL, /* a007 */ NULL, /* a008 */ NULL, /* a009 */ NULL, /* a00a */ NULL, /* a00b */ NULL, /* a00c */ NULL, /* a00d */ NULL, /* a00e */ NULL, /* a00f */ NULL, /* a010 */ NULL, /* a011 */ NULL, /* a012 */ NULL, /* a013 */ NULL, /* a014 */ NULL, /* a015 */ NULL, /* a016 */ NULL, /* a017 */ NULL, /* a018 */ NULL, /* a019 */ NULL, /* a01a */ NULL, /* a01b */ NULL, /* a01c */ NULL, /* a01d */ NULL, /* a01e */ NULL, /* a01f */ NULL, /* a020 */ NULL, /* a021 */ NULL, /* a022 */ NULL, /* a023 */ NULL, /* a024 */ NULL, /* a025 */ NULL, /* a026 */ NULL, /* a027 */ NULL, /* a028 */ NULL, /* a029 */ NULL, /* a02a */ NULL, /* a02b */ NULL, /* a02c */ NULL, /* a02d */ NULL, /* a02e */ NULL, /* a02f */ NULL, /* a030 */ NULL, /* a031 */ NULL, /* a032 */ NULL, /* a033 */ NULL, /* a034 */ NULL, /* a035 */ NULL, /* a036 */ NULL, /* a037 */ NULL, /* a038 */ NULL, /* a039 */ NULL, /* a03a */ NULL, /* a03b */ NULL, /* a03c */ NULL, /* a03d */ NULL, /* a03e */ NULL, /* a03f */ NULL, /* a040 */ NULL, /* a041 */ NULL, /* a042 */ NULL, /* a043 */ NULL, /* a044 */ NULL, /* a045 */ NULL, /* a046 */ NULL, /* a047 */ NULL, /* a048 */ NULL, /* a049 */ NULL, /* a04a */ NULL, /* a04b */ NULL, /* a04c */ NULL, /* a04d */ NULL, /* a04e */ NULL, /* a04f */ NULL, /* a050 */ NULL, /* a051 */ NULL, /* a052 */ NULL, /* a053 */ NULL, /* a054 */ NULL, /* a055 */ NULL, /* a056 */ NULL, /* a057 */ NULL, /* a058 */ NULL, /* a059 */ NULL, /* a05a */ NULL, /* a05b */ NULL, /* a05c */ NULL, /* a05d */ NULL, /* a05e */ NULL, /* a05f */ NULL, /* a060 */ NULL, /* a061 */ NULL, /* a062 */ NULL, /* a063 */ NULL, /* a064 */ NULL, /* a065 */ NULL, /* a066 */ NULL, /* a067 */ NULL, /* a068 */ NULL, /* a069 */ NULL, /* a06a */ NULL, /* a06b */ NULL, /* a06c */ NULL, /* a06d */ NULL, /* a06e */ NULL, /* a06f */ NULL, /* a070 */ NULL, /* a071 */ NULL, /* a072 */ NULL, /* a073 */ NULL, /* a074 */ NULL, /* a075 */ NULL, /* a076 */ NULL, /* a077 */ NULL, /* a078 */ NULL, /* a079 */ NULL, /* a07a */ NULL, /* a07b */ NULL, /* a07c */ NULL, /* a07d */ NULL, /* a07e */ NULL, /* a07f */ NULL, /* a080 */ NULL, /* a081 */ NULL, /* a082 */ NULL, /* a083 */ NULL, /* a084 */ NULL, /* a085 */ NULL, /* a086 */ NULL, /* a087 */ NULL, /* a088 */ NULL, /* a089 */ NULL, /* a08a */ NULL, /* a08b */ NULL, /* a08c */ NULL, /* a08d */ NULL, /* a08e */ NULL, /* a08f */ NULL, /* a090 */ NULL, /* a091 */ NULL, /* a092 */ NULL, /* a093 */ NULL, /* a094 */ NULL, /* a095 */ NULL, /* a096 */ NULL, /* a097 */ NULL, /* a098 */ NULL, /* a099 */ NULL, /* a09a */ NULL, /* a09b */ NULL, /* a09c */ NULL, /* a09d */ NULL, /* a09e */ NULL, /* a09f */ NULL, /* a0a0 */ NULL, /* a0a1 */ NULL, /* a0a2 */ NULL, /* a0a3 */ NULL, /* a0a4 */ NULL, /* a0a5 */ NULL, /* a0a6 */ NULL, /* a0a7 */ NULL, /* a0a8 */ NULL, /* a0a9 */ NULL, /* a0aa */ NULL, /* a0ab */ NULL, /* a0ac */ NULL, /* a0ad */ NULL, /* a0ae */ NULL, /* a0af */ NULL, /* a0b0 */ NULL, /* a0b1 */ NULL, /* a0b2 */ NULL, /* a0b3 */ NULL, /* a0b4 */ NULL, /* a0b5 */ NULL, /* a0b6 */ NULL, /* a0b7 */ NULL, /* a0b8 */ NULL, /* a0b9 */ NULL, /* a0ba */ NULL, /* a0bb */ NULL, /* a0bc */ NULL, /* a0bd */ NULL, /* a0be */ NULL, /* a0bf */ NULL, /* a0c0 */ NULL, /* a0c1 */ NULL, /* a0c2 */ NULL, /* a0c3 */ NULL, /* a0c4 */ NULL, /* a0c5 */ NULL, /* a0c6 */ NULL, /* a0c7 */ NULL, /* a0c8 */ NULL, /* a0c9 */ NULL, /* a0ca */ NULL, /* a0cb */ NULL, /* a0cc */ NULL, /* a0cd */ NULL, /* a0ce */ NULL, /* a0cf */ NULL, /* a0d0 */ NULL, /* a0d1 */ NULL, /* a0d2 */ NULL, /* a0d3 */ NULL, /* a0d4 */ NULL, /* a0d5 */ NULL, /* a0d6 */ NULL, /* a0d7 */ NULL, /* a0d8 */ NULL, /* a0d9 */ NULL, /* a0da */ NULL, /* a0db */ NULL, /* a0dc */ NULL, /* a0dd */ NULL, /* a0de */ NULL, /* a0df */ NULL, /* a0e0 */ NULL, /* a0e1 */ NULL, /* a0e2 */ NULL, /* a0e3 */ NULL, /* a0e4 */ NULL, /* a0e5 */ NULL, /* a0e6 */ NULL, /* a0e7 */ NULL, /* a0e8 */ NULL, /* a0e9 */ NULL, /* a0ea */ NULL, /* a0eb */ NULL, /* a0ec */ NULL, /* a0ed */ NULL, /* a0ee */ NULL, /* a0ef */ NULL, /* a0f0 */ NULL, /* a0f1 */ NULL, /* a0f2 */ NULL, /* a0f3 */ NULL, /* a0f4 */ NULL, /* a0f5 */ NULL, /* a0f6 */ NULL, /* a0f7 */ NULL, /* a0f8 */ NULL, /* a0f9 */ NULL, /* a0fa */ NULL, /* a0fb */ NULL, /* a0fc */ NULL, /* a0fd */ NULL, /* a0fe */ NULL, /* a0ff */ NULL, /* a100 */ NULL, /* a101 */ NULL, /* a102 */ NULL, /* a103 */ NULL, /* a104 */ NULL, /* a105 */ NULL, /* a106 */ NULL, /* a107 */ NULL, /* a108 */ NULL, /* a109 */ NULL, /* a10a */ NULL, /* a10b */ NULL, /* a10c */ NULL, /* a10d */ NULL, /* a10e */ NULL, /* a10f */ NULL, /* a110 */ NULL, /* a111 */ NULL, /* a112 */ NULL, /* a113 */ NULL, /* a114 */ NULL, /* a115 */ NULL, /* a116 */ NULL, /* a117 */ NULL, /* a118 */ NULL, /* a119 */ NULL, /* a11a */ NULL, /* a11b */ NULL, /* a11c */ NULL, /* a11d */ NULL, /* a11e */ NULL, /* a11f */ NULL, /* a120 */ NULL, /* a121 */ NULL, /* a122 */ NULL, /* a123 */ NULL, /* a124 */ NULL, /* a125 */ NULL, /* a126 */ NULL, /* a127 */ NULL, /* a128 */ NULL, /* a129 */ NULL, /* a12a */ NULL, /* a12b */ NULL, /* a12c */ NULL, /* a12d */ NULL, /* a12e */ NULL, /* a12f */ NULL, /* a130 */ NULL, /* a131 */ NULL, /* a132 */ NULL, /* a133 */ NULL, /* a134 */ NULL, /* a135 */ NULL, /* a136 */ NULL, /* a137 */ NULL, /* a138 */ NULL, /* a139 */ NULL, /* a13a */ NULL, /* a13b */ NULL, /* a13c */ NULL, /* a13d */ NULL, /* a13e */ NULL, /* a13f */ NULL, /* a140 */ NULL, /* a141 */ NULL, /* a142 */ NULL, /* a143 */ NULL, /* a144 */ NULL, /* a145 */ NULL, /* a146 */ NULL, /* a147 */ NULL, /* a148 */ NULL, /* a149 */ NULL, /* a14a */ NULL, /* a14b */ NULL, /* a14c */ NULL, /* a14d */ NULL, /* a14e */ NULL, /* a14f */ NULL, /* a150 */ NULL, /* a151 */ NULL, /* a152 */ NULL, /* a153 */ NULL, /* a154 */ NULL, /* a155 */ NULL, /* a156 */ NULL, /* a157 */ NULL, /* a158 */ NULL, /* a159 */ NULL, /* a15a */ NULL, /* a15b */ NULL, /* a15c */ NULL, /* a15d */ NULL, /* a15e */ NULL, /* a15f */ NULL, /* a160 */ NULL, /* a161 */ NULL, /* a162 */ NULL, /* a163 */ NULL, /* a164 */ NULL, /* a165 */ NULL, /* a166 */ NULL, /* a167 */ NULL, /* a168 */ NULL, /* a169 */ NULL, /* a16a */ NULL, /* a16b */ NULL, /* a16c */ NULL, /* a16d */ NULL, /* a16e */ NULL, /* a16f */ NULL, /* a170 */ NULL, /* a171 */ NULL, /* a172 */ NULL, /* a173 */ NULL, /* a174 */ NULL, /* a175 */ NULL, /* a176 */ NULL, /* a177 */ NULL, /* a178 */ NULL, /* a179 */ NULL, /* a17a */ NULL, /* a17b */ NULL, /* a17c */ NULL, /* a17d */ NULL, /* a17e */ NULL, /* a17f */ NULL, /* a180 */ NULL, /* a181 */ NULL, /* a182 */ NULL, /* a183 */ NULL, /* a184 */ NULL, /* a185 */ NULL, /* a186 */ NULL, /* a187 */ NULL, /* a188 */ NULL, /* a189 */ NULL, /* a18a */ NULL, /* a18b */ NULL, /* a18c */ NULL, /* a18d */ NULL, /* a18e */ NULL, /* a18f */ NULL, /* a190 */ NULL, /* a191 */ NULL, /* a192 */ NULL, /* a193 */ NULL, /* a194 */ NULL, /* a195 */ NULL, /* a196 */ NULL, /* a197 */ NULL, /* a198 */ NULL, /* a199 */ NULL, /* a19a */ NULL, /* a19b */ NULL, /* a19c */ NULL, /* a19d */ NULL, /* a19e */ NULL, /* a19f */ NULL, /* a1a0 */ NULL, /* a1a1 */ NULL, /* a1a2 */ NULL, /* a1a3 */ NULL, /* a1a4 */ NULL, /* a1a5 */ NULL, /* a1a6 */ NULL, /* a1a7 */ NULL, /* a1a8 */ NULL, /* a1a9 */ NULL, /* a1aa */ NULL, /* a1ab */ NULL, /* a1ac */ NULL, /* a1ad */ NULL, /* a1ae */ NULL, /* a1af */ NULL, /* a1b0 */ NULL, /* a1b1 */ NULL, /* a1b2 */ NULL, /* a1b3 */ NULL, /* a1b4 */ NULL, /* a1b5 */ NULL, /* a1b6 */ NULL, /* a1b7 */ NULL, /* a1b8 */ NULL, /* a1b9 */ NULL, /* a1ba */ NULL, /* a1bb */ NULL, /* a1bc */ NULL, /* a1bd */ NULL, /* a1be */ NULL, /* a1bf */ NULL, /* a1c0 */ NULL, /* a1c1 */ NULL, /* a1c2 */ NULL, /* a1c3 */ NULL, /* a1c4 */ NULL, /* a1c5 */ NULL, /* a1c6 */ NULL, /* a1c7 */ NULL, /* a1c8 */ NULL, /* a1c9 */ NULL, /* a1ca */ NULL, /* a1cb */ NULL, /* a1cc */ NULL, /* a1cd */ NULL, /* a1ce */ NULL, /* a1cf */ NULL, /* a1d0 */ NULL, /* a1d1 */ NULL, /* a1d2 */ NULL, /* a1d3 */ NULL, /* a1d4 */ NULL, /* a1d5 */ NULL, /* a1d6 */ NULL, /* a1d7 */ NULL, /* a1d8 */ NULL, /* a1d9 */ NULL, /* a1da */ NULL, /* a1db */ NULL, /* a1dc */ NULL, /* a1dd */ NULL, /* a1de */ NULL, /* a1df */ NULL, /* a1e0 */ NULL, /* a1e1 */ NULL, /* a1e2 */ NULL, /* a1e3 */ NULL, /* a1e4 */ NULL, /* a1e5 */ NULL, /* a1e6 */ NULL, /* a1e7 */ NULL, /* a1e8 */ NULL, /* a1e9 */ NULL, /* a1ea */ NULL, /* a1eb */ NULL, /* a1ec */ NULL, /* a1ed */ NULL, /* a1ee */ NULL, /* a1ef */ NULL, /* a1f0 */ NULL, /* a1f1 */ NULL, /* a1f2 */ NULL, /* a1f3 */ NULL, /* a1f4 */ NULL, /* a1f5 */ NULL, /* a1f6 */ NULL, /* a1f7 */ NULL, /* a1f8 */ NULL, /* a1f9 */ NULL, /* a1fa */ NULL, /* a1fb */ NULL, /* a1fc */ NULL, /* a1fd */ NULL, /* a1fe */ NULL, /* a1ff */ NULL, /* a200 */ NULL, /* a201 */ NULL, /* a202 */ NULL, /* a203 */ NULL, /* a204 */ NULL, /* a205 */ NULL, /* a206 */ NULL, /* a207 */ NULL, /* a208 */ NULL, /* a209 */ NULL, /* a20a */ NULL, /* a20b */ NULL, /* a20c */ NULL, /* a20d */ NULL, /* a20e */ NULL, /* a20f */ NULL, /* a210 */ NULL, /* a211 */ NULL, /* a212 */ NULL, /* a213 */ NULL, /* a214 */ NULL, /* a215 */ NULL, /* a216 */ NULL, /* a217 */ NULL, /* a218 */ NULL, /* a219 */ NULL, /* a21a */ NULL, /* a21b */ NULL, /* a21c */ NULL, /* a21d */ NULL, /* a21e */ NULL, /* a21f */ NULL, /* a220 */ NULL, /* a221 */ NULL, /* a222 */ NULL, /* a223 */ NULL, /* a224 */ NULL, /* a225 */ NULL, /* a226 */ NULL, /* a227 */ NULL, /* a228 */ NULL, /* a229 */ NULL, /* a22a */ NULL, /* a22b */ NULL, /* a22c */ NULL, /* a22d */ NULL, /* a22e */ NULL, /* a22f */ NULL, /* a230 */ NULL, /* a231 */ NULL, /* a232 */ NULL, /* a233 */ NULL, /* a234 */ NULL, /* a235 */ NULL, /* a236 */ NULL, /* a237 */ NULL, /* a238 */ NULL, /* a239 */ NULL, /* a23a */ NULL, /* a23b */ NULL, /* a23c */ NULL, /* a23d */ NULL, /* a23e */ NULL, /* a23f */ NULL, /* a240 */ NULL, /* a241 */ NULL, /* a242 */ NULL, /* a243 */ NULL, /* a244 */ NULL, /* a245 */ NULL, /* a246 */ NULL, /* a247 */ NULL, /* a248 */ NULL, /* a249 */ NULL, /* a24a */ NULL, /* a24b */ NULL, /* a24c */ NULL, /* a24d */ NULL, /* a24e */ NULL, /* a24f */ NULL, /* a250 */ NULL, /* a251 */ NULL, /* a252 */ NULL, /* a253 */ NULL, /* a254 */ NULL, /* a255 */ NULL, /* a256 */ NULL, /* a257 */ NULL, /* a258 */ NULL, /* a259 */ NULL, /* a25a */ NULL, /* a25b */ NULL, /* a25c */ NULL, /* a25d */ NULL, /* a25e */ NULL, /* a25f */ NULL, /* a260 */ NULL, /* a261 */ NULL, /* a262 */ NULL, /* a263 */ NULL, /* a264 */ NULL, /* a265 */ NULL, /* a266 */ NULL, /* a267 */ NULL, /* a268 */ NULL, /* a269 */ NULL, /* a26a */ NULL, /* a26b */ NULL, /* a26c */ NULL, /* a26d */ NULL, /* a26e */ NULL, /* a26f */ NULL, /* a270 */ NULL, /* a271 */ NULL, /* a272 */ NULL, /* a273 */ NULL, /* a274 */ NULL, /* a275 */ NULL, /* a276 */ NULL, /* a277 */ NULL, /* a278 */ NULL, /* a279 */ NULL, /* a27a */ NULL, /* a27b */ NULL, /* a27c */ NULL, /* a27d */ NULL, /* a27e */ NULL, /* a27f */ NULL, /* a280 */ NULL, /* a281 */ NULL, /* a282 */ NULL, /* a283 */ NULL, /* a284 */ NULL, /* a285 */ NULL, /* a286 */ NULL, /* a287 */ NULL, /* a288 */ NULL, /* a289 */ NULL, /* a28a */ NULL, /* a28b */ NULL, /* a28c */ NULL, /* a28d */ NULL, /* a28e */ NULL, /* a28f */ NULL, /* a290 */ NULL, /* a291 */ NULL, /* a292 */ NULL, /* a293 */ NULL, /* a294 */ NULL, /* a295 */ NULL, /* a296 */ NULL, /* a297 */ NULL, /* a298 */ NULL, /* a299 */ NULL, /* a29a */ NULL, /* a29b */ NULL, /* a29c */ NULL, /* a29d */ NULL, /* a29e */ NULL, /* a29f */ NULL, /* a2a0 */ NULL, /* a2a1 */ NULL, /* a2a2 */ NULL, /* a2a3 */ NULL, /* a2a4 */ NULL, /* a2a5 */ NULL, /* a2a6 */ NULL, /* a2a7 */ NULL, /* a2a8 */ NULL, /* a2a9 */ NULL, /* a2aa */ NULL, /* a2ab */ NULL, /* a2ac */ NULL, /* a2ad */ NULL, /* a2ae */ NULL, /* a2af */ NULL, /* a2b0 */ NULL, /* a2b1 */ NULL, /* a2b2 */ NULL, /* a2b3 */ NULL, /* a2b4 */ NULL, /* a2b5 */ NULL, /* a2b6 */ NULL, /* a2b7 */ NULL, /* a2b8 */ NULL, /* a2b9 */ NULL, /* a2ba */ NULL, /* a2bb */ NULL, /* a2bc */ NULL, /* a2bd */ NULL, /* a2be */ NULL, /* a2bf */ NULL, /* a2c0 */ NULL, /* a2c1 */ NULL, /* a2c2 */ NULL, /* a2c3 */ NULL, /* a2c4 */ NULL, /* a2c5 */ NULL, /* a2c6 */ NULL, /* a2c7 */ NULL, /* a2c8 */ NULL, /* a2c9 */ NULL, /* a2ca */ NULL, /* a2cb */ NULL, /* a2cc */ NULL, /* a2cd */ NULL, /* a2ce */ NULL, /* a2cf */ NULL, /* a2d0 */ NULL, /* a2d1 */ NULL, /* a2d2 */ NULL, /* a2d3 */ NULL, /* a2d4 */ NULL, /* a2d5 */ NULL, /* a2d6 */ NULL, /* a2d7 */ NULL, /* a2d8 */ NULL, /* a2d9 */ NULL, /* a2da */ NULL, /* a2db */ NULL, /* a2dc */ NULL, /* a2dd */ NULL, /* a2de */ NULL, /* a2df */ NULL, /* a2e0 */ NULL, /* a2e1 */ NULL, /* a2e2 */ NULL, /* a2e3 */ NULL, /* a2e4 */ NULL, /* a2e5 */ NULL, /* a2e6 */ NULL, /* a2e7 */ NULL, /* a2e8 */ NULL, /* a2e9 */ NULL, /* a2ea */ NULL, /* a2eb */ NULL, /* a2ec */ NULL, /* a2ed */ NULL, /* a2ee */ NULL, /* a2ef */ NULL, /* a2f0 */ NULL, /* a2f1 */ NULL, /* a2f2 */ NULL, /* a2f3 */ NULL, /* a2f4 */ NULL, /* a2f5 */ NULL, /* a2f6 */ NULL, /* a2f7 */ NULL, /* a2f8 */ NULL, /* a2f9 */ NULL, /* a2fa */ NULL, /* a2fb */ NULL, /* a2fc */ NULL, /* a2fd */ NULL, /* a2fe */ NULL, /* a2ff */ NULL, /* a300 */ NULL, /* a301 */ NULL, /* a302 */ NULL, /* a303 */ NULL, /* a304 */ NULL, /* a305 */ NULL, /* a306 */ NULL, /* a307 */ NULL, /* a308 */ NULL, /* a309 */ NULL, /* a30a */ NULL, /* a30b */ NULL, /* a30c */ NULL, /* a30d */ NULL, /* a30e */ NULL, /* a30f */ NULL, /* a310 */ NULL, /* a311 */ NULL, /* a312 */ NULL, /* a313 */ NULL, /* a314 */ NULL, /* a315 */ NULL, /* a316 */ NULL, /* a317 */ NULL, /* a318 */ NULL, /* a319 */ NULL, /* a31a */ NULL, /* a31b */ NULL, /* a31c */ NULL, /* a31d */ NULL, /* a31e */ NULL, /* a31f */ NULL, /* a320 */ NULL, /* a321 */ NULL, /* a322 */ NULL, /* a323 */ NULL, /* a324 */ NULL, /* a325 */ NULL, /* a326 */ NULL, /* a327 */ NULL, /* a328 */ NULL, /* a329 */ NULL, /* a32a */ NULL, /* a32b */ NULL, /* a32c */ NULL, /* a32d */ NULL, /* a32e */ NULL, /* a32f */ NULL, /* a330 */ NULL, /* a331 */ NULL, /* a332 */ NULL, /* a333 */ NULL, /* a334 */ NULL, /* a335 */ NULL, /* a336 */ NULL, /* a337 */ NULL, /* a338 */ NULL, /* a339 */ NULL, /* a33a */ NULL, /* a33b */ NULL, /* a33c */ NULL, /* a33d */ NULL, /* a33e */ NULL, /* a33f */ NULL, /* a340 */ NULL, /* a341 */ NULL, /* a342 */ NULL, /* a343 */ NULL, /* a344 */ NULL, /* a345 */ NULL, /* a346 */ NULL, /* a347 */ NULL, /* a348 */ NULL, /* a349 */ NULL, /* a34a */ NULL, /* a34b */ NULL, /* a34c */ NULL, /* a34d */ NULL, /* a34e */ NULL, /* a34f */ NULL, /* a350 */ NULL, /* a351 */ NULL, /* a352 */ NULL, /* a353 */ NULL, /* a354 */ NULL, /* a355 */ NULL, /* a356 */ NULL, /* a357 */ NULL, /* a358 */ NULL, /* a359 */ NULL, /* a35a */ NULL, /* a35b */ NULL, /* a35c */ NULL, /* a35d */ NULL, /* a35e */ NULL, /* a35f */ NULL, /* a360 */ NULL, /* a361 */ NULL, /* a362 */ NULL, /* a363 */ NULL, /* a364 */ NULL, /* a365 */ NULL, /* a366 */ NULL, /* a367 */ NULL, /* a368 */ NULL, /* a369 */ NULL, /* a36a */ NULL, /* a36b */ NULL, /* a36c */ NULL, /* a36d */ NULL, /* a36e */ NULL, /* a36f */ NULL, /* a370 */ NULL, /* a371 */ NULL, /* a372 */ NULL, /* a373 */ NULL, /* a374 */ NULL, /* a375 */ NULL, /* a376 */ NULL, /* a377 */ NULL, /* a378 */ NULL, /* a379 */ NULL, /* a37a */ NULL, /* a37b */ NULL, /* a37c */ NULL, /* a37d */ NULL, /* a37e */ NULL, /* a37f */ NULL, /* a380 */ NULL, /* a381 */ NULL, /* a382 */ NULL, /* a383 */ NULL, /* a384 */ NULL, /* a385 */ NULL, /* a386 */ NULL, /* a387 */ NULL, /* a388 */ NULL, /* a389 */ NULL, /* a38a */ NULL, /* a38b */ NULL, /* a38c */ NULL, /* a38d */ NULL, /* a38e */ NULL, /* a38f */ NULL, /* a390 */ NULL, /* a391 */ NULL, /* a392 */ NULL, /* a393 */ NULL, /* a394 */ NULL, /* a395 */ NULL, /* a396 */ NULL, /* a397 */ NULL, /* a398 */ NULL, /* a399 */ NULL, /* a39a */ NULL, /* a39b */ NULL, /* a39c */ NULL, /* a39d */ NULL, /* a39e */ NULL, /* a39f */ NULL, /* a3a0 */ NULL, /* a3a1 */ NULL, /* a3a2 */ NULL, /* a3a3 */ NULL, /* a3a4 */ NULL, /* a3a5 */ NULL, /* a3a6 */ NULL, /* a3a7 */ NULL, /* a3a8 */ NULL, /* a3a9 */ NULL, /* a3aa */ NULL, /* a3ab */ NULL, /* a3ac */ NULL, /* a3ad */ NULL, /* a3ae */ NULL, /* a3af */ NULL, /* a3b0 */ NULL, /* a3b1 */ NULL, /* a3b2 */ NULL, /* a3b3 */ NULL, /* a3b4 */ NULL, /* a3b5 */ NULL, /* a3b6 */ NULL, /* a3b7 */ NULL, /* a3b8 */ NULL, /* a3b9 */ NULL, /* a3ba */ NULL, /* a3bb */ NULL, /* a3bc */ NULL, /* a3bd */ NULL, /* a3be */ NULL, /* a3bf */ NULL, /* a3c0 */ NULL, /* a3c1 */ NULL, /* a3c2 */ NULL, /* a3c3 */ NULL, /* a3c4 */ NULL, /* a3c5 */ NULL, /* a3c6 */ NULL, /* a3c7 */ NULL, /* a3c8 */ NULL, /* a3c9 */ NULL, /* a3ca */ NULL, /* a3cb */ NULL, /* a3cc */ NULL, /* a3cd */ NULL, /* a3ce */ NULL, /* a3cf */ NULL, /* a3d0 */ NULL, /* a3d1 */ NULL, /* a3d2 */ NULL, /* a3d3 */ NULL, /* a3d4 */ NULL, /* a3d5 */ NULL, /* a3d6 */ NULL, /* a3d7 */ NULL, /* a3d8 */ NULL, /* a3d9 */ NULL, /* a3da */ NULL, /* a3db */ NULL, /* a3dc */ NULL, /* a3dd */ NULL, /* a3de */ NULL, /* a3df */ NULL, /* a3e0 */ NULL, /* a3e1 */ NULL, /* a3e2 */ NULL, /* a3e3 */ NULL, /* a3e4 */ NULL, /* a3e5 */ NULL, /* a3e6 */ NULL, /* a3e7 */ NULL, /* a3e8 */ NULL, /* a3e9 */ NULL, /* a3ea */ NULL, /* a3eb */ NULL, /* a3ec */ NULL, /* a3ed */ NULL, /* a3ee */ NULL, /* a3ef */ NULL, /* a3f0 */ NULL, /* a3f1 */ NULL, /* a3f2 */ NULL, /* a3f3 */ NULL, /* a3f4 */ NULL, /* a3f5 */ NULL, /* a3f6 */ NULL, /* a3f7 */ NULL, /* a3f8 */ NULL, /* a3f9 */ NULL, /* a3fa */ NULL, /* a3fb */ NULL, /* a3fc */ NULL, /* a3fd */ NULL, /* a3fe */ NULL, /* a3ff */ NULL, /* a400 */ NULL, /* a401 */ NULL, /* a402 */ NULL, /* a403 */ NULL, /* a404 */ NULL, /* a405 */ NULL, /* a406 */ NULL, /* a407 */ NULL, /* a408 */ NULL, /* a409 */ NULL, /* a40a */ NULL, /* a40b */ NULL, /* a40c */ NULL, /* a40d */ NULL, /* a40e */ NULL, /* a40f */ NULL, /* a410 */ NULL, /* a411 */ NULL, /* a412 */ NULL, /* a413 */ NULL, /* a414 */ NULL, /* a415 */ NULL, /* a416 */ NULL, /* a417 */ NULL, /* a418 */ NULL, /* a419 */ NULL, /* a41a */ NULL, /* a41b */ NULL, /* a41c */ NULL, /* a41d */ NULL, /* a41e */ NULL, /* a41f */ NULL, /* a420 */ NULL, /* a421 */ NULL, /* a422 */ NULL, /* a423 */ NULL, /* a424 */ NULL, /* a425 */ NULL, /* a426 */ NULL, /* a427 */ NULL, /* a428 */ NULL, /* a429 */ NULL, /* a42a */ NULL, /* a42b */ NULL, /* a42c */ NULL, /* a42d */ NULL, /* a42e */ NULL, /* a42f */ NULL, /* a430 */ NULL, /* a431 */ NULL, /* a432 */ NULL, /* a433 */ NULL, /* a434 */ NULL, /* a435 */ NULL, /* a436 */ NULL, /* a437 */ NULL, /* a438 */ NULL, /* a439 */ NULL, /* a43a */ NULL, /* a43b */ NULL, /* a43c */ NULL, /* a43d */ NULL, /* a43e */ NULL, /* a43f */ NULL, /* a440 */ NULL, /* a441 */ NULL, /* a442 */ NULL, /* a443 */ NULL, /* a444 */ NULL, /* a445 */ NULL, /* a446 */ NULL, /* a447 */ NULL, /* a448 */ NULL, /* a449 */ NULL, /* a44a */ NULL, /* a44b */ NULL, /* a44c */ NULL, /* a44d */ NULL, /* a44e */ NULL, /* a44f */ NULL, /* a450 */ NULL, /* a451 */ NULL, /* a452 */ NULL, /* a453 */ NULL, /* a454 */ NULL, /* a455 */ NULL, /* a456 */ NULL, /* a457 */ NULL, /* a458 */ NULL, /* a459 */ NULL, /* a45a */ NULL, /* a45b */ NULL, /* a45c */ NULL, /* a45d */ NULL, /* a45e */ NULL, /* a45f */ NULL, /* a460 */ NULL, /* a461 */ NULL, /* a462 */ NULL, /* a463 */ NULL, /* a464 */ NULL, /* a465 */ NULL, /* a466 */ NULL, /* a467 */ NULL, /* a468 */ NULL, /* a469 */ NULL, /* a46a */ NULL, /* a46b */ NULL, /* a46c */ NULL, /* a46d */ NULL, /* a46e */ NULL, /* a46f */ NULL, /* a470 */ NULL, /* a471 */ NULL, /* a472 */ NULL, /* a473 */ NULL, /* a474 */ NULL, /* a475 */ NULL, /* a476 */ NULL, /* a477 */ NULL, /* a478 */ NULL, /* a479 */ NULL, /* a47a */ NULL, /* a47b */ NULL, /* a47c */ NULL, /* a47d */ NULL, /* a47e */ NULL, /* a47f */ NULL, /* a480 */ NULL, /* a481 */ NULL, /* a482 */ NULL, /* a483 */ NULL, /* a484 */ NULL, /* a485 */ NULL, /* a486 */ NULL, /* a487 */ NULL, /* a488 */ NULL, /* a489 */ NULL, /* a48a */ NULL, /* a48b */ NULL, /* a48c */ NULL, /* a48d */ NULL, /* a48e */ NULL, /* a48f */ NULL, /* a490 */ NULL, /* a491 */ NULL, /* a492 */ NULL, /* a493 */ NULL, /* a494 */ NULL, /* a495 */ NULL, /* a496 */ NULL, /* a497 */ NULL, /* a498 */ NULL, /* a499 */ NULL, /* a49a */ NULL, /* a49b */ NULL, /* a49c */ NULL, /* a49d */ NULL, /* a49e */ NULL, /* a49f */ NULL, /* a4a0 */ NULL, /* a4a1 */ NULL, /* a4a2 */ NULL, /* a4a3 */ NULL, /* a4a4 */ NULL, /* a4a5 */ NULL, /* a4a6 */ NULL, /* a4a7 */ NULL, /* a4a8 */ NULL, /* a4a9 */ NULL, /* a4aa */ NULL, /* a4ab */ NULL, /* a4ac */ NULL, /* a4ad */ NULL, /* a4ae */ NULL, /* a4af */ NULL, /* a4b0 */ NULL, /* a4b1 */ NULL, /* a4b2 */ NULL, /* a4b3 */ NULL, /* a4b4 */ NULL, /* a4b5 */ NULL, /* a4b6 */ NULL, /* a4b7 */ NULL, /* a4b8 */ NULL, /* a4b9 */ NULL, /* a4ba */ NULL, /* a4bb */ NULL, /* a4bc */ NULL, /* a4bd */ NULL, /* a4be */ NULL, /* a4bf */ NULL, /* a4c0 */ NULL, /* a4c1 */ NULL, /* a4c2 */ NULL, /* a4c3 */ NULL, /* a4c4 */ NULL, /* a4c5 */ NULL, /* a4c6 */ NULL, /* a4c7 */ NULL, /* a4c8 */ NULL, /* a4c9 */ NULL, /* a4ca */ NULL, /* a4cb */ NULL, /* a4cc */ NULL, /* a4cd */ NULL, /* a4ce */ NULL, /* a4cf */ NULL, /* a4d0 */ NULL, /* a4d1 */ NULL, /* a4d2 */ NULL, /* a4d3 */ NULL, /* a4d4 */ NULL, /* a4d5 */ NULL, /* a4d6 */ NULL, /* a4d7 */ NULL, /* a4d8 */ NULL, /* a4d9 */ NULL, /* a4da */ NULL, /* a4db */ NULL, /* a4dc */ NULL, /* a4dd */ NULL, /* a4de */ NULL, /* a4df */ NULL, /* a4e0 */ NULL, /* a4e1 */ NULL, /* a4e2 */ NULL, /* a4e3 */ NULL, /* a4e4 */ NULL, /* a4e5 */ NULL, /* a4e6 */ NULL, /* a4e7 */ NULL, /* a4e8 */ NULL, /* a4e9 */ NULL, /* a4ea */ NULL, /* a4eb */ NULL, /* a4ec */ NULL, /* a4ed */ NULL, /* a4ee */ NULL, /* a4ef */ NULL, /* a4f0 */ NULL, /* a4f1 */ NULL, /* a4f2 */ NULL, /* a4f3 */ NULL, /* a4f4 */ NULL, /* a4f5 */ NULL, /* a4f6 */ NULL, /* a4f7 */ NULL, /* a4f8 */ NULL, /* a4f9 */ NULL, /* a4fa */ NULL, /* a4fb */ NULL, /* a4fc */ NULL, /* a4fd */ NULL, /* a4fe */ NULL, /* a4ff */ NULL, /* a500 */ NULL, /* a501 */ NULL, /* a502 */ NULL, /* a503 */ NULL, /* a504 */ NULL, /* a505 */ NULL, /* a506 */ NULL, /* a507 */ NULL, /* a508 */ NULL, /* a509 */ NULL, /* a50a */ NULL, /* a50b */ NULL, /* a50c */ NULL, /* a50d */ NULL, /* a50e */ NULL, /* a50f */ NULL, /* a510 */ NULL, /* a511 */ NULL, /* a512 */ NULL, /* a513 */ NULL, /* a514 */ NULL, /* a515 */ NULL, /* a516 */ NULL, /* a517 */ NULL, /* a518 */ NULL, /* a519 */ NULL, /* a51a */ NULL, /* a51b */ NULL, /* a51c */ NULL, /* a51d */ NULL, /* a51e */ NULL, /* a51f */ NULL, /* a520 */ NULL, /* a521 */ NULL, /* a522 */ NULL, /* a523 */ NULL, /* a524 */ NULL, /* a525 */ NULL, /* a526 */ NULL, /* a527 */ NULL, /* a528 */ NULL, /* a529 */ NULL, /* a52a */ NULL, /* a52b */ NULL, /* a52c */ NULL, /* a52d */ NULL, /* a52e */ NULL, /* a52f */ NULL, /* a530 */ NULL, /* a531 */ NULL, /* a532 */ NULL, /* a533 */ NULL, /* a534 */ NULL, /* a535 */ NULL, /* a536 */ NULL, /* a537 */ NULL, /* a538 */ NULL, /* a539 */ NULL, /* a53a */ NULL, /* a53b */ NULL, /* a53c */ NULL, /* a53d */ NULL, /* a53e */ NULL, /* a53f */ NULL, /* a540 */ NULL, /* a541 */ NULL, /* a542 */ NULL, /* a543 */ NULL, /* a544 */ NULL, /* a545 */ NULL, /* a546 */ NULL, /* a547 */ NULL, /* a548 */ NULL, /* a549 */ NULL, /* a54a */ NULL, /* a54b */ NULL, /* a54c */ NULL, /* a54d */ NULL, /* a54e */ NULL, /* a54f */ NULL, /* a550 */ NULL, /* a551 */ NULL, /* a552 */ NULL, /* a553 */ NULL, /* a554 */ NULL, /* a555 */ NULL, /* a556 */ NULL, /* a557 */ NULL, /* a558 */ NULL, /* a559 */ NULL, /* a55a */ NULL, /* a55b */ NULL, /* a55c */ NULL, /* a55d */ NULL, /* a55e */ NULL, /* a55f */ NULL, /* a560 */ NULL, /* a561 */ NULL, /* a562 */ NULL, /* a563 */ NULL, /* a564 */ NULL, /* a565 */ NULL, /* a566 */ NULL, /* a567 */ NULL, /* a568 */ NULL, /* a569 */ NULL, /* a56a */ NULL, /* a56b */ NULL, /* a56c */ NULL, /* a56d */ NULL, /* a56e */ NULL, /* a56f */ NULL, /* a570 */ NULL, /* a571 */ NULL, /* a572 */ NULL, /* a573 */ NULL, /* a574 */ NULL, /* a575 */ NULL, /* a576 */ NULL, /* a577 */ NULL, /* a578 */ NULL, /* a579 */ NULL, /* a57a */ NULL, /* a57b */ NULL, /* a57c */ NULL, /* a57d */ NULL, /* a57e */ NULL, /* a57f */ NULL, /* a580 */ NULL, /* a581 */ NULL, /* a582 */ NULL, /* a583 */ NULL, /* a584 */ NULL, /* a585 */ NULL, /* a586 */ NULL, /* a587 */ NULL, /* a588 */ NULL, /* a589 */ NULL, /* a58a */ NULL, /* a58b */ NULL, /* a58c */ NULL, /* a58d */ NULL, /* a58e */ NULL, /* a58f */ NULL, /* a590 */ NULL, /* a591 */ NULL, /* a592 */ NULL, /* a593 */ NULL, /* a594 */ NULL, /* a595 */ NULL, /* a596 */ NULL, /* a597 */ NULL, /* a598 */ NULL, /* a599 */ NULL, /* a59a */ NULL, /* a59b */ NULL, /* a59c */ NULL, /* a59d */ NULL, /* a59e */ NULL, /* a59f */ NULL, /* a5a0 */ NULL, /* a5a1 */ NULL, /* a5a2 */ NULL, /* a5a3 */ NULL, /* a5a4 */ NULL, /* a5a5 */ NULL, /* a5a6 */ NULL, /* a5a7 */ NULL, /* a5a8 */ NULL, /* a5a9 */ NULL, /* a5aa */ NULL, /* a5ab */ NULL, /* a5ac */ NULL, /* a5ad */ NULL, /* a5ae */ NULL, /* a5af */ NULL, /* a5b0 */ NULL, /* a5b1 */ NULL, /* a5b2 */ NULL, /* a5b3 */ NULL, /* a5b4 */ NULL, /* a5b5 */ NULL, /* a5b6 */ NULL, /* a5b7 */ NULL, /* a5b8 */ NULL, /* a5b9 */ NULL, /* a5ba */ NULL, /* a5bb */ NULL, /* a5bc */ NULL, /* a5bd */ NULL, /* a5be */ NULL, /* a5bf */ NULL, /* a5c0 */ NULL, /* a5c1 */ NULL, /* a5c2 */ NULL, /* a5c3 */ NULL, /* a5c4 */ NULL, /* a5c5 */ NULL, /* a5c6 */ NULL, /* a5c7 */ NULL, /* a5c8 */ NULL, /* a5c9 */ NULL, /* a5ca */ NULL, /* a5cb */ NULL, /* a5cc */ NULL, /* a5cd */ NULL, /* a5ce */ NULL, /* a5cf */ NULL, /* a5d0 */ NULL, /* a5d1 */ NULL, /* a5d2 */ NULL, /* a5d3 */ NULL, /* a5d4 */ NULL, /* a5d5 */ NULL, /* a5d6 */ NULL, /* a5d7 */ NULL, /* a5d8 */ NULL, /* a5d9 */ NULL, /* a5da */ NULL, /* a5db */ NULL, /* a5dc */ NULL, /* a5dd */ NULL, /* a5de */ NULL, /* a5df */ NULL, /* a5e0 */ NULL, /* a5e1 */ NULL, /* a5e2 */ NULL, /* a5e3 */ NULL, /* a5e4 */ NULL, /* a5e5 */ NULL, /* a5e6 */ NULL, /* a5e7 */ NULL, /* a5e8 */ NULL, /* a5e9 */ NULL, /* a5ea */ NULL, /* a5eb */ NULL, /* a5ec */ NULL, /* a5ed */ NULL, /* a5ee */ NULL, /* a5ef */ NULL, /* a5f0 */ NULL, /* a5f1 */ NULL, /* a5f2 */ NULL, /* a5f3 */ NULL, /* a5f4 */ NULL, /* a5f5 */ NULL, /* a5f6 */ NULL, /* a5f7 */ NULL, /* a5f8 */ NULL, /* a5f9 */ NULL, /* a5fa */ NULL, /* a5fb */ NULL, /* a5fc */ NULL, /* a5fd */ NULL, /* a5fe */ NULL, /* a5ff */ NULL, /* a600 */ NULL, /* a601 */ NULL, /* a602 */ NULL, /* a603 */ NULL, /* a604 */ NULL, /* a605 */ NULL, /* a606 */ NULL, /* a607 */ NULL, /* a608 */ NULL, /* a609 */ NULL, /* a60a */ NULL, /* a60b */ NULL, /* a60c */ NULL, /* a60d */ NULL, /* a60e */ NULL, /* a60f */ NULL, /* a610 */ NULL, /* a611 */ NULL, /* a612 */ NULL, /* a613 */ NULL, /* a614 */ NULL, /* a615 */ NULL, /* a616 */ NULL, /* a617 */ NULL, /* a618 */ NULL, /* a619 */ NULL, /* a61a */ NULL, /* a61b */ NULL, /* a61c */ NULL, /* a61d */ NULL, /* a61e */ NULL, /* a61f */ NULL, /* a620 */ NULL, /* a621 */ NULL, /* a622 */ NULL, /* a623 */ NULL, /* a624 */ NULL, /* a625 */ NULL, /* a626 */ NULL, /* a627 */ NULL, /* a628 */ NULL, /* a629 */ NULL, /* a62a */ NULL, /* a62b */ NULL, /* a62c */ NULL, /* a62d */ NULL, /* a62e */ NULL, /* a62f */ NULL, /* a630 */ NULL, /* a631 */ NULL, /* a632 */ NULL, /* a633 */ NULL, /* a634 */ NULL, /* a635 */ NULL, /* a636 */ NULL, /* a637 */ NULL, /* a638 */ NULL, /* a639 */ NULL, /* a63a */ NULL, /* a63b */ NULL, /* a63c */ NULL, /* a63d */ NULL, /* a63e */ NULL, /* a63f */ NULL, /* a640 */ NULL, /* a641 */ NULL, /* a642 */ NULL, /* a643 */ NULL, /* a644 */ NULL, /* a645 */ NULL, /* a646 */ NULL, /* a647 */ NULL, /* a648 */ NULL, /* a649 */ NULL, /* a64a */ NULL, /* a64b */ NULL, /* a64c */ NULL, /* a64d */ NULL, /* a64e */ NULL, /* a64f */ NULL, /* a650 */ NULL, /* a651 */ NULL, /* a652 */ NULL, /* a653 */ NULL, /* a654 */ NULL, /* a655 */ NULL, /* a656 */ NULL, /* a657 */ NULL, /* a658 */ NULL, /* a659 */ NULL, /* a65a */ NULL, /* a65b */ NULL, /* a65c */ NULL, /* a65d */ NULL, /* a65e */ NULL, /* a65f */ NULL, /* a660 */ NULL, /* a661 */ NULL, /* a662 */ NULL, /* a663 */ NULL, /* a664 */ NULL, /* a665 */ NULL, /* a666 */ NULL, /* a667 */ NULL, /* a668 */ NULL, /* a669 */ NULL, /* a66a */ NULL, /* a66b */ NULL, /* a66c */ NULL, /* a66d */ NULL, /* a66e */ NULL, /* a66f */ NULL, /* a670 */ NULL, /* a671 */ NULL, /* a672 */ NULL, /* a673 */ NULL, /* a674 */ NULL, /* a675 */ NULL, /* a676 */ NULL, /* a677 */ NULL, /* a678 */ NULL, /* a679 */ NULL, /* a67a */ NULL, /* a67b */ NULL, /* a67c */ NULL, /* a67d */ NULL, /* a67e */ NULL, /* a67f */ NULL, /* a680 */ NULL, /* a681 */ NULL, /* a682 */ NULL, /* a683 */ NULL, /* a684 */ NULL, /* a685 */ NULL, /* a686 */ NULL, /* a687 */ NULL, /* a688 */ NULL, /* a689 */ NULL, /* a68a */ NULL, /* a68b */ NULL, /* a68c */ NULL, /* a68d */ NULL, /* a68e */ NULL, /* a68f */ NULL, /* a690 */ NULL, /* a691 */ NULL, /* a692 */ NULL, /* a693 */ NULL, /* a694 */ NULL, /* a695 */ NULL, /* a696 */ NULL, /* a697 */ NULL, /* a698 */ NULL, /* a699 */ NULL, /* a69a */ NULL, /* a69b */ NULL, /* a69c */ NULL, /* a69d */ NULL, /* a69e */ NULL, /* a69f */ NULL, /* a6a0 */ NULL, /* a6a1 */ NULL, /* a6a2 */ NULL, /* a6a3 */ NULL, /* a6a4 */ NULL, /* a6a5 */ NULL, /* a6a6 */ NULL, /* a6a7 */ NULL, /* a6a8 */ NULL, /* a6a9 */ NULL, /* a6aa */ NULL, /* a6ab */ NULL, /* a6ac */ NULL, /* a6ad */ NULL, /* a6ae */ NULL, /* a6af */ NULL, /* a6b0 */ NULL, /* a6b1 */ NULL, /* a6b2 */ NULL, /* a6b3 */ NULL, /* a6b4 */ NULL, /* a6b5 */ NULL, /* a6b6 */ NULL, /* a6b7 */ NULL, /* a6b8 */ NULL, /* a6b9 */ NULL, /* a6ba */ NULL, /* a6bb */ NULL, /* a6bc */ NULL, /* a6bd */ NULL, /* a6be */ NULL, /* a6bf */ NULL, /* a6c0 */ NULL, /* a6c1 */ NULL, /* a6c2 */ NULL, /* a6c3 */ NULL, /* a6c4 */ NULL, /* a6c5 */ NULL, /* a6c6 */ NULL, /* a6c7 */ NULL, /* a6c8 */ NULL, /* a6c9 */ NULL, /* a6ca */ NULL, /* a6cb */ NULL, /* a6cc */ NULL, /* a6cd */ NULL, /* a6ce */ NULL, /* a6cf */ NULL, /* a6d0 */ NULL, /* a6d1 */ NULL, /* a6d2 */ NULL, /* a6d3 */ NULL, /* a6d4 */ NULL, /* a6d5 */ NULL, /* a6d6 */ NULL, /* a6d7 */ NULL, /* a6d8 */ NULL, /* a6d9 */ NULL, /* a6da */ NULL, /* a6db */ NULL, /* a6dc */ NULL, /* a6dd */ NULL, /* a6de */ NULL, /* a6df */ NULL, /* a6e0 */ NULL, /* a6e1 */ NULL, /* a6e2 */ NULL, /* a6e3 */ NULL, /* a6e4 */ NULL, /* a6e5 */ NULL, /* a6e6 */ NULL, /* a6e7 */ NULL, /* a6e8 */ NULL, /* a6e9 */ NULL, /* a6ea */ NULL, /* a6eb */ NULL, /* a6ec */ NULL, /* a6ed */ NULL, /* a6ee */ NULL, /* a6ef */ NULL, /* a6f0 */ NULL, /* a6f1 */ NULL, /* a6f2 */ NULL, /* a6f3 */ NULL, /* a6f4 */ NULL, /* a6f5 */ NULL, /* a6f6 */ NULL, /* a6f7 */ NULL, /* a6f8 */ NULL, /* a6f9 */ NULL, /* a6fa */ NULL, /* a6fb */ NULL, /* a6fc */ NULL, /* a6fd */ NULL, /* a6fe */ NULL, /* a6ff */ NULL, /* a700 */ NULL, /* a701 */ NULL, /* a702 */ NULL, /* a703 */ NULL, /* a704 */ NULL, /* a705 */ NULL, /* a706 */ NULL, /* a707 */ NULL, /* a708 */ NULL, /* a709 */ NULL, /* a70a */ NULL, /* a70b */ NULL, /* a70c */ NULL, /* a70d */ NULL, /* a70e */ NULL, /* a70f */ NULL, /* a710 */ NULL, /* a711 */ NULL, /* a712 */ NULL, /* a713 */ NULL, /* a714 */ NULL, /* a715 */ NULL, /* a716 */ NULL, /* a717 */ NULL, /* a718 */ NULL, /* a719 */ NULL, /* a71a */ NULL, /* a71b */ NULL, /* a71c */ NULL, /* a71d */ NULL, /* a71e */ NULL, /* a71f */ NULL, /* a720 */ NULL, /* a721 */ NULL, /* a722 */ NULL, /* a723 */ NULL, /* a724 */ NULL, /* a725 */ NULL, /* a726 */ NULL, /* a727 */ NULL, /* a728 */ NULL, /* a729 */ NULL, /* a72a */ NULL, /* a72b */ NULL, /* a72c */ NULL, /* a72d */ NULL, /* a72e */ NULL, /* a72f */ NULL, /* a730 */ NULL, /* a731 */ NULL, /* a732 */ NULL, /* a733 */ NULL, /* a734 */ NULL, /* a735 */ NULL, /* a736 */ NULL, /* a737 */ NULL, /* a738 */ NULL, /* a739 */ NULL, /* a73a */ NULL, /* a73b */ NULL, /* a73c */ NULL, /* a73d */ NULL, /* a73e */ NULL, /* a73f */ NULL, /* a740 */ NULL, /* a741 */ NULL, /* a742 */ NULL, /* a743 */ NULL, /* a744 */ NULL, /* a745 */ NULL, /* a746 */ NULL, /* a747 */ NULL, /* a748 */ NULL, /* a749 */ NULL, /* a74a */ NULL, /* a74b */ NULL, /* a74c */ NULL, /* a74d */ NULL, /* a74e */ NULL, /* a74f */ NULL, /* a750 */ NULL, /* a751 */ NULL, /* a752 */ NULL, /* a753 */ NULL, /* a754 */ NULL, /* a755 */ NULL, /* a756 */ NULL, /* a757 */ NULL, /* a758 */ NULL, /* a759 */ NULL, /* a75a */ NULL, /* a75b */ NULL, /* a75c */ NULL, /* a75d */ NULL, /* a75e */ NULL, /* a75f */ NULL, /* a760 */ NULL, /* a761 */ NULL, /* a762 */ NULL, /* a763 */ NULL, /* a764 */ NULL, /* a765 */ NULL, /* a766 */ NULL, /* a767 */ NULL, /* a768 */ NULL, /* a769 */ NULL, /* a76a */ NULL, /* a76b */ NULL, /* a76c */ NULL, /* a76d */ NULL, /* a76e */ NULL, /* a76f */ NULL, /* a770 */ NULL, /* a771 */ NULL, /* a772 */ NULL, /* a773 */ NULL, /* a774 */ NULL, /* a775 */ NULL, /* a776 */ NULL, /* a777 */ NULL, /* a778 */ NULL, /* a779 */ NULL, /* a77a */ NULL, /* a77b */ NULL, /* a77c */ NULL, /* a77d */ NULL, /* a77e */ NULL, /* a77f */ NULL, /* a780 */ NULL, /* a781 */ NULL, /* a782 */ NULL, /* a783 */ NULL, /* a784 */ NULL, /* a785 */ NULL, /* a786 */ NULL, /* a787 */ NULL, /* a788 */ NULL, /* a789 */ NULL, /* a78a */ NULL, /* a78b */ NULL, /* a78c */ NULL, /* a78d */ NULL, /* a78e */ NULL, /* a78f */ NULL, /* a790 */ NULL, /* a791 */ NULL, /* a792 */ NULL, /* a793 */ NULL, /* a794 */ NULL, /* a795 */ NULL, /* a796 */ NULL, /* a797 */ NULL, /* a798 */ NULL, /* a799 */ NULL, /* a79a */ NULL, /* a79b */ NULL, /* a79c */ NULL, /* a79d */ NULL, /* a79e */ NULL, /* a79f */ NULL, /* a7a0 */ NULL, /* a7a1 */ NULL, /* a7a2 */ NULL, /* a7a3 */ NULL, /* a7a4 */ NULL, /* a7a5 */ NULL, /* a7a6 */ NULL, /* a7a7 */ NULL, /* a7a8 */ NULL, /* a7a9 */ NULL, /* a7aa */ NULL, /* a7ab */ NULL, /* a7ac */ NULL, /* a7ad */ NULL, /* a7ae */ NULL, /* a7af */ NULL, /* a7b0 */ NULL, /* a7b1 */ NULL, /* a7b2 */ NULL, /* a7b3 */ NULL, /* a7b4 */ NULL, /* a7b5 */ NULL, /* a7b6 */ NULL, /* a7b7 */ NULL, /* a7b8 */ NULL, /* a7b9 */ NULL, /* a7ba */ NULL, /* a7bb */ NULL, /* a7bc */ NULL, /* a7bd */ NULL, /* a7be */ NULL, /* a7bf */ NULL, /* a7c0 */ NULL, /* a7c1 */ NULL, /* a7c2 */ NULL, /* a7c3 */ NULL, /* a7c4 */ NULL, /* a7c5 */ NULL, /* a7c6 */ NULL, /* a7c7 */ NULL, /* a7c8 */ NULL, /* a7c9 */ NULL, /* a7ca */ NULL, /* a7cb */ NULL, /* a7cc */ NULL, /* a7cd */ NULL, /* a7ce */ NULL, /* a7cf */ NULL, /* a7d0 */ NULL, /* a7d1 */ NULL, /* a7d2 */ NULL, /* a7d3 */ NULL, /* a7d4 */ NULL, /* a7d5 */ NULL, /* a7d6 */ NULL, /* a7d7 */ NULL, /* a7d8 */ NULL, /* a7d9 */ NULL, /* a7da */ NULL, /* a7db */ NULL, /* a7dc */ NULL, /* a7dd */ NULL, /* a7de */ NULL, /* a7df */ NULL, /* a7e0 */ NULL, /* a7e1 */ NULL, /* a7e2 */ NULL, /* a7e3 */ NULL, /* a7e4 */ NULL, /* a7e5 */ NULL, /* a7e6 */ NULL, /* a7e7 */ NULL, /* a7e8 */ NULL, /* a7e9 */ NULL, /* a7ea */ NULL, /* a7eb */ NULL, /* a7ec */ NULL, /* a7ed */ NULL, /* a7ee */ NULL, /* a7ef */ NULL, /* a7f0 */ NULL, /* a7f1 */ NULL, /* a7f2 */ NULL, /* a7f3 */ NULL, /* a7f4 */ NULL, /* a7f5 */ NULL, /* a7f6 */ NULL, /* a7f7 */ NULL, /* a7f8 */ NULL, /* a7f9 */ NULL, /* a7fa */ NULL, /* a7fb */ NULL, /* a7fc */ NULL, /* a7fd */ NULL, /* a7fe */ NULL, /* a7ff */ NULL, /* a800 */ NULL, /* a801 */ NULL, /* a802 */ NULL, /* a803 */ NULL, /* a804 */ NULL, /* a805 */ NULL, /* a806 */ NULL, /* a807 */ NULL, /* a808 */ NULL, /* a809 */ NULL, /* a80a */ NULL, /* a80b */ NULL, /* a80c */ NULL, /* a80d */ NULL, /* a80e */ NULL, /* a80f */ NULL, /* a810 */ NULL, /* a811 */ NULL, /* a812 */ NULL, /* a813 */ NULL, /* a814 */ NULL, /* a815 */ NULL, /* a816 */ NULL, /* a817 */ NULL, /* a818 */ NULL, /* a819 */ NULL, /* a81a */ NULL, /* a81b */ NULL, /* a81c */ NULL, /* a81d */ NULL, /* a81e */ NULL, /* a81f */ NULL, /* a820 */ NULL, /* a821 */ NULL, /* a822 */ NULL, /* a823 */ NULL, /* a824 */ NULL, /* a825 */ NULL, /* a826 */ NULL, /* a827 */ NULL, /* a828 */ NULL, /* a829 */ NULL, /* a82a */ NULL, /* a82b */ NULL, /* a82c */ NULL, /* a82d */ NULL, /* a82e */ NULL, /* a82f */ NULL, /* a830 */ NULL, /* a831 */ NULL, /* a832 */ NULL, /* a833 */ NULL, /* a834 */ NULL, /* a835 */ NULL, /* a836 */ NULL, /* a837 */ NULL, /* a838 */ NULL, /* a839 */ NULL, /* a83a */ NULL, /* a83b */ NULL, /* a83c */ NULL, /* a83d */ NULL, /* a83e */ NULL, /* a83f */ NULL, /* a840 */ NULL, /* a841 */ NULL, /* a842 */ NULL, /* a843 */ NULL, /* a844 */ NULL, /* a845 */ NULL, /* a846 */ NULL, /* a847 */ NULL, /* a848 */ NULL, /* a849 */ NULL, /* a84a */ NULL, /* a84b */ NULL, /* a84c */ NULL, /* a84d */ NULL, /* a84e */ NULL, /* a84f */ NULL, /* a850 */ NULL, /* a851 */ NULL, /* a852 */ NULL, /* a853 */ NULL, /* a854 */ NULL, /* a855 */ NULL, /* a856 */ NULL, /* a857 */ NULL, /* a858 */ NULL, /* a859 */ NULL, /* a85a */ NULL, /* a85b */ NULL, /* a85c */ NULL, /* a85d */ NULL, /* a85e */ NULL, /* a85f */ NULL, /* a860 */ NULL, /* a861 */ NULL, /* a862 */ NULL, /* a863 */ NULL, /* a864 */ NULL, /* a865 */ NULL, /* a866 */ NULL, /* a867 */ NULL, /* a868 */ NULL, /* a869 */ NULL, /* a86a */ NULL, /* a86b */ NULL, /* a86c */ NULL, /* a86d */ NULL, /* a86e */ NULL, /* a86f */ NULL, /* a870 */ NULL, /* a871 */ NULL, /* a872 */ NULL, /* a873 */ NULL, /* a874 */ NULL, /* a875 */ NULL, /* a876 */ NULL, /* a877 */ NULL, /* a878 */ NULL, /* a879 */ NULL, /* a87a */ NULL, /* a87b */ NULL, /* a87c */ NULL, /* a87d */ NULL, /* a87e */ NULL, /* a87f */ NULL, /* a880 */ NULL, /* a881 */ NULL, /* a882 */ NULL, /* a883 */ NULL, /* a884 */ NULL, /* a885 */ NULL, /* a886 */ NULL, /* a887 */ NULL, /* a888 */ NULL, /* a889 */ NULL, /* a88a */ NULL, /* a88b */ NULL, /* a88c */ NULL, /* a88d */ NULL, /* a88e */ NULL, /* a88f */ NULL, /* a890 */ NULL, /* a891 */ NULL, /* a892 */ NULL, /* a893 */ NULL, /* a894 */ NULL, /* a895 */ NULL, /* a896 */ NULL, /* a897 */ NULL, /* a898 */ NULL, /* a899 */ NULL, /* a89a */ NULL, /* a89b */ NULL, /* a89c */ NULL, /* a89d */ NULL, /* a89e */ NULL, /* a89f */ NULL, /* a8a0 */ NULL, /* a8a1 */ NULL, /* a8a2 */ NULL, /* a8a3 */ NULL, /* a8a4 */ NULL, /* a8a5 */ NULL, /* a8a6 */ NULL, /* a8a7 */ NULL, /* a8a8 */ NULL, /* a8a9 */ NULL, /* a8aa */ NULL, /* a8ab */ NULL, /* a8ac */ NULL, /* a8ad */ NULL, /* a8ae */ NULL, /* a8af */ NULL, /* a8b0 */ NULL, /* a8b1 */ NULL, /* a8b2 */ NULL, /* a8b3 */ NULL, /* a8b4 */ NULL, /* a8b5 */ NULL, /* a8b6 */ NULL, /* a8b7 */ NULL, /* a8b8 */ NULL, /* a8b9 */ NULL, /* a8ba */ NULL, /* a8bb */ NULL, /* a8bc */ NULL, /* a8bd */ NULL, /* a8be */ NULL, /* a8bf */ NULL, /* a8c0 */ NULL, /* a8c1 */ NULL, /* a8c2 */ NULL, /* a8c3 */ NULL, /* a8c4 */ NULL, /* a8c5 */ NULL, /* a8c6 */ NULL, /* a8c7 */ NULL, /* a8c8 */ NULL, /* a8c9 */ NULL, /* a8ca */ NULL, /* a8cb */ NULL, /* a8cc */ NULL, /* a8cd */ NULL, /* a8ce */ NULL, /* a8cf */ NULL, /* a8d0 */ NULL, /* a8d1 */ NULL, /* a8d2 */ NULL, /* a8d3 */ NULL, /* a8d4 */ NULL, /* a8d5 */ NULL, /* a8d6 */ NULL, /* a8d7 */ NULL, /* a8d8 */ NULL, /* a8d9 */ NULL, /* a8da */ NULL, /* a8db */ NULL, /* a8dc */ NULL, /* a8dd */ NULL, /* a8de */ NULL, /* a8df */ NULL, /* a8e0 */ NULL, /* a8e1 */ NULL, /* a8e2 */ NULL, /* a8e3 */ NULL, /* a8e4 */ NULL, /* a8e5 */ NULL, /* a8e6 */ NULL, /* a8e7 */ NULL, /* a8e8 */ NULL, /* a8e9 */ NULL, /* a8ea */ NULL, /* a8eb */ NULL, /* a8ec */ NULL, /* a8ed */ NULL, /* a8ee */ NULL, /* a8ef */ NULL, /* a8f0 */ NULL, /* a8f1 */ NULL, /* a8f2 */ NULL, /* a8f3 */ NULL, /* a8f4 */ NULL, /* a8f5 */ NULL, /* a8f6 */ NULL, /* a8f7 */ NULL, /* a8f8 */ NULL, /* a8f9 */ NULL, /* a8fa */ NULL, /* a8fb */ NULL, /* a8fc */ NULL, /* a8fd */ NULL, /* a8fe */ NULL, /* a8ff */ NULL, /* a900 */ NULL, /* a901 */ NULL, /* a902 */ NULL, /* a903 */ NULL, /* a904 */ NULL, /* a905 */ NULL, /* a906 */ NULL, /* a907 */ NULL, /* a908 */ NULL, /* a909 */ NULL, /* a90a */ NULL, /* a90b */ NULL, /* a90c */ NULL, /* a90d */ NULL, /* a90e */ NULL, /* a90f */ NULL, /* a910 */ NULL, /* a911 */ NULL, /* a912 */ NULL, /* a913 */ NULL, /* a914 */ NULL, /* a915 */ NULL, /* a916 */ NULL, /* a917 */ NULL, /* a918 */ NULL, /* a919 */ NULL, /* a91a */ NULL, /* a91b */ NULL, /* a91c */ NULL, /* a91d */ NULL, /* a91e */ NULL, /* a91f */ NULL, /* a920 */ NULL, /* a921 */ NULL, /* a922 */ NULL, /* a923 */ NULL, /* a924 */ NULL, /* a925 */ NULL, /* a926 */ NULL, /* a927 */ NULL, /* a928 */ NULL, /* a929 */ NULL, /* a92a */ NULL, /* a92b */ NULL, /* a92c */ NULL, /* a92d */ NULL, /* a92e */ NULL, /* a92f */ NULL, /* a930 */ NULL, /* a931 */ NULL, /* a932 */ NULL, /* a933 */ NULL, /* a934 */ NULL, /* a935 */ NULL, /* a936 */ NULL, /* a937 */ NULL, /* a938 */ NULL, /* a939 */ NULL, /* a93a */ NULL, /* a93b */ NULL, /* a93c */ NULL, /* a93d */ NULL, /* a93e */ NULL, /* a93f */ NULL, /* a940 */ NULL, /* a941 */ NULL, /* a942 */ NULL, /* a943 */ NULL, /* a944 */ NULL, /* a945 */ NULL, /* a946 */ NULL, /* a947 */ NULL, /* a948 */ NULL, /* a949 */ NULL, /* a94a */ NULL, /* a94b */ NULL, /* a94c */ NULL, /* a94d */ NULL, /* a94e */ NULL, /* a94f */ NULL, /* a950 */ NULL, /* a951 */ NULL, /* a952 */ NULL, /* a953 */ NULL, /* a954 */ NULL, /* a955 */ NULL, /* a956 */ NULL, /* a957 */ NULL, /* a958 */ NULL, /* a959 */ NULL, /* a95a */ NULL, /* a95b */ NULL, /* a95c */ NULL, /* a95d */ NULL, /* a95e */ NULL, /* a95f */ NULL, /* a960 */ NULL, /* a961 */ NULL, /* a962 */ NULL, /* a963 */ NULL, /* a964 */ NULL, /* a965 */ NULL, /* a966 */ NULL, /* a967 */ NULL, /* a968 */ NULL, /* a969 */ NULL, /* a96a */ NULL, /* a96b */ NULL, /* a96c */ NULL, /* a96d */ NULL, /* a96e */ NULL, /* a96f */ NULL, /* a970 */ NULL, /* a971 */ NULL, /* a972 */ NULL, /* a973 */ NULL, /* a974 */ NULL, /* a975 */ NULL, /* a976 */ NULL, /* a977 */ NULL, /* a978 */ NULL, /* a979 */ NULL, /* a97a */ NULL, /* a97b */ NULL, /* a97c */ NULL, /* a97d */ NULL, /* a97e */ NULL, /* a97f */ NULL, /* a980 */ NULL, /* a981 */ NULL, /* a982 */ NULL, /* a983 */ NULL, /* a984 */ NULL, /* a985 */ NULL, /* a986 */ NULL, /* a987 */ NULL, /* a988 */ NULL, /* a989 */ NULL, /* a98a */ NULL, /* a98b */ NULL, /* a98c */ NULL, /* a98d */ NULL, /* a98e */ NULL, /* a98f */ NULL, /* a990 */ NULL, /* a991 */ NULL, /* a992 */ NULL, /* a993 */ NULL, /* a994 */ NULL, /* a995 */ NULL, /* a996 */ NULL, /* a997 */ NULL, /* a998 */ NULL, /* a999 */ NULL, /* a99a */ NULL, /* a99b */ NULL, /* a99c */ NULL, /* a99d */ NULL, /* a99e */ NULL, /* a99f */ NULL, /* a9a0 */ NULL, /* a9a1 */ NULL, /* a9a2 */ NULL, /* a9a3 */ NULL, /* a9a4 */ NULL, /* a9a5 */ NULL, /* a9a6 */ NULL, /* a9a7 */ NULL, /* a9a8 */ NULL, /* a9a9 */ NULL, /* a9aa */ NULL, /* a9ab */ NULL, /* a9ac */ NULL, /* a9ad */ NULL, /* a9ae */ NULL, /* a9af */ NULL, /* a9b0 */ NULL, /* a9b1 */ NULL, /* a9b2 */ NULL, /* a9b3 */ NULL, /* a9b4 */ NULL, /* a9b5 */ NULL, /* a9b6 */ NULL, /* a9b7 */ NULL, /* a9b8 */ NULL, /* a9b9 */ NULL, /* a9ba */ NULL, /* a9bb */ NULL, /* a9bc */ NULL, /* a9bd */ NULL, /* a9be */ NULL, /* a9bf */ NULL, /* a9c0 */ NULL, /* a9c1 */ NULL, /* a9c2 */ NULL, /* a9c3 */ NULL, /* a9c4 */ NULL, /* a9c5 */ NULL, /* a9c6 */ NULL, /* a9c7 */ NULL, /* a9c8 */ NULL, /* a9c9 */ NULL, /* a9ca */ NULL, /* a9cb */ NULL, /* a9cc */ NULL, /* a9cd */ NULL, /* a9ce */ NULL, /* a9cf */ NULL, /* a9d0 */ NULL, /* a9d1 */ NULL, /* a9d2 */ NULL, /* a9d3 */ NULL, /* a9d4 */ NULL, /* a9d5 */ NULL, /* a9d6 */ NULL, /* a9d7 */ NULL, /* a9d8 */ NULL, /* a9d9 */ NULL, /* a9da */ NULL, /* a9db */ NULL, /* a9dc */ NULL, /* a9dd */ NULL, /* a9de */ NULL, /* a9df */ NULL, /* a9e0 */ NULL, /* a9e1 */ NULL, /* a9e2 */ NULL, /* a9e3 */ NULL, /* a9e4 */ NULL, /* a9e5 */ NULL, /* a9e6 */ NULL, /* a9e7 */ NULL, /* a9e8 */ NULL, /* a9e9 */ NULL, /* a9ea */ NULL, /* a9eb */ NULL, /* a9ec */ NULL, /* a9ed */ NULL, /* a9ee */ NULL, /* a9ef */ NULL, /* a9f0 */ NULL, /* a9f1 */ NULL, /* a9f2 */ NULL, /* a9f3 */ NULL, /* a9f4 */ NULL, /* a9f5 */ NULL, /* a9f6 */ NULL, /* a9f7 */ NULL, /* a9f8 */ NULL, /* a9f9 */ NULL, /* a9fa */ NULL, /* a9fb */ NULL, /* a9fc */ NULL, /* a9fd */ NULL, /* a9fe */ NULL, /* a9ff */ NULL, /* aa00 */ NULL, /* aa01 */ NULL, /* aa02 */ NULL, /* aa03 */ NULL, /* aa04 */ NULL, /* aa05 */ NULL, /* aa06 */ NULL, /* aa07 */ NULL, /* aa08 */ NULL, /* aa09 */ NULL, /* aa0a */ NULL, /* aa0b */ NULL, /* aa0c */ NULL, /* aa0d */ NULL, /* aa0e */ NULL, /* aa0f */ NULL, /* aa10 */ NULL, /* aa11 */ NULL, /* aa12 */ NULL, /* aa13 */ NULL, /* aa14 */ NULL, /* aa15 */ NULL, /* aa16 */ NULL, /* aa17 */ NULL, /* aa18 */ NULL, /* aa19 */ NULL, /* aa1a */ NULL, /* aa1b */ NULL, /* aa1c */ NULL, /* aa1d */ NULL, /* aa1e */ NULL, /* aa1f */ NULL, /* aa20 */ NULL, /* aa21 */ NULL, /* aa22 */ NULL, /* aa23 */ NULL, /* aa24 */ NULL, /* aa25 */ NULL, /* aa26 */ NULL, /* aa27 */ NULL, /* aa28 */ NULL, /* aa29 */ NULL, /* aa2a */ NULL, /* aa2b */ NULL, /* aa2c */ NULL, /* aa2d */ NULL, /* aa2e */ NULL, /* aa2f */ NULL, /* aa30 */ NULL, /* aa31 */ NULL, /* aa32 */ NULL, /* aa33 */ NULL, /* aa34 */ NULL, /* aa35 */ NULL, /* aa36 */ NULL, /* aa37 */ NULL, /* aa38 */ NULL, /* aa39 */ NULL, /* aa3a */ NULL, /* aa3b */ NULL, /* aa3c */ NULL, /* aa3d */ NULL, /* aa3e */ NULL, /* aa3f */ NULL, /* aa40 */ NULL, /* aa41 */ NULL, /* aa42 */ NULL, /* aa43 */ NULL, /* aa44 */ NULL, /* aa45 */ NULL, /* aa46 */ NULL, /* aa47 */ NULL, /* aa48 */ NULL, /* aa49 */ NULL, /* aa4a */ NULL, /* aa4b */ NULL, /* aa4c */ NULL, /* aa4d */ NULL, /* aa4e */ NULL, /* aa4f */ NULL, /* aa50 */ NULL, /* aa51 */ NULL, /* aa52 */ NULL, /* aa53 */ NULL, /* aa54 */ NULL, /* aa55 */ NULL, /* aa56 */ NULL, /* aa57 */ NULL, /* aa58 */ NULL, /* aa59 */ NULL, /* aa5a */ NULL, /* aa5b */ NULL, /* aa5c */ NULL, /* aa5d */ NULL, /* aa5e */ NULL, /* aa5f */ NULL, /* aa60 */ NULL, /* aa61 */ NULL, /* aa62 */ NULL, /* aa63 */ NULL, /* aa64 */ NULL, /* aa65 */ NULL, /* aa66 */ NULL, /* aa67 */ NULL, /* aa68 */ NULL, /* aa69 */ NULL, /* aa6a */ NULL, /* aa6b */ NULL, /* aa6c */ NULL, /* aa6d */ NULL, /* aa6e */ NULL, /* aa6f */ NULL, /* aa70 */ NULL, /* aa71 */ NULL, /* aa72 */ NULL, /* aa73 */ NULL, /* aa74 */ NULL, /* aa75 */ NULL, /* aa76 */ NULL, /* aa77 */ NULL, /* aa78 */ NULL, /* aa79 */ NULL, /* aa7a */ NULL, /* aa7b */ NULL, /* aa7c */ NULL, /* aa7d */ NULL, /* aa7e */ NULL, /* aa7f */ NULL, /* aa80 */ NULL, /* aa81 */ NULL, /* aa82 */ NULL, /* aa83 */ NULL, /* aa84 */ NULL, /* aa85 */ NULL, /* aa86 */ NULL, /* aa87 */ NULL, /* aa88 */ NULL, /* aa89 */ NULL, /* aa8a */ NULL, /* aa8b */ NULL, /* aa8c */ NULL, /* aa8d */ NULL, /* aa8e */ NULL, /* aa8f */ NULL, /* aa90 */ NULL, /* aa91 */ NULL, /* aa92 */ NULL, /* aa93 */ NULL, /* aa94 */ NULL, /* aa95 */ NULL, /* aa96 */ NULL, /* aa97 */ NULL, /* aa98 */ NULL, /* aa99 */ NULL, /* aa9a */ NULL, /* aa9b */ NULL, /* aa9c */ NULL, /* aa9d */ NULL, /* aa9e */ NULL, /* aa9f */ NULL, /* aaa0 */ NULL, /* aaa1 */ NULL, /* aaa2 */ NULL, /* aaa3 */ NULL, /* aaa4 */ NULL, /* aaa5 */ NULL, /* aaa6 */ NULL, /* aaa7 */ NULL, /* aaa8 */ NULL, /* aaa9 */ NULL, /* aaaa */ NULL, /* aaab */ NULL, /* aaac */ NULL, /* aaad */ NULL, /* aaae */ NULL, /* aaaf */ NULL, /* aab0 */ NULL, /* aab1 */ NULL, /* aab2 */ NULL, /* aab3 */ NULL, /* aab4 */ NULL, /* aab5 */ NULL, /* aab6 */ NULL, /* aab7 */ NULL, /* aab8 */ NULL, /* aab9 */ NULL, /* aaba */ NULL, /* aabb */ NULL, /* aabc */ NULL, /* aabd */ NULL, /* aabe */ NULL, /* aabf */ NULL, /* aac0 */ NULL, /* aac1 */ NULL, /* aac2 */ NULL, /* aac3 */ NULL, /* aac4 */ NULL, /* aac5 */ NULL, /* aac6 */ NULL, /* aac7 */ NULL, /* aac8 */ NULL, /* aac9 */ NULL, /* aaca */ NULL, /* aacb */ NULL, /* aacc */ NULL, /* aacd */ NULL, /* aace */ NULL, /* aacf */ NULL, /* aad0 */ NULL, /* aad1 */ NULL, /* aad2 */ NULL, /* aad3 */ NULL, /* aad4 */ NULL, /* aad5 */ NULL, /* aad6 */ NULL, /* aad7 */ NULL, /* aad8 */ NULL, /* aad9 */ NULL, /* aada */ NULL, /* aadb */ NULL, /* aadc */ NULL, /* aadd */ NULL, /* aade */ NULL, /* aadf */ NULL, /* aae0 */ NULL, /* aae1 */ NULL, /* aae2 */ NULL, /* aae3 */ NULL, /* aae4 */ NULL, /* aae5 */ NULL, /* aae6 */ NULL, /* aae7 */ NULL, /* aae8 */ NULL, /* aae9 */ NULL, /* aaea */ NULL, /* aaeb */ NULL, /* aaec */ NULL, /* aaed */ NULL, /* aaee */ NULL, /* aaef */ NULL, /* aaf0 */ NULL, /* aaf1 */ NULL, /* aaf2 */ NULL, /* aaf3 */ NULL, /* aaf4 */ NULL, /* aaf5 */ NULL, /* aaf6 */ NULL, /* aaf7 */ NULL, /* aaf8 */ NULL, /* aaf9 */ NULL, /* aafa */ NULL, /* aafb */ NULL, /* aafc */ NULL, /* aafd */ NULL, /* aafe */ NULL, /* aaff */ NULL, /* ab00 */ NULL, /* ab01 */ NULL, /* ab02 */ NULL, /* ab03 */ NULL, /* ab04 */ NULL, /* ab05 */ NULL, /* ab06 */ NULL, /* ab07 */ NULL, /* ab08 */ NULL, /* ab09 */ NULL, /* ab0a */ NULL, /* ab0b */ NULL, /* ab0c */ NULL, /* ab0d */ NULL, /* ab0e */ NULL, /* ab0f */ NULL, /* ab10 */ NULL, /* ab11 */ NULL, /* ab12 */ NULL, /* ab13 */ NULL, /* ab14 */ NULL, /* ab15 */ NULL, /* ab16 */ NULL, /* ab17 */ NULL, /* ab18 */ NULL, /* ab19 */ NULL, /* ab1a */ NULL, /* ab1b */ NULL, /* ab1c */ NULL, /* ab1d */ NULL, /* ab1e */ NULL, /* ab1f */ NULL, /* ab20 */ NULL, /* ab21 */ NULL, /* ab22 */ NULL, /* ab23 */ NULL, /* ab24 */ NULL, /* ab25 */ NULL, /* ab26 */ NULL, /* ab27 */ NULL, /* ab28 */ NULL, /* ab29 */ NULL, /* ab2a */ NULL, /* ab2b */ NULL, /* ab2c */ NULL, /* ab2d */ NULL, /* ab2e */ NULL, /* ab2f */ NULL, /* ab30 */ NULL, /* ab31 */ NULL, /* ab32 */ NULL, /* ab33 */ NULL, /* ab34 */ NULL, /* ab35 */ NULL, /* ab36 */ NULL, /* ab37 */ NULL, /* ab38 */ NULL, /* ab39 */ NULL, /* ab3a */ NULL, /* ab3b */ NULL, /* ab3c */ NULL, /* ab3d */ NULL, /* ab3e */ NULL, /* ab3f */ NULL, /* ab40 */ NULL, /* ab41 */ NULL, /* ab42 */ NULL, /* ab43 */ NULL, /* ab44 */ NULL, /* ab45 */ NULL, /* ab46 */ NULL, /* ab47 */ NULL, /* ab48 */ NULL, /* ab49 */ NULL, /* ab4a */ NULL, /* ab4b */ NULL, /* ab4c */ NULL, /* ab4d */ NULL, /* ab4e */ NULL, /* ab4f */ NULL, /* ab50 */ NULL, /* ab51 */ NULL, /* ab52 */ NULL, /* ab53 */ NULL, /* ab54 */ NULL, /* ab55 */ NULL, /* ab56 */ NULL, /* ab57 */ NULL, /* ab58 */ NULL, /* ab59 */ NULL, /* ab5a */ NULL, /* ab5b */ NULL, /* ab5c */ NULL, /* ab5d */ NULL, /* ab5e */ NULL, /* ab5f */ NULL, /* ab60 */ NULL, /* ab61 */ NULL, /* ab62 */ NULL, /* ab63 */ NULL, /* ab64 */ NULL, /* ab65 */ NULL, /* ab66 */ NULL, /* ab67 */ NULL, /* ab68 */ NULL, /* ab69 */ NULL, /* ab6a */ NULL, /* ab6b */ NULL, /* ab6c */ NULL, /* ab6d */ NULL, /* ab6e */ NULL, /* ab6f */ NULL, /* ab70 */ NULL, /* ab71 */ NULL, /* ab72 */ NULL, /* ab73 */ NULL, /* ab74 */ NULL, /* ab75 */ NULL, /* ab76 */ NULL, /* ab77 */ NULL, /* ab78 */ NULL, /* ab79 */ NULL, /* ab7a */ NULL, /* ab7b */ NULL, /* ab7c */ NULL, /* ab7d */ NULL, /* ab7e */ NULL, /* ab7f */ NULL, /* ab80 */ NULL, /* ab81 */ NULL, /* ab82 */ NULL, /* ab83 */ NULL, /* ab84 */ NULL, /* ab85 */ NULL, /* ab86 */ NULL, /* ab87 */ NULL, /* ab88 */ NULL, /* ab89 */ NULL, /* ab8a */ NULL, /* ab8b */ NULL, /* ab8c */ NULL, /* ab8d */ NULL, /* ab8e */ NULL, /* ab8f */ NULL, /* ab90 */ NULL, /* ab91 */ NULL, /* ab92 */ NULL, /* ab93 */ NULL, /* ab94 */ NULL, /* ab95 */ NULL, /* ab96 */ NULL, /* ab97 */ NULL, /* ab98 */ NULL, /* ab99 */ NULL, /* ab9a */ NULL, /* ab9b */ NULL, /* ab9c */ NULL, /* ab9d */ NULL, /* ab9e */ NULL, /* ab9f */ NULL, /* aba0 */ NULL, /* aba1 */ NULL, /* aba2 */ NULL, /* aba3 */ NULL, /* aba4 */ NULL, /* aba5 */ NULL, /* aba6 */ NULL, /* aba7 */ NULL, /* aba8 */ NULL, /* aba9 */ NULL, /* abaa */ NULL, /* abab */ NULL, /* abac */ NULL, /* abad */ NULL, /* abae */ NULL, /* abaf */ NULL, /* abb0 */ NULL, /* abb1 */ NULL, /* abb2 */ NULL, /* abb3 */ NULL, /* abb4 */ NULL, /* abb5 */ NULL, /* abb6 */ NULL, /* abb7 */ NULL, /* abb8 */ NULL, /* abb9 */ NULL, /* abba */ NULL, /* abbb */ NULL, /* abbc */ NULL, /* abbd */ NULL, /* abbe */ NULL, /* abbf */ NULL, /* abc0 */ NULL, /* abc1 */ NULL, /* abc2 */ NULL, /* abc3 */ NULL, /* abc4 */ NULL, /* abc5 */ NULL, /* abc6 */ NULL, /* abc7 */ NULL, /* abc8 */ NULL, /* abc9 */ NULL, /* abca */ NULL, /* abcb */ NULL, /* abcc */ NULL, /* abcd */ NULL, /* abce */ NULL, /* abcf */ NULL, /* abd0 */ NULL, /* abd1 */ NULL, /* abd2 */ NULL, /* abd3 */ NULL, /* abd4 */ NULL, /* abd5 */ NULL, /* abd6 */ NULL, /* abd7 */ NULL, /* abd8 */ NULL, /* abd9 */ NULL, /* abda */ NULL, /* abdb */ NULL, /* abdc */ NULL, /* abdd */ NULL, /* abde */ NULL, /* abdf */ NULL, /* abe0 */ NULL, /* abe1 */ NULL, /* abe2 */ NULL, /* abe3 */ NULL, /* abe4 */ NULL, /* abe5 */ NULL, /* abe6 */ NULL, /* abe7 */ NULL, /* abe8 */ NULL, /* abe9 */ NULL, /* abea */ NULL, /* abeb */ NULL, /* abec */ NULL, /* abed */ NULL, /* abee */ NULL, /* abef */ NULL, /* abf0 */ NULL, /* abf1 */ NULL, /* abf2 */ NULL, /* abf3 */ NULL, /* abf4 */ NULL, /* abf5 */ NULL, /* abf6 */ NULL, /* abf7 */ NULL, /* abf8 */ NULL, /* abf9 */ NULL, /* abfa */ NULL, /* abfb */ NULL, /* abfc */ NULL, /* abfd */ NULL, /* abfe */ NULL, /* abff */ NULL, /* ac00 */ NULL, /* ac01 */ NULL, /* ac02 */ NULL, /* ac03 */ NULL, /* ac04 */ NULL, /* ac05 */ NULL, /* ac06 */ NULL, /* ac07 */ NULL, /* ac08 */ NULL, /* ac09 */ NULL, /* ac0a */ NULL, /* ac0b */ NULL, /* ac0c */ NULL, /* ac0d */ NULL, /* ac0e */ NULL, /* ac0f */ NULL, /* ac10 */ NULL, /* ac11 */ NULL, /* ac12 */ NULL, /* ac13 */ NULL, /* ac14 */ NULL, /* ac15 */ NULL, /* ac16 */ NULL, /* ac17 */ NULL, /* ac18 */ NULL, /* ac19 */ NULL, /* ac1a */ NULL, /* ac1b */ NULL, /* ac1c */ NULL, /* ac1d */ NULL, /* ac1e */ NULL, /* ac1f */ NULL, /* ac20 */ NULL, /* ac21 */ NULL, /* ac22 */ NULL, /* ac23 */ NULL, /* ac24 */ NULL, /* ac25 */ NULL, /* ac26 */ NULL, /* ac27 */ NULL, /* ac28 */ NULL, /* ac29 */ NULL, /* ac2a */ NULL, /* ac2b */ NULL, /* ac2c */ NULL, /* ac2d */ NULL, /* ac2e */ NULL, /* ac2f */ NULL, /* ac30 */ NULL, /* ac31 */ NULL, /* ac32 */ NULL, /* ac33 */ NULL, /* ac34 */ NULL, /* ac35 */ NULL, /* ac36 */ NULL, /* ac37 */ NULL, /* ac38 */ NULL, /* ac39 */ NULL, /* ac3a */ NULL, /* ac3b */ NULL, /* ac3c */ NULL, /* ac3d */ NULL, /* ac3e */ NULL, /* ac3f */ NULL, /* ac40 */ NULL, /* ac41 */ NULL, /* ac42 */ NULL, /* ac43 */ NULL, /* ac44 */ NULL, /* ac45 */ NULL, /* ac46 */ NULL, /* ac47 */ NULL, /* ac48 */ NULL, /* ac49 */ NULL, /* ac4a */ NULL, /* ac4b */ NULL, /* ac4c */ NULL, /* ac4d */ NULL, /* ac4e */ NULL, /* ac4f */ NULL, /* ac50 */ NULL, /* ac51 */ NULL, /* ac52 */ NULL, /* ac53 */ NULL, /* ac54 */ NULL, /* ac55 */ NULL, /* ac56 */ NULL, /* ac57 */ NULL, /* ac58 */ NULL, /* ac59 */ NULL, /* ac5a */ NULL, /* ac5b */ NULL, /* ac5c */ NULL, /* ac5d */ NULL, /* ac5e */ NULL, /* ac5f */ NULL, /* ac60 */ NULL, /* ac61 */ NULL, /* ac62 */ NULL, /* ac63 */ NULL, /* ac64 */ NULL, /* ac65 */ NULL, /* ac66 */ NULL, /* ac67 */ NULL, /* ac68 */ NULL, /* ac69 */ NULL, /* ac6a */ NULL, /* ac6b */ NULL, /* ac6c */ NULL, /* ac6d */ NULL, /* ac6e */ NULL, /* ac6f */ NULL, /* ac70 */ NULL, /* ac71 */ NULL, /* ac72 */ NULL, /* ac73 */ NULL, /* ac74 */ NULL, /* ac75 */ NULL, /* ac76 */ NULL, /* ac77 */ NULL, /* ac78 */ NULL, /* ac79 */ NULL, /* ac7a */ NULL, /* ac7b */ NULL, /* ac7c */ NULL, /* ac7d */ NULL, /* ac7e */ NULL, /* ac7f */ NULL, /* ac80 */ NULL, /* ac81 */ NULL, /* ac82 */ NULL, /* ac83 */ NULL, /* ac84 */ NULL, /* ac85 */ NULL, /* ac86 */ NULL, /* ac87 */ NULL, /* ac88 */ NULL, /* ac89 */ NULL, /* ac8a */ NULL, /* ac8b */ NULL, /* ac8c */ NULL, /* ac8d */ NULL, /* ac8e */ NULL, /* ac8f */ NULL, /* ac90 */ NULL, /* ac91 */ NULL, /* ac92 */ NULL, /* ac93 */ NULL, /* ac94 */ NULL, /* ac95 */ NULL, /* ac96 */ NULL, /* ac97 */ NULL, /* ac98 */ NULL, /* ac99 */ NULL, /* ac9a */ NULL, /* ac9b */ NULL, /* ac9c */ NULL, /* ac9d */ NULL, /* ac9e */ NULL, /* ac9f */ NULL, /* aca0 */ NULL, /* aca1 */ NULL, /* aca2 */ NULL, /* aca3 */ NULL, /* aca4 */ NULL, /* aca5 */ NULL, /* aca6 */ NULL, /* aca7 */ NULL, /* aca8 */ NULL, /* aca9 */ NULL, /* acaa */ NULL, /* acab */ NULL, /* acac */ NULL, /* acad */ NULL, /* acae */ NULL, /* acaf */ NULL, /* acb0 */ NULL, /* acb1 */ NULL, /* acb2 */ NULL, /* acb3 */ NULL, /* acb4 */ NULL, /* acb5 */ NULL, /* acb6 */ NULL, /* acb7 */ NULL, /* acb8 */ NULL, /* acb9 */ NULL, /* acba */ NULL, /* acbb */ NULL, /* acbc */ NULL, /* acbd */ NULL, /* acbe */ NULL, /* acbf */ NULL, /* acc0 */ NULL, /* acc1 */ NULL, /* acc2 */ NULL, /* acc3 */ NULL, /* acc4 */ NULL, /* acc5 */ NULL, /* acc6 */ NULL, /* acc7 */ NULL, /* acc8 */ NULL, /* acc9 */ NULL, /* acca */ NULL, /* accb */ NULL, /* accc */ NULL, /* accd */ NULL, /* acce */ NULL, /* accf */ NULL, /* acd0 */ NULL, /* acd1 */ NULL, /* acd2 */ NULL, /* acd3 */ NULL, /* acd4 */ NULL, /* acd5 */ NULL, /* acd6 */ NULL, /* acd7 */ NULL, /* acd8 */ NULL, /* acd9 */ NULL, /* acda */ NULL, /* acdb */ NULL, /* acdc */ NULL, /* acdd */ NULL, /* acde */ NULL, /* acdf */ NULL, /* ace0 */ NULL, /* ace1 */ NULL, /* ace2 */ NULL, /* ace3 */ NULL, /* ace4 */ NULL, /* ace5 */ NULL, /* ace6 */ NULL, /* ace7 */ NULL, /* ace8 */ NULL, /* ace9 */ NULL, /* acea */ NULL, /* aceb */ NULL, /* acec */ NULL, /* aced */ NULL, /* acee */ NULL, /* acef */ NULL, /* acf0 */ NULL, /* acf1 */ NULL, /* acf2 */ NULL, /* acf3 */ NULL, /* acf4 */ NULL, /* acf5 */ NULL, /* acf6 */ NULL, /* acf7 */ NULL, /* acf8 */ NULL, /* acf9 */ NULL, /* acfa */ NULL, /* acfb */ NULL, /* acfc */ NULL, /* acfd */ NULL, /* acfe */ NULL, /* acff */ NULL, /* ad00 */ NULL, /* ad01 */ NULL, /* ad02 */ NULL, /* ad03 */ NULL, /* ad04 */ NULL, /* ad05 */ NULL, /* ad06 */ NULL, /* ad07 */ NULL, /* ad08 */ NULL, /* ad09 */ NULL, /* ad0a */ NULL, /* ad0b */ NULL, /* ad0c */ NULL, /* ad0d */ NULL, /* ad0e */ NULL, /* ad0f */ NULL, /* ad10 */ NULL, /* ad11 */ NULL, /* ad12 */ NULL, /* ad13 */ NULL, /* ad14 */ NULL, /* ad15 */ NULL, /* ad16 */ NULL, /* ad17 */ NULL, /* ad18 */ NULL, /* ad19 */ NULL, /* ad1a */ NULL, /* ad1b */ NULL, /* ad1c */ NULL, /* ad1d */ NULL, /* ad1e */ NULL, /* ad1f */ NULL, /* ad20 */ NULL, /* ad21 */ NULL, /* ad22 */ NULL, /* ad23 */ NULL, /* ad24 */ NULL, /* ad25 */ NULL, /* ad26 */ NULL, /* ad27 */ NULL, /* ad28 */ NULL, /* ad29 */ NULL, /* ad2a */ NULL, /* ad2b */ NULL, /* ad2c */ NULL, /* ad2d */ NULL, /* ad2e */ NULL, /* ad2f */ NULL, /* ad30 */ NULL, /* ad31 */ NULL, /* ad32 */ NULL, /* ad33 */ NULL, /* ad34 */ NULL, /* ad35 */ NULL, /* ad36 */ NULL, /* ad37 */ NULL, /* ad38 */ NULL, /* ad39 */ NULL, /* ad3a */ NULL, /* ad3b */ NULL, /* ad3c */ NULL, /* ad3d */ NULL, /* ad3e */ NULL, /* ad3f */ NULL, /* ad40 */ NULL, /* ad41 */ NULL, /* ad42 */ NULL, /* ad43 */ NULL, /* ad44 */ NULL, /* ad45 */ NULL, /* ad46 */ NULL, /* ad47 */ NULL, /* ad48 */ NULL, /* ad49 */ NULL, /* ad4a */ NULL, /* ad4b */ NULL, /* ad4c */ NULL, /* ad4d */ NULL, /* ad4e */ NULL, /* ad4f */ NULL, /* ad50 */ NULL, /* ad51 */ NULL, /* ad52 */ NULL, /* ad53 */ NULL, /* ad54 */ NULL, /* ad55 */ NULL, /* ad56 */ NULL, /* ad57 */ NULL, /* ad58 */ NULL, /* ad59 */ NULL, /* ad5a */ NULL, /* ad5b */ NULL, /* ad5c */ NULL, /* ad5d */ NULL, /* ad5e */ NULL, /* ad5f */ NULL, /* ad60 */ NULL, /* ad61 */ NULL, /* ad62 */ NULL, /* ad63 */ NULL, /* ad64 */ NULL, /* ad65 */ NULL, /* ad66 */ NULL, /* ad67 */ NULL, /* ad68 */ NULL, /* ad69 */ NULL, /* ad6a */ NULL, /* ad6b */ NULL, /* ad6c */ NULL, /* ad6d */ NULL, /* ad6e */ NULL, /* ad6f */ NULL, /* ad70 */ NULL, /* ad71 */ NULL, /* ad72 */ NULL, /* ad73 */ NULL, /* ad74 */ NULL, /* ad75 */ NULL, /* ad76 */ NULL, /* ad77 */ NULL, /* ad78 */ NULL, /* ad79 */ NULL, /* ad7a */ NULL, /* ad7b */ NULL, /* ad7c */ NULL, /* ad7d */ NULL, /* ad7e */ NULL, /* ad7f */ NULL, /* ad80 */ NULL, /* ad81 */ NULL, /* ad82 */ NULL, /* ad83 */ NULL, /* ad84 */ NULL, /* ad85 */ NULL, /* ad86 */ NULL, /* ad87 */ NULL, /* ad88 */ NULL, /* ad89 */ NULL, /* ad8a */ NULL, /* ad8b */ NULL, /* ad8c */ NULL, /* ad8d */ NULL, /* ad8e */ NULL, /* ad8f */ NULL, /* ad90 */ NULL, /* ad91 */ NULL, /* ad92 */ NULL, /* ad93 */ NULL, /* ad94 */ NULL, /* ad95 */ NULL, /* ad96 */ NULL, /* ad97 */ NULL, /* ad98 */ NULL, /* ad99 */ NULL, /* ad9a */ NULL, /* ad9b */ NULL, /* ad9c */ NULL, /* ad9d */ NULL, /* ad9e */ NULL, /* ad9f */ NULL, /* ada0 */ NULL, /* ada1 */ NULL, /* ada2 */ NULL, /* ada3 */ NULL, /* ada4 */ NULL, /* ada5 */ NULL, /* ada6 */ NULL, /* ada7 */ NULL, /* ada8 */ NULL, /* ada9 */ NULL, /* adaa */ NULL, /* adab */ NULL, /* adac */ NULL, /* adad */ NULL, /* adae */ NULL, /* adaf */ NULL, /* adb0 */ NULL, /* adb1 */ NULL, /* adb2 */ NULL, /* adb3 */ NULL, /* adb4 */ NULL, /* adb5 */ NULL, /* adb6 */ NULL, /* adb7 */ NULL, /* adb8 */ NULL, /* adb9 */ NULL, /* adba */ NULL, /* adbb */ NULL, /* adbc */ NULL, /* adbd */ NULL, /* adbe */ NULL, /* adbf */ NULL, /* adc0 */ NULL, /* adc1 */ NULL, /* adc2 */ NULL, /* adc3 */ NULL, /* adc4 */ NULL, /* adc5 */ NULL, /* adc6 */ NULL, /* adc7 */ NULL, /* adc8 */ NULL, /* adc9 */ NULL, /* adca */ NULL, /* adcb */ NULL, /* adcc */ NULL, /* adcd */ NULL, /* adce */ NULL, /* adcf */ NULL, /* add0 */ NULL, /* add1 */ NULL, /* add2 */ NULL, /* add3 */ NULL, /* add4 */ NULL, /* add5 */ NULL, /* add6 */ NULL, /* add7 */ NULL, /* add8 */ NULL, /* add9 */ NULL, /* adda */ NULL, /* addb */ NULL, /* addc */ NULL, /* addd */ NULL, /* adde */ NULL, /* addf */ NULL, /* ade0 */ NULL, /* ade1 */ NULL, /* ade2 */ NULL, /* ade3 */ NULL, /* ade4 */ NULL, /* ade5 */ NULL, /* ade6 */ NULL, /* ade7 */ NULL, /* ade8 */ NULL, /* ade9 */ NULL, /* adea */ NULL, /* adeb */ NULL, /* adec */ NULL, /* aded */ NULL, /* adee */ NULL, /* adef */ NULL, /* adf0 */ NULL, /* adf1 */ NULL, /* adf2 */ NULL, /* adf3 */ NULL, /* adf4 */ NULL, /* adf5 */ NULL, /* adf6 */ NULL, /* adf7 */ NULL, /* adf8 */ NULL, /* adf9 */ NULL, /* adfa */ NULL, /* adfb */ NULL, /* adfc */ NULL, /* adfd */ NULL, /* adfe */ NULL, /* adff */ NULL, /* ae00 */ NULL, /* ae01 */ NULL, /* ae02 */ NULL, /* ae03 */ NULL, /* ae04 */ NULL, /* ae05 */ NULL, /* ae06 */ NULL, /* ae07 */ NULL, /* ae08 */ NULL, /* ae09 */ NULL, /* ae0a */ NULL, /* ae0b */ NULL, /* ae0c */ NULL, /* ae0d */ NULL, /* ae0e */ NULL, /* ae0f */ NULL, /* ae10 */ NULL, /* ae11 */ NULL, /* ae12 */ NULL, /* ae13 */ NULL, /* ae14 */ NULL, /* ae15 */ NULL, /* ae16 */ NULL, /* ae17 */ NULL, /* ae18 */ NULL, /* ae19 */ NULL, /* ae1a */ NULL, /* ae1b */ NULL, /* ae1c */ NULL, /* ae1d */ NULL, /* ae1e */ NULL, /* ae1f */ NULL, /* ae20 */ NULL, /* ae21 */ NULL, /* ae22 */ NULL, /* ae23 */ NULL, /* ae24 */ NULL, /* ae25 */ NULL, /* ae26 */ NULL, /* ae27 */ NULL, /* ae28 */ NULL, /* ae29 */ NULL, /* ae2a */ NULL, /* ae2b */ NULL, /* ae2c */ NULL, /* ae2d */ NULL, /* ae2e */ NULL, /* ae2f */ NULL, /* ae30 */ NULL, /* ae31 */ NULL, /* ae32 */ NULL, /* ae33 */ NULL, /* ae34 */ NULL, /* ae35 */ NULL, /* ae36 */ NULL, /* ae37 */ NULL, /* ae38 */ NULL, /* ae39 */ NULL, /* ae3a */ NULL, /* ae3b */ NULL, /* ae3c */ NULL, /* ae3d */ NULL, /* ae3e */ NULL, /* ae3f */ NULL, /* ae40 */ NULL, /* ae41 */ NULL, /* ae42 */ NULL, /* ae43 */ NULL, /* ae44 */ NULL, /* ae45 */ NULL, /* ae46 */ NULL, /* ae47 */ NULL, /* ae48 */ NULL, /* ae49 */ NULL, /* ae4a */ NULL, /* ae4b */ NULL, /* ae4c */ NULL, /* ae4d */ NULL, /* ae4e */ NULL, /* ae4f */ NULL, /* ae50 */ NULL, /* ae51 */ NULL, /* ae52 */ NULL, /* ae53 */ NULL, /* ae54 */ NULL, /* ae55 */ NULL, /* ae56 */ NULL, /* ae57 */ NULL, /* ae58 */ NULL, /* ae59 */ NULL, /* ae5a */ NULL, /* ae5b */ NULL, /* ae5c */ NULL, /* ae5d */ NULL, /* ae5e */ NULL, /* ae5f */ NULL, /* ae60 */ NULL, /* ae61 */ NULL, /* ae62 */ NULL, /* ae63 */ NULL, /* ae64 */ NULL, /* ae65 */ NULL, /* ae66 */ NULL, /* ae67 */ NULL, /* ae68 */ NULL, /* ae69 */ NULL, /* ae6a */ NULL, /* ae6b */ NULL, /* ae6c */ NULL, /* ae6d */ NULL, /* ae6e */ NULL, /* ae6f */ NULL, /* ae70 */ NULL, /* ae71 */ NULL, /* ae72 */ NULL, /* ae73 */ NULL, /* ae74 */ NULL, /* ae75 */ NULL, /* ae76 */ NULL, /* ae77 */ NULL, /* ae78 */ NULL, /* ae79 */ NULL, /* ae7a */ NULL, /* ae7b */ NULL, /* ae7c */ NULL, /* ae7d */ NULL, /* ae7e */ NULL, /* ae7f */ NULL, /* ae80 */ NULL, /* ae81 */ NULL, /* ae82 */ NULL, /* ae83 */ NULL, /* ae84 */ NULL, /* ae85 */ NULL, /* ae86 */ NULL, /* ae87 */ NULL, /* ae88 */ NULL, /* ae89 */ NULL, /* ae8a */ NULL, /* ae8b */ NULL, /* ae8c */ NULL, /* ae8d */ NULL, /* ae8e */ NULL, /* ae8f */ NULL, /* ae90 */ NULL, /* ae91 */ NULL, /* ae92 */ NULL, /* ae93 */ NULL, /* ae94 */ NULL, /* ae95 */ NULL, /* ae96 */ NULL, /* ae97 */ NULL, /* ae98 */ NULL, /* ae99 */ NULL, /* ae9a */ NULL, /* ae9b */ NULL, /* ae9c */ NULL, /* ae9d */ NULL, /* ae9e */ NULL, /* ae9f */ NULL, /* aea0 */ NULL, /* aea1 */ NULL, /* aea2 */ NULL, /* aea3 */ NULL, /* aea4 */ NULL, /* aea5 */ NULL, /* aea6 */ NULL, /* aea7 */ NULL, /* aea8 */ NULL, /* aea9 */ NULL, /* aeaa */ NULL, /* aeab */ NULL, /* aeac */ NULL, /* aead */ NULL, /* aeae */ NULL, /* aeaf */ NULL, /* aeb0 */ NULL, /* aeb1 */ NULL, /* aeb2 */ NULL, /* aeb3 */ NULL, /* aeb4 */ NULL, /* aeb5 */ NULL, /* aeb6 */ NULL, /* aeb7 */ NULL, /* aeb8 */ NULL, /* aeb9 */ NULL, /* aeba */ NULL, /* aebb */ NULL, /* aebc */ NULL, /* aebd */ NULL, /* aebe */ NULL, /* aebf */ NULL, /* aec0 */ NULL, /* aec1 */ NULL, /* aec2 */ NULL, /* aec3 */ NULL, /* aec4 */ NULL, /* aec5 */ NULL, /* aec6 */ NULL, /* aec7 */ NULL, /* aec8 */ NULL, /* aec9 */ NULL, /* aeca */ NULL, /* aecb */ NULL, /* aecc */ NULL, /* aecd */ NULL, /* aece */ NULL, /* aecf */ NULL, /* aed0 */ NULL, /* aed1 */ NULL, /* aed2 */ NULL, /* aed3 */ NULL, /* aed4 */ NULL, /* aed5 */ NULL, /* aed6 */ NULL, /* aed7 */ NULL, /* aed8 */ NULL, /* aed9 */ NULL, /* aeda */ NULL, /* aedb */ NULL, /* aedc */ NULL, /* aedd */ NULL, /* aede */ NULL, /* aedf */ NULL, /* aee0 */ NULL, /* aee1 */ NULL, /* aee2 */ NULL, /* aee3 */ NULL, /* aee4 */ NULL, /* aee5 */ NULL, /* aee6 */ NULL, /* aee7 */ NULL, /* aee8 */ NULL, /* aee9 */ NULL, /* aeea */ NULL, /* aeeb */ NULL, /* aeec */ NULL, /* aeed */ NULL, /* aeee */ NULL, /* aeef */ NULL, /* aef0 */ NULL, /* aef1 */ NULL, /* aef2 */ NULL, /* aef3 */ NULL, /* aef4 */ NULL, /* aef5 */ NULL, /* aef6 */ NULL, /* aef7 */ NULL, /* aef8 */ NULL, /* aef9 */ NULL, /* aefa */ NULL, /* aefb */ NULL, /* aefc */ NULL, /* aefd */ NULL, /* aefe */ NULL, /* aeff */ NULL, /* af00 */ NULL, /* af01 */ NULL, /* af02 */ NULL, /* af03 */ NULL, /* af04 */ NULL, /* af05 */ NULL, /* af06 */ NULL, /* af07 */ NULL, /* af08 */ NULL, /* af09 */ NULL, /* af0a */ NULL, /* af0b */ NULL, /* af0c */ NULL, /* af0d */ NULL, /* af0e */ NULL, /* af0f */ NULL, /* af10 */ NULL, /* af11 */ NULL, /* af12 */ NULL, /* af13 */ NULL, /* af14 */ NULL, /* af15 */ NULL, /* af16 */ NULL, /* af17 */ NULL, /* af18 */ NULL, /* af19 */ NULL, /* af1a */ NULL, /* af1b */ NULL, /* af1c */ NULL, /* af1d */ NULL, /* af1e */ NULL, /* af1f */ NULL, /* af20 */ NULL, /* af21 */ NULL, /* af22 */ NULL, /* af23 */ NULL, /* af24 */ NULL, /* af25 */ NULL, /* af26 */ NULL, /* af27 */ NULL, /* af28 */ NULL, /* af29 */ NULL, /* af2a */ NULL, /* af2b */ NULL, /* af2c */ NULL, /* af2d */ NULL, /* af2e */ NULL, /* af2f */ NULL, /* af30 */ NULL, /* af31 */ NULL, /* af32 */ NULL, /* af33 */ NULL, /* af34 */ NULL, /* af35 */ NULL, /* af36 */ NULL, /* af37 */ NULL, /* af38 */ NULL, /* af39 */ NULL, /* af3a */ NULL, /* af3b */ NULL, /* af3c */ NULL, /* af3d */ NULL, /* af3e */ NULL, /* af3f */ NULL, /* af40 */ NULL, /* af41 */ NULL, /* af42 */ NULL, /* af43 */ NULL, /* af44 */ NULL, /* af45 */ NULL, /* af46 */ NULL, /* af47 */ NULL, /* af48 */ NULL, /* af49 */ NULL, /* af4a */ NULL, /* af4b */ NULL, /* af4c */ NULL, /* af4d */ NULL, /* af4e */ NULL, /* af4f */ NULL, /* af50 */ NULL, /* af51 */ NULL, /* af52 */ NULL, /* af53 */ NULL, /* af54 */ NULL, /* af55 */ NULL, /* af56 */ NULL, /* af57 */ NULL, /* af58 */ NULL, /* af59 */ NULL, /* af5a */ NULL, /* af5b */ NULL, /* af5c */ NULL, /* af5d */ NULL, /* af5e */ NULL, /* af5f */ NULL, /* af60 */ NULL, /* af61 */ NULL, /* af62 */ NULL, /* af63 */ NULL, /* af64 */ NULL, /* af65 */ NULL, /* af66 */ NULL, /* af67 */ NULL, /* af68 */ NULL, /* af69 */ NULL, /* af6a */ NULL, /* af6b */ NULL, /* af6c */ NULL, /* af6d */ NULL, /* af6e */ NULL, /* af6f */ NULL, /* af70 */ NULL, /* af71 */ NULL, /* af72 */ NULL, /* af73 */ NULL, /* af74 */ NULL, /* af75 */ NULL, /* af76 */ NULL, /* af77 */ NULL, /* af78 */ NULL, /* af79 */ NULL, /* af7a */ NULL, /* af7b */ NULL, /* af7c */ NULL, /* af7d */ NULL, /* af7e */ NULL, /* af7f */ NULL, /* af80 */ NULL, /* af81 */ NULL, /* af82 */ NULL, /* af83 */ NULL, /* af84 */ NULL, /* af85 */ NULL, /* af86 */ NULL, /* af87 */ NULL, /* af88 */ NULL, /* af89 */ NULL, /* af8a */ NULL, /* af8b */ NULL, /* af8c */ NULL, /* af8d */ NULL, /* af8e */ NULL, /* af8f */ NULL, /* af90 */ NULL, /* af91 */ NULL, /* af92 */ NULL, /* af93 */ NULL, /* af94 */ NULL, /* af95 */ NULL, /* af96 */ NULL, /* af97 */ NULL, /* af98 */ NULL, /* af99 */ NULL, /* af9a */ NULL, /* af9b */ NULL, /* af9c */ NULL, /* af9d */ NULL, /* af9e */ NULL, /* af9f */ NULL, /* afa0 */ NULL, /* afa1 */ NULL, /* afa2 */ NULL, /* afa3 */ NULL, /* afa4 */ NULL, /* afa5 */ NULL, /* afa6 */ NULL, /* afa7 */ NULL, /* afa8 */ NULL, /* afa9 */ NULL, /* afaa */ NULL, /* afab */ NULL, /* afac */ NULL, /* afad */ NULL, /* afae */ NULL, /* afaf */ NULL, /* afb0 */ NULL, /* afb1 */ NULL, /* afb2 */ NULL, /* afb3 */ NULL, /* afb4 */ NULL, /* afb5 */ NULL, /* afb6 */ NULL, /* afb7 */ NULL, /* afb8 */ NULL, /* afb9 */ NULL, /* afba */ NULL, /* afbb */ NULL, /* afbc */ NULL, /* afbd */ NULL, /* afbe */ NULL, /* afbf */ NULL, /* afc0 */ NULL, /* afc1 */ NULL, /* afc2 */ NULL, /* afc3 */ NULL, /* afc4 */ NULL, /* afc5 */ NULL, /* afc6 */ NULL, /* afc7 */ NULL, /* afc8 */ NULL, /* afc9 */ NULL, /* afca */ NULL, /* afcb */ NULL, /* afcc */ NULL, /* afcd */ NULL, /* afce */ NULL, /* afcf */ NULL, /* afd0 */ NULL, /* afd1 */ NULL, /* afd2 */ NULL, /* afd3 */ NULL, /* afd4 */ NULL, /* afd5 */ NULL, /* afd6 */ NULL, /* afd7 */ NULL, /* afd8 */ NULL, /* afd9 */ NULL, /* afda */ NULL, /* afdb */ NULL, /* afdc */ NULL, /* afdd */ NULL, /* afde */ NULL, /* afdf */ NULL, /* afe0 */ NULL, /* afe1 */ NULL, /* afe2 */ NULL, /* afe3 */ NULL, /* afe4 */ NULL, /* afe5 */ NULL, /* afe6 */ NULL, /* afe7 */ NULL, /* afe8 */ NULL, /* afe9 */ NULL, /* afea */ NULL, /* afeb */ NULL, /* afec */ NULL, /* afed */ NULL, /* afee */ NULL, /* afef */ NULL, /* aff0 */ NULL, /* aff1 */ NULL, /* aff2 */ NULL, /* aff3 */ NULL, /* aff4 */ NULL, /* aff5 */ NULL, /* aff6 */ NULL, /* aff7 */ NULL, /* aff8 */ NULL, /* aff9 */ NULL, /* affa */ NULL, /* affb */ NULL, /* affc */ NULL, /* affd */ NULL, /* affe */ NULL, /* afff */ NULL, /* b000 */ NULL, /* b001 */ NULL, /* b002 */ NULL, /* b003 */ NULL, /* b004 */ NULL, /* b005 */ NULL, /* b006 */ NULL, /* b007 */ NULL, /* b008 */ NULL, /* b009 */ NULL, /* b00a */ NULL, /* b00b */ NULL, /* b00c */ NULL, /* b00d */ NULL, /* b00e */ NULL, /* b00f */ NULL, /* b010 */ NULL, /* b011 */ NULL, /* b012 */ NULL, /* b013 */ NULL, /* b014 */ NULL, /* b015 */ NULL, /* b016 */ NULL, /* b017 */ NULL, /* b018 */ NULL, /* b019 */ NULL, /* b01a */ NULL, /* b01b */ NULL, /* b01c */ NULL, /* b01d */ NULL, /* b01e */ NULL, /* b01f */ NULL, /* b020 */ NULL, /* b021 */ NULL, /* b022 */ NULL, /* b023 */ NULL, /* b024 */ NULL, /* b025 */ NULL, /* b026 */ NULL, /* b027 */ NULL, /* b028 */ NULL, /* b029 */ NULL, /* b02a */ NULL, /* b02b */ NULL, /* b02c */ NULL, /* b02d */ NULL, /* b02e */ NULL, /* b02f */ NULL, /* b030 */ NULL, /* b031 */ NULL, /* b032 */ NULL, /* b033 */ NULL, /* b034 */ NULL, /* b035 */ NULL, /* b036 */ NULL, /* b037 */ NULL, /* b038 */ NULL, /* b039 */ NULL, /* b03a */ NULL, /* b03b */ NULL, /* b03c */ NULL, /* b03d */ NULL, /* b03e */ NULL, /* b03f */ NULL, /* b040 */ NULL, /* b041 */ NULL, /* b042 */ NULL, /* b043 */ NULL, /* b044 */ NULL, /* b045 */ NULL, /* b046 */ NULL, /* b047 */ NULL, /* b048 */ NULL, /* b049 */ NULL, /* b04a */ NULL, /* b04b */ NULL, /* b04c */ NULL, /* b04d */ NULL, /* b04e */ NULL, /* b04f */ NULL, /* b050 */ NULL, /* b051 */ NULL, /* b052 */ NULL, /* b053 */ NULL, /* b054 */ NULL, /* b055 */ NULL, /* b056 */ NULL, /* b057 */ NULL, /* b058 */ NULL, /* b059 */ NULL, /* b05a */ NULL, /* b05b */ NULL, /* b05c */ NULL, /* b05d */ NULL, /* b05e */ NULL, /* b05f */ NULL, /* b060 */ NULL, /* b061 */ NULL, /* b062 */ NULL, /* b063 */ NULL, /* b064 */ NULL, /* b065 */ NULL, /* b066 */ NULL, /* b067 */ NULL, /* b068 */ NULL, /* b069 */ NULL, /* b06a */ NULL, /* b06b */ NULL, /* b06c */ NULL, /* b06d */ NULL, /* b06e */ NULL, /* b06f */ NULL, /* b070 */ NULL, /* b071 */ NULL, /* b072 */ NULL, /* b073 */ NULL, /* b074 */ NULL, /* b075 */ NULL, /* b076 */ NULL, /* b077 */ NULL, /* b078 */ NULL, /* b079 */ NULL, /* b07a */ NULL, /* b07b */ NULL, /* b07c */ NULL, /* b07d */ NULL, /* b07e */ NULL, /* b07f */ NULL, /* b080 */ NULL, /* b081 */ NULL, /* b082 */ NULL, /* b083 */ NULL, /* b084 */ NULL, /* b085 */ NULL, /* b086 */ NULL, /* b087 */ NULL, /* b088 */ NULL, /* b089 */ NULL, /* b08a */ NULL, /* b08b */ NULL, /* b08c */ NULL, /* b08d */ NULL, /* b08e */ NULL, /* b08f */ NULL, /* b090 */ NULL, /* b091 */ NULL, /* b092 */ NULL, /* b093 */ NULL, /* b094 */ NULL, /* b095 */ NULL, /* b096 */ NULL, /* b097 */ NULL, /* b098 */ NULL, /* b099 */ NULL, /* b09a */ NULL, /* b09b */ NULL, /* b09c */ NULL, /* b09d */ NULL, /* b09e */ NULL, /* b09f */ NULL, /* b0a0 */ NULL, /* b0a1 */ NULL, /* b0a2 */ NULL, /* b0a3 */ NULL, /* b0a4 */ NULL, /* b0a5 */ NULL, /* b0a6 */ NULL, /* b0a7 */ NULL, /* b0a8 */ NULL, /* b0a9 */ NULL, /* b0aa */ NULL, /* b0ab */ NULL, /* b0ac */ NULL, /* b0ad */ NULL, /* b0ae */ NULL, /* b0af */ NULL, /* b0b0 */ NULL, /* b0b1 */ NULL, /* b0b2 */ NULL, /* b0b3 */ NULL, /* b0b4 */ NULL, /* b0b5 */ NULL, /* b0b6 */ NULL, /* b0b7 */ NULL, /* b0b8 */ NULL, /* b0b9 */ NULL, /* b0ba */ NULL, /* b0bb */ NULL, /* b0bc */ NULL, /* b0bd */ NULL, /* b0be */ NULL, /* b0bf */ NULL, /* b0c0 */ NULL, /* b0c1 */ NULL, /* b0c2 */ NULL, /* b0c3 */ NULL, /* b0c4 */ NULL, /* b0c5 */ NULL, /* b0c6 */ NULL, /* b0c7 */ NULL, /* b0c8 */ NULL, /* b0c9 */ NULL, /* b0ca */ NULL, /* b0cb */ NULL, /* b0cc */ NULL, /* b0cd */ NULL, /* b0ce */ NULL, /* b0cf */ NULL, /* b0d0 */ NULL, /* b0d1 */ NULL, /* b0d2 */ NULL, /* b0d3 */ NULL, /* b0d4 */ NULL, /* b0d5 */ NULL, /* b0d6 */ NULL, /* b0d7 */ NULL, /* b0d8 */ NULL, /* b0d9 */ NULL, /* b0da */ NULL, /* b0db */ NULL, /* b0dc */ NULL, /* b0dd */ NULL, /* b0de */ NULL, /* b0df */ NULL, /* b0e0 */ NULL, /* b0e1 */ NULL, /* b0e2 */ NULL, /* b0e3 */ NULL, /* b0e4 */ NULL, /* b0e5 */ NULL, /* b0e6 */ NULL, /* b0e7 */ NULL, /* b0e8 */ NULL, /* b0e9 */ NULL, /* b0ea */ NULL, /* b0eb */ NULL, /* b0ec */ NULL, /* b0ed */ NULL, /* b0ee */ NULL, /* b0ef */ NULL, /* b0f0 */ NULL, /* b0f1 */ NULL, /* b0f2 */ NULL, /* b0f3 */ NULL, /* b0f4 */ NULL, /* b0f5 */ NULL, /* b0f6 */ NULL, /* b0f7 */ NULL, /* b0f8 */ NULL, /* b0f9 */ NULL, /* b0fa */ NULL, /* b0fb */ NULL, /* b0fc */ NULL, /* b0fd */ NULL, /* b0fe */ NULL, /* b0ff */ NULL, /* b100 */ NULL, /* b101 */ NULL, /* b102 */ NULL, /* b103 */ NULL, /* b104 */ NULL, /* b105 */ NULL, /* b106 */ NULL, /* b107 */ NULL, /* b108 */ NULL, /* b109 */ NULL, /* b10a */ NULL, /* b10b */ NULL, /* b10c */ NULL, /* b10d */ NULL, /* b10e */ NULL, /* b10f */ NULL, /* b110 */ NULL, /* b111 */ NULL, /* b112 */ NULL, /* b113 */ NULL, /* b114 */ NULL, /* b115 */ NULL, /* b116 */ NULL, /* b117 */ NULL, /* b118 */ NULL, /* b119 */ NULL, /* b11a */ NULL, /* b11b */ NULL, /* b11c */ NULL, /* b11d */ NULL, /* b11e */ NULL, /* b11f */ NULL, /* b120 */ NULL, /* b121 */ NULL, /* b122 */ NULL, /* b123 */ NULL, /* b124 */ NULL, /* b125 */ NULL, /* b126 */ NULL, /* b127 */ NULL, /* b128 */ NULL, /* b129 */ NULL, /* b12a */ NULL, /* b12b */ NULL, /* b12c */ NULL, /* b12d */ NULL, /* b12e */ NULL, /* b12f */ NULL, /* b130 */ NULL, /* b131 */ NULL, /* b132 */ NULL, /* b133 */ NULL, /* b134 */ NULL, /* b135 */ NULL, /* b136 */ NULL, /* b137 */ NULL, /* b138 */ NULL, /* b139 */ NULL, /* b13a */ NULL, /* b13b */ NULL, /* b13c */ NULL, /* b13d */ NULL, /* b13e */ NULL, /* b13f */ NULL, /* b140 */ NULL, /* b141 */ NULL, /* b142 */ NULL, /* b143 */ NULL, /* b144 */ NULL, /* b145 */ NULL, /* b146 */ NULL, /* b147 */ NULL, /* b148 */ NULL, /* b149 */ NULL, /* b14a */ NULL, /* b14b */ NULL, /* b14c */ NULL, /* b14d */ NULL, /* b14e */ NULL, /* b14f */ NULL, /* b150 */ NULL, /* b151 */ NULL, /* b152 */ NULL, /* b153 */ NULL, /* b154 */ NULL, /* b155 */ NULL, /* b156 */ NULL, /* b157 */ NULL, /* b158 */ NULL, /* b159 */ NULL, /* b15a */ NULL, /* b15b */ NULL, /* b15c */ NULL, /* b15d */ NULL, /* b15e */ NULL, /* b15f */ NULL, /* b160 */ NULL, /* b161 */ NULL, /* b162 */ NULL, /* b163 */ NULL, /* b164 */ NULL, /* b165 */ NULL, /* b166 */ NULL, /* b167 */ NULL, /* b168 */ NULL, /* b169 */ NULL, /* b16a */ NULL, /* b16b */ NULL, /* b16c */ NULL, /* b16d */ NULL, /* b16e */ NULL, /* b16f */ NULL, /* b170 */ NULL, /* b171 */ NULL, /* b172 */ NULL, /* b173 */ NULL, /* b174 */ NULL, /* b175 */ NULL, /* b176 */ NULL, /* b177 */ NULL, /* b178 */ NULL, /* b179 */ NULL, /* b17a */ NULL, /* b17b */ NULL, /* b17c */ NULL, /* b17d */ NULL, /* b17e */ NULL, /* b17f */ NULL, /* b180 */ NULL, /* b181 */ NULL, /* b182 */ NULL, /* b183 */ NULL, /* b184 */ NULL, /* b185 */ NULL, /* b186 */ NULL, /* b187 */ NULL, /* b188 */ NULL, /* b189 */ NULL, /* b18a */ NULL, /* b18b */ NULL, /* b18c */ NULL, /* b18d */ NULL, /* b18e */ NULL, /* b18f */ NULL, /* b190 */ NULL, /* b191 */ NULL, /* b192 */ NULL, /* b193 */ NULL, /* b194 */ NULL, /* b195 */ NULL, /* b196 */ NULL, /* b197 */ NULL, /* b198 */ NULL, /* b199 */ NULL, /* b19a */ NULL, /* b19b */ NULL, /* b19c */ NULL, /* b19d */ NULL, /* b19e */ NULL, /* b19f */ NULL, /* b1a0 */ NULL, /* b1a1 */ NULL, /* b1a2 */ NULL, /* b1a3 */ NULL, /* b1a4 */ NULL, /* b1a5 */ NULL, /* b1a6 */ NULL, /* b1a7 */ NULL, /* b1a8 */ NULL, /* b1a9 */ NULL, /* b1aa */ NULL, /* b1ab */ NULL, /* b1ac */ NULL, /* b1ad */ NULL, /* b1ae */ NULL, /* b1af */ NULL, /* b1b0 */ NULL, /* b1b1 */ NULL, /* b1b2 */ NULL, /* b1b3 */ NULL, /* b1b4 */ NULL, /* b1b5 */ NULL, /* b1b6 */ NULL, /* b1b7 */ NULL, /* b1b8 */ NULL, /* b1b9 */ NULL, /* b1ba */ NULL, /* b1bb */ NULL, /* b1bc */ NULL, /* b1bd */ NULL, /* b1be */ NULL, /* b1bf */ NULL, /* b1c0 */ NULL, /* b1c1 */ NULL, /* b1c2 */ NULL, /* b1c3 */ NULL, /* b1c4 */ NULL, /* b1c5 */ NULL, /* b1c6 */ NULL, /* b1c7 */ NULL, /* b1c8 */ NULL, /* b1c9 */ NULL, /* b1ca */ NULL, /* b1cb */ NULL, /* b1cc */ NULL, /* b1cd */ NULL, /* b1ce */ NULL, /* b1cf */ NULL, /* b1d0 */ NULL, /* b1d1 */ NULL, /* b1d2 */ NULL, /* b1d3 */ NULL, /* b1d4 */ NULL, /* b1d5 */ NULL, /* b1d6 */ NULL, /* b1d7 */ NULL, /* b1d8 */ NULL, /* b1d9 */ NULL, /* b1da */ NULL, /* b1db */ NULL, /* b1dc */ NULL, /* b1dd */ NULL, /* b1de */ NULL, /* b1df */ NULL, /* b1e0 */ NULL, /* b1e1 */ NULL, /* b1e2 */ NULL, /* b1e3 */ NULL, /* b1e4 */ NULL, /* b1e5 */ NULL, /* b1e6 */ NULL, /* b1e7 */ NULL, /* b1e8 */ NULL, /* b1e9 */ NULL, /* b1ea */ NULL, /* b1eb */ NULL, /* b1ec */ NULL, /* b1ed */ NULL, /* b1ee */ NULL, /* b1ef */ NULL, /* b1f0 */ NULL, /* b1f1 */ NULL, /* b1f2 */ NULL, /* b1f3 */ NULL, /* b1f4 */ NULL, /* b1f5 */ NULL, /* b1f6 */ NULL, /* b1f7 */ NULL, /* b1f8 */ NULL, /* b1f9 */ NULL, /* b1fa */ NULL, /* b1fb */ NULL, /* b1fc */ NULL, /* b1fd */ NULL, /* b1fe */ NULL, /* b1ff */ NULL, /* b200 */ NULL, /* b201 */ NULL, /* b202 */ NULL, /* b203 */ NULL, /* b204 */ NULL, /* b205 */ NULL, /* b206 */ NULL, /* b207 */ NULL, /* b208 */ NULL, /* b209 */ NULL, /* b20a */ NULL, /* b20b */ NULL, /* b20c */ NULL, /* b20d */ NULL, /* b20e */ NULL, /* b20f */ NULL, /* b210 */ NULL, /* b211 */ NULL, /* b212 */ NULL, /* b213 */ NULL, /* b214 */ NULL, /* b215 */ NULL, /* b216 */ NULL, /* b217 */ NULL, /* b218 */ NULL, /* b219 */ NULL, /* b21a */ NULL, /* b21b */ NULL, /* b21c */ NULL, /* b21d */ NULL, /* b21e */ NULL, /* b21f */ NULL, /* b220 */ NULL, /* b221 */ NULL, /* b222 */ NULL, /* b223 */ NULL, /* b224 */ NULL, /* b225 */ NULL, /* b226 */ NULL, /* b227 */ NULL, /* b228 */ NULL, /* b229 */ NULL, /* b22a */ NULL, /* b22b */ NULL, /* b22c */ NULL, /* b22d */ NULL, /* b22e */ NULL, /* b22f */ NULL, /* b230 */ NULL, /* b231 */ NULL, /* b232 */ NULL, /* b233 */ NULL, /* b234 */ NULL, /* b235 */ NULL, /* b236 */ NULL, /* b237 */ NULL, /* b238 */ NULL, /* b239 */ NULL, /* b23a */ NULL, /* b23b */ NULL, /* b23c */ NULL, /* b23d */ NULL, /* b23e */ NULL, /* b23f */ NULL, /* b240 */ NULL, /* b241 */ NULL, /* b242 */ NULL, /* b243 */ NULL, /* b244 */ NULL, /* b245 */ NULL, /* b246 */ NULL, /* b247 */ NULL, /* b248 */ NULL, /* b249 */ NULL, /* b24a */ NULL, /* b24b */ NULL, /* b24c */ NULL, /* b24d */ NULL, /* b24e */ NULL, /* b24f */ NULL, /* b250 */ NULL, /* b251 */ NULL, /* b252 */ NULL, /* b253 */ NULL, /* b254 */ NULL, /* b255 */ NULL, /* b256 */ NULL, /* b257 */ NULL, /* b258 */ NULL, /* b259 */ NULL, /* b25a */ NULL, /* b25b */ NULL, /* b25c */ NULL, /* b25d */ NULL, /* b25e */ NULL, /* b25f */ NULL, /* b260 */ NULL, /* b261 */ NULL, /* b262 */ NULL, /* b263 */ NULL, /* b264 */ NULL, /* b265 */ NULL, /* b266 */ NULL, /* b267 */ NULL, /* b268 */ NULL, /* b269 */ NULL, /* b26a */ NULL, /* b26b */ NULL, /* b26c */ NULL, /* b26d */ NULL, /* b26e */ NULL, /* b26f */ NULL, /* b270 */ NULL, /* b271 */ NULL, /* b272 */ NULL, /* b273 */ NULL, /* b274 */ NULL, /* b275 */ NULL, /* b276 */ NULL, /* b277 */ NULL, /* b278 */ NULL, /* b279 */ NULL, /* b27a */ NULL, /* b27b */ NULL, /* b27c */ NULL, /* b27d */ NULL, /* b27e */ NULL, /* b27f */ NULL, /* b280 */ NULL, /* b281 */ NULL, /* b282 */ NULL, /* b283 */ NULL, /* b284 */ NULL, /* b285 */ NULL, /* b286 */ NULL, /* b287 */ NULL, /* b288 */ NULL, /* b289 */ NULL, /* b28a */ NULL, /* b28b */ NULL, /* b28c */ NULL, /* b28d */ NULL, /* b28e */ NULL, /* b28f */ NULL, /* b290 */ NULL, /* b291 */ NULL, /* b292 */ NULL, /* b293 */ NULL, /* b294 */ NULL, /* b295 */ NULL, /* b296 */ NULL, /* b297 */ NULL, /* b298 */ NULL, /* b299 */ NULL, /* b29a */ NULL, /* b29b */ NULL, /* b29c */ NULL, /* b29d */ NULL, /* b29e */ NULL, /* b29f */ NULL, /* b2a0 */ NULL, /* b2a1 */ NULL, /* b2a2 */ NULL, /* b2a3 */ NULL, /* b2a4 */ NULL, /* b2a5 */ NULL, /* b2a6 */ NULL, /* b2a7 */ NULL, /* b2a8 */ NULL, /* b2a9 */ NULL, /* b2aa */ NULL, /* b2ab */ NULL, /* b2ac */ NULL, /* b2ad */ NULL, /* b2ae */ NULL, /* b2af */ NULL, /* b2b0 */ NULL, /* b2b1 */ NULL, /* b2b2 */ NULL, /* b2b3 */ NULL, /* b2b4 */ NULL, /* b2b5 */ NULL, /* b2b6 */ NULL, /* b2b7 */ NULL, /* b2b8 */ NULL, /* b2b9 */ NULL, /* b2ba */ NULL, /* b2bb */ NULL, /* b2bc */ NULL, /* b2bd */ NULL, /* b2be */ NULL, /* b2bf */ NULL, /* b2c0 */ NULL, /* b2c1 */ NULL, /* b2c2 */ NULL, /* b2c3 */ NULL, /* b2c4 */ NULL, /* b2c5 */ NULL, /* b2c6 */ NULL, /* b2c7 */ NULL, /* b2c8 */ NULL, /* b2c9 */ NULL, /* b2ca */ NULL, /* b2cb */ NULL, /* b2cc */ NULL, /* b2cd */ NULL, /* b2ce */ NULL, /* b2cf */ NULL, /* b2d0 */ NULL, /* b2d1 */ NULL, /* b2d2 */ NULL, /* b2d3 */ NULL, /* b2d4 */ NULL, /* b2d5 */ NULL, /* b2d6 */ NULL, /* b2d7 */ NULL, /* b2d8 */ NULL, /* b2d9 */ NULL, /* b2da */ NULL, /* b2db */ NULL, /* b2dc */ NULL, /* b2dd */ NULL, /* b2de */ NULL, /* b2df */ NULL, /* b2e0 */ NULL, /* b2e1 */ NULL, /* b2e2 */ NULL, /* b2e3 */ NULL, /* b2e4 */ NULL, /* b2e5 */ NULL, /* b2e6 */ NULL, /* b2e7 */ NULL, /* b2e8 */ NULL, /* b2e9 */ NULL, /* b2ea */ NULL, /* b2eb */ NULL, /* b2ec */ NULL, /* b2ed */ NULL, /* b2ee */ NULL, /* b2ef */ NULL, /* b2f0 */ NULL, /* b2f1 */ NULL, /* b2f2 */ NULL, /* b2f3 */ NULL, /* b2f4 */ NULL, /* b2f5 */ NULL, /* b2f6 */ NULL, /* b2f7 */ NULL, /* b2f8 */ NULL, /* b2f9 */ NULL, /* b2fa */ NULL, /* b2fb */ NULL, /* b2fc */ NULL, /* b2fd */ NULL, /* b2fe */ NULL, /* b2ff */ NULL, /* b300 */ NULL, /* b301 */ NULL, /* b302 */ NULL, /* b303 */ NULL, /* b304 */ NULL, /* b305 */ NULL, /* b306 */ NULL, /* b307 */ NULL, /* b308 */ NULL, /* b309 */ NULL, /* b30a */ NULL, /* b30b */ NULL, /* b30c */ NULL, /* b30d */ NULL, /* b30e */ NULL, /* b30f */ NULL, /* b310 */ NULL, /* b311 */ NULL, /* b312 */ NULL, /* b313 */ NULL, /* b314 */ NULL, /* b315 */ NULL, /* b316 */ NULL, /* b317 */ NULL, /* b318 */ NULL, /* b319 */ NULL, /* b31a */ NULL, /* b31b */ NULL, /* b31c */ NULL, /* b31d */ NULL, /* b31e */ NULL, /* b31f */ NULL, /* b320 */ NULL, /* b321 */ NULL, /* b322 */ NULL, /* b323 */ NULL, /* b324 */ NULL, /* b325 */ NULL, /* b326 */ NULL, /* b327 */ NULL, /* b328 */ NULL, /* b329 */ NULL, /* b32a */ NULL, /* b32b */ NULL, /* b32c */ NULL, /* b32d */ NULL, /* b32e */ NULL, /* b32f */ NULL, /* b330 */ NULL, /* b331 */ NULL, /* b332 */ NULL, /* b333 */ NULL, /* b334 */ NULL, /* b335 */ NULL, /* b336 */ NULL, /* b337 */ NULL, /* b338 */ NULL, /* b339 */ NULL, /* b33a */ NULL, /* b33b */ NULL, /* b33c */ NULL, /* b33d */ NULL, /* b33e */ NULL, /* b33f */ NULL, /* b340 */ NULL, /* b341 */ NULL, /* b342 */ NULL, /* b343 */ NULL, /* b344 */ NULL, /* b345 */ NULL, /* b346 */ NULL, /* b347 */ NULL, /* b348 */ NULL, /* b349 */ NULL, /* b34a */ NULL, /* b34b */ NULL, /* b34c */ NULL, /* b34d */ NULL, /* b34e */ NULL, /* b34f */ NULL, /* b350 */ NULL, /* b351 */ NULL, /* b352 */ NULL, /* b353 */ NULL, /* b354 */ NULL, /* b355 */ NULL, /* b356 */ NULL, /* b357 */ NULL, /* b358 */ NULL, /* b359 */ NULL, /* b35a */ NULL, /* b35b */ NULL, /* b35c */ NULL, /* b35d */ NULL, /* b35e */ NULL, /* b35f */ NULL, /* b360 */ NULL, /* b361 */ NULL, /* b362 */ NULL, /* b363 */ NULL, /* b364 */ NULL, /* b365 */ NULL, /* b366 */ NULL, /* b367 */ NULL, /* b368 */ NULL, /* b369 */ NULL, /* b36a */ NULL, /* b36b */ NULL, /* b36c */ NULL, /* b36d */ NULL, /* b36e */ NULL, /* b36f */ NULL, /* b370 */ NULL, /* b371 */ NULL, /* b372 */ NULL, /* b373 */ NULL, /* b374 */ NULL, /* b375 */ NULL, /* b376 */ NULL, /* b377 */ NULL, /* b378 */ NULL, /* b379 */ NULL, /* b37a */ NULL, /* b37b */ NULL, /* b37c */ NULL, /* b37d */ NULL, /* b37e */ NULL, /* b37f */ NULL, /* b380 */ NULL, /* b381 */ NULL, /* b382 */ NULL, /* b383 */ NULL, /* b384 */ NULL, /* b385 */ NULL, /* b386 */ NULL, /* b387 */ NULL, /* b388 */ NULL, /* b389 */ NULL, /* b38a */ NULL, /* b38b */ NULL, /* b38c */ NULL, /* b38d */ NULL, /* b38e */ NULL, /* b38f */ NULL, /* b390 */ NULL, /* b391 */ NULL, /* b392 */ NULL, /* b393 */ NULL, /* b394 */ NULL, /* b395 */ NULL, /* b396 */ NULL, /* b397 */ NULL, /* b398 */ NULL, /* b399 */ NULL, /* b39a */ NULL, /* b39b */ NULL, /* b39c */ NULL, /* b39d */ NULL, /* b39e */ NULL, /* b39f */ NULL, /* b3a0 */ NULL, /* b3a1 */ NULL, /* b3a2 */ NULL, /* b3a3 */ NULL, /* b3a4 */ NULL, /* b3a5 */ NULL, /* b3a6 */ NULL, /* b3a7 */ NULL, /* b3a8 */ NULL, /* b3a9 */ NULL, /* b3aa */ NULL, /* b3ab */ NULL, /* b3ac */ NULL, /* b3ad */ NULL, /* b3ae */ NULL, /* b3af */ NULL, /* b3b0 */ NULL, /* b3b1 */ NULL, /* b3b2 */ NULL, /* b3b3 */ NULL, /* b3b4 */ NULL, /* b3b5 */ NULL, /* b3b6 */ NULL, /* b3b7 */ NULL, /* b3b8 */ NULL, /* b3b9 */ NULL, /* b3ba */ NULL, /* b3bb */ NULL, /* b3bc */ NULL, /* b3bd */ NULL, /* b3be */ NULL, /* b3bf */ NULL, /* b3c0 */ NULL, /* b3c1 */ NULL, /* b3c2 */ NULL, /* b3c3 */ NULL, /* b3c4 */ NULL, /* b3c5 */ NULL, /* b3c6 */ NULL, /* b3c7 */ NULL, /* b3c8 */ NULL, /* b3c9 */ NULL, /* b3ca */ NULL, /* b3cb */ NULL, /* b3cc */ NULL, /* b3cd */ NULL, /* b3ce */ NULL, /* b3cf */ NULL, /* b3d0 */ NULL, /* b3d1 */ NULL, /* b3d2 */ NULL, /* b3d3 */ NULL, /* b3d4 */ NULL, /* b3d5 */ NULL, /* b3d6 */ NULL, /* b3d7 */ NULL, /* b3d8 */ NULL, /* b3d9 */ NULL, /* b3da */ NULL, /* b3db */ NULL, /* b3dc */ NULL, /* b3dd */ NULL, /* b3de */ NULL, /* b3df */ NULL, /* b3e0 */ NULL, /* b3e1 */ NULL, /* b3e2 */ NULL, /* b3e3 */ NULL, /* b3e4 */ NULL, /* b3e5 */ NULL, /* b3e6 */ NULL, /* b3e7 */ NULL, /* b3e8 */ NULL, /* b3e9 */ NULL, /* b3ea */ NULL, /* b3eb */ NULL, /* b3ec */ NULL, /* b3ed */ NULL, /* b3ee */ NULL, /* b3ef */ NULL, /* b3f0 */ NULL, /* b3f1 */ NULL, /* b3f2 */ NULL, /* b3f3 */ NULL, /* b3f4 */ NULL, /* b3f5 */ NULL, /* b3f6 */ NULL, /* b3f7 */ NULL, /* b3f8 */ NULL, /* b3f9 */ NULL, /* b3fa */ NULL, /* b3fb */ NULL, /* b3fc */ NULL, /* b3fd */ NULL, /* b3fe */ NULL, /* b3ff */ NULL, /* b400 */ NULL, /* b401 */ NULL, /* b402 */ NULL, /* b403 */ NULL, /* b404 */ NULL, /* b405 */ NULL, /* b406 */ NULL, /* b407 */ NULL, /* b408 */ NULL, /* b409 */ NULL, /* b40a */ NULL, /* b40b */ NULL, /* b40c */ NULL, /* b40d */ NULL, /* b40e */ NULL, /* b40f */ NULL, /* b410 */ NULL, /* b411 */ NULL, /* b412 */ NULL, /* b413 */ NULL, /* b414 */ NULL, /* b415 */ NULL, /* b416 */ NULL, /* b417 */ NULL, /* b418 */ NULL, /* b419 */ NULL, /* b41a */ NULL, /* b41b */ NULL, /* b41c */ NULL, /* b41d */ NULL, /* b41e */ NULL, /* b41f */ NULL, /* b420 */ NULL, /* b421 */ NULL, /* b422 */ NULL, /* b423 */ NULL, /* b424 */ NULL, /* b425 */ NULL, /* b426 */ NULL, /* b427 */ NULL, /* b428 */ NULL, /* b429 */ NULL, /* b42a */ NULL, /* b42b */ NULL, /* b42c */ NULL, /* b42d */ NULL, /* b42e */ NULL, /* b42f */ NULL, /* b430 */ NULL, /* b431 */ NULL, /* b432 */ NULL, /* b433 */ NULL, /* b434 */ NULL, /* b435 */ NULL, /* b436 */ NULL, /* b437 */ NULL, /* b438 */ NULL, /* b439 */ NULL, /* b43a */ NULL, /* b43b */ NULL, /* b43c */ NULL, /* b43d */ NULL, /* b43e */ NULL, /* b43f */ NULL, /* b440 */ NULL, /* b441 */ NULL, /* b442 */ NULL, /* b443 */ NULL, /* b444 */ NULL, /* b445 */ NULL, /* b446 */ NULL, /* b447 */ NULL, /* b448 */ NULL, /* b449 */ NULL, /* b44a */ NULL, /* b44b */ NULL, /* b44c */ NULL, /* b44d */ NULL, /* b44e */ NULL, /* b44f */ NULL, /* b450 */ NULL, /* b451 */ NULL, /* b452 */ NULL, /* b453 */ NULL, /* b454 */ NULL, /* b455 */ NULL, /* b456 */ NULL, /* b457 */ NULL, /* b458 */ NULL, /* b459 */ NULL, /* b45a */ NULL, /* b45b */ NULL, /* b45c */ NULL, /* b45d */ NULL, /* b45e */ NULL, /* b45f */ NULL, /* b460 */ NULL, /* b461 */ NULL, /* b462 */ NULL, /* b463 */ NULL, /* b464 */ NULL, /* b465 */ NULL, /* b466 */ NULL, /* b467 */ NULL, /* b468 */ NULL, /* b469 */ NULL, /* b46a */ NULL, /* b46b */ NULL, /* b46c */ NULL, /* b46d */ NULL, /* b46e */ NULL, /* b46f */ NULL, /* b470 */ NULL, /* b471 */ NULL, /* b472 */ NULL, /* b473 */ NULL, /* b474 */ NULL, /* b475 */ NULL, /* b476 */ NULL, /* b477 */ NULL, /* b478 */ NULL, /* b479 */ NULL, /* b47a */ NULL, /* b47b */ NULL, /* b47c */ NULL, /* b47d */ NULL, /* b47e */ NULL, /* b47f */ NULL, /* b480 */ NULL, /* b481 */ NULL, /* b482 */ NULL, /* b483 */ NULL, /* b484 */ NULL, /* b485 */ NULL, /* b486 */ NULL, /* b487 */ NULL, /* b488 */ NULL, /* b489 */ NULL, /* b48a */ NULL, /* b48b */ NULL, /* b48c */ NULL, /* b48d */ NULL, /* b48e */ NULL, /* b48f */ NULL, /* b490 */ NULL, /* b491 */ NULL, /* b492 */ NULL, /* b493 */ NULL, /* b494 */ NULL, /* b495 */ NULL, /* b496 */ NULL, /* b497 */ NULL, /* b498 */ NULL, /* b499 */ NULL, /* b49a */ NULL, /* b49b */ NULL, /* b49c */ NULL, /* b49d */ NULL, /* b49e */ NULL, /* b49f */ NULL, /* b4a0 */ NULL, /* b4a1 */ NULL, /* b4a2 */ NULL, /* b4a3 */ NULL, /* b4a4 */ NULL, /* b4a5 */ NULL, /* b4a6 */ NULL, /* b4a7 */ NULL, /* b4a8 */ NULL, /* b4a9 */ NULL, /* b4aa */ NULL, /* b4ab */ NULL, /* b4ac */ NULL, /* b4ad */ NULL, /* b4ae */ NULL, /* b4af */ NULL, /* b4b0 */ NULL, /* b4b1 */ NULL, /* b4b2 */ NULL, /* b4b3 */ NULL, /* b4b4 */ NULL, /* b4b5 */ NULL, /* b4b6 */ NULL, /* b4b7 */ NULL, /* b4b8 */ NULL, /* b4b9 */ NULL, /* b4ba */ NULL, /* b4bb */ NULL, /* b4bc */ NULL, /* b4bd */ NULL, /* b4be */ NULL, /* b4bf */ NULL, /* b4c0 */ NULL, /* b4c1 */ NULL, /* b4c2 */ NULL, /* b4c3 */ NULL, /* b4c4 */ NULL, /* b4c5 */ NULL, /* b4c6 */ NULL, /* b4c7 */ NULL, /* b4c8 */ NULL, /* b4c9 */ NULL, /* b4ca */ NULL, /* b4cb */ NULL, /* b4cc */ NULL, /* b4cd */ NULL, /* b4ce */ NULL, /* b4cf */ NULL, /* b4d0 */ NULL, /* b4d1 */ NULL, /* b4d2 */ NULL, /* b4d3 */ NULL, /* b4d4 */ NULL, /* b4d5 */ NULL, /* b4d6 */ NULL, /* b4d7 */ NULL, /* b4d8 */ NULL, /* b4d9 */ NULL, /* b4da */ NULL, /* b4db */ NULL, /* b4dc */ NULL, /* b4dd */ NULL, /* b4de */ NULL, /* b4df */ NULL, /* b4e0 */ NULL, /* b4e1 */ NULL, /* b4e2 */ NULL, /* b4e3 */ NULL, /* b4e4 */ NULL, /* b4e5 */ NULL, /* b4e6 */ NULL, /* b4e7 */ NULL, /* b4e8 */ NULL, /* b4e9 */ NULL, /* b4ea */ NULL, /* b4eb */ NULL, /* b4ec */ NULL, /* b4ed */ NULL, /* b4ee */ NULL, /* b4ef */ NULL, /* b4f0 */ NULL, /* b4f1 */ NULL, /* b4f2 */ NULL, /* b4f3 */ NULL, /* b4f4 */ NULL, /* b4f5 */ NULL, /* b4f6 */ NULL, /* b4f7 */ NULL, /* b4f8 */ NULL, /* b4f9 */ NULL, /* b4fa */ NULL, /* b4fb */ NULL, /* b4fc */ NULL, /* b4fd */ NULL, /* b4fe */ NULL, /* b4ff */ NULL, /* b500 */ NULL, /* b501 */ NULL, /* b502 */ NULL, /* b503 */ NULL, /* b504 */ NULL, /* b505 */ NULL, /* b506 */ NULL, /* b507 */ NULL, /* b508 */ NULL, /* b509 */ NULL, /* b50a */ NULL, /* b50b */ NULL, /* b50c */ NULL, /* b50d */ NULL, /* b50e */ NULL, /* b50f */ NULL, /* b510 */ NULL, /* b511 */ NULL, /* b512 */ NULL, /* b513 */ NULL, /* b514 */ NULL, /* b515 */ NULL, /* b516 */ NULL, /* b517 */ NULL, /* b518 */ NULL, /* b519 */ NULL, /* b51a */ NULL, /* b51b */ NULL, /* b51c */ NULL, /* b51d */ NULL, /* b51e */ NULL, /* b51f */ NULL, /* b520 */ NULL, /* b521 */ NULL, /* b522 */ NULL, /* b523 */ NULL, /* b524 */ NULL, /* b525 */ NULL, /* b526 */ NULL, /* b527 */ NULL, /* b528 */ NULL, /* b529 */ NULL, /* b52a */ NULL, /* b52b */ NULL, /* b52c */ NULL, /* b52d */ NULL, /* b52e */ NULL, /* b52f */ NULL, /* b530 */ NULL, /* b531 */ NULL, /* b532 */ NULL, /* b533 */ NULL, /* b534 */ NULL, /* b535 */ NULL, /* b536 */ NULL, /* b537 */ NULL, /* b538 */ NULL, /* b539 */ NULL, /* b53a */ NULL, /* b53b */ NULL, /* b53c */ NULL, /* b53d */ NULL, /* b53e */ NULL, /* b53f */ NULL, /* b540 */ NULL, /* b541 */ NULL, /* b542 */ NULL, /* b543 */ NULL, /* b544 */ NULL, /* b545 */ NULL, /* b546 */ NULL, /* b547 */ NULL, /* b548 */ NULL, /* b549 */ NULL, /* b54a */ NULL, /* b54b */ NULL, /* b54c */ NULL, /* b54d */ NULL, /* b54e */ NULL, /* b54f */ NULL, /* b550 */ NULL, /* b551 */ NULL, /* b552 */ NULL, /* b553 */ NULL, /* b554 */ NULL, /* b555 */ NULL, /* b556 */ NULL, /* b557 */ NULL, /* b558 */ NULL, /* b559 */ NULL, /* b55a */ NULL, /* b55b */ NULL, /* b55c */ NULL, /* b55d */ NULL, /* b55e */ NULL, /* b55f */ NULL, /* b560 */ NULL, /* b561 */ NULL, /* b562 */ NULL, /* b563 */ NULL, /* b564 */ NULL, /* b565 */ NULL, /* b566 */ NULL, /* b567 */ NULL, /* b568 */ NULL, /* b569 */ NULL, /* b56a */ NULL, /* b56b */ NULL, /* b56c */ NULL, /* b56d */ NULL, /* b56e */ NULL, /* b56f */ NULL, /* b570 */ NULL, /* b571 */ NULL, /* b572 */ NULL, /* b573 */ NULL, /* b574 */ NULL, /* b575 */ NULL, /* b576 */ NULL, /* b577 */ NULL, /* b578 */ NULL, /* b579 */ NULL, /* b57a */ NULL, /* b57b */ NULL, /* b57c */ NULL, /* b57d */ NULL, /* b57e */ NULL, /* b57f */ NULL, /* b580 */ NULL, /* b581 */ NULL, /* b582 */ NULL, /* b583 */ NULL, /* b584 */ NULL, /* b585 */ NULL, /* b586 */ NULL, /* b587 */ NULL, /* b588 */ NULL, /* b589 */ NULL, /* b58a */ NULL, /* b58b */ NULL, /* b58c */ NULL, /* b58d */ NULL, /* b58e */ NULL, /* b58f */ NULL, /* b590 */ NULL, /* b591 */ NULL, /* b592 */ NULL, /* b593 */ NULL, /* b594 */ NULL, /* b595 */ NULL, /* b596 */ NULL, /* b597 */ NULL, /* b598 */ NULL, /* b599 */ NULL, /* b59a */ NULL, /* b59b */ NULL, /* b59c */ NULL, /* b59d */ NULL, /* b59e */ NULL, /* b59f */ NULL, /* b5a0 */ NULL, /* b5a1 */ NULL, /* b5a2 */ NULL, /* b5a3 */ NULL, /* b5a4 */ NULL, /* b5a5 */ NULL, /* b5a6 */ NULL, /* b5a7 */ NULL, /* b5a8 */ NULL, /* b5a9 */ NULL, /* b5aa */ NULL, /* b5ab */ NULL, /* b5ac */ NULL, /* b5ad */ NULL, /* b5ae */ NULL, /* b5af */ NULL, /* b5b0 */ NULL, /* b5b1 */ NULL, /* b5b2 */ NULL, /* b5b3 */ NULL, /* b5b4 */ NULL, /* b5b5 */ NULL, /* b5b6 */ NULL, /* b5b7 */ NULL, /* b5b8 */ NULL, /* b5b9 */ NULL, /* b5ba */ NULL, /* b5bb */ NULL, /* b5bc */ NULL, /* b5bd */ NULL, /* b5be */ NULL, /* b5bf */ NULL, /* b5c0 */ NULL, /* b5c1 */ NULL, /* b5c2 */ NULL, /* b5c3 */ NULL, /* b5c4 */ NULL, /* b5c5 */ NULL, /* b5c6 */ NULL, /* b5c7 */ NULL, /* b5c8 */ NULL, /* b5c9 */ NULL, /* b5ca */ NULL, /* b5cb */ NULL, /* b5cc */ NULL, /* b5cd */ NULL, /* b5ce */ NULL, /* b5cf */ NULL, /* b5d0 */ NULL, /* b5d1 */ NULL, /* b5d2 */ NULL, /* b5d3 */ NULL, /* b5d4 */ NULL, /* b5d5 */ NULL, /* b5d6 */ NULL, /* b5d7 */ NULL, /* b5d8 */ NULL, /* b5d9 */ NULL, /* b5da */ NULL, /* b5db */ NULL, /* b5dc */ NULL, /* b5dd */ NULL, /* b5de */ NULL, /* b5df */ NULL, /* b5e0 */ NULL, /* b5e1 */ NULL, /* b5e2 */ NULL, /* b5e3 */ NULL, /* b5e4 */ NULL, /* b5e5 */ NULL, /* b5e6 */ NULL, /* b5e7 */ NULL, /* b5e8 */ NULL, /* b5e9 */ NULL, /* b5ea */ NULL, /* b5eb */ NULL, /* b5ec */ NULL, /* b5ed */ NULL, /* b5ee */ NULL, /* b5ef */ NULL, /* b5f0 */ NULL, /* b5f1 */ NULL, /* b5f2 */ NULL, /* b5f3 */ NULL, /* b5f4 */ NULL, /* b5f5 */ NULL, /* b5f6 */ NULL, /* b5f7 */ NULL, /* b5f8 */ NULL, /* b5f9 */ NULL, /* b5fa */ NULL, /* b5fb */ NULL, /* b5fc */ NULL, /* b5fd */ NULL, /* b5fe */ NULL, /* b5ff */ NULL, /* b600 */ NULL, /* b601 */ NULL, /* b602 */ NULL, /* b603 */ NULL, /* b604 */ NULL, /* b605 */ NULL, /* b606 */ NULL, /* b607 */ NULL, /* b608 */ NULL, /* b609 */ NULL, /* b60a */ NULL, /* b60b */ NULL, /* b60c */ NULL, /* b60d */ NULL, /* b60e */ NULL, /* b60f */ NULL, /* b610 */ NULL, /* b611 */ NULL, /* b612 */ NULL, /* b613 */ NULL, /* b614 */ NULL, /* b615 */ NULL, /* b616 */ NULL, /* b617 */ NULL, /* b618 */ NULL, /* b619 */ NULL, /* b61a */ NULL, /* b61b */ NULL, /* b61c */ NULL, /* b61d */ NULL, /* b61e */ NULL, /* b61f */ NULL, /* b620 */ NULL, /* b621 */ NULL, /* b622 */ NULL, /* b623 */ NULL, /* b624 */ NULL, /* b625 */ NULL, /* b626 */ NULL, /* b627 */ NULL, /* b628 */ NULL, /* b629 */ NULL, /* b62a */ NULL, /* b62b */ NULL, /* b62c */ NULL, /* b62d */ NULL, /* b62e */ NULL, /* b62f */ NULL, /* b630 */ NULL, /* b631 */ NULL, /* b632 */ NULL, /* b633 */ NULL, /* b634 */ NULL, /* b635 */ NULL, /* b636 */ NULL, /* b637 */ NULL, /* b638 */ NULL, /* b639 */ NULL, /* b63a */ NULL, /* b63b */ NULL, /* b63c */ NULL, /* b63d */ NULL, /* b63e */ NULL, /* b63f */ NULL, /* b640 */ NULL, /* b641 */ NULL, /* b642 */ NULL, /* b643 */ NULL, /* b644 */ NULL, /* b645 */ NULL, /* b646 */ NULL, /* b647 */ NULL, /* b648 */ NULL, /* b649 */ NULL, /* b64a */ NULL, /* b64b */ NULL, /* b64c */ NULL, /* b64d */ NULL, /* b64e */ NULL, /* b64f */ NULL, /* b650 */ NULL, /* b651 */ NULL, /* b652 */ NULL, /* b653 */ NULL, /* b654 */ NULL, /* b655 */ NULL, /* b656 */ NULL, /* b657 */ NULL, /* b658 */ NULL, /* b659 */ NULL, /* b65a */ NULL, /* b65b */ NULL, /* b65c */ NULL, /* b65d */ NULL, /* b65e */ NULL, /* b65f */ NULL, /* b660 */ NULL, /* b661 */ NULL, /* b662 */ NULL, /* b663 */ NULL, /* b664 */ NULL, /* b665 */ NULL, /* b666 */ NULL, /* b667 */ NULL, /* b668 */ NULL, /* b669 */ NULL, /* b66a */ NULL, /* b66b */ NULL, /* b66c */ NULL, /* b66d */ NULL, /* b66e */ NULL, /* b66f */ NULL, /* b670 */ NULL, /* b671 */ NULL, /* b672 */ NULL, /* b673 */ NULL, /* b674 */ NULL, /* b675 */ NULL, /* b676 */ NULL, /* b677 */ NULL, /* b678 */ NULL, /* b679 */ NULL, /* b67a */ NULL, /* b67b */ NULL, /* b67c */ NULL, /* b67d */ NULL, /* b67e */ NULL, /* b67f */ NULL, /* b680 */ NULL, /* b681 */ NULL, /* b682 */ NULL, /* b683 */ NULL, /* b684 */ NULL, /* b685 */ NULL, /* b686 */ NULL, /* b687 */ NULL, /* b688 */ NULL, /* b689 */ NULL, /* b68a */ NULL, /* b68b */ NULL, /* b68c */ NULL, /* b68d */ NULL, /* b68e */ NULL, /* b68f */ NULL, /* b690 */ NULL, /* b691 */ NULL, /* b692 */ NULL, /* b693 */ NULL, /* b694 */ NULL, /* b695 */ NULL, /* b696 */ NULL, /* b697 */ NULL, /* b698 */ NULL, /* b699 */ NULL, /* b69a */ NULL, /* b69b */ NULL, /* b69c */ NULL, /* b69d */ NULL, /* b69e */ NULL, /* b69f */ NULL, /* b6a0 */ NULL, /* b6a1 */ NULL, /* b6a2 */ NULL, /* b6a3 */ NULL, /* b6a4 */ NULL, /* b6a5 */ NULL, /* b6a6 */ NULL, /* b6a7 */ NULL, /* b6a8 */ NULL, /* b6a9 */ NULL, /* b6aa */ NULL, /* b6ab */ NULL, /* b6ac */ NULL, /* b6ad */ NULL, /* b6ae */ NULL, /* b6af */ NULL, /* b6b0 */ NULL, /* b6b1 */ NULL, /* b6b2 */ NULL, /* b6b3 */ NULL, /* b6b4 */ NULL, /* b6b5 */ NULL, /* b6b6 */ NULL, /* b6b7 */ NULL, /* b6b8 */ NULL, /* b6b9 */ NULL, /* b6ba */ NULL, /* b6bb */ NULL, /* b6bc */ NULL, /* b6bd */ NULL, /* b6be */ NULL, /* b6bf */ NULL, /* b6c0 */ NULL, /* b6c1 */ NULL, /* b6c2 */ NULL, /* b6c3 */ NULL, /* b6c4 */ NULL, /* b6c5 */ NULL, /* b6c6 */ NULL, /* b6c7 */ NULL, /* b6c8 */ NULL, /* b6c9 */ NULL, /* b6ca */ NULL, /* b6cb */ NULL, /* b6cc */ NULL, /* b6cd */ NULL, /* b6ce */ NULL, /* b6cf */ NULL, /* b6d0 */ NULL, /* b6d1 */ NULL, /* b6d2 */ NULL, /* b6d3 */ NULL, /* b6d4 */ NULL, /* b6d5 */ NULL, /* b6d6 */ NULL, /* b6d7 */ NULL, /* b6d8 */ NULL, /* b6d9 */ NULL, /* b6da */ NULL, /* b6db */ NULL, /* b6dc */ NULL, /* b6dd */ NULL, /* b6de */ NULL, /* b6df */ NULL, /* b6e0 */ NULL, /* b6e1 */ NULL, /* b6e2 */ NULL, /* b6e3 */ NULL, /* b6e4 */ NULL, /* b6e5 */ NULL, /* b6e6 */ NULL, /* b6e7 */ NULL, /* b6e8 */ NULL, /* b6e9 */ NULL, /* b6ea */ NULL, /* b6eb */ NULL, /* b6ec */ NULL, /* b6ed */ NULL, /* b6ee */ NULL, /* b6ef */ NULL, /* b6f0 */ NULL, /* b6f1 */ NULL, /* b6f2 */ NULL, /* b6f3 */ NULL, /* b6f4 */ NULL, /* b6f5 */ NULL, /* b6f6 */ NULL, /* b6f7 */ NULL, /* b6f8 */ NULL, /* b6f9 */ NULL, /* b6fa */ NULL, /* b6fb */ NULL, /* b6fc */ NULL, /* b6fd */ NULL, /* b6fe */ NULL, /* b6ff */ NULL, /* b700 */ NULL, /* b701 */ NULL, /* b702 */ NULL, /* b703 */ NULL, /* b704 */ NULL, /* b705 */ NULL, /* b706 */ NULL, /* b707 */ NULL, /* b708 */ NULL, /* b709 */ NULL, /* b70a */ NULL, /* b70b */ NULL, /* b70c */ NULL, /* b70d */ NULL, /* b70e */ NULL, /* b70f */ NULL, /* b710 */ NULL, /* b711 */ NULL, /* b712 */ NULL, /* b713 */ NULL, /* b714 */ NULL, /* b715 */ NULL, /* b716 */ NULL, /* b717 */ NULL, /* b718 */ NULL, /* b719 */ NULL, /* b71a */ NULL, /* b71b */ NULL, /* b71c */ NULL, /* b71d */ NULL, /* b71e */ NULL, /* b71f */ NULL, /* b720 */ NULL, /* b721 */ NULL, /* b722 */ NULL, /* b723 */ NULL, /* b724 */ NULL, /* b725 */ NULL, /* b726 */ NULL, /* b727 */ NULL, /* b728 */ NULL, /* b729 */ NULL, /* b72a */ NULL, /* b72b */ NULL, /* b72c */ NULL, /* b72d */ NULL, /* b72e */ NULL, /* b72f */ NULL, /* b730 */ NULL, /* b731 */ NULL, /* b732 */ NULL, /* b733 */ NULL, /* b734 */ NULL, /* b735 */ NULL, /* b736 */ NULL, /* b737 */ NULL, /* b738 */ NULL, /* b739 */ NULL, /* b73a */ NULL, /* b73b */ NULL, /* b73c */ NULL, /* b73d */ NULL, /* b73e */ NULL, /* b73f */ NULL, /* b740 */ NULL, /* b741 */ NULL, /* b742 */ NULL, /* b743 */ NULL, /* b744 */ NULL, /* b745 */ NULL, /* b746 */ NULL, /* b747 */ NULL, /* b748 */ NULL, /* b749 */ NULL, /* b74a */ NULL, /* b74b */ NULL, /* b74c */ NULL, /* b74d */ NULL, /* b74e */ NULL, /* b74f */ NULL, /* b750 */ NULL, /* b751 */ NULL, /* b752 */ NULL, /* b753 */ NULL, /* b754 */ NULL, /* b755 */ NULL, /* b756 */ NULL, /* b757 */ NULL, /* b758 */ NULL, /* b759 */ NULL, /* b75a */ NULL, /* b75b */ NULL, /* b75c */ NULL, /* b75d */ NULL, /* b75e */ NULL, /* b75f */ NULL, /* b760 */ NULL, /* b761 */ NULL, /* b762 */ NULL, /* b763 */ NULL, /* b764 */ NULL, /* b765 */ NULL, /* b766 */ NULL, /* b767 */ NULL, /* b768 */ NULL, /* b769 */ NULL, /* b76a */ NULL, /* b76b */ NULL, /* b76c */ NULL, /* b76d */ NULL, /* b76e */ NULL, /* b76f */ NULL, /* b770 */ NULL, /* b771 */ NULL, /* b772 */ NULL, /* b773 */ NULL, /* b774 */ NULL, /* b775 */ NULL, /* b776 */ NULL, /* b777 */ NULL, /* b778 */ NULL, /* b779 */ NULL, /* b77a */ NULL, /* b77b */ NULL, /* b77c */ NULL, /* b77d */ NULL, /* b77e */ NULL, /* b77f */ NULL, /* b780 */ NULL, /* b781 */ NULL, /* b782 */ NULL, /* b783 */ NULL, /* b784 */ NULL, /* b785 */ NULL, /* b786 */ NULL, /* b787 */ NULL, /* b788 */ NULL, /* b789 */ NULL, /* b78a */ NULL, /* b78b */ NULL, /* b78c */ NULL, /* b78d */ NULL, /* b78e */ NULL, /* b78f */ NULL, /* b790 */ NULL, /* b791 */ NULL, /* b792 */ NULL, /* b793 */ NULL, /* b794 */ NULL, /* b795 */ NULL, /* b796 */ NULL, /* b797 */ NULL, /* b798 */ NULL, /* b799 */ NULL, /* b79a */ NULL, /* b79b */ NULL, /* b79c */ NULL, /* b79d */ NULL, /* b79e */ NULL, /* b79f */ NULL, /* b7a0 */ NULL, /* b7a1 */ NULL, /* b7a2 */ NULL, /* b7a3 */ NULL, /* b7a4 */ NULL, /* b7a5 */ NULL, /* b7a6 */ NULL, /* b7a7 */ NULL, /* b7a8 */ NULL, /* b7a9 */ NULL, /* b7aa */ NULL, /* b7ab */ NULL, /* b7ac */ NULL, /* b7ad */ NULL, /* b7ae */ NULL, /* b7af */ NULL, /* b7b0 */ NULL, /* b7b1 */ NULL, /* b7b2 */ NULL, /* b7b3 */ NULL, /* b7b4 */ NULL, /* b7b5 */ NULL, /* b7b6 */ NULL, /* b7b7 */ NULL, /* b7b8 */ NULL, /* b7b9 */ NULL, /* b7ba */ NULL, /* b7bb */ NULL, /* b7bc */ NULL, /* b7bd */ NULL, /* b7be */ NULL, /* b7bf */ NULL, /* b7c0 */ NULL, /* b7c1 */ NULL, /* b7c2 */ NULL, /* b7c3 */ NULL, /* b7c4 */ NULL, /* b7c5 */ NULL, /* b7c6 */ NULL, /* b7c7 */ NULL, /* b7c8 */ NULL, /* b7c9 */ NULL, /* b7ca */ NULL, /* b7cb */ NULL, /* b7cc */ NULL, /* b7cd */ NULL, /* b7ce */ NULL, /* b7cf */ NULL, /* b7d0 */ NULL, /* b7d1 */ NULL, /* b7d2 */ NULL, /* b7d3 */ NULL, /* b7d4 */ NULL, /* b7d5 */ NULL, /* b7d6 */ NULL, /* b7d7 */ NULL, /* b7d8 */ NULL, /* b7d9 */ NULL, /* b7da */ NULL, /* b7db */ NULL, /* b7dc */ NULL, /* b7dd */ NULL, /* b7de */ NULL, /* b7df */ NULL, /* b7e0 */ NULL, /* b7e1 */ NULL, /* b7e2 */ NULL, /* b7e3 */ NULL, /* b7e4 */ NULL, /* b7e5 */ NULL, /* b7e6 */ NULL, /* b7e7 */ NULL, /* b7e8 */ NULL, /* b7e9 */ NULL, /* b7ea */ NULL, /* b7eb */ NULL, /* b7ec */ NULL, /* b7ed */ NULL, /* b7ee */ NULL, /* b7ef */ NULL, /* b7f0 */ NULL, /* b7f1 */ NULL, /* b7f2 */ NULL, /* b7f3 */ NULL, /* b7f4 */ NULL, /* b7f5 */ NULL, /* b7f6 */ NULL, /* b7f7 */ NULL, /* b7f8 */ NULL, /* b7f9 */ NULL, /* b7fa */ NULL, /* b7fb */ NULL, /* b7fc */ NULL, /* b7fd */ NULL, /* b7fe */ NULL, /* b7ff */ NULL, /* b800 */ NULL, /* b801 */ NULL, /* b802 */ NULL, /* b803 */ NULL, /* b804 */ NULL, /* b805 */ NULL, /* b806 */ NULL, /* b807 */ NULL, /* b808 */ NULL, /* b809 */ NULL, /* b80a */ NULL, /* b80b */ NULL, /* b80c */ NULL, /* b80d */ NULL, /* b80e */ NULL, /* b80f */ NULL, /* b810 */ NULL, /* b811 */ NULL, /* b812 */ NULL, /* b813 */ NULL, /* b814 */ NULL, /* b815 */ NULL, /* b816 */ NULL, /* b817 */ NULL, /* b818 */ NULL, /* b819 */ NULL, /* b81a */ NULL, /* b81b */ NULL, /* b81c */ NULL, /* b81d */ NULL, /* b81e */ NULL, /* b81f */ NULL, /* b820 */ NULL, /* b821 */ NULL, /* b822 */ NULL, /* b823 */ NULL, /* b824 */ NULL, /* b825 */ NULL, /* b826 */ NULL, /* b827 */ NULL, /* b828 */ NULL, /* b829 */ NULL, /* b82a */ NULL, /* b82b */ NULL, /* b82c */ NULL, /* b82d */ NULL, /* b82e */ NULL, /* b82f */ NULL, /* b830 */ NULL, /* b831 */ NULL, /* b832 */ NULL, /* b833 */ NULL, /* b834 */ NULL, /* b835 */ NULL, /* b836 */ NULL, /* b837 */ NULL, /* b838 */ NULL, /* b839 */ NULL, /* b83a */ NULL, /* b83b */ NULL, /* b83c */ NULL, /* b83d */ NULL, /* b83e */ NULL, /* b83f */ NULL, /* b840 */ NULL, /* b841 */ NULL, /* b842 */ NULL, /* b843 */ NULL, /* b844 */ NULL, /* b845 */ NULL, /* b846 */ NULL, /* b847 */ NULL, /* b848 */ NULL, /* b849 */ NULL, /* b84a */ NULL, /* b84b */ NULL, /* b84c */ NULL, /* b84d */ NULL, /* b84e */ NULL, /* b84f */ NULL, /* b850 */ NULL, /* b851 */ NULL, /* b852 */ NULL, /* b853 */ NULL, /* b854 */ NULL, /* b855 */ NULL, /* b856 */ NULL, /* b857 */ NULL, /* b858 */ NULL, /* b859 */ NULL, /* b85a */ NULL, /* b85b */ NULL, /* b85c */ NULL, /* b85d */ NULL, /* b85e */ NULL, /* b85f */ NULL, /* b860 */ NULL, /* b861 */ NULL, /* b862 */ NULL, /* b863 */ NULL, /* b864 */ NULL, /* b865 */ NULL, /* b866 */ NULL, /* b867 */ NULL, /* b868 */ NULL, /* b869 */ NULL, /* b86a */ NULL, /* b86b */ NULL, /* b86c */ NULL, /* b86d */ NULL, /* b86e */ NULL, /* b86f */ NULL, /* b870 */ NULL, /* b871 */ NULL, /* b872 */ NULL, /* b873 */ NULL, /* b874 */ NULL, /* b875 */ NULL, /* b876 */ NULL, /* b877 */ NULL, /* b878 */ NULL, /* b879 */ NULL, /* b87a */ NULL, /* b87b */ NULL, /* b87c */ NULL, /* b87d */ NULL, /* b87e */ NULL, /* b87f */ NULL, /* b880 */ NULL, /* b881 */ NULL, /* b882 */ NULL, /* b883 */ NULL, /* b884 */ NULL, /* b885 */ NULL, /* b886 */ NULL, /* b887 */ NULL, /* b888 */ NULL, /* b889 */ NULL, /* b88a */ NULL, /* b88b */ NULL, /* b88c */ NULL, /* b88d */ NULL, /* b88e */ NULL, /* b88f */ NULL, /* b890 */ NULL, /* b891 */ NULL, /* b892 */ NULL, /* b893 */ NULL, /* b894 */ NULL, /* b895 */ NULL, /* b896 */ NULL, /* b897 */ NULL, /* b898 */ NULL, /* b899 */ NULL, /* b89a */ NULL, /* b89b */ NULL, /* b89c */ NULL, /* b89d */ NULL, /* b89e */ NULL, /* b89f */ NULL, /* b8a0 */ NULL, /* b8a1 */ NULL, /* b8a2 */ NULL, /* b8a3 */ NULL, /* b8a4 */ NULL, /* b8a5 */ NULL, /* b8a6 */ NULL, /* b8a7 */ NULL, /* b8a8 */ NULL, /* b8a9 */ NULL, /* b8aa */ NULL, /* b8ab */ NULL, /* b8ac */ NULL, /* b8ad */ NULL, /* b8ae */ NULL, /* b8af */ NULL, /* b8b0 */ NULL, /* b8b1 */ NULL, /* b8b2 */ NULL, /* b8b3 */ NULL, /* b8b4 */ NULL, /* b8b5 */ NULL, /* b8b6 */ NULL, /* b8b7 */ NULL, /* b8b8 */ NULL, /* b8b9 */ NULL, /* b8ba */ NULL, /* b8bb */ NULL, /* b8bc */ NULL, /* b8bd */ NULL, /* b8be */ NULL, /* b8bf */ NULL, /* b8c0 */ NULL, /* b8c1 */ NULL, /* b8c2 */ NULL, /* b8c3 */ NULL, /* b8c4 */ NULL, /* b8c5 */ NULL, /* b8c6 */ NULL, /* b8c7 */ NULL, /* b8c8 */ NULL, /* b8c9 */ NULL, /* b8ca */ NULL, /* b8cb */ NULL, /* b8cc */ NULL, /* b8cd */ NULL, /* b8ce */ NULL, /* b8cf */ NULL, /* b8d0 */ NULL, /* b8d1 */ NULL, /* b8d2 */ NULL, /* b8d3 */ NULL, /* b8d4 */ NULL, /* b8d5 */ NULL, /* b8d6 */ NULL, /* b8d7 */ NULL, /* b8d8 */ NULL, /* b8d9 */ NULL, /* b8da */ NULL, /* b8db */ NULL, /* b8dc */ NULL, /* b8dd */ NULL, /* b8de */ NULL, /* b8df */ NULL, /* b8e0 */ NULL, /* b8e1 */ NULL, /* b8e2 */ NULL, /* b8e3 */ NULL, /* b8e4 */ NULL, /* b8e5 */ NULL, /* b8e6 */ NULL, /* b8e7 */ NULL, /* b8e8 */ NULL, /* b8e9 */ NULL, /* b8ea */ NULL, /* b8eb */ NULL, /* b8ec */ NULL, /* b8ed */ NULL, /* b8ee */ NULL, /* b8ef */ NULL, /* b8f0 */ NULL, /* b8f1 */ NULL, /* b8f2 */ NULL, /* b8f3 */ NULL, /* b8f4 */ NULL, /* b8f5 */ NULL, /* b8f6 */ NULL, /* b8f7 */ NULL, /* b8f8 */ NULL, /* b8f9 */ NULL, /* b8fa */ NULL, /* b8fb */ NULL, /* b8fc */ NULL, /* b8fd */ NULL, /* b8fe */ NULL, /* b8ff */ NULL, /* b900 */ NULL, /* b901 */ NULL, /* b902 */ NULL, /* b903 */ NULL, /* b904 */ NULL, /* b905 */ NULL, /* b906 */ NULL, /* b907 */ NULL, /* b908 */ NULL, /* b909 */ NULL, /* b90a */ NULL, /* b90b */ NULL, /* b90c */ NULL, /* b90d */ NULL, /* b90e */ NULL, /* b90f */ NULL, /* b910 */ NULL, /* b911 */ NULL, /* b912 */ NULL, /* b913 */ NULL, /* b914 */ NULL, /* b915 */ NULL, /* b916 */ NULL, /* b917 */ NULL, /* b918 */ NULL, /* b919 */ NULL, /* b91a */ NULL, /* b91b */ NULL, /* b91c */ NULL, /* b91d */ NULL, /* b91e */ NULL, /* b91f */ NULL, /* b920 */ NULL, /* b921 */ NULL, /* b922 */ NULL, /* b923 */ NULL, /* b924 */ NULL, /* b925 */ NULL, /* b926 */ NULL, /* b927 */ NULL, /* b928 */ NULL, /* b929 */ NULL, /* b92a */ NULL, /* b92b */ NULL, /* b92c */ NULL, /* b92d */ NULL, /* b92e */ NULL, /* b92f */ NULL, /* b930 */ NULL, /* b931 */ NULL, /* b932 */ NULL, /* b933 */ NULL, /* b934 */ NULL, /* b935 */ NULL, /* b936 */ NULL, /* b937 */ NULL, /* b938 */ NULL, /* b939 */ NULL, /* b93a */ NULL, /* b93b */ NULL, /* b93c */ NULL, /* b93d */ NULL, /* b93e */ NULL, /* b93f */ NULL, /* b940 */ NULL, /* b941 */ NULL, /* b942 */ NULL, /* b943 */ NULL, /* b944 */ NULL, /* b945 */ NULL, /* b946 */ NULL, /* b947 */ NULL, /* b948 */ NULL, /* b949 */ NULL, /* b94a */ NULL, /* b94b */ NULL, /* b94c */ NULL, /* b94d */ NULL, /* b94e */ NULL, /* b94f */ NULL, /* b950 */ NULL, /* b951 */ NULL, /* b952 */ NULL, /* b953 */ NULL, /* b954 */ NULL, /* b955 */ NULL, /* b956 */ NULL, /* b957 */ NULL, /* b958 */ NULL, /* b959 */ NULL, /* b95a */ NULL, /* b95b */ NULL, /* b95c */ NULL, /* b95d */ NULL, /* b95e */ NULL, /* b95f */ NULL, /* b960 */ NULL, /* b961 */ NULL, /* b962 */ NULL, /* b963 */ NULL, /* b964 */ NULL, /* b965 */ NULL, /* b966 */ NULL, /* b967 */ NULL, /* b968 */ NULL, /* b969 */ NULL, /* b96a */ NULL, /* b96b */ NULL, /* b96c */ NULL, /* b96d */ NULL, /* b96e */ NULL, /* b96f */ NULL, /* b970 */ NULL, /* b971 */ NULL, /* b972 */ NULL, /* b973 */ NULL, /* b974 */ NULL, /* b975 */ NULL, /* b976 */ NULL, /* b977 */ NULL, /* b978 */ NULL, /* b979 */ NULL, /* b97a */ NULL, /* b97b */ NULL, /* b97c */ NULL, /* b97d */ NULL, /* b97e */ NULL, /* b97f */ NULL, /* b980 */ NULL, /* b981 */ NULL, /* b982 */ NULL, /* b983 */ NULL, /* b984 */ NULL, /* b985 */ NULL, /* b986 */ NULL, /* b987 */ NULL, /* b988 */ NULL, /* b989 */ NULL, /* b98a */ NULL, /* b98b */ NULL, /* b98c */ NULL, /* b98d */ NULL, /* b98e */ NULL, /* b98f */ NULL, /* b990 */ NULL, /* b991 */ NULL, /* b992 */ NULL, /* b993 */ NULL, /* b994 */ NULL, /* b995 */ NULL, /* b996 */ NULL, /* b997 */ NULL, /* b998 */ NULL, /* b999 */ NULL, /* b99a */ NULL, /* b99b */ NULL, /* b99c */ NULL, /* b99d */ NULL, /* b99e */ NULL, /* b99f */ NULL, /* b9a0 */ NULL, /* b9a1 */ NULL, /* b9a2 */ NULL, /* b9a3 */ NULL, /* b9a4 */ NULL, /* b9a5 */ NULL, /* b9a6 */ NULL, /* b9a7 */ NULL, /* b9a8 */ NULL, /* b9a9 */ NULL, /* b9aa */ NULL, /* b9ab */ NULL, /* b9ac */ NULL, /* b9ad */ NULL, /* b9ae */ NULL, /* b9af */ NULL, /* b9b0 */ NULL, /* b9b1 */ NULL, /* b9b2 */ NULL, /* b9b3 */ NULL, /* b9b4 */ NULL, /* b9b5 */ NULL, /* b9b6 */ NULL, /* b9b7 */ NULL, /* b9b8 */ NULL, /* b9b9 */ NULL, /* b9ba */ NULL, /* b9bb */ NULL, /* b9bc */ NULL, /* b9bd */ NULL, /* b9be */ NULL, /* b9bf */ NULL, /* b9c0 */ NULL, /* b9c1 */ NULL, /* b9c2 */ NULL, /* b9c3 */ NULL, /* b9c4 */ NULL, /* b9c5 */ NULL, /* b9c6 */ NULL, /* b9c7 */ NULL, /* b9c8 */ NULL, /* b9c9 */ NULL, /* b9ca */ NULL, /* b9cb */ NULL, /* b9cc */ NULL, /* b9cd */ NULL, /* b9ce */ NULL, /* b9cf */ NULL, /* b9d0 */ NULL, /* b9d1 */ NULL, /* b9d2 */ NULL, /* b9d3 */ NULL, /* b9d4 */ NULL, /* b9d5 */ NULL, /* b9d6 */ NULL, /* b9d7 */ NULL, /* b9d8 */ NULL, /* b9d9 */ NULL, /* b9da */ NULL, /* b9db */ NULL, /* b9dc */ NULL, /* b9dd */ NULL, /* b9de */ NULL, /* b9df */ NULL, /* b9e0 */ NULL, /* b9e1 */ NULL, /* b9e2 */ NULL, /* b9e3 */ NULL, /* b9e4 */ NULL, /* b9e5 */ NULL, /* b9e6 */ NULL, /* b9e7 */ NULL, /* b9e8 */ NULL, /* b9e9 */ NULL, /* b9ea */ NULL, /* b9eb */ NULL, /* b9ec */ NULL, /* b9ed */ NULL, /* b9ee */ NULL, /* b9ef */ NULL, /* b9f0 */ NULL, /* b9f1 */ NULL, /* b9f2 */ NULL, /* b9f3 */ NULL, /* b9f4 */ NULL, /* b9f5 */ NULL, /* b9f6 */ NULL, /* b9f7 */ NULL, /* b9f8 */ NULL, /* b9f9 */ NULL, /* b9fa */ NULL, /* b9fb */ NULL, /* b9fc */ NULL, /* b9fd */ NULL, /* b9fe */ NULL, /* b9ff */ NULL, /* ba00 */ NULL, /* ba01 */ NULL, /* ba02 */ NULL, /* ba03 */ NULL, /* ba04 */ NULL, /* ba05 */ NULL, /* ba06 */ NULL, /* ba07 */ NULL, /* ba08 */ NULL, /* ba09 */ NULL, /* ba0a */ NULL, /* ba0b */ NULL, /* ba0c */ NULL, /* ba0d */ NULL, /* ba0e */ NULL, /* ba0f */ NULL, /* ba10 */ NULL, /* ba11 */ NULL, /* ba12 */ NULL, /* ba13 */ NULL, /* ba14 */ NULL, /* ba15 */ NULL, /* ba16 */ NULL, /* ba17 */ NULL, /* ba18 */ NULL, /* ba19 */ NULL, /* ba1a */ NULL, /* ba1b */ NULL, /* ba1c */ NULL, /* ba1d */ NULL, /* ba1e */ NULL, /* ba1f */ NULL, /* ba20 */ NULL, /* ba21 */ NULL, /* ba22 */ NULL, /* ba23 */ NULL, /* ba24 */ NULL, /* ba25 */ NULL, /* ba26 */ NULL, /* ba27 */ NULL, /* ba28 */ NULL, /* ba29 */ NULL, /* ba2a */ NULL, /* ba2b */ NULL, /* ba2c */ NULL, /* ba2d */ NULL, /* ba2e */ NULL, /* ba2f */ NULL, /* ba30 */ NULL, /* ba31 */ NULL, /* ba32 */ NULL, /* ba33 */ NULL, /* ba34 */ NULL, /* ba35 */ NULL, /* ba36 */ NULL, /* ba37 */ NULL, /* ba38 */ NULL, /* ba39 */ NULL, /* ba3a */ NULL, /* ba3b */ NULL, /* ba3c */ NULL, /* ba3d */ NULL, /* ba3e */ NULL, /* ba3f */ NULL, /* ba40 */ NULL, /* ba41 */ NULL, /* ba42 */ NULL, /* ba43 */ NULL, /* ba44 */ NULL, /* ba45 */ NULL, /* ba46 */ NULL, /* ba47 */ NULL, /* ba48 */ NULL, /* ba49 */ NULL, /* ba4a */ NULL, /* ba4b */ NULL, /* ba4c */ NULL, /* ba4d */ NULL, /* ba4e */ NULL, /* ba4f */ NULL, /* ba50 */ NULL, /* ba51 */ NULL, /* ba52 */ NULL, /* ba53 */ NULL, /* ba54 */ NULL, /* ba55 */ NULL, /* ba56 */ NULL, /* ba57 */ NULL, /* ba58 */ NULL, /* ba59 */ NULL, /* ba5a */ NULL, /* ba5b */ NULL, /* ba5c */ NULL, /* ba5d */ NULL, /* ba5e */ NULL, /* ba5f */ NULL, /* ba60 */ NULL, /* ba61 */ NULL, /* ba62 */ NULL, /* ba63 */ NULL, /* ba64 */ NULL, /* ba65 */ NULL, /* ba66 */ NULL, /* ba67 */ NULL, /* ba68 */ NULL, /* ba69 */ NULL, /* ba6a */ NULL, /* ba6b */ NULL, /* ba6c */ NULL, /* ba6d */ NULL, /* ba6e */ NULL, /* ba6f */ NULL, /* ba70 */ NULL, /* ba71 */ NULL, /* ba72 */ NULL, /* ba73 */ NULL, /* ba74 */ NULL, /* ba75 */ NULL, /* ba76 */ NULL, /* ba77 */ NULL, /* ba78 */ NULL, /* ba79 */ NULL, /* ba7a */ NULL, /* ba7b */ NULL, /* ba7c */ NULL, /* ba7d */ NULL, /* ba7e */ NULL, /* ba7f */ NULL, /* ba80 */ NULL, /* ba81 */ NULL, /* ba82 */ NULL, /* ba83 */ NULL, /* ba84 */ NULL, /* ba85 */ NULL, /* ba86 */ NULL, /* ba87 */ NULL, /* ba88 */ NULL, /* ba89 */ NULL, /* ba8a */ NULL, /* ba8b */ NULL, /* ba8c */ NULL, /* ba8d */ NULL, /* ba8e */ NULL, /* ba8f */ NULL, /* ba90 */ NULL, /* ba91 */ NULL, /* ba92 */ NULL, /* ba93 */ NULL, /* ba94 */ NULL, /* ba95 */ NULL, /* ba96 */ NULL, /* ba97 */ NULL, /* ba98 */ NULL, /* ba99 */ NULL, /* ba9a */ NULL, /* ba9b */ NULL, /* ba9c */ NULL, /* ba9d */ NULL, /* ba9e */ NULL, /* ba9f */ NULL, /* baa0 */ NULL, /* baa1 */ NULL, /* baa2 */ NULL, /* baa3 */ NULL, /* baa4 */ NULL, /* baa5 */ NULL, /* baa6 */ NULL, /* baa7 */ NULL, /* baa8 */ NULL, /* baa9 */ NULL, /* baaa */ NULL, /* baab */ NULL, /* baac */ NULL, /* baad */ NULL, /* baae */ NULL, /* baaf */ NULL, /* bab0 */ NULL, /* bab1 */ NULL, /* bab2 */ NULL, /* bab3 */ NULL, /* bab4 */ NULL, /* bab5 */ NULL, /* bab6 */ NULL, /* bab7 */ NULL, /* bab8 */ NULL, /* bab9 */ NULL, /* baba */ NULL, /* babb */ NULL, /* babc */ NULL, /* babd */ NULL, /* babe */ NULL, /* babf */ NULL, /* bac0 */ NULL, /* bac1 */ NULL, /* bac2 */ NULL, /* bac3 */ NULL, /* bac4 */ NULL, /* bac5 */ NULL, /* bac6 */ NULL, /* bac7 */ NULL, /* bac8 */ NULL, /* bac9 */ NULL, /* baca */ NULL, /* bacb */ NULL, /* bacc */ NULL, /* bacd */ NULL, /* bace */ NULL, /* bacf */ NULL, /* bad0 */ NULL, /* bad1 */ NULL, /* bad2 */ NULL, /* bad3 */ NULL, /* bad4 */ NULL, /* bad5 */ NULL, /* bad6 */ NULL, /* bad7 */ NULL, /* bad8 */ NULL, /* bad9 */ NULL, /* bada */ NULL, /* badb */ NULL, /* badc */ NULL, /* badd */ NULL, /* bade */ NULL, /* badf */ NULL, /* bae0 */ NULL, /* bae1 */ NULL, /* bae2 */ NULL, /* bae3 */ NULL, /* bae4 */ NULL, /* bae5 */ NULL, /* bae6 */ NULL, /* bae7 */ NULL, /* bae8 */ NULL, /* bae9 */ NULL, /* baea */ NULL, /* baeb */ NULL, /* baec */ NULL, /* baed */ NULL, /* baee */ NULL, /* baef */ NULL, /* baf0 */ NULL, /* baf1 */ NULL, /* baf2 */ NULL, /* baf3 */ NULL, /* baf4 */ NULL, /* baf5 */ NULL, /* baf6 */ NULL, /* baf7 */ NULL, /* baf8 */ NULL, /* baf9 */ NULL, /* bafa */ NULL, /* bafb */ NULL, /* bafc */ NULL, /* bafd */ NULL, /* bafe */ NULL, /* baff */ NULL, /* bb00 */ NULL, /* bb01 */ NULL, /* bb02 */ NULL, /* bb03 */ NULL, /* bb04 */ NULL, /* bb05 */ NULL, /* bb06 */ NULL, /* bb07 */ NULL, /* bb08 */ NULL, /* bb09 */ NULL, /* bb0a */ NULL, /* bb0b */ NULL, /* bb0c */ NULL, /* bb0d */ NULL, /* bb0e */ NULL, /* bb0f */ NULL, /* bb10 */ NULL, /* bb11 */ NULL, /* bb12 */ NULL, /* bb13 */ NULL, /* bb14 */ NULL, /* bb15 */ NULL, /* bb16 */ NULL, /* bb17 */ NULL, /* bb18 */ NULL, /* bb19 */ NULL, /* bb1a */ NULL, /* bb1b */ NULL, /* bb1c */ NULL, /* bb1d */ NULL, /* bb1e */ NULL, /* bb1f */ NULL, /* bb20 */ NULL, /* bb21 */ NULL, /* bb22 */ NULL, /* bb23 */ NULL, /* bb24 */ NULL, /* bb25 */ NULL, /* bb26 */ NULL, /* bb27 */ NULL, /* bb28 */ NULL, /* bb29 */ NULL, /* bb2a */ NULL, /* bb2b */ NULL, /* bb2c */ NULL, /* bb2d */ NULL, /* bb2e */ NULL, /* bb2f */ NULL, /* bb30 */ NULL, /* bb31 */ NULL, /* bb32 */ NULL, /* bb33 */ NULL, /* bb34 */ NULL, /* bb35 */ NULL, /* bb36 */ NULL, /* bb37 */ NULL, /* bb38 */ NULL, /* bb39 */ NULL, /* bb3a */ NULL, /* bb3b */ NULL, /* bb3c */ NULL, /* bb3d */ NULL, /* bb3e */ NULL, /* bb3f */ NULL, /* bb40 */ NULL, /* bb41 */ NULL, /* bb42 */ NULL, /* bb43 */ NULL, /* bb44 */ NULL, /* bb45 */ NULL, /* bb46 */ NULL, /* bb47 */ NULL, /* bb48 */ NULL, /* bb49 */ NULL, /* bb4a */ NULL, /* bb4b */ NULL, /* bb4c */ NULL, /* bb4d */ NULL, /* bb4e */ NULL, /* bb4f */ NULL, /* bb50 */ NULL, /* bb51 */ NULL, /* bb52 */ NULL, /* bb53 */ NULL, /* bb54 */ NULL, /* bb55 */ NULL, /* bb56 */ NULL, /* bb57 */ NULL, /* bb58 */ NULL, /* bb59 */ NULL, /* bb5a */ NULL, /* bb5b */ NULL, /* bb5c */ NULL, /* bb5d */ NULL, /* bb5e */ NULL, /* bb5f */ NULL, /* bb60 */ NULL, /* bb61 */ NULL, /* bb62 */ NULL, /* bb63 */ NULL, /* bb64 */ NULL, /* bb65 */ NULL, /* bb66 */ NULL, /* bb67 */ NULL, /* bb68 */ NULL, /* bb69 */ NULL, /* bb6a */ NULL, /* bb6b */ NULL, /* bb6c */ NULL, /* bb6d */ NULL, /* bb6e */ NULL, /* bb6f */ NULL, /* bb70 */ NULL, /* bb71 */ NULL, /* bb72 */ NULL, /* bb73 */ NULL, /* bb74 */ NULL, /* bb75 */ NULL, /* bb76 */ NULL, /* bb77 */ NULL, /* bb78 */ NULL, /* bb79 */ NULL, /* bb7a */ NULL, /* bb7b */ NULL, /* bb7c */ NULL, /* bb7d */ NULL, /* bb7e */ NULL, /* bb7f */ NULL, /* bb80 */ NULL, /* bb81 */ NULL, /* bb82 */ NULL, /* bb83 */ NULL, /* bb84 */ NULL, /* bb85 */ NULL, /* bb86 */ NULL, /* bb87 */ NULL, /* bb88 */ NULL, /* bb89 */ NULL, /* bb8a */ NULL, /* bb8b */ NULL, /* bb8c */ NULL, /* bb8d */ NULL, /* bb8e */ NULL, /* bb8f */ NULL, /* bb90 */ NULL, /* bb91 */ NULL, /* bb92 */ NULL, /* bb93 */ NULL, /* bb94 */ NULL, /* bb95 */ NULL, /* bb96 */ NULL, /* bb97 */ NULL, /* bb98 */ NULL, /* bb99 */ NULL, /* bb9a */ NULL, /* bb9b */ NULL, /* bb9c */ NULL, /* bb9d */ NULL, /* bb9e */ NULL, /* bb9f */ NULL, /* bba0 */ NULL, /* bba1 */ NULL, /* bba2 */ NULL, /* bba3 */ NULL, /* bba4 */ NULL, /* bba5 */ NULL, /* bba6 */ NULL, /* bba7 */ NULL, /* bba8 */ NULL, /* bba9 */ NULL, /* bbaa */ NULL, /* bbab */ NULL, /* bbac */ NULL, /* bbad */ NULL, /* bbae */ NULL, /* bbaf */ NULL, /* bbb0 */ NULL, /* bbb1 */ NULL, /* bbb2 */ NULL, /* bbb3 */ NULL, /* bbb4 */ NULL, /* bbb5 */ NULL, /* bbb6 */ NULL, /* bbb7 */ NULL, /* bbb8 */ NULL, /* bbb9 */ NULL, /* bbba */ NULL, /* bbbb */ NULL, /* bbbc */ NULL, /* bbbd */ NULL, /* bbbe */ NULL, /* bbbf */ NULL, /* bbc0 */ NULL, /* bbc1 */ NULL, /* bbc2 */ NULL, /* bbc3 */ NULL, /* bbc4 */ NULL, /* bbc5 */ NULL, /* bbc6 */ NULL, /* bbc7 */ NULL, /* bbc8 */ NULL, /* bbc9 */ NULL, /* bbca */ NULL, /* bbcb */ NULL, /* bbcc */ NULL, /* bbcd */ NULL, /* bbce */ NULL, /* bbcf */ NULL, /* bbd0 */ NULL, /* bbd1 */ NULL, /* bbd2 */ NULL, /* bbd3 */ NULL, /* bbd4 */ NULL, /* bbd5 */ NULL, /* bbd6 */ NULL, /* bbd7 */ NULL, /* bbd8 */ NULL, /* bbd9 */ NULL, /* bbda */ NULL, /* bbdb */ NULL, /* bbdc */ NULL, /* bbdd */ NULL, /* bbde */ NULL, /* bbdf */ NULL, /* bbe0 */ NULL, /* bbe1 */ NULL, /* bbe2 */ NULL, /* bbe3 */ NULL, /* bbe4 */ NULL, /* bbe5 */ NULL, /* bbe6 */ NULL, /* bbe7 */ NULL, /* bbe8 */ NULL, /* bbe9 */ NULL, /* bbea */ NULL, /* bbeb */ NULL, /* bbec */ NULL, /* bbed */ NULL, /* bbee */ NULL, /* bbef */ NULL, /* bbf0 */ NULL, /* bbf1 */ NULL, /* bbf2 */ NULL, /* bbf3 */ NULL, /* bbf4 */ NULL, /* bbf5 */ NULL, /* bbf6 */ NULL, /* bbf7 */ NULL, /* bbf8 */ NULL, /* bbf9 */ NULL, /* bbfa */ NULL, /* bbfb */ NULL, /* bbfc */ NULL, /* bbfd */ NULL, /* bbfe */ NULL, /* bbff */ NULL, /* bc00 */ NULL, /* bc01 */ NULL, /* bc02 */ NULL, /* bc03 */ NULL, /* bc04 */ NULL, /* bc05 */ NULL, /* bc06 */ NULL, /* bc07 */ NULL, /* bc08 */ NULL, /* bc09 */ NULL, /* bc0a */ NULL, /* bc0b */ NULL, /* bc0c */ NULL, /* bc0d */ NULL, /* bc0e */ NULL, /* bc0f */ NULL, /* bc10 */ NULL, /* bc11 */ NULL, /* bc12 */ NULL, /* bc13 */ NULL, /* bc14 */ NULL, /* bc15 */ NULL, /* bc16 */ NULL, /* bc17 */ NULL, /* bc18 */ NULL, /* bc19 */ NULL, /* bc1a */ NULL, /* bc1b */ NULL, /* bc1c */ NULL, /* bc1d */ NULL, /* bc1e */ NULL, /* bc1f */ NULL, /* bc20 */ NULL, /* bc21 */ NULL, /* bc22 */ NULL, /* bc23 */ NULL, /* bc24 */ NULL, /* bc25 */ NULL, /* bc26 */ NULL, /* bc27 */ NULL, /* bc28 */ NULL, /* bc29 */ NULL, /* bc2a */ NULL, /* bc2b */ NULL, /* bc2c */ NULL, /* bc2d */ NULL, /* bc2e */ NULL, /* bc2f */ NULL, /* bc30 */ NULL, /* bc31 */ NULL, /* bc32 */ NULL, /* bc33 */ NULL, /* bc34 */ NULL, /* bc35 */ NULL, /* bc36 */ NULL, /* bc37 */ NULL, /* bc38 */ NULL, /* bc39 */ NULL, /* bc3a */ NULL, /* bc3b */ NULL, /* bc3c */ NULL, /* bc3d */ NULL, /* bc3e */ NULL, /* bc3f */ NULL, /* bc40 */ NULL, /* bc41 */ NULL, /* bc42 */ NULL, /* bc43 */ NULL, /* bc44 */ NULL, /* bc45 */ NULL, /* bc46 */ NULL, /* bc47 */ NULL, /* bc48 */ NULL, /* bc49 */ NULL, /* bc4a */ NULL, /* bc4b */ NULL, /* bc4c */ NULL, /* bc4d */ NULL, /* bc4e */ NULL, /* bc4f */ NULL, /* bc50 */ NULL, /* bc51 */ NULL, /* bc52 */ NULL, /* bc53 */ NULL, /* bc54 */ NULL, /* bc55 */ NULL, /* bc56 */ NULL, /* bc57 */ NULL, /* bc58 */ NULL, /* bc59 */ NULL, /* bc5a */ NULL, /* bc5b */ NULL, /* bc5c */ NULL, /* bc5d */ NULL, /* bc5e */ NULL, /* bc5f */ NULL, /* bc60 */ NULL, /* bc61 */ NULL, /* bc62 */ NULL, /* bc63 */ NULL, /* bc64 */ NULL, /* bc65 */ NULL, /* bc66 */ NULL, /* bc67 */ NULL, /* bc68 */ NULL, /* bc69 */ NULL, /* bc6a */ NULL, /* bc6b */ NULL, /* bc6c */ NULL, /* bc6d */ NULL, /* bc6e */ NULL, /* bc6f */ NULL, /* bc70 */ NULL, /* bc71 */ NULL, /* bc72 */ NULL, /* bc73 */ NULL, /* bc74 */ NULL, /* bc75 */ NULL, /* bc76 */ NULL, /* bc77 */ NULL, /* bc78 */ NULL, /* bc79 */ NULL, /* bc7a */ NULL, /* bc7b */ NULL, /* bc7c */ NULL, /* bc7d */ NULL, /* bc7e */ NULL, /* bc7f */ NULL, /* bc80 */ NULL, /* bc81 */ NULL, /* bc82 */ NULL, /* bc83 */ NULL, /* bc84 */ NULL, /* bc85 */ NULL, /* bc86 */ NULL, /* bc87 */ NULL, /* bc88 */ NULL, /* bc89 */ NULL, /* bc8a */ NULL, /* bc8b */ NULL, /* bc8c */ NULL, /* bc8d */ NULL, /* bc8e */ NULL, /* bc8f */ NULL, /* bc90 */ NULL, /* bc91 */ NULL, /* bc92 */ NULL, /* bc93 */ NULL, /* bc94 */ NULL, /* bc95 */ NULL, /* bc96 */ NULL, /* bc97 */ NULL, /* bc98 */ NULL, /* bc99 */ NULL, /* bc9a */ NULL, /* bc9b */ NULL, /* bc9c */ NULL, /* bc9d */ NULL, /* bc9e */ NULL, /* bc9f */ NULL, /* bca0 */ NULL, /* bca1 */ NULL, /* bca2 */ NULL, /* bca3 */ NULL, /* bca4 */ NULL, /* bca5 */ NULL, /* bca6 */ NULL, /* bca7 */ NULL, /* bca8 */ NULL, /* bca9 */ NULL, /* bcaa */ NULL, /* bcab */ NULL, /* bcac */ NULL, /* bcad */ NULL, /* bcae */ NULL, /* bcaf */ NULL, /* bcb0 */ NULL, /* bcb1 */ NULL, /* bcb2 */ NULL, /* bcb3 */ NULL, /* bcb4 */ NULL, /* bcb5 */ NULL, /* bcb6 */ NULL, /* bcb7 */ NULL, /* bcb8 */ NULL, /* bcb9 */ NULL, /* bcba */ NULL, /* bcbb */ NULL, /* bcbc */ NULL, /* bcbd */ NULL, /* bcbe */ NULL, /* bcbf */ NULL, /* bcc0 */ NULL, /* bcc1 */ NULL, /* bcc2 */ NULL, /* bcc3 */ NULL, /* bcc4 */ NULL, /* bcc5 */ NULL, /* bcc6 */ NULL, /* bcc7 */ NULL, /* bcc8 */ NULL, /* bcc9 */ NULL, /* bcca */ NULL, /* bccb */ NULL, /* bccc */ NULL, /* bccd */ NULL, /* bcce */ NULL, /* bccf */ NULL, /* bcd0 */ NULL, /* bcd1 */ NULL, /* bcd2 */ NULL, /* bcd3 */ NULL, /* bcd4 */ NULL, /* bcd5 */ NULL, /* bcd6 */ NULL, /* bcd7 */ NULL, /* bcd8 */ NULL, /* bcd9 */ NULL, /* bcda */ NULL, /* bcdb */ NULL, /* bcdc */ NULL, /* bcdd */ NULL, /* bcde */ NULL, /* bcdf */ NULL, /* bce0 */ NULL, /* bce1 */ NULL, /* bce2 */ NULL, /* bce3 */ NULL, /* bce4 */ NULL, /* bce5 */ NULL, /* bce6 */ NULL, /* bce7 */ NULL, /* bce8 */ NULL, /* bce9 */ NULL, /* bcea */ NULL, /* bceb */ NULL, /* bcec */ NULL, /* bced */ NULL, /* bcee */ NULL, /* bcef */ NULL, /* bcf0 */ NULL, /* bcf1 */ NULL, /* bcf2 */ NULL, /* bcf3 */ NULL, /* bcf4 */ NULL, /* bcf5 */ NULL, /* bcf6 */ NULL, /* bcf7 */ NULL, /* bcf8 */ NULL, /* bcf9 */ NULL, /* bcfa */ NULL, /* bcfb */ NULL, /* bcfc */ NULL, /* bcfd */ NULL, /* bcfe */ NULL, /* bcff */ NULL, /* bd00 */ NULL, /* bd01 */ NULL, /* bd02 */ NULL, /* bd03 */ NULL, /* bd04 */ NULL, /* bd05 */ NULL, /* bd06 */ NULL, /* bd07 */ NULL, /* bd08 */ NULL, /* bd09 */ NULL, /* bd0a */ NULL, /* bd0b */ NULL, /* bd0c */ NULL, /* bd0d */ NULL, /* bd0e */ NULL, /* bd0f */ NULL, /* bd10 */ NULL, /* bd11 */ NULL, /* bd12 */ NULL, /* bd13 */ NULL, /* bd14 */ NULL, /* bd15 */ NULL, /* bd16 */ NULL, /* bd17 */ NULL, /* bd18 */ NULL, /* bd19 */ NULL, /* bd1a */ NULL, /* bd1b */ NULL, /* bd1c */ NULL, /* bd1d */ NULL, /* bd1e */ NULL, /* bd1f */ NULL, /* bd20 */ NULL, /* bd21 */ NULL, /* bd22 */ NULL, /* bd23 */ NULL, /* bd24 */ NULL, /* bd25 */ NULL, /* bd26 */ NULL, /* bd27 */ NULL, /* bd28 */ NULL, /* bd29 */ NULL, /* bd2a */ NULL, /* bd2b */ NULL, /* bd2c */ NULL, /* bd2d */ NULL, /* bd2e */ NULL, /* bd2f */ NULL, /* bd30 */ NULL, /* bd31 */ NULL, /* bd32 */ NULL, /* bd33 */ NULL, /* bd34 */ NULL, /* bd35 */ NULL, /* bd36 */ NULL, /* bd37 */ NULL, /* bd38 */ NULL, /* bd39 */ NULL, /* bd3a */ NULL, /* bd3b */ NULL, /* bd3c */ NULL, /* bd3d */ NULL, /* bd3e */ NULL, /* bd3f */ NULL, /* bd40 */ NULL, /* bd41 */ NULL, /* bd42 */ NULL, /* bd43 */ NULL, /* bd44 */ NULL, /* bd45 */ NULL, /* bd46 */ NULL, /* bd47 */ NULL, /* bd48 */ NULL, /* bd49 */ NULL, /* bd4a */ NULL, /* bd4b */ NULL, /* bd4c */ NULL, /* bd4d */ NULL, /* bd4e */ NULL, /* bd4f */ NULL, /* bd50 */ NULL, /* bd51 */ NULL, /* bd52 */ NULL, /* bd53 */ NULL, /* bd54 */ NULL, /* bd55 */ NULL, /* bd56 */ NULL, /* bd57 */ NULL, /* bd58 */ NULL, /* bd59 */ NULL, /* bd5a */ NULL, /* bd5b */ NULL, /* bd5c */ NULL, /* bd5d */ NULL, /* bd5e */ NULL, /* bd5f */ NULL, /* bd60 */ NULL, /* bd61 */ NULL, /* bd62 */ NULL, /* bd63 */ NULL, /* bd64 */ NULL, /* bd65 */ NULL, /* bd66 */ NULL, /* bd67 */ NULL, /* bd68 */ NULL, /* bd69 */ NULL, /* bd6a */ NULL, /* bd6b */ NULL, /* bd6c */ NULL, /* bd6d */ NULL, /* bd6e */ NULL, /* bd6f */ NULL, /* bd70 */ NULL, /* bd71 */ NULL, /* bd72 */ NULL, /* bd73 */ NULL, /* bd74 */ NULL, /* bd75 */ NULL, /* bd76 */ NULL, /* bd77 */ NULL, /* bd78 */ NULL, /* bd79 */ NULL, /* bd7a */ NULL, /* bd7b */ NULL, /* bd7c */ NULL, /* bd7d */ NULL, /* bd7e */ NULL, /* bd7f */ NULL, /* bd80 */ NULL, /* bd81 */ NULL, /* bd82 */ NULL, /* bd83 */ NULL, /* bd84 */ NULL, /* bd85 */ NULL, /* bd86 */ NULL, /* bd87 */ NULL, /* bd88 */ NULL, /* bd89 */ NULL, /* bd8a */ NULL, /* bd8b */ NULL, /* bd8c */ NULL, /* bd8d */ NULL, /* bd8e */ NULL, /* bd8f */ NULL, /* bd90 */ NULL, /* bd91 */ NULL, /* bd92 */ NULL, /* bd93 */ NULL, /* bd94 */ NULL, /* bd95 */ NULL, /* bd96 */ NULL, /* bd97 */ NULL, /* bd98 */ NULL, /* bd99 */ NULL, /* bd9a */ NULL, /* bd9b */ NULL, /* bd9c */ NULL, /* bd9d */ NULL, /* bd9e */ NULL, /* bd9f */ NULL, /* bda0 */ NULL, /* bda1 */ NULL, /* bda2 */ NULL, /* bda3 */ NULL, /* bda4 */ NULL, /* bda5 */ NULL, /* bda6 */ NULL, /* bda7 */ NULL, /* bda8 */ NULL, /* bda9 */ NULL, /* bdaa */ NULL, /* bdab */ NULL, /* bdac */ NULL, /* bdad */ NULL, /* bdae */ NULL, /* bdaf */ NULL, /* bdb0 */ NULL, /* bdb1 */ NULL, /* bdb2 */ NULL, /* bdb3 */ NULL, /* bdb4 */ NULL, /* bdb5 */ NULL, /* bdb6 */ NULL, /* bdb7 */ NULL, /* bdb8 */ NULL, /* bdb9 */ NULL, /* bdba */ NULL, /* bdbb */ NULL, /* bdbc */ NULL, /* bdbd */ NULL, /* bdbe */ NULL, /* bdbf */ NULL, /* bdc0 */ NULL, /* bdc1 */ NULL, /* bdc2 */ NULL, /* bdc3 */ NULL, /* bdc4 */ NULL, /* bdc5 */ NULL, /* bdc6 */ NULL, /* bdc7 */ NULL, /* bdc8 */ NULL, /* bdc9 */ NULL, /* bdca */ NULL, /* bdcb */ NULL, /* bdcc */ NULL, /* bdcd */ NULL, /* bdce */ NULL, /* bdcf */ NULL, /* bdd0 */ NULL, /* bdd1 */ NULL, /* bdd2 */ NULL, /* bdd3 */ NULL, /* bdd4 */ NULL, /* bdd5 */ NULL, /* bdd6 */ NULL, /* bdd7 */ NULL, /* bdd8 */ NULL, /* bdd9 */ NULL, /* bdda */ NULL, /* bddb */ NULL, /* bddc */ NULL, /* bddd */ NULL, /* bdde */ NULL, /* bddf */ NULL, /* bde0 */ NULL, /* bde1 */ NULL, /* bde2 */ NULL, /* bde3 */ NULL, /* bde4 */ NULL, /* bde5 */ NULL, /* bde6 */ NULL, /* bde7 */ NULL, /* bde8 */ NULL, /* bde9 */ NULL, /* bdea */ NULL, /* bdeb */ NULL, /* bdec */ NULL, /* bded */ NULL, /* bdee */ NULL, /* bdef */ NULL, /* bdf0 */ NULL, /* bdf1 */ NULL, /* bdf2 */ NULL, /* bdf3 */ NULL, /* bdf4 */ NULL, /* bdf5 */ NULL, /* bdf6 */ NULL, /* bdf7 */ NULL, /* bdf8 */ NULL, /* bdf9 */ NULL, /* bdfa */ NULL, /* bdfb */ NULL, /* bdfc */ NULL, /* bdfd */ NULL, /* bdfe */ NULL, /* bdff */ NULL, /* be00 */ NULL, /* be01 */ NULL, /* be02 */ NULL, /* be03 */ NULL, /* be04 */ NULL, /* be05 */ NULL, /* be06 */ NULL, /* be07 */ NULL, /* be08 */ NULL, /* be09 */ NULL, /* be0a */ NULL, /* be0b */ NULL, /* be0c */ NULL, /* be0d */ NULL, /* be0e */ NULL, /* be0f */ NULL, /* be10 */ NULL, /* be11 */ NULL, /* be12 */ NULL, /* be13 */ NULL, /* be14 */ NULL, /* be15 */ NULL, /* be16 */ NULL, /* be17 */ NULL, /* be18 */ NULL, /* be19 */ NULL, /* be1a */ NULL, /* be1b */ NULL, /* be1c */ NULL, /* be1d */ NULL, /* be1e */ NULL, /* be1f */ NULL, /* be20 */ NULL, /* be21 */ NULL, /* be22 */ NULL, /* be23 */ NULL, /* be24 */ NULL, /* be25 */ NULL, /* be26 */ NULL, /* be27 */ NULL, /* be28 */ NULL, /* be29 */ NULL, /* be2a */ NULL, /* be2b */ NULL, /* be2c */ NULL, /* be2d */ NULL, /* be2e */ NULL, /* be2f */ NULL, /* be30 */ NULL, /* be31 */ NULL, /* be32 */ NULL, /* be33 */ NULL, /* be34 */ NULL, /* be35 */ NULL, /* be36 */ NULL, /* be37 */ NULL, /* be38 */ NULL, /* be39 */ NULL, /* be3a */ NULL, /* be3b */ NULL, /* be3c */ NULL, /* be3d */ NULL, /* be3e */ NULL, /* be3f */ NULL, /* be40 */ NULL, /* be41 */ NULL, /* be42 */ NULL, /* be43 */ NULL, /* be44 */ NULL, /* be45 */ NULL, /* be46 */ NULL, /* be47 */ NULL, /* be48 */ NULL, /* be49 */ NULL, /* be4a */ NULL, /* be4b */ NULL, /* be4c */ NULL, /* be4d */ NULL, /* be4e */ NULL, /* be4f */ NULL, /* be50 */ NULL, /* be51 */ NULL, /* be52 */ NULL, /* be53 */ NULL, /* be54 */ NULL, /* be55 */ NULL, /* be56 */ NULL, /* be57 */ NULL, /* be58 */ NULL, /* be59 */ NULL, /* be5a */ NULL, /* be5b */ NULL, /* be5c */ NULL, /* be5d */ NULL, /* be5e */ NULL, /* be5f */ NULL, /* be60 */ NULL, /* be61 */ NULL, /* be62 */ NULL, /* be63 */ NULL, /* be64 */ NULL, /* be65 */ NULL, /* be66 */ NULL, /* be67 */ NULL, /* be68 */ NULL, /* be69 */ NULL, /* be6a */ NULL, /* be6b */ NULL, /* be6c */ NULL, /* be6d */ NULL, /* be6e */ NULL, /* be6f */ NULL, /* be70 */ NULL, /* be71 */ NULL, /* be72 */ NULL, /* be73 */ NULL, /* be74 */ NULL, /* be75 */ NULL, /* be76 */ NULL, /* be77 */ NULL, /* be78 */ NULL, /* be79 */ NULL, /* be7a */ NULL, /* be7b */ NULL, /* be7c */ NULL, /* be7d */ NULL, /* be7e */ NULL, /* be7f */ NULL, /* be80 */ NULL, /* be81 */ NULL, /* be82 */ NULL, /* be83 */ NULL, /* be84 */ NULL, /* be85 */ NULL, /* be86 */ NULL, /* be87 */ NULL, /* be88 */ NULL, /* be89 */ NULL, /* be8a */ NULL, /* be8b */ NULL, /* be8c */ NULL, /* be8d */ NULL, /* be8e */ NULL, /* be8f */ NULL, /* be90 */ NULL, /* be91 */ NULL, /* be92 */ NULL, /* be93 */ NULL, /* be94 */ NULL, /* be95 */ NULL, /* be96 */ NULL, /* be97 */ NULL, /* be98 */ NULL, /* be99 */ NULL, /* be9a */ NULL, /* be9b */ NULL, /* be9c */ NULL, /* be9d */ NULL, /* be9e */ NULL, /* be9f */ NULL, /* bea0 */ NULL, /* bea1 */ NULL, /* bea2 */ NULL, /* bea3 */ NULL, /* bea4 */ NULL, /* bea5 */ NULL, /* bea6 */ NULL, /* bea7 */ NULL, /* bea8 */ NULL, /* bea9 */ NULL, /* beaa */ NULL, /* beab */ NULL, /* beac */ NULL, /* bead */ NULL, /* beae */ NULL, /* beaf */ NULL, /* beb0 */ NULL, /* beb1 */ NULL, /* beb2 */ NULL, /* beb3 */ NULL, /* beb4 */ NULL, /* beb5 */ NULL, /* beb6 */ NULL, /* beb7 */ NULL, /* beb8 */ NULL, /* beb9 */ NULL, /* beba */ NULL, /* bebb */ NULL, /* bebc */ NULL, /* bebd */ NULL, /* bebe */ NULL, /* bebf */ NULL, /* bec0 */ NULL, /* bec1 */ NULL, /* bec2 */ NULL, /* bec3 */ NULL, /* bec4 */ NULL, /* bec5 */ NULL, /* bec6 */ NULL, /* bec7 */ NULL, /* bec8 */ NULL, /* bec9 */ NULL, /* beca */ NULL, /* becb */ NULL, /* becc */ NULL, /* becd */ NULL, /* bece */ NULL, /* becf */ NULL, /* bed0 */ NULL, /* bed1 */ NULL, /* bed2 */ NULL, /* bed3 */ NULL, /* bed4 */ NULL, /* bed5 */ NULL, /* bed6 */ NULL, /* bed7 */ NULL, /* bed8 */ NULL, /* bed9 */ NULL, /* beda */ NULL, /* bedb */ NULL, /* bedc */ NULL, /* bedd */ NULL, /* bede */ NULL, /* bedf */ NULL, /* bee0 */ NULL, /* bee1 */ NULL, /* bee2 */ NULL, /* bee3 */ NULL, /* bee4 */ NULL, /* bee5 */ NULL, /* bee6 */ NULL, /* bee7 */ NULL, /* bee8 */ NULL, /* bee9 */ NULL, /* beea */ NULL, /* beeb */ NULL, /* beec */ NULL, /* beed */ NULL, /* beee */ NULL, /* beef */ NULL, /* bef0 */ NULL, /* bef1 */ NULL, /* bef2 */ NULL, /* bef3 */ NULL, /* bef4 */ NULL, /* bef5 */ NULL, /* bef6 */ NULL, /* bef7 */ NULL, /* bef8 */ NULL, /* bef9 */ NULL, /* befa */ NULL, /* befb */ NULL, /* befc */ NULL, /* befd */ NULL, /* befe */ NULL, /* beff */ NULL, /* bf00 */ NULL, /* bf01 */ NULL, /* bf02 */ NULL, /* bf03 */ NULL, /* bf04 */ NULL, /* bf05 */ NULL, /* bf06 */ NULL, /* bf07 */ NULL, /* bf08 */ NULL, /* bf09 */ NULL, /* bf0a */ NULL, /* bf0b */ NULL, /* bf0c */ NULL, /* bf0d */ NULL, /* bf0e */ NULL, /* bf0f */ NULL, /* bf10 */ NULL, /* bf11 */ NULL, /* bf12 */ NULL, /* bf13 */ NULL, /* bf14 */ NULL, /* bf15 */ NULL, /* bf16 */ NULL, /* bf17 */ NULL, /* bf18 */ NULL, /* bf19 */ NULL, /* bf1a */ NULL, /* bf1b */ NULL, /* bf1c */ NULL, /* bf1d */ NULL, /* bf1e */ NULL, /* bf1f */ NULL, /* bf20 */ NULL, /* bf21 */ NULL, /* bf22 */ NULL, /* bf23 */ NULL, /* bf24 */ NULL, /* bf25 */ NULL, /* bf26 */ NULL, /* bf27 */ NULL, /* bf28 */ NULL, /* bf29 */ NULL, /* bf2a */ NULL, /* bf2b */ NULL, /* bf2c */ NULL, /* bf2d */ NULL, /* bf2e */ NULL, /* bf2f */ NULL, /* bf30 */ NULL, /* bf31 */ NULL, /* bf32 */ NULL, /* bf33 */ NULL, /* bf34 */ NULL, /* bf35 */ NULL, /* bf36 */ NULL, /* bf37 */ NULL, /* bf38 */ NULL, /* bf39 */ NULL, /* bf3a */ NULL, /* bf3b */ NULL, /* bf3c */ NULL, /* bf3d */ NULL, /* bf3e */ NULL, /* bf3f */ NULL, /* bf40 */ NULL, /* bf41 */ NULL, /* bf42 */ NULL, /* bf43 */ NULL, /* bf44 */ NULL, /* bf45 */ NULL, /* bf46 */ NULL, /* bf47 */ NULL, /* bf48 */ NULL, /* bf49 */ NULL, /* bf4a */ NULL, /* bf4b */ NULL, /* bf4c */ NULL, /* bf4d */ NULL, /* bf4e */ NULL, /* bf4f */ NULL, /* bf50 */ NULL, /* bf51 */ NULL, /* bf52 */ NULL, /* bf53 */ NULL, /* bf54 */ NULL, /* bf55 */ NULL, /* bf56 */ NULL, /* bf57 */ NULL, /* bf58 */ NULL, /* bf59 */ NULL, /* bf5a */ NULL, /* bf5b */ NULL, /* bf5c */ NULL, /* bf5d */ NULL, /* bf5e */ NULL, /* bf5f */ NULL, /* bf60 */ NULL, /* bf61 */ NULL, /* bf62 */ NULL, /* bf63 */ NULL, /* bf64 */ NULL, /* bf65 */ NULL, /* bf66 */ NULL, /* bf67 */ NULL, /* bf68 */ NULL, /* bf69 */ NULL, /* bf6a */ NULL, /* bf6b */ NULL, /* bf6c */ NULL, /* bf6d */ NULL, /* bf6e */ NULL, /* bf6f */ NULL, /* bf70 */ NULL, /* bf71 */ NULL, /* bf72 */ NULL, /* bf73 */ NULL, /* bf74 */ NULL, /* bf75 */ NULL, /* bf76 */ NULL, /* bf77 */ NULL, /* bf78 */ NULL, /* bf79 */ NULL, /* bf7a */ NULL, /* bf7b */ NULL, /* bf7c */ NULL, /* bf7d */ NULL, /* bf7e */ NULL, /* bf7f */ NULL, /* bf80 */ NULL, /* bf81 */ NULL, /* bf82 */ NULL, /* bf83 */ NULL, /* bf84 */ NULL, /* bf85 */ NULL, /* bf86 */ NULL, /* bf87 */ NULL, /* bf88 */ NULL, /* bf89 */ NULL, /* bf8a */ NULL, /* bf8b */ NULL, /* bf8c */ NULL, /* bf8d */ NULL, /* bf8e */ NULL, /* bf8f */ NULL, /* bf90 */ NULL, /* bf91 */ NULL, /* bf92 */ NULL, /* bf93 */ NULL, /* bf94 */ NULL, /* bf95 */ NULL, /* bf96 */ NULL, /* bf97 */ NULL, /* bf98 */ NULL, /* bf99 */ NULL, /* bf9a */ NULL, /* bf9b */ NULL, /* bf9c */ NULL, /* bf9d */ NULL, /* bf9e */ NULL, /* bf9f */ NULL, /* bfa0 */ NULL, /* bfa1 */ NULL, /* bfa2 */ NULL, /* bfa3 */ NULL, /* bfa4 */ NULL, /* bfa5 */ NULL, /* bfa6 */ NULL, /* bfa7 */ NULL, /* bfa8 */ NULL, /* bfa9 */ NULL, /* bfaa */ NULL, /* bfab */ NULL, /* bfac */ NULL, /* bfad */ NULL, /* bfae */ NULL, /* bfaf */ NULL, /* bfb0 */ NULL, /* bfb1 */ NULL, /* bfb2 */ NULL, /* bfb3 */ NULL, /* bfb4 */ NULL, /* bfb5 */ NULL, /* bfb6 */ NULL, /* bfb7 */ NULL, /* bfb8 */ NULL, /* bfb9 */ NULL, /* bfba */ NULL, /* bfbb */ NULL, /* bfbc */ NULL, /* bfbd */ NULL, /* bfbe */ NULL, /* bfbf */ NULL, /* bfc0 */ NULL, /* bfc1 */ NULL, /* bfc2 */ NULL, /* bfc3 */ NULL, /* bfc4 */ NULL, /* bfc5 */ NULL, /* bfc6 */ NULL, /* bfc7 */ NULL, /* bfc8 */ NULL, /* bfc9 */ NULL, /* bfca */ NULL, /* bfcb */ NULL, /* bfcc */ NULL, /* bfcd */ NULL, /* bfce */ NULL, /* bfcf */ NULL, /* bfd0 */ NULL, /* bfd1 */ NULL, /* bfd2 */ NULL, /* bfd3 */ NULL, /* bfd4 */ NULL, /* bfd5 */ NULL, /* bfd6 */ NULL, /* bfd7 */ NULL, /* bfd8 */ NULL, /* bfd9 */ NULL, /* bfda */ NULL, /* bfdb */ NULL, /* bfdc */ NULL, /* bfdd */ NULL, /* bfde */ NULL, /* bfdf */ NULL, /* bfe0 */ NULL, /* bfe1 */ NULL, /* bfe2 */ NULL, /* bfe3 */ NULL, /* bfe4 */ NULL, /* bfe5 */ NULL, /* bfe6 */ NULL, /* bfe7 */ NULL, /* bfe8 */ NULL, /* bfe9 */ NULL, /* bfea */ NULL, /* bfeb */ NULL, /* bfec */ NULL, /* bfed */ NULL, /* bfee */ NULL, /* bfef */ NULL, /* bff0 */ NULL, /* bff1 */ NULL, /* bff2 */ NULL, /* bff3 */ NULL, /* bff4 */ NULL, /* bff5 */ NULL, /* bff6 */ NULL, /* bff7 */ NULL, /* bff8 */ NULL, /* bff9 */ NULL, /* bffa */ NULL, /* bffb */ NULL, /* bffc */ NULL, /* bffd */ NULL, /* bffe */ NULL, /* bfff */ NULL, /* c000 */ NULL, /* c001 */ NULL, /* c002 */ NULL, /* c003 */ NULL, /* c004 */ NULL, /* c005 */ NULL, /* c006 */ NULL, /* c007 */ NULL, /* c008 */ NULL, /* c009 */ NULL, /* c00a */ NULL, /* c00b */ NULL, /* c00c */ NULL, /* c00d */ NULL, /* c00e */ NULL, /* c00f */ NULL, /* c010 */ NULL, /* c011 */ NULL, /* c012 */ NULL, /* c013 */ NULL, /* c014 */ NULL, /* c015 */ NULL, /* c016 */ NULL, /* c017 */ NULL, /* c018 */ NULL, /* c019 */ NULL, /* c01a */ NULL, /* c01b */ NULL, /* c01c */ NULL, /* c01d */ NULL, /* c01e */ NULL, /* c01f */ NULL, /* c020 */ NULL, /* c021 */ NULL, /* c022 */ NULL, /* c023 */ NULL, /* c024 */ NULL, /* c025 */ NULL, /* c026 */ NULL, /* c027 */ NULL, /* c028 */ NULL, /* c029 */ NULL, /* c02a */ NULL, /* c02b */ NULL, /* c02c */ NULL, /* c02d */ NULL, /* c02e */ NULL, /* c02f */ NULL, /* c030 */ NULL, /* c031 */ NULL, /* c032 */ NULL, /* c033 */ NULL, /* c034 */ NULL, /* c035 */ NULL, /* c036 */ NULL, /* c037 */ NULL, /* c038 */ NULL, /* c039 */ NULL, /* c03a */ NULL, /* c03b */ NULL, /* c03c */ NULL, /* c03d */ NULL, /* c03e */ NULL, /* c03f */ NULL, /* c040 */ NULL, /* c041 */ NULL, /* c042 */ NULL, /* c043 */ NULL, /* c044 */ NULL, /* c045 */ NULL, /* c046 */ NULL, /* c047 */ NULL, /* c048 */ NULL, /* c049 */ NULL, /* c04a */ NULL, /* c04b */ NULL, /* c04c */ NULL, /* c04d */ NULL, /* c04e */ NULL, /* c04f */ NULL, /* c050 */ NULL, /* c051 */ NULL, /* c052 */ NULL, /* c053 */ NULL, /* c054 */ NULL, /* c055 */ NULL, /* c056 */ NULL, /* c057 */ NULL, /* c058 */ NULL, /* c059 */ NULL, /* c05a */ NULL, /* c05b */ NULL, /* c05c */ NULL, /* c05d */ NULL, /* c05e */ NULL, /* c05f */ NULL, /* c060 */ NULL, /* c061 */ NULL, /* c062 */ NULL, /* c063 */ NULL, /* c064 */ NULL, /* c065 */ NULL, /* c066 */ NULL, /* c067 */ NULL, /* c068 */ NULL, /* c069 */ NULL, /* c06a */ NULL, /* c06b */ NULL, /* c06c */ NULL, /* c06d */ NULL, /* c06e */ NULL, /* c06f */ NULL, /* c070 */ NULL, /* c071 */ NULL, /* c072 */ NULL, /* c073 */ NULL, /* c074 */ NULL, /* c075 */ NULL, /* c076 */ NULL, /* c077 */ NULL, /* c078 */ NULL, /* c079 */ NULL, /* c07a */ NULL, /* c07b */ NULL, /* c07c */ NULL, /* c07d */ NULL, /* c07e */ NULL, /* c07f */ NULL, /* c080 */ NULL, /* c081 */ NULL, /* c082 */ NULL, /* c083 */ NULL, /* c084 */ NULL, /* c085 */ NULL, /* c086 */ NULL, /* c087 */ NULL, /* c088 */ NULL, /* c089 */ NULL, /* c08a */ NULL, /* c08b */ NULL, /* c08c */ NULL, /* c08d */ NULL, /* c08e */ NULL, /* c08f */ NULL, /* c090 */ NULL, /* c091 */ NULL, /* c092 */ NULL, /* c093 */ NULL, /* c094 */ NULL, /* c095 */ NULL, /* c096 */ NULL, /* c097 */ NULL, /* c098 */ NULL, /* c099 */ NULL, /* c09a */ NULL, /* c09b */ NULL, /* c09c */ NULL, /* c09d */ NULL, /* c09e */ NULL, /* c09f */ NULL, /* c0a0 */ NULL, /* c0a1 */ NULL, /* c0a2 */ NULL, /* c0a3 */ NULL, /* c0a4 */ NULL, /* c0a5 */ NULL, /* c0a6 */ NULL, /* c0a7 */ NULL, /* c0a8 */ NULL, /* c0a9 */ NULL, /* c0aa */ NULL, /* c0ab */ NULL, /* c0ac */ NULL, /* c0ad */ NULL, /* c0ae */ NULL, /* c0af */ NULL, /* c0b0 */ NULL, /* c0b1 */ NULL, /* c0b2 */ NULL, /* c0b3 */ NULL, /* c0b4 */ NULL, /* c0b5 */ NULL, /* c0b6 */ NULL, /* c0b7 */ NULL, /* c0b8 */ NULL, /* c0b9 */ NULL, /* c0ba */ NULL, /* c0bb */ NULL, /* c0bc */ NULL, /* c0bd */ NULL, /* c0be */ NULL, /* c0bf */ NULL, /* c0c0 */ NULL, /* c0c1 */ NULL, /* c0c2 */ NULL, /* c0c3 */ NULL, /* c0c4 */ NULL, /* c0c5 */ NULL, /* c0c6 */ NULL, /* c0c7 */ NULL, /* c0c8 */ NULL, /* c0c9 */ NULL, /* c0ca */ NULL, /* c0cb */ NULL, /* c0cc */ NULL, /* c0cd */ NULL, /* c0ce */ NULL, /* c0cf */ NULL, /* c0d0 */ NULL, /* c0d1 */ NULL, /* c0d2 */ NULL, /* c0d3 */ NULL, /* c0d4 */ NULL, /* c0d5 */ NULL, /* c0d6 */ NULL, /* c0d7 */ NULL, /* c0d8 */ NULL, /* c0d9 */ NULL, /* c0da */ NULL, /* c0db */ NULL, /* c0dc */ NULL, /* c0dd */ NULL, /* c0de */ NULL, /* c0df */ NULL, /* c0e0 */ NULL, /* c0e1 */ NULL, /* c0e2 */ NULL, /* c0e3 */ NULL, /* c0e4 */ NULL, /* c0e5 */ NULL, /* c0e6 */ NULL, /* c0e7 */ NULL, /* c0e8 */ NULL, /* c0e9 */ NULL, /* c0ea */ NULL, /* c0eb */ NULL, /* c0ec */ NULL, /* c0ed */ NULL, /* c0ee */ NULL, /* c0ef */ NULL, /* c0f0 */ NULL, /* c0f1 */ NULL, /* c0f2 */ NULL, /* c0f3 */ NULL, /* c0f4 */ NULL, /* c0f5 */ NULL, /* c0f6 */ NULL, /* c0f7 */ NULL, /* c0f8 */ NULL, /* c0f9 */ NULL, /* c0fa */ NULL, /* c0fb */ NULL, /* c0fc */ NULL, /* c0fd */ NULL, /* c0fe */ NULL, /* c0ff */ NULL, /* c100 */ NULL, /* c101 */ NULL, /* c102 */ NULL, /* c103 */ NULL, /* c104 */ NULL, /* c105 */ NULL, /* c106 */ NULL, /* c107 */ NULL, /* c108 */ NULL, /* c109 */ NULL, /* c10a */ NULL, /* c10b */ NULL, /* c10c */ NULL, /* c10d */ NULL, /* c10e */ NULL, /* c10f */ NULL, /* c110 */ NULL, /* c111 */ NULL, /* c112 */ NULL, /* c113 */ NULL, /* c114 */ NULL, /* c115 */ NULL, /* c116 */ NULL, /* c117 */ NULL, /* c118 */ NULL, /* c119 */ NULL, /* c11a */ NULL, /* c11b */ NULL, /* c11c */ NULL, /* c11d */ NULL, /* c11e */ NULL, /* c11f */ NULL, /* c120 */ NULL, /* c121 */ NULL, /* c122 */ NULL, /* c123 */ NULL, /* c124 */ NULL, /* c125 */ NULL, /* c126 */ NULL, /* c127 */ NULL, /* c128 */ NULL, /* c129 */ NULL, /* c12a */ NULL, /* c12b */ NULL, /* c12c */ NULL, /* c12d */ NULL, /* c12e */ NULL, /* c12f */ NULL, /* c130 */ NULL, /* c131 */ NULL, /* c132 */ NULL, /* c133 */ NULL, /* c134 */ NULL, /* c135 */ NULL, /* c136 */ NULL, /* c137 */ NULL, /* c138 */ NULL, /* c139 */ NULL, /* c13a */ NULL, /* c13b */ NULL, /* c13c */ NULL, /* c13d */ NULL, /* c13e */ NULL, /* c13f */ NULL, /* c140 */ NULL, /* c141 */ NULL, /* c142 */ NULL, /* c143 */ NULL, /* c144 */ NULL, /* c145 */ NULL, /* c146 */ NULL, /* c147 */ NULL, /* c148 */ NULL, /* c149 */ NULL, /* c14a */ NULL, /* c14b */ NULL, /* c14c */ NULL, /* c14d */ NULL, /* c14e */ NULL, /* c14f */ NULL, /* c150 */ NULL, /* c151 */ NULL, /* c152 */ NULL, /* c153 */ NULL, /* c154 */ NULL, /* c155 */ NULL, /* c156 */ NULL, /* c157 */ NULL, /* c158 */ NULL, /* c159 */ NULL, /* c15a */ NULL, /* c15b */ NULL, /* c15c */ NULL, /* c15d */ NULL, /* c15e */ NULL, /* c15f */ NULL, /* c160 */ NULL, /* c161 */ NULL, /* c162 */ NULL, /* c163 */ NULL, /* c164 */ NULL, /* c165 */ NULL, /* c166 */ NULL, /* c167 */ NULL, /* c168 */ NULL, /* c169 */ NULL, /* c16a */ NULL, /* c16b */ NULL, /* c16c */ NULL, /* c16d */ NULL, /* c16e */ NULL, /* c16f */ NULL, /* c170 */ NULL, /* c171 */ NULL, /* c172 */ NULL, /* c173 */ NULL, /* c174 */ NULL, /* c175 */ NULL, /* c176 */ NULL, /* c177 */ NULL, /* c178 */ NULL, /* c179 */ NULL, /* c17a */ NULL, /* c17b */ NULL, /* c17c */ NULL, /* c17d */ NULL, /* c17e */ NULL, /* c17f */ NULL, /* c180 */ NULL, /* c181 */ NULL, /* c182 */ NULL, /* c183 */ NULL, /* c184 */ NULL, /* c185 */ NULL, /* c186 */ NULL, /* c187 */ NULL, /* c188 */ NULL, /* c189 */ NULL, /* c18a */ NULL, /* c18b */ NULL, /* c18c */ NULL, /* c18d */ NULL, /* c18e */ NULL, /* c18f */ NULL, /* c190 */ NULL, /* c191 */ NULL, /* c192 */ NULL, /* c193 */ NULL, /* c194 */ NULL, /* c195 */ NULL, /* c196 */ NULL, /* c197 */ NULL, /* c198 */ NULL, /* c199 */ NULL, /* c19a */ NULL, /* c19b */ NULL, /* c19c */ NULL, /* c19d */ NULL, /* c19e */ NULL, /* c19f */ NULL, /* c1a0 */ NULL, /* c1a1 */ NULL, /* c1a2 */ NULL, /* c1a3 */ NULL, /* c1a4 */ NULL, /* c1a5 */ NULL, /* c1a6 */ NULL, /* c1a7 */ NULL, /* c1a8 */ NULL, /* c1a9 */ NULL, /* c1aa */ NULL, /* c1ab */ NULL, /* c1ac */ NULL, /* c1ad */ NULL, /* c1ae */ NULL, /* c1af */ NULL, /* c1b0 */ NULL, /* c1b1 */ NULL, /* c1b2 */ NULL, /* c1b3 */ NULL, /* c1b4 */ NULL, /* c1b5 */ NULL, /* c1b6 */ NULL, /* c1b7 */ NULL, /* c1b8 */ NULL, /* c1b9 */ NULL, /* c1ba */ NULL, /* c1bb */ NULL, /* c1bc */ NULL, /* c1bd */ NULL, /* c1be */ NULL, /* c1bf */ NULL, /* c1c0 */ NULL, /* c1c1 */ NULL, /* c1c2 */ NULL, /* c1c3 */ NULL, /* c1c4 */ NULL, /* c1c5 */ NULL, /* c1c6 */ NULL, /* c1c7 */ NULL, /* c1c8 */ NULL, /* c1c9 */ NULL, /* c1ca */ NULL, /* c1cb */ NULL, /* c1cc */ NULL, /* c1cd */ NULL, /* c1ce */ NULL, /* c1cf */ NULL, /* c1d0 */ NULL, /* c1d1 */ NULL, /* c1d2 */ NULL, /* c1d3 */ NULL, /* c1d4 */ NULL, /* c1d5 */ NULL, /* c1d6 */ NULL, /* c1d7 */ NULL, /* c1d8 */ NULL, /* c1d9 */ NULL, /* c1da */ NULL, /* c1db */ NULL, /* c1dc */ NULL, /* c1dd */ NULL, /* c1de */ NULL, /* c1df */ NULL, /* c1e0 */ NULL, /* c1e1 */ NULL, /* c1e2 */ NULL, /* c1e3 */ NULL, /* c1e4 */ NULL, /* c1e5 */ NULL, /* c1e6 */ NULL, /* c1e7 */ NULL, /* c1e8 */ NULL, /* c1e9 */ NULL, /* c1ea */ NULL, /* c1eb */ NULL, /* c1ec */ NULL, /* c1ed */ NULL, /* c1ee */ NULL, /* c1ef */ NULL, /* c1f0 */ NULL, /* c1f1 */ NULL, /* c1f2 */ NULL, /* c1f3 */ NULL, /* c1f4 */ NULL, /* c1f5 */ NULL, /* c1f6 */ NULL, /* c1f7 */ NULL, /* c1f8 */ NULL, /* c1f9 */ NULL, /* c1fa */ NULL, /* c1fb */ NULL, /* c1fc */ NULL, /* c1fd */ NULL, /* c1fe */ NULL, /* c1ff */ NULL, /* c200 */ NULL, /* c201 */ NULL, /* c202 */ NULL, /* c203 */ NULL, /* c204 */ NULL, /* c205 */ NULL, /* c206 */ NULL, /* c207 */ NULL, /* c208 */ NULL, /* c209 */ NULL, /* c20a */ NULL, /* c20b */ NULL, /* c20c */ NULL, /* c20d */ NULL, /* c20e */ NULL, /* c20f */ NULL, /* c210 */ NULL, /* c211 */ NULL, /* c212 */ NULL, /* c213 */ NULL, /* c214 */ NULL, /* c215 */ NULL, /* c216 */ NULL, /* c217 */ NULL, /* c218 */ NULL, /* c219 */ NULL, /* c21a */ NULL, /* c21b */ NULL, /* c21c */ NULL, /* c21d */ NULL, /* c21e */ NULL, /* c21f */ NULL, /* c220 */ NULL, /* c221 */ NULL, /* c222 */ NULL, /* c223 */ NULL, /* c224 */ NULL, /* c225 */ NULL, /* c226 */ NULL, /* c227 */ NULL, /* c228 */ NULL, /* c229 */ NULL, /* c22a */ NULL, /* c22b */ NULL, /* c22c */ NULL, /* c22d */ NULL, /* c22e */ NULL, /* c22f */ NULL, /* c230 */ NULL, /* c231 */ NULL, /* c232 */ NULL, /* c233 */ NULL, /* c234 */ NULL, /* c235 */ NULL, /* c236 */ NULL, /* c237 */ NULL, /* c238 */ NULL, /* c239 */ NULL, /* c23a */ NULL, /* c23b */ NULL, /* c23c */ NULL, /* c23d */ NULL, /* c23e */ NULL, /* c23f */ NULL, /* c240 */ NULL, /* c241 */ NULL, /* c242 */ NULL, /* c243 */ NULL, /* c244 */ NULL, /* c245 */ NULL, /* c246 */ NULL, /* c247 */ NULL, /* c248 */ NULL, /* c249 */ NULL, /* c24a */ NULL, /* c24b */ NULL, /* c24c */ NULL, /* c24d */ NULL, /* c24e */ NULL, /* c24f */ NULL, /* c250 */ NULL, /* c251 */ NULL, /* c252 */ NULL, /* c253 */ NULL, /* c254 */ NULL, /* c255 */ NULL, /* c256 */ NULL, /* c257 */ NULL, /* c258 */ NULL, /* c259 */ NULL, /* c25a */ NULL, /* c25b */ NULL, /* c25c */ NULL, /* c25d */ NULL, /* c25e */ NULL, /* c25f */ NULL, /* c260 */ NULL, /* c261 */ NULL, /* c262 */ NULL, /* c263 */ NULL, /* c264 */ NULL, /* c265 */ NULL, /* c266 */ NULL, /* c267 */ NULL, /* c268 */ NULL, /* c269 */ NULL, /* c26a */ NULL, /* c26b */ NULL, /* c26c */ NULL, /* c26d */ NULL, /* c26e */ NULL, /* c26f */ NULL, /* c270 */ NULL, /* c271 */ NULL, /* c272 */ NULL, /* c273 */ NULL, /* c274 */ NULL, /* c275 */ NULL, /* c276 */ NULL, /* c277 */ NULL, /* c278 */ NULL, /* c279 */ NULL, /* c27a */ NULL, /* c27b */ NULL, /* c27c */ NULL, /* c27d */ NULL, /* c27e */ NULL, /* c27f */ NULL, /* c280 */ NULL, /* c281 */ NULL, /* c282 */ NULL, /* c283 */ NULL, /* c284 */ NULL, /* c285 */ NULL, /* c286 */ NULL, /* c287 */ NULL, /* c288 */ NULL, /* c289 */ NULL, /* c28a */ NULL, /* c28b */ NULL, /* c28c */ NULL, /* c28d */ NULL, /* c28e */ NULL, /* c28f */ NULL, /* c290 */ NULL, /* c291 */ NULL, /* c292 */ NULL, /* c293 */ NULL, /* c294 */ NULL, /* c295 */ NULL, /* c296 */ NULL, /* c297 */ NULL, /* c298 */ NULL, /* c299 */ NULL, /* c29a */ NULL, /* c29b */ NULL, /* c29c */ NULL, /* c29d */ NULL, /* c29e */ NULL, /* c29f */ NULL, /* c2a0 */ NULL, /* c2a1 */ NULL, /* c2a2 */ NULL, /* c2a3 */ NULL, /* c2a4 */ NULL, /* c2a5 */ NULL, /* c2a6 */ NULL, /* c2a7 */ NULL, /* c2a8 */ NULL, /* c2a9 */ NULL, /* c2aa */ NULL, /* c2ab */ NULL, /* c2ac */ NULL, /* c2ad */ NULL, /* c2ae */ NULL, /* c2af */ NULL, /* c2b0 */ NULL, /* c2b1 */ NULL, /* c2b2 */ NULL, /* c2b3 */ NULL, /* c2b4 */ NULL, /* c2b5 */ NULL, /* c2b6 */ NULL, /* c2b7 */ NULL, /* c2b8 */ NULL, /* c2b9 */ NULL, /* c2ba */ NULL, /* c2bb */ NULL, /* c2bc */ NULL, /* c2bd */ NULL, /* c2be */ NULL, /* c2bf */ NULL, /* c2c0 */ NULL, /* c2c1 */ NULL, /* c2c2 */ NULL, /* c2c3 */ NULL, /* c2c4 */ NULL, /* c2c5 */ NULL, /* c2c6 */ NULL, /* c2c7 */ NULL, /* c2c8 */ NULL, /* c2c9 */ NULL, /* c2ca */ NULL, /* c2cb */ NULL, /* c2cc */ NULL, /* c2cd */ NULL, /* c2ce */ NULL, /* c2cf */ NULL, /* c2d0 */ NULL, /* c2d1 */ NULL, /* c2d2 */ NULL, /* c2d3 */ NULL, /* c2d4 */ NULL, /* c2d5 */ NULL, /* c2d6 */ NULL, /* c2d7 */ NULL, /* c2d8 */ NULL, /* c2d9 */ NULL, /* c2da */ NULL, /* c2db */ NULL, /* c2dc */ NULL, /* c2dd */ NULL, /* c2de */ NULL, /* c2df */ NULL, /* c2e0 */ NULL, /* c2e1 */ NULL, /* c2e2 */ NULL, /* c2e3 */ NULL, /* c2e4 */ NULL, /* c2e5 */ NULL, /* c2e6 */ NULL, /* c2e7 */ NULL, /* c2e8 */ NULL, /* c2e9 */ NULL, /* c2ea */ NULL, /* c2eb */ NULL, /* c2ec */ NULL, /* c2ed */ NULL, /* c2ee */ NULL, /* c2ef */ NULL, /* c2f0 */ NULL, /* c2f1 */ NULL, /* c2f2 */ NULL, /* c2f3 */ NULL, /* c2f4 */ NULL, /* c2f5 */ NULL, /* c2f6 */ NULL, /* c2f7 */ NULL, /* c2f8 */ NULL, /* c2f9 */ NULL, /* c2fa */ NULL, /* c2fb */ NULL, /* c2fc */ NULL, /* c2fd */ NULL, /* c2fe */ NULL, /* c2ff */ NULL, /* c300 */ NULL, /* c301 */ NULL, /* c302 */ NULL, /* c303 */ NULL, /* c304 */ NULL, /* c305 */ NULL, /* c306 */ NULL, /* c307 */ NULL, /* c308 */ NULL, /* c309 */ NULL, /* c30a */ NULL, /* c30b */ NULL, /* c30c */ NULL, /* c30d */ NULL, /* c30e */ NULL, /* c30f */ NULL, /* c310 */ NULL, /* c311 */ NULL, /* c312 */ NULL, /* c313 */ NULL, /* c314 */ NULL, /* c315 */ NULL, /* c316 */ NULL, /* c317 */ NULL, /* c318 */ NULL, /* c319 */ NULL, /* c31a */ NULL, /* c31b */ NULL, /* c31c */ NULL, /* c31d */ NULL, /* c31e */ NULL, /* c31f */ NULL, /* c320 */ NULL, /* c321 */ NULL, /* c322 */ NULL, /* c323 */ NULL, /* c324 */ NULL, /* c325 */ NULL, /* c326 */ NULL, /* c327 */ NULL, /* c328 */ NULL, /* c329 */ NULL, /* c32a */ NULL, /* c32b */ NULL, /* c32c */ NULL, /* c32d */ NULL, /* c32e */ NULL, /* c32f */ NULL, /* c330 */ NULL, /* c331 */ NULL, /* c332 */ NULL, /* c333 */ NULL, /* c334 */ NULL, /* c335 */ NULL, /* c336 */ NULL, /* c337 */ NULL, /* c338 */ NULL, /* c339 */ NULL, /* c33a */ NULL, /* c33b */ NULL, /* c33c */ NULL, /* c33d */ NULL, /* c33e */ NULL, /* c33f */ NULL, /* c340 */ NULL, /* c341 */ NULL, /* c342 */ NULL, /* c343 */ NULL, /* c344 */ NULL, /* c345 */ NULL, /* c346 */ NULL, /* c347 */ NULL, /* c348 */ NULL, /* c349 */ NULL, /* c34a */ NULL, /* c34b */ NULL, /* c34c */ NULL, /* c34d */ NULL, /* c34e */ NULL, /* c34f */ NULL, /* c350 */ NULL, /* c351 */ NULL, /* c352 */ NULL, /* c353 */ NULL, /* c354 */ NULL, /* c355 */ NULL, /* c356 */ NULL, /* c357 */ NULL, /* c358 */ NULL, /* c359 */ NULL, /* c35a */ NULL, /* c35b */ NULL, /* c35c */ NULL, /* c35d */ NULL, /* c35e */ NULL, /* c35f */ NULL, /* c360 */ NULL, /* c361 */ NULL, /* c362 */ NULL, /* c363 */ NULL, /* c364 */ NULL, /* c365 */ NULL, /* c366 */ NULL, /* c367 */ NULL, /* c368 */ NULL, /* c369 */ NULL, /* c36a */ NULL, /* c36b */ NULL, /* c36c */ NULL, /* c36d */ NULL, /* c36e */ NULL, /* c36f */ NULL, /* c370 */ NULL, /* c371 */ NULL, /* c372 */ NULL, /* c373 */ NULL, /* c374 */ NULL, /* c375 */ NULL, /* c376 */ NULL, /* c377 */ NULL, /* c378 */ NULL, /* c379 */ NULL, /* c37a */ NULL, /* c37b */ NULL, /* c37c */ NULL, /* c37d */ NULL, /* c37e */ NULL, /* c37f */ NULL, /* c380 */ NULL, /* c381 */ NULL, /* c382 */ NULL, /* c383 */ NULL, /* c384 */ NULL, /* c385 */ NULL, /* c386 */ NULL, /* c387 */ NULL, /* c388 */ NULL, /* c389 */ NULL, /* c38a */ NULL, /* c38b */ NULL, /* c38c */ NULL, /* c38d */ NULL, /* c38e */ NULL, /* c38f */ NULL, /* c390 */ NULL, /* c391 */ NULL, /* c392 */ NULL, /* c393 */ NULL, /* c394 */ NULL, /* c395 */ NULL, /* c396 */ NULL, /* c397 */ NULL, /* c398 */ NULL, /* c399 */ NULL, /* c39a */ NULL, /* c39b */ NULL, /* c39c */ NULL, /* c39d */ NULL, /* c39e */ NULL, /* c39f */ NULL, /* c3a0 */ NULL, /* c3a1 */ NULL, /* c3a2 */ NULL, /* c3a3 */ NULL, /* c3a4 */ NULL, /* c3a5 */ NULL, /* c3a6 */ NULL, /* c3a7 */ NULL, /* c3a8 */ NULL, /* c3a9 */ NULL, /* c3aa */ NULL, /* c3ab */ NULL, /* c3ac */ NULL, /* c3ad */ NULL, /* c3ae */ NULL, /* c3af */ NULL, /* c3b0 */ NULL, /* c3b1 */ NULL, /* c3b2 */ NULL, /* c3b3 */ NULL, /* c3b4 */ NULL, /* c3b5 */ NULL, /* c3b6 */ NULL, /* c3b7 */ NULL, /* c3b8 */ NULL, /* c3b9 */ NULL, /* c3ba */ NULL, /* c3bb */ NULL, /* c3bc */ NULL, /* c3bd */ NULL, /* c3be */ NULL, /* c3bf */ NULL, /* c3c0 */ NULL, /* c3c1 */ NULL, /* c3c2 */ NULL, /* c3c3 */ NULL, /* c3c4 */ NULL, /* c3c5 */ NULL, /* c3c6 */ NULL, /* c3c7 */ NULL, /* c3c8 */ NULL, /* c3c9 */ NULL, /* c3ca */ NULL, /* c3cb */ NULL, /* c3cc */ NULL, /* c3cd */ NULL, /* c3ce */ NULL, /* c3cf */ NULL, /* c3d0 */ NULL, /* c3d1 */ NULL, /* c3d2 */ NULL, /* c3d3 */ NULL, /* c3d4 */ NULL, /* c3d5 */ NULL, /* c3d6 */ NULL, /* c3d7 */ NULL, /* c3d8 */ NULL, /* c3d9 */ NULL, /* c3da */ NULL, /* c3db */ NULL, /* c3dc */ NULL, /* c3dd */ NULL, /* c3de */ NULL, /* c3df */ NULL, /* c3e0 */ NULL, /* c3e1 */ NULL, /* c3e2 */ NULL, /* c3e3 */ NULL, /* c3e4 */ NULL, /* c3e5 */ NULL, /* c3e6 */ NULL, /* c3e7 */ NULL, /* c3e8 */ NULL, /* c3e9 */ NULL, /* c3ea */ NULL, /* c3eb */ NULL, /* c3ec */ NULL, /* c3ed */ NULL, /* c3ee */ NULL, /* c3ef */ NULL, /* c3f0 */ NULL, /* c3f1 */ NULL, /* c3f2 */ NULL, /* c3f3 */ NULL, /* c3f4 */ NULL, /* c3f5 */ NULL, /* c3f6 */ NULL, /* c3f7 */ NULL, /* c3f8 */ NULL, /* c3f9 */ NULL, /* c3fa */ NULL, /* c3fb */ NULL, /* c3fc */ NULL, /* c3fd */ NULL, /* c3fe */ NULL, /* c3ff */ NULL, /* c400 */ NULL, /* c401 */ NULL, /* c402 */ NULL, /* c403 */ NULL, /* c404 */ NULL, /* c405 */ NULL, /* c406 */ NULL, /* c407 */ NULL, /* c408 */ NULL, /* c409 */ NULL, /* c40a */ NULL, /* c40b */ NULL, /* c40c */ NULL, /* c40d */ NULL, /* c40e */ NULL, /* c40f */ NULL, /* c410 */ NULL, /* c411 */ NULL, /* c412 */ NULL, /* c413 */ NULL, /* c414 */ NULL, /* c415 */ NULL, /* c416 */ NULL, /* c417 */ NULL, /* c418 */ NULL, /* c419 */ NULL, /* c41a */ NULL, /* c41b */ NULL, /* c41c */ NULL, /* c41d */ NULL, /* c41e */ NULL, /* c41f */ NULL, /* c420 */ NULL, /* c421 */ NULL, /* c422 */ NULL, /* c423 */ NULL, /* c424 */ NULL, /* c425 */ NULL, /* c426 */ NULL, /* c427 */ NULL, /* c428 */ NULL, /* c429 */ NULL, /* c42a */ NULL, /* c42b */ NULL, /* c42c */ NULL, /* c42d */ NULL, /* c42e */ NULL, /* c42f */ NULL, /* c430 */ NULL, /* c431 */ NULL, /* c432 */ NULL, /* c433 */ NULL, /* c434 */ NULL, /* c435 */ NULL, /* c436 */ NULL, /* c437 */ NULL, /* c438 */ NULL, /* c439 */ NULL, /* c43a */ NULL, /* c43b */ NULL, /* c43c */ NULL, /* c43d */ NULL, /* c43e */ NULL, /* c43f */ NULL, /* c440 */ NULL, /* c441 */ NULL, /* c442 */ NULL, /* c443 */ NULL, /* c444 */ NULL, /* c445 */ NULL, /* c446 */ NULL, /* c447 */ NULL, /* c448 */ NULL, /* c449 */ NULL, /* c44a */ NULL, /* c44b */ NULL, /* c44c */ NULL, /* c44d */ NULL, /* c44e */ NULL, /* c44f */ NULL, /* c450 */ NULL, /* c451 */ NULL, /* c452 */ NULL, /* c453 */ NULL, /* c454 */ NULL, /* c455 */ NULL, /* c456 */ NULL, /* c457 */ NULL, /* c458 */ NULL, /* c459 */ NULL, /* c45a */ NULL, /* c45b */ NULL, /* c45c */ NULL, /* c45d */ NULL, /* c45e */ NULL, /* c45f */ NULL, /* c460 */ NULL, /* c461 */ NULL, /* c462 */ NULL, /* c463 */ NULL, /* c464 */ NULL, /* c465 */ NULL, /* c466 */ NULL, /* c467 */ NULL, /* c468 */ NULL, /* c469 */ NULL, /* c46a */ NULL, /* c46b */ NULL, /* c46c */ NULL, /* c46d */ NULL, /* c46e */ NULL, /* c46f */ NULL, /* c470 */ NULL, /* c471 */ NULL, /* c472 */ NULL, /* c473 */ NULL, /* c474 */ NULL, /* c475 */ NULL, /* c476 */ NULL, /* c477 */ NULL, /* c478 */ NULL, /* c479 */ NULL, /* c47a */ NULL, /* c47b */ NULL, /* c47c */ NULL, /* c47d */ NULL, /* c47e */ NULL, /* c47f */ NULL, /* c480 */ NULL, /* c481 */ NULL, /* c482 */ NULL, /* c483 */ NULL, /* c484 */ NULL, /* c485 */ NULL, /* c486 */ NULL, /* c487 */ NULL, /* c488 */ NULL, /* c489 */ NULL, /* c48a */ NULL, /* c48b */ NULL, /* c48c */ NULL, /* c48d */ NULL, /* c48e */ NULL, /* c48f */ NULL, /* c490 */ NULL, /* c491 */ NULL, /* c492 */ NULL, /* c493 */ NULL, /* c494 */ NULL, /* c495 */ NULL, /* c496 */ NULL, /* c497 */ NULL, /* c498 */ NULL, /* c499 */ NULL, /* c49a */ NULL, /* c49b */ NULL, /* c49c */ NULL, /* c49d */ NULL, /* c49e */ NULL, /* c49f */ NULL, /* c4a0 */ NULL, /* c4a1 */ NULL, /* c4a2 */ NULL, /* c4a3 */ NULL, /* c4a4 */ NULL, /* c4a5 */ NULL, /* c4a6 */ NULL, /* c4a7 */ NULL, /* c4a8 */ NULL, /* c4a9 */ NULL, /* c4aa */ NULL, /* c4ab */ NULL, /* c4ac */ NULL, /* c4ad */ NULL, /* c4ae */ NULL, /* c4af */ NULL, /* c4b0 */ NULL, /* c4b1 */ NULL, /* c4b2 */ NULL, /* c4b3 */ NULL, /* c4b4 */ NULL, /* c4b5 */ NULL, /* c4b6 */ NULL, /* c4b7 */ NULL, /* c4b8 */ NULL, /* c4b9 */ NULL, /* c4ba */ NULL, /* c4bb */ NULL, /* c4bc */ NULL, /* c4bd */ NULL, /* c4be */ NULL, /* c4bf */ NULL, /* c4c0 */ NULL, /* c4c1 */ NULL, /* c4c2 */ NULL, /* c4c3 */ NULL, /* c4c4 */ NULL, /* c4c5 */ NULL, /* c4c6 */ NULL, /* c4c7 */ NULL, /* c4c8 */ NULL, /* c4c9 */ NULL, /* c4ca */ NULL, /* c4cb */ NULL, /* c4cc */ NULL, /* c4cd */ NULL, /* c4ce */ NULL, /* c4cf */ NULL, /* c4d0 */ NULL, /* c4d1 */ NULL, /* c4d2 */ NULL, /* c4d3 */ NULL, /* c4d4 */ NULL, /* c4d5 */ NULL, /* c4d6 */ NULL, /* c4d7 */ NULL, /* c4d8 */ NULL, /* c4d9 */ NULL, /* c4da */ NULL, /* c4db */ NULL, /* c4dc */ NULL, /* c4dd */ NULL, /* c4de */ NULL, /* c4df */ NULL, /* c4e0 */ NULL, /* c4e1 */ NULL, /* c4e2 */ NULL, /* c4e3 */ NULL, /* c4e4 */ NULL, /* c4e5 */ NULL, /* c4e6 */ NULL, /* c4e7 */ NULL, /* c4e8 */ NULL, /* c4e9 */ NULL, /* c4ea */ NULL, /* c4eb */ NULL, /* c4ec */ NULL, /* c4ed */ NULL, /* c4ee */ NULL, /* c4ef */ NULL, /* c4f0 */ NULL, /* c4f1 */ NULL, /* c4f2 */ NULL, /* c4f3 */ NULL, /* c4f4 */ NULL, /* c4f5 */ NULL, /* c4f6 */ NULL, /* c4f7 */ NULL, /* c4f8 */ NULL, /* c4f9 */ NULL, /* c4fa */ NULL, /* c4fb */ NULL, /* c4fc */ NULL, /* c4fd */ NULL, /* c4fe */ NULL, /* c4ff */ NULL, /* c500 */ NULL, /* c501 */ NULL, /* c502 */ NULL, /* c503 */ NULL, /* c504 */ NULL, /* c505 */ NULL, /* c506 */ NULL, /* c507 */ NULL, /* c508 */ NULL, /* c509 */ NULL, /* c50a */ NULL, /* c50b */ NULL, /* c50c */ NULL, /* c50d */ NULL, /* c50e */ NULL, /* c50f */ NULL, /* c510 */ NULL, /* c511 */ NULL, /* c512 */ NULL, /* c513 */ NULL, /* c514 */ NULL, /* c515 */ NULL, /* c516 */ NULL, /* c517 */ NULL, /* c518 */ NULL, /* c519 */ NULL, /* c51a */ NULL, /* c51b */ NULL, /* c51c */ NULL, /* c51d */ NULL, /* c51e */ NULL, /* c51f */ NULL, /* c520 */ NULL, /* c521 */ NULL, /* c522 */ NULL, /* c523 */ NULL, /* c524 */ NULL, /* c525 */ NULL, /* c526 */ NULL, /* c527 */ NULL, /* c528 */ NULL, /* c529 */ NULL, /* c52a */ NULL, /* c52b */ NULL, /* c52c */ NULL, /* c52d */ NULL, /* c52e */ NULL, /* c52f */ NULL, /* c530 */ NULL, /* c531 */ NULL, /* c532 */ NULL, /* c533 */ NULL, /* c534 */ NULL, /* c535 */ NULL, /* c536 */ NULL, /* c537 */ NULL, /* c538 */ NULL, /* c539 */ NULL, /* c53a */ NULL, /* c53b */ NULL, /* c53c */ NULL, /* c53d */ NULL, /* c53e */ NULL, /* c53f */ NULL, /* c540 */ NULL, /* c541 */ NULL, /* c542 */ NULL, /* c543 */ NULL, /* c544 */ NULL, /* c545 */ NULL, /* c546 */ NULL, /* c547 */ NULL, /* c548 */ NULL, /* c549 */ NULL, /* c54a */ NULL, /* c54b */ NULL, /* c54c */ NULL, /* c54d */ NULL, /* c54e */ NULL, /* c54f */ NULL, /* c550 */ NULL, /* c551 */ NULL, /* c552 */ NULL, /* c553 */ NULL, /* c554 */ NULL, /* c555 */ NULL, /* c556 */ NULL, /* c557 */ NULL, /* c558 */ NULL, /* c559 */ NULL, /* c55a */ NULL, /* c55b */ NULL, /* c55c */ NULL, /* c55d */ NULL, /* c55e */ NULL, /* c55f */ NULL, /* c560 */ NULL, /* c561 */ NULL, /* c562 */ NULL, /* c563 */ NULL, /* c564 */ NULL, /* c565 */ NULL, /* c566 */ NULL, /* c567 */ NULL, /* c568 */ NULL, /* c569 */ NULL, /* c56a */ NULL, /* c56b */ NULL, /* c56c */ NULL, /* c56d */ NULL, /* c56e */ NULL, /* c56f */ NULL, /* c570 */ NULL, /* c571 */ NULL, /* c572 */ NULL, /* c573 */ NULL, /* c574 */ NULL, /* c575 */ NULL, /* c576 */ NULL, /* c577 */ NULL, /* c578 */ NULL, /* c579 */ NULL, /* c57a */ NULL, /* c57b */ NULL, /* c57c */ NULL, /* c57d */ NULL, /* c57e */ NULL, /* c57f */ NULL, /* c580 */ NULL, /* c581 */ NULL, /* c582 */ NULL, /* c583 */ NULL, /* c584 */ NULL, /* c585 */ NULL, /* c586 */ NULL, /* c587 */ NULL, /* c588 */ NULL, /* c589 */ NULL, /* c58a */ NULL, /* c58b */ NULL, /* c58c */ NULL, /* c58d */ NULL, /* c58e */ NULL, /* c58f */ NULL, /* c590 */ NULL, /* c591 */ NULL, /* c592 */ NULL, /* c593 */ NULL, /* c594 */ NULL, /* c595 */ NULL, /* c596 */ NULL, /* c597 */ NULL, /* c598 */ NULL, /* c599 */ NULL, /* c59a */ NULL, /* c59b */ NULL, /* c59c */ NULL, /* c59d */ NULL, /* c59e */ NULL, /* c59f */ NULL, /* c5a0 */ NULL, /* c5a1 */ NULL, /* c5a2 */ NULL, /* c5a3 */ NULL, /* c5a4 */ NULL, /* c5a5 */ NULL, /* c5a6 */ NULL, /* c5a7 */ NULL, /* c5a8 */ NULL, /* c5a9 */ NULL, /* c5aa */ NULL, /* c5ab */ NULL, /* c5ac */ NULL, /* c5ad */ NULL, /* c5ae */ NULL, /* c5af */ NULL, /* c5b0 */ NULL, /* c5b1 */ NULL, /* c5b2 */ NULL, /* c5b3 */ NULL, /* c5b4 */ NULL, /* c5b5 */ NULL, /* c5b6 */ NULL, /* c5b7 */ NULL, /* c5b8 */ NULL, /* c5b9 */ NULL, /* c5ba */ NULL, /* c5bb */ NULL, /* c5bc */ NULL, /* c5bd */ NULL, /* c5be */ NULL, /* c5bf */ NULL, /* c5c0 */ NULL, /* c5c1 */ NULL, /* c5c2 */ NULL, /* c5c3 */ NULL, /* c5c4 */ NULL, /* c5c5 */ NULL, /* c5c6 */ NULL, /* c5c7 */ NULL, /* c5c8 */ NULL, /* c5c9 */ NULL, /* c5ca */ NULL, /* c5cb */ NULL, /* c5cc */ NULL, /* c5cd */ NULL, /* c5ce */ NULL, /* c5cf */ NULL, /* c5d0 */ NULL, /* c5d1 */ NULL, /* c5d2 */ NULL, /* c5d3 */ NULL, /* c5d4 */ NULL, /* c5d5 */ NULL, /* c5d6 */ NULL, /* c5d7 */ NULL, /* c5d8 */ NULL, /* c5d9 */ NULL, /* c5da */ NULL, /* c5db */ NULL, /* c5dc */ NULL, /* c5dd */ NULL, /* c5de */ NULL, /* c5df */ NULL, /* c5e0 */ NULL, /* c5e1 */ NULL, /* c5e2 */ NULL, /* c5e3 */ NULL, /* c5e4 */ NULL, /* c5e5 */ NULL, /* c5e6 */ NULL, /* c5e7 */ NULL, /* c5e8 */ NULL, /* c5e9 */ NULL, /* c5ea */ NULL, /* c5eb */ NULL, /* c5ec */ NULL, /* c5ed */ NULL, /* c5ee */ NULL, /* c5ef */ NULL, /* c5f0 */ NULL, /* c5f1 */ NULL, /* c5f2 */ NULL, /* c5f3 */ NULL, /* c5f4 */ NULL, /* c5f5 */ NULL, /* c5f6 */ NULL, /* c5f7 */ NULL, /* c5f8 */ NULL, /* c5f9 */ NULL, /* c5fa */ NULL, /* c5fb */ NULL, /* c5fc */ NULL, /* c5fd */ NULL, /* c5fe */ NULL, /* c5ff */ NULL, /* c600 */ NULL, /* c601 */ NULL, /* c602 */ NULL, /* c603 */ NULL, /* c604 */ NULL, /* c605 */ NULL, /* c606 */ NULL, /* c607 */ NULL, /* c608 */ NULL, /* c609 */ NULL, /* c60a */ NULL, /* c60b */ NULL, /* c60c */ NULL, /* c60d */ NULL, /* c60e */ NULL, /* c60f */ NULL, /* c610 */ NULL, /* c611 */ NULL, /* c612 */ NULL, /* c613 */ NULL, /* c614 */ NULL, /* c615 */ NULL, /* c616 */ NULL, /* c617 */ NULL, /* c618 */ NULL, /* c619 */ NULL, /* c61a */ NULL, /* c61b */ NULL, /* c61c */ NULL, /* c61d */ NULL, /* c61e */ NULL, /* c61f */ NULL, /* c620 */ NULL, /* c621 */ NULL, /* c622 */ NULL, /* c623 */ NULL, /* c624 */ NULL, /* c625 */ NULL, /* c626 */ NULL, /* c627 */ NULL, /* c628 */ NULL, /* c629 */ NULL, /* c62a */ NULL, /* c62b */ NULL, /* c62c */ NULL, /* c62d */ NULL, /* c62e */ NULL, /* c62f */ NULL, /* c630 */ NULL, /* c631 */ NULL, /* c632 */ NULL, /* c633 */ NULL, /* c634 */ NULL, /* c635 */ NULL, /* c636 */ NULL, /* c637 */ NULL, /* c638 */ NULL, /* c639 */ NULL, /* c63a */ NULL, /* c63b */ NULL, /* c63c */ NULL, /* c63d */ NULL, /* c63e */ NULL, /* c63f */ NULL, /* c640 */ NULL, /* c641 */ NULL, /* c642 */ NULL, /* c643 */ NULL, /* c644 */ NULL, /* c645 */ NULL, /* c646 */ NULL, /* c647 */ NULL, /* c648 */ NULL, /* c649 */ NULL, /* c64a */ NULL, /* c64b */ NULL, /* c64c */ NULL, /* c64d */ NULL, /* c64e */ NULL, /* c64f */ NULL, /* c650 */ NULL, /* c651 */ NULL, /* c652 */ NULL, /* c653 */ NULL, /* c654 */ NULL, /* c655 */ NULL, /* c656 */ NULL, /* c657 */ NULL, /* c658 */ NULL, /* c659 */ NULL, /* c65a */ NULL, /* c65b */ NULL, /* c65c */ NULL, /* c65d */ NULL, /* c65e */ NULL, /* c65f */ NULL, /* c660 */ NULL, /* c661 */ NULL, /* c662 */ NULL, /* c663 */ NULL, /* c664 */ NULL, /* c665 */ NULL, /* c666 */ NULL, /* c667 */ NULL, /* c668 */ NULL, /* c669 */ NULL, /* c66a */ NULL, /* c66b */ NULL, /* c66c */ NULL, /* c66d */ NULL, /* c66e */ NULL, /* c66f */ NULL, /* c670 */ NULL, /* c671 */ NULL, /* c672 */ NULL, /* c673 */ NULL, /* c674 */ NULL, /* c675 */ NULL, /* c676 */ NULL, /* c677 */ NULL, /* c678 */ NULL, /* c679 */ NULL, /* c67a */ NULL, /* c67b */ NULL, /* c67c */ NULL, /* c67d */ NULL, /* c67e */ NULL, /* c67f */ NULL, /* c680 */ NULL, /* c681 */ NULL, /* c682 */ NULL, /* c683 */ NULL, /* c684 */ NULL, /* c685 */ NULL, /* c686 */ NULL, /* c687 */ NULL, /* c688 */ NULL, /* c689 */ NULL, /* c68a */ NULL, /* c68b */ NULL, /* c68c */ NULL, /* c68d */ NULL, /* c68e */ NULL, /* c68f */ NULL, /* c690 */ NULL, /* c691 */ NULL, /* c692 */ NULL, /* c693 */ NULL, /* c694 */ NULL, /* c695 */ NULL, /* c696 */ NULL, /* c697 */ NULL, /* c698 */ NULL, /* c699 */ NULL, /* c69a */ NULL, /* c69b */ NULL, /* c69c */ NULL, /* c69d */ NULL, /* c69e */ NULL, /* c69f */ NULL, /* c6a0 */ NULL, /* c6a1 */ NULL, /* c6a2 */ NULL, /* c6a3 */ NULL, /* c6a4 */ NULL, /* c6a5 */ NULL, /* c6a6 */ NULL, /* c6a7 */ NULL, /* c6a8 */ NULL, /* c6a9 */ NULL, /* c6aa */ NULL, /* c6ab */ NULL, /* c6ac */ NULL, /* c6ad */ NULL, /* c6ae */ NULL, /* c6af */ NULL, /* c6b0 */ NULL, /* c6b1 */ NULL, /* c6b2 */ NULL, /* c6b3 */ NULL, /* c6b4 */ NULL, /* c6b5 */ NULL, /* c6b6 */ NULL, /* c6b7 */ NULL, /* c6b8 */ NULL, /* c6b9 */ NULL, /* c6ba */ NULL, /* c6bb */ NULL, /* c6bc */ NULL, /* c6bd */ NULL, /* c6be */ NULL, /* c6bf */ NULL, /* c6c0 */ NULL, /* c6c1 */ NULL, /* c6c2 */ NULL, /* c6c3 */ NULL, /* c6c4 */ NULL, /* c6c5 */ NULL, /* c6c6 */ NULL, /* c6c7 */ NULL, /* c6c8 */ NULL, /* c6c9 */ NULL, /* c6ca */ NULL, /* c6cb */ NULL, /* c6cc */ NULL, /* c6cd */ NULL, /* c6ce */ NULL, /* c6cf */ NULL, /* c6d0 */ NULL, /* c6d1 */ NULL, /* c6d2 */ NULL, /* c6d3 */ NULL, /* c6d4 */ NULL, /* c6d5 */ NULL, /* c6d6 */ NULL, /* c6d7 */ NULL, /* c6d8 */ NULL, /* c6d9 */ NULL, /* c6da */ NULL, /* c6db */ NULL, /* c6dc */ NULL, /* c6dd */ NULL, /* c6de */ NULL, /* c6df */ NULL, /* c6e0 */ NULL, /* c6e1 */ NULL, /* c6e2 */ NULL, /* c6e3 */ NULL, /* c6e4 */ NULL, /* c6e5 */ NULL, /* c6e6 */ NULL, /* c6e7 */ NULL, /* c6e8 */ NULL, /* c6e9 */ NULL, /* c6ea */ NULL, /* c6eb */ NULL, /* c6ec */ NULL, /* c6ed */ NULL, /* c6ee */ NULL, /* c6ef */ NULL, /* c6f0 */ NULL, /* c6f1 */ NULL, /* c6f2 */ NULL, /* c6f3 */ NULL, /* c6f4 */ NULL, /* c6f5 */ NULL, /* c6f6 */ NULL, /* c6f7 */ NULL, /* c6f8 */ NULL, /* c6f9 */ NULL, /* c6fa */ NULL, /* c6fb */ NULL, /* c6fc */ NULL, /* c6fd */ NULL, /* c6fe */ NULL, /* c6ff */ NULL, /* c700 */ NULL, /* c701 */ NULL, /* c702 */ NULL, /* c703 */ NULL, /* c704 */ NULL, /* c705 */ NULL, /* c706 */ NULL, /* c707 */ NULL, /* c708 */ NULL, /* c709 */ NULL, /* c70a */ NULL, /* c70b */ NULL, /* c70c */ NULL, /* c70d */ NULL, /* c70e */ NULL, /* c70f */ NULL, /* c710 */ NULL, /* c711 */ NULL, /* c712 */ NULL, /* c713 */ NULL, /* c714 */ NULL, /* c715 */ NULL, /* c716 */ NULL, /* c717 */ NULL, /* c718 */ NULL, /* c719 */ NULL, /* c71a */ NULL, /* c71b */ NULL, /* c71c */ NULL, /* c71d */ NULL, /* c71e */ NULL, /* c71f */ NULL, /* c720 */ NULL, /* c721 */ NULL, /* c722 */ NULL, /* c723 */ NULL, /* c724 */ NULL, /* c725 */ NULL, /* c726 */ NULL, /* c727 */ NULL, /* c728 */ NULL, /* c729 */ NULL, /* c72a */ NULL, /* c72b */ NULL, /* c72c */ NULL, /* c72d */ NULL, /* c72e */ NULL, /* c72f */ NULL, /* c730 */ NULL, /* c731 */ NULL, /* c732 */ NULL, /* c733 */ NULL, /* c734 */ NULL, /* c735 */ NULL, /* c736 */ NULL, /* c737 */ NULL, /* c738 */ NULL, /* c739 */ NULL, /* c73a */ NULL, /* c73b */ NULL, /* c73c */ NULL, /* c73d */ NULL, /* c73e */ NULL, /* c73f */ NULL, /* c740 */ NULL, /* c741 */ NULL, /* c742 */ NULL, /* c743 */ NULL, /* c744 */ NULL, /* c745 */ NULL, /* c746 */ NULL, /* c747 */ NULL, /* c748 */ NULL, /* c749 */ NULL, /* c74a */ NULL, /* c74b */ NULL, /* c74c */ NULL, /* c74d */ NULL, /* c74e */ NULL, /* c74f */ NULL, /* c750 */ NULL, /* c751 */ NULL, /* c752 */ NULL, /* c753 */ NULL, /* c754 */ NULL, /* c755 */ NULL, /* c756 */ NULL, /* c757 */ NULL, /* c758 */ NULL, /* c759 */ NULL, /* c75a */ NULL, /* c75b */ NULL, /* c75c */ NULL, /* c75d */ NULL, /* c75e */ NULL, /* c75f */ NULL, /* c760 */ NULL, /* c761 */ NULL, /* c762 */ NULL, /* c763 */ NULL, /* c764 */ NULL, /* c765 */ NULL, /* c766 */ NULL, /* c767 */ NULL, /* c768 */ NULL, /* c769 */ NULL, /* c76a */ NULL, /* c76b */ NULL, /* c76c */ NULL, /* c76d */ NULL, /* c76e */ NULL, /* c76f */ NULL, /* c770 */ NULL, /* c771 */ NULL, /* c772 */ NULL, /* c773 */ NULL, /* c774 */ NULL, /* c775 */ NULL, /* c776 */ NULL, /* c777 */ NULL, /* c778 */ NULL, /* c779 */ NULL, /* c77a */ NULL, /* c77b */ NULL, /* c77c */ NULL, /* c77d */ NULL, /* c77e */ NULL, /* c77f */ NULL, /* c780 */ NULL, /* c781 */ NULL, /* c782 */ NULL, /* c783 */ NULL, /* c784 */ NULL, /* c785 */ NULL, /* c786 */ NULL, /* c787 */ NULL, /* c788 */ NULL, /* c789 */ NULL, /* c78a */ NULL, /* c78b */ NULL, /* c78c */ NULL, /* c78d */ NULL, /* c78e */ NULL, /* c78f */ NULL, /* c790 */ NULL, /* c791 */ NULL, /* c792 */ NULL, /* c793 */ NULL, /* c794 */ NULL, /* c795 */ NULL, /* c796 */ NULL, /* c797 */ NULL, /* c798 */ NULL, /* c799 */ NULL, /* c79a */ NULL, /* c79b */ NULL, /* c79c */ NULL, /* c79d */ NULL, /* c79e */ NULL, /* c79f */ NULL, /* c7a0 */ NULL, /* c7a1 */ NULL, /* c7a2 */ NULL, /* c7a3 */ NULL, /* c7a4 */ NULL, /* c7a5 */ NULL, /* c7a6 */ NULL, /* c7a7 */ NULL, /* c7a8 */ NULL, /* c7a9 */ NULL, /* c7aa */ NULL, /* c7ab */ NULL, /* c7ac */ NULL, /* c7ad */ NULL, /* c7ae */ NULL, /* c7af */ NULL, /* c7b0 */ NULL, /* c7b1 */ NULL, /* c7b2 */ NULL, /* c7b3 */ NULL, /* c7b4 */ NULL, /* c7b5 */ NULL, /* c7b6 */ NULL, /* c7b7 */ NULL, /* c7b8 */ NULL, /* c7b9 */ NULL, /* c7ba */ NULL, /* c7bb */ NULL, /* c7bc */ NULL, /* c7bd */ NULL, /* c7be */ NULL, /* c7bf */ NULL, /* c7c0 */ NULL, /* c7c1 */ NULL, /* c7c2 */ NULL, /* c7c3 */ NULL, /* c7c4 */ NULL, /* c7c5 */ NULL, /* c7c6 */ NULL, /* c7c7 */ NULL, /* c7c8 */ NULL, /* c7c9 */ NULL, /* c7ca */ NULL, /* c7cb */ NULL, /* c7cc */ NULL, /* c7cd */ NULL, /* c7ce */ NULL, /* c7cf */ NULL, /* c7d0 */ NULL, /* c7d1 */ NULL, /* c7d2 */ NULL, /* c7d3 */ NULL, /* c7d4 */ NULL, /* c7d5 */ NULL, /* c7d6 */ NULL, /* c7d7 */ NULL, /* c7d8 */ NULL, /* c7d9 */ NULL, /* c7da */ NULL, /* c7db */ NULL, /* c7dc */ NULL, /* c7dd */ NULL, /* c7de */ NULL, /* c7df */ NULL, /* c7e0 */ NULL, /* c7e1 */ NULL, /* c7e2 */ NULL, /* c7e3 */ NULL, /* c7e4 */ NULL, /* c7e5 */ NULL, /* c7e6 */ NULL, /* c7e7 */ NULL, /* c7e8 */ NULL, /* c7e9 */ NULL, /* c7ea */ NULL, /* c7eb */ NULL, /* c7ec */ NULL, /* c7ed */ NULL, /* c7ee */ NULL, /* c7ef */ NULL, /* c7f0 */ NULL, /* c7f1 */ NULL, /* c7f2 */ NULL, /* c7f3 */ NULL, /* c7f4 */ NULL, /* c7f5 */ NULL, /* c7f6 */ NULL, /* c7f7 */ NULL, /* c7f8 */ NULL, /* c7f9 */ NULL, /* c7fa */ NULL, /* c7fb */ NULL, /* c7fc */ NULL, /* c7fd */ NULL, /* c7fe */ NULL, /* c7ff */ NULL, /* c800 */ NULL, /* c801 */ NULL, /* c802 */ NULL, /* c803 */ NULL, /* c804 */ NULL, /* c805 */ NULL, /* c806 */ NULL, /* c807 */ NULL, /* c808 */ NULL, /* c809 */ NULL, /* c80a */ NULL, /* c80b */ NULL, /* c80c */ NULL, /* c80d */ NULL, /* c80e */ NULL, /* c80f */ NULL, /* c810 */ NULL, /* c811 */ NULL, /* c812 */ NULL, /* c813 */ NULL, /* c814 */ NULL, /* c815 */ NULL, /* c816 */ NULL, /* c817 */ NULL, /* c818 */ NULL, /* c819 */ NULL, /* c81a */ NULL, /* c81b */ NULL, /* c81c */ NULL, /* c81d */ NULL, /* c81e */ NULL, /* c81f */ NULL, /* c820 */ NULL, /* c821 */ NULL, /* c822 */ NULL, /* c823 */ NULL, /* c824 */ NULL, /* c825 */ NULL, /* c826 */ NULL, /* c827 */ NULL, /* c828 */ NULL, /* c829 */ NULL, /* c82a */ NULL, /* c82b */ NULL, /* c82c */ NULL, /* c82d */ NULL, /* c82e */ NULL, /* c82f */ NULL, /* c830 */ NULL, /* c831 */ NULL, /* c832 */ NULL, /* c833 */ NULL, /* c834 */ NULL, /* c835 */ NULL, /* c836 */ NULL, /* c837 */ NULL, /* c838 */ NULL, /* c839 */ NULL, /* c83a */ NULL, /* c83b */ NULL, /* c83c */ NULL, /* c83d */ NULL, /* c83e */ NULL, /* c83f */ NULL, /* c840 */ NULL, /* c841 */ NULL, /* c842 */ NULL, /* c843 */ NULL, /* c844 */ NULL, /* c845 */ NULL, /* c846 */ NULL, /* c847 */ NULL, /* c848 */ NULL, /* c849 */ NULL, /* c84a */ NULL, /* c84b */ NULL, /* c84c */ NULL, /* c84d */ NULL, /* c84e */ NULL, /* c84f */ NULL, /* c850 */ NULL, /* c851 */ NULL, /* c852 */ NULL, /* c853 */ NULL, /* c854 */ NULL, /* c855 */ NULL, /* c856 */ NULL, /* c857 */ NULL, /* c858 */ NULL, /* c859 */ NULL, /* c85a */ NULL, /* c85b */ NULL, /* c85c */ NULL, /* c85d */ NULL, /* c85e */ NULL, /* c85f */ NULL, /* c860 */ NULL, /* c861 */ NULL, /* c862 */ NULL, /* c863 */ NULL, /* c864 */ NULL, /* c865 */ NULL, /* c866 */ NULL, /* c867 */ NULL, /* c868 */ NULL, /* c869 */ NULL, /* c86a */ NULL, /* c86b */ NULL, /* c86c */ NULL, /* c86d */ NULL, /* c86e */ NULL, /* c86f */ NULL, /* c870 */ NULL, /* c871 */ NULL, /* c872 */ NULL, /* c873 */ NULL, /* c874 */ NULL, /* c875 */ NULL, /* c876 */ NULL, /* c877 */ NULL, /* c878 */ NULL, /* c879 */ NULL, /* c87a */ NULL, /* c87b */ NULL, /* c87c */ NULL, /* c87d */ NULL, /* c87e */ NULL, /* c87f */ NULL, /* c880 */ NULL, /* c881 */ NULL, /* c882 */ NULL, /* c883 */ NULL, /* c884 */ NULL, /* c885 */ NULL, /* c886 */ NULL, /* c887 */ NULL, /* c888 */ NULL, /* c889 */ NULL, /* c88a */ NULL, /* c88b */ NULL, /* c88c */ NULL, /* c88d */ NULL, /* c88e */ NULL, /* c88f */ NULL, /* c890 */ NULL, /* c891 */ NULL, /* c892 */ NULL, /* c893 */ NULL, /* c894 */ NULL, /* c895 */ NULL, /* c896 */ NULL, /* c897 */ NULL, /* c898 */ NULL, /* c899 */ NULL, /* c89a */ NULL, /* c89b */ NULL, /* c89c */ NULL, /* c89d */ NULL, /* c89e */ NULL, /* c89f */ NULL, /* c8a0 */ NULL, /* c8a1 */ NULL, /* c8a2 */ NULL, /* c8a3 */ NULL, /* c8a4 */ NULL, /* c8a5 */ NULL, /* c8a6 */ NULL, /* c8a7 */ NULL, /* c8a8 */ NULL, /* c8a9 */ NULL, /* c8aa */ NULL, /* c8ab */ NULL, /* c8ac */ NULL, /* c8ad */ NULL, /* c8ae */ NULL, /* c8af */ NULL, /* c8b0 */ NULL, /* c8b1 */ NULL, /* c8b2 */ NULL, /* c8b3 */ NULL, /* c8b4 */ NULL, /* c8b5 */ NULL, /* c8b6 */ NULL, /* c8b7 */ NULL, /* c8b8 */ NULL, /* c8b9 */ NULL, /* c8ba */ NULL, /* c8bb */ NULL, /* c8bc */ NULL, /* c8bd */ NULL, /* c8be */ NULL, /* c8bf */ NULL, /* c8c0 */ NULL, /* c8c1 */ NULL, /* c8c2 */ NULL, /* c8c3 */ NULL, /* c8c4 */ NULL, /* c8c5 */ NULL, /* c8c6 */ NULL, /* c8c7 */ NULL, /* c8c8 */ NULL, /* c8c9 */ NULL, /* c8ca */ NULL, /* c8cb */ NULL, /* c8cc */ NULL, /* c8cd */ NULL, /* c8ce */ NULL, /* c8cf */ NULL, /* c8d0 */ NULL, /* c8d1 */ NULL, /* c8d2 */ NULL, /* c8d3 */ NULL, /* c8d4 */ NULL, /* c8d5 */ NULL, /* c8d6 */ NULL, /* c8d7 */ NULL, /* c8d8 */ NULL, /* c8d9 */ NULL, /* c8da */ NULL, /* c8db */ NULL, /* c8dc */ NULL, /* c8dd */ NULL, /* c8de */ NULL, /* c8df */ NULL, /* c8e0 */ NULL, /* c8e1 */ NULL, /* c8e2 */ NULL, /* c8e3 */ NULL, /* c8e4 */ NULL, /* c8e5 */ NULL, /* c8e6 */ NULL, /* c8e7 */ NULL, /* c8e8 */ NULL, /* c8e9 */ NULL, /* c8ea */ NULL, /* c8eb */ NULL, /* c8ec */ NULL, /* c8ed */ NULL, /* c8ee */ NULL, /* c8ef */ NULL, /* c8f0 */ NULL, /* c8f1 */ NULL, /* c8f2 */ NULL, /* c8f3 */ NULL, /* c8f4 */ NULL, /* c8f5 */ NULL, /* c8f6 */ NULL, /* c8f7 */ NULL, /* c8f8 */ NULL, /* c8f9 */ NULL, /* c8fa */ NULL, /* c8fb */ NULL, /* c8fc */ NULL, /* c8fd */ NULL, /* c8fe */ NULL, /* c8ff */ NULL, /* c900 */ NULL, /* c901 */ NULL, /* c902 */ NULL, /* c903 */ NULL, /* c904 */ NULL, /* c905 */ NULL, /* c906 */ NULL, /* c907 */ NULL, /* c908 */ NULL, /* c909 */ NULL, /* c90a */ NULL, /* c90b */ NULL, /* c90c */ NULL, /* c90d */ NULL, /* c90e */ NULL, /* c90f */ NULL, /* c910 */ NULL, /* c911 */ NULL, /* c912 */ NULL, /* c913 */ NULL, /* c914 */ NULL, /* c915 */ NULL, /* c916 */ NULL, /* c917 */ NULL, /* c918 */ NULL, /* c919 */ NULL, /* c91a */ NULL, /* c91b */ NULL, /* c91c */ NULL, /* c91d */ NULL, /* c91e */ NULL, /* c91f */ NULL, /* c920 */ NULL, /* c921 */ NULL, /* c922 */ NULL, /* c923 */ NULL, /* c924 */ NULL, /* c925 */ NULL, /* c926 */ NULL, /* c927 */ NULL, /* c928 */ NULL, /* c929 */ NULL, /* c92a */ NULL, /* c92b */ NULL, /* c92c */ NULL, /* c92d */ NULL, /* c92e */ NULL, /* c92f */ NULL, /* c930 */ NULL, /* c931 */ NULL, /* c932 */ NULL, /* c933 */ NULL, /* c934 */ NULL, /* c935 */ NULL, /* c936 */ NULL, /* c937 */ NULL, /* c938 */ NULL, /* c939 */ NULL, /* c93a */ NULL, /* c93b */ NULL, /* c93c */ NULL, /* c93d */ NULL, /* c93e */ NULL, /* c93f */ NULL, /* c940 */ NULL, /* c941 */ NULL, /* c942 */ NULL, /* c943 */ NULL, /* c944 */ NULL, /* c945 */ NULL, /* c946 */ NULL, /* c947 */ NULL, /* c948 */ NULL, /* c949 */ NULL, /* c94a */ NULL, /* c94b */ NULL, /* c94c */ NULL, /* c94d */ NULL, /* c94e */ NULL, /* c94f */ NULL, /* c950 */ NULL, /* c951 */ NULL, /* c952 */ NULL, /* c953 */ NULL, /* c954 */ NULL, /* c955 */ NULL, /* c956 */ NULL, /* c957 */ NULL, /* c958 */ NULL, /* c959 */ NULL, /* c95a */ NULL, /* c95b */ NULL, /* c95c */ NULL, /* c95d */ NULL, /* c95e */ NULL, /* c95f */ NULL, /* c960 */ NULL, /* c961 */ NULL, /* c962 */ NULL, /* c963 */ NULL, /* c964 */ NULL, /* c965 */ NULL, /* c966 */ NULL, /* c967 */ NULL, /* c968 */ NULL, /* c969 */ NULL, /* c96a */ NULL, /* c96b */ NULL, /* c96c */ NULL, /* c96d */ NULL, /* c96e */ NULL, /* c96f */ NULL, /* c970 */ NULL, /* c971 */ NULL, /* c972 */ NULL, /* c973 */ NULL, /* c974 */ NULL, /* c975 */ NULL, /* c976 */ NULL, /* c977 */ NULL, /* c978 */ NULL, /* c979 */ NULL, /* c97a */ NULL, /* c97b */ NULL, /* c97c */ NULL, /* c97d */ NULL, /* c97e */ NULL, /* c97f */ NULL, /* c980 */ NULL, /* c981 */ NULL, /* c982 */ NULL, /* c983 */ NULL, /* c984 */ NULL, /* c985 */ NULL, /* c986 */ NULL, /* c987 */ NULL, /* c988 */ NULL, /* c989 */ NULL, /* c98a */ NULL, /* c98b */ NULL, /* c98c */ NULL, /* c98d */ NULL, /* c98e */ NULL, /* c98f */ NULL, /* c990 */ NULL, /* c991 */ NULL, /* c992 */ NULL, /* c993 */ NULL, /* c994 */ NULL, /* c995 */ NULL, /* c996 */ NULL, /* c997 */ NULL, /* c998 */ NULL, /* c999 */ NULL, /* c99a */ NULL, /* c99b */ NULL, /* c99c */ NULL, /* c99d */ NULL, /* c99e */ NULL, /* c99f */ NULL, /* c9a0 */ NULL, /* c9a1 */ NULL, /* c9a2 */ NULL, /* c9a3 */ NULL, /* c9a4 */ NULL, /* c9a5 */ NULL, /* c9a6 */ NULL, /* c9a7 */ NULL, /* c9a8 */ NULL, /* c9a9 */ NULL, /* c9aa */ NULL, /* c9ab */ NULL, /* c9ac */ NULL, /* c9ad */ NULL, /* c9ae */ NULL, /* c9af */ NULL, /* c9b0 */ NULL, /* c9b1 */ NULL, /* c9b2 */ NULL, /* c9b3 */ NULL, /* c9b4 */ NULL, /* c9b5 */ NULL, /* c9b6 */ NULL, /* c9b7 */ NULL, /* c9b8 */ NULL, /* c9b9 */ NULL, /* c9ba */ NULL, /* c9bb */ NULL, /* c9bc */ NULL, /* c9bd */ NULL, /* c9be */ NULL, /* c9bf */ NULL, /* c9c0 */ NULL, /* c9c1 */ NULL, /* c9c2 */ NULL, /* c9c3 */ NULL, /* c9c4 */ NULL, /* c9c5 */ NULL, /* c9c6 */ NULL, /* c9c7 */ NULL, /* c9c8 */ NULL, /* c9c9 */ NULL, /* c9ca */ NULL, /* c9cb */ NULL, /* c9cc */ NULL, /* c9cd */ NULL, /* c9ce */ NULL, /* c9cf */ NULL, /* c9d0 */ NULL, /* c9d1 */ NULL, /* c9d2 */ NULL, /* c9d3 */ NULL, /* c9d4 */ NULL, /* c9d5 */ NULL, /* c9d6 */ NULL, /* c9d7 */ NULL, /* c9d8 */ NULL, /* c9d9 */ NULL, /* c9da */ NULL, /* c9db */ NULL, /* c9dc */ NULL, /* c9dd */ NULL, /* c9de */ NULL, /* c9df */ NULL, /* c9e0 */ NULL, /* c9e1 */ NULL, /* c9e2 */ NULL, /* c9e3 */ NULL, /* c9e4 */ NULL, /* c9e5 */ NULL, /* c9e6 */ NULL, /* c9e7 */ NULL, /* c9e8 */ NULL, /* c9e9 */ NULL, /* c9ea */ NULL, /* c9eb */ NULL, /* c9ec */ NULL, /* c9ed */ NULL, /* c9ee */ NULL, /* c9ef */ NULL, /* c9f0 */ NULL, /* c9f1 */ NULL, /* c9f2 */ NULL, /* c9f3 */ NULL, /* c9f4 */ NULL, /* c9f5 */ NULL, /* c9f6 */ NULL, /* c9f7 */ NULL, /* c9f8 */ NULL, /* c9f9 */ NULL, /* c9fa */ NULL, /* c9fb */ NULL, /* c9fc */ NULL, /* c9fd */ NULL, /* c9fe */ NULL, /* c9ff */ NULL, /* ca00 */ NULL, /* ca01 */ NULL, /* ca02 */ NULL, /* ca03 */ NULL, /* ca04 */ NULL, /* ca05 */ NULL, /* ca06 */ NULL, /* ca07 */ NULL, /* ca08 */ NULL, /* ca09 */ NULL, /* ca0a */ NULL, /* ca0b */ NULL, /* ca0c */ NULL, /* ca0d */ NULL, /* ca0e */ NULL, /* ca0f */ NULL, /* ca10 */ NULL, /* ca11 */ NULL, /* ca12 */ NULL, /* ca13 */ NULL, /* ca14 */ NULL, /* ca15 */ NULL, /* ca16 */ NULL, /* ca17 */ NULL, /* ca18 */ NULL, /* ca19 */ NULL, /* ca1a */ NULL, /* ca1b */ NULL, /* ca1c */ NULL, /* ca1d */ NULL, /* ca1e */ NULL, /* ca1f */ NULL, /* ca20 */ NULL, /* ca21 */ NULL, /* ca22 */ NULL, /* ca23 */ NULL, /* ca24 */ NULL, /* ca25 */ NULL, /* ca26 */ NULL, /* ca27 */ NULL, /* ca28 */ NULL, /* ca29 */ NULL, /* ca2a */ NULL, /* ca2b */ NULL, /* ca2c */ NULL, /* ca2d */ NULL, /* ca2e */ NULL, /* ca2f */ NULL, /* ca30 */ NULL, /* ca31 */ NULL, /* ca32 */ NULL, /* ca33 */ NULL, /* ca34 */ NULL, /* ca35 */ NULL, /* ca36 */ NULL, /* ca37 */ NULL, /* ca38 */ NULL, /* ca39 */ NULL, /* ca3a */ NULL, /* ca3b */ NULL, /* ca3c */ NULL, /* ca3d */ NULL, /* ca3e */ NULL, /* ca3f */ NULL, /* ca40 */ NULL, /* ca41 */ NULL, /* ca42 */ NULL, /* ca43 */ NULL, /* ca44 */ NULL, /* ca45 */ NULL, /* ca46 */ NULL, /* ca47 */ NULL, /* ca48 */ NULL, /* ca49 */ NULL, /* ca4a */ NULL, /* ca4b */ NULL, /* ca4c */ NULL, /* ca4d */ NULL, /* ca4e */ NULL, /* ca4f */ NULL, /* ca50 */ NULL, /* ca51 */ NULL, /* ca52 */ NULL, /* ca53 */ NULL, /* ca54 */ NULL, /* ca55 */ NULL, /* ca56 */ NULL, /* ca57 */ NULL, /* ca58 */ NULL, /* ca59 */ NULL, /* ca5a */ NULL, /* ca5b */ NULL, /* ca5c */ NULL, /* ca5d */ NULL, /* ca5e */ NULL, /* ca5f */ NULL, /* ca60 */ NULL, /* ca61 */ NULL, /* ca62 */ NULL, /* ca63 */ NULL, /* ca64 */ NULL, /* ca65 */ NULL, /* ca66 */ NULL, /* ca67 */ NULL, /* ca68 */ NULL, /* ca69 */ NULL, /* ca6a */ NULL, /* ca6b */ NULL, /* ca6c */ NULL, /* ca6d */ NULL, /* ca6e */ NULL, /* ca6f */ NULL, /* ca70 */ NULL, /* ca71 */ NULL, /* ca72 */ NULL, /* ca73 */ NULL, /* ca74 */ NULL, /* ca75 */ NULL, /* ca76 */ NULL, /* ca77 */ NULL, /* ca78 */ NULL, /* ca79 */ NULL, /* ca7a */ NULL, /* ca7b */ NULL, /* ca7c */ NULL, /* ca7d */ NULL, /* ca7e */ NULL, /* ca7f */ NULL, /* ca80 */ NULL, /* ca81 */ NULL, /* ca82 */ NULL, /* ca83 */ NULL, /* ca84 */ NULL, /* ca85 */ NULL, /* ca86 */ NULL, /* ca87 */ NULL, /* ca88 */ NULL, /* ca89 */ NULL, /* ca8a */ NULL, /* ca8b */ NULL, /* ca8c */ NULL, /* ca8d */ NULL, /* ca8e */ NULL, /* ca8f */ NULL, /* ca90 */ NULL, /* ca91 */ NULL, /* ca92 */ NULL, /* ca93 */ NULL, /* ca94 */ NULL, /* ca95 */ NULL, /* ca96 */ NULL, /* ca97 */ NULL, /* ca98 */ NULL, /* ca99 */ NULL, /* ca9a */ NULL, /* ca9b */ NULL, /* ca9c */ NULL, /* ca9d */ NULL, /* ca9e */ NULL, /* ca9f */ NULL, /* caa0 */ NULL, /* caa1 */ NULL, /* caa2 */ NULL, /* caa3 */ NULL, /* caa4 */ NULL, /* caa5 */ NULL, /* caa6 */ NULL, /* caa7 */ NULL, /* caa8 */ NULL, /* caa9 */ NULL, /* caaa */ NULL, /* caab */ NULL, /* caac */ NULL, /* caad */ NULL, /* caae */ NULL, /* caaf */ NULL, /* cab0 */ NULL, /* cab1 */ NULL, /* cab2 */ NULL, /* cab3 */ NULL, /* cab4 */ NULL, /* cab5 */ NULL, /* cab6 */ NULL, /* cab7 */ NULL, /* cab8 */ NULL, /* cab9 */ NULL, /* caba */ NULL, /* cabb */ NULL, /* cabc */ NULL, /* cabd */ NULL, /* cabe */ NULL, /* cabf */ NULL, /* cac0 */ NULL, /* cac1 */ NULL, /* cac2 */ NULL, /* cac3 */ NULL, /* cac4 */ NULL, /* cac5 */ NULL, /* cac6 */ NULL, /* cac7 */ NULL, /* cac8 */ NULL, /* cac9 */ NULL, /* caca */ NULL, /* cacb */ NULL, /* cacc */ NULL, /* cacd */ NULL, /* cace */ NULL, /* cacf */ NULL, /* cad0 */ NULL, /* cad1 */ NULL, /* cad2 */ NULL, /* cad3 */ NULL, /* cad4 */ NULL, /* cad5 */ NULL, /* cad6 */ NULL, /* cad7 */ NULL, /* cad8 */ NULL, /* cad9 */ NULL, /* cada */ NULL, /* cadb */ NULL, /* cadc */ NULL, /* cadd */ NULL, /* cade */ NULL, /* cadf */ NULL, /* cae0 */ NULL, /* cae1 */ NULL, /* cae2 */ NULL, /* cae3 */ NULL, /* cae4 */ NULL, /* cae5 */ NULL, /* cae6 */ NULL, /* cae7 */ NULL, /* cae8 */ NULL, /* cae9 */ NULL, /* caea */ NULL, /* caeb */ NULL, /* caec */ NULL, /* caed */ NULL, /* caee */ NULL, /* caef */ NULL, /* caf0 */ NULL, /* caf1 */ NULL, /* caf2 */ NULL, /* caf3 */ NULL, /* caf4 */ NULL, /* caf5 */ NULL, /* caf6 */ NULL, /* caf7 */ NULL, /* caf8 */ NULL, /* caf9 */ NULL, /* cafa */ NULL, /* cafb */ NULL, /* cafc */ NULL, /* cafd */ NULL, /* cafe */ NULL, /* caff */ NULL, /* cb00 */ NULL, /* cb01 */ NULL, /* cb02 */ NULL, /* cb03 */ NULL, /* cb04 */ NULL, /* cb05 */ NULL, /* cb06 */ NULL, /* cb07 */ NULL, /* cb08 */ NULL, /* cb09 */ NULL, /* cb0a */ NULL, /* cb0b */ NULL, /* cb0c */ NULL, /* cb0d */ NULL, /* cb0e */ NULL, /* cb0f */ NULL, /* cb10 */ NULL, /* cb11 */ NULL, /* cb12 */ NULL, /* cb13 */ NULL, /* cb14 */ NULL, /* cb15 */ NULL, /* cb16 */ NULL, /* cb17 */ NULL, /* cb18 */ NULL, /* cb19 */ NULL, /* cb1a */ NULL, /* cb1b */ NULL, /* cb1c */ NULL, /* cb1d */ NULL, /* cb1e */ NULL, /* cb1f */ NULL, /* cb20 */ NULL, /* cb21 */ NULL, /* cb22 */ NULL, /* cb23 */ NULL, /* cb24 */ NULL, /* cb25 */ NULL, /* cb26 */ NULL, /* cb27 */ NULL, /* cb28 */ NULL, /* cb29 */ NULL, /* cb2a */ NULL, /* cb2b */ NULL, /* cb2c */ NULL, /* cb2d */ NULL, /* cb2e */ NULL, /* cb2f */ NULL, /* cb30 */ NULL, /* cb31 */ NULL, /* cb32 */ NULL, /* cb33 */ NULL, /* cb34 */ NULL, /* cb35 */ NULL, /* cb36 */ NULL, /* cb37 */ NULL, /* cb38 */ NULL, /* cb39 */ NULL, /* cb3a */ NULL, /* cb3b */ NULL, /* cb3c */ NULL, /* cb3d */ NULL, /* cb3e */ NULL, /* cb3f */ NULL, /* cb40 */ NULL, /* cb41 */ NULL, /* cb42 */ NULL, /* cb43 */ NULL, /* cb44 */ NULL, /* cb45 */ NULL, /* cb46 */ NULL, /* cb47 */ NULL, /* cb48 */ NULL, /* cb49 */ NULL, /* cb4a */ NULL, /* cb4b */ NULL, /* cb4c */ NULL, /* cb4d */ NULL, /* cb4e */ NULL, /* cb4f */ NULL, /* cb50 */ NULL, /* cb51 */ NULL, /* cb52 */ NULL, /* cb53 */ NULL, /* cb54 */ NULL, /* cb55 */ NULL, /* cb56 */ NULL, /* cb57 */ NULL, /* cb58 */ NULL, /* cb59 */ NULL, /* cb5a */ NULL, /* cb5b */ NULL, /* cb5c */ NULL, /* cb5d */ NULL, /* cb5e */ NULL, /* cb5f */ NULL, /* cb60 */ NULL, /* cb61 */ NULL, /* cb62 */ NULL, /* cb63 */ NULL, /* cb64 */ NULL, /* cb65 */ NULL, /* cb66 */ NULL, /* cb67 */ NULL, /* cb68 */ NULL, /* cb69 */ NULL, /* cb6a */ NULL, /* cb6b */ NULL, /* cb6c */ NULL, /* cb6d */ NULL, /* cb6e */ NULL, /* cb6f */ NULL, /* cb70 */ NULL, /* cb71 */ NULL, /* cb72 */ NULL, /* cb73 */ NULL, /* cb74 */ NULL, /* cb75 */ NULL, /* cb76 */ NULL, /* cb77 */ NULL, /* cb78 */ NULL, /* cb79 */ NULL, /* cb7a */ NULL, /* cb7b */ NULL, /* cb7c */ NULL, /* cb7d */ NULL, /* cb7e */ NULL, /* cb7f */ NULL, /* cb80 */ NULL, /* cb81 */ NULL, /* cb82 */ NULL, /* cb83 */ NULL, /* cb84 */ NULL, /* cb85 */ NULL, /* cb86 */ NULL, /* cb87 */ NULL, /* cb88 */ NULL, /* cb89 */ NULL, /* cb8a */ NULL, /* cb8b */ NULL, /* cb8c */ NULL, /* cb8d */ NULL, /* cb8e */ NULL, /* cb8f */ NULL, /* cb90 */ NULL, /* cb91 */ NULL, /* cb92 */ NULL, /* cb93 */ NULL, /* cb94 */ NULL, /* cb95 */ NULL, /* cb96 */ NULL, /* cb97 */ NULL, /* cb98 */ NULL, /* cb99 */ NULL, /* cb9a */ NULL, /* cb9b */ NULL, /* cb9c */ NULL, /* cb9d */ NULL, /* cb9e */ NULL, /* cb9f */ NULL, /* cba0 */ NULL, /* cba1 */ NULL, /* cba2 */ NULL, /* cba3 */ NULL, /* cba4 */ NULL, /* cba5 */ NULL, /* cba6 */ NULL, /* cba7 */ NULL, /* cba8 */ NULL, /* cba9 */ NULL, /* cbaa */ NULL, /* cbab */ NULL, /* cbac */ NULL, /* cbad */ NULL, /* cbae */ NULL, /* cbaf */ NULL, /* cbb0 */ NULL, /* cbb1 */ NULL, /* cbb2 */ NULL, /* cbb3 */ NULL, /* cbb4 */ NULL, /* cbb5 */ NULL, /* cbb6 */ NULL, /* cbb7 */ NULL, /* cbb8 */ NULL, /* cbb9 */ NULL, /* cbba */ NULL, /* cbbb */ NULL, /* cbbc */ NULL, /* cbbd */ NULL, /* cbbe */ NULL, /* cbbf */ NULL, /* cbc0 */ NULL, /* cbc1 */ NULL, /* cbc2 */ NULL, /* cbc3 */ NULL, /* cbc4 */ NULL, /* cbc5 */ NULL, /* cbc6 */ NULL, /* cbc7 */ NULL, /* cbc8 */ NULL, /* cbc9 */ NULL, /* cbca */ NULL, /* cbcb */ NULL, /* cbcc */ NULL, /* cbcd */ NULL, /* cbce */ NULL, /* cbcf */ NULL, /* cbd0 */ NULL, /* cbd1 */ NULL, /* cbd2 */ NULL, /* cbd3 */ NULL, /* cbd4 */ NULL, /* cbd5 */ NULL, /* cbd6 */ NULL, /* cbd7 */ NULL, /* cbd8 */ NULL, /* cbd9 */ NULL, /* cbda */ NULL, /* cbdb */ NULL, /* cbdc */ NULL, /* cbdd */ NULL, /* cbde */ NULL, /* cbdf */ NULL, /* cbe0 */ NULL, /* cbe1 */ NULL, /* cbe2 */ NULL, /* cbe3 */ NULL, /* cbe4 */ NULL, /* cbe5 */ NULL, /* cbe6 */ NULL, /* cbe7 */ NULL, /* cbe8 */ NULL, /* cbe9 */ NULL, /* cbea */ NULL, /* cbeb */ NULL, /* cbec */ NULL, /* cbed */ NULL, /* cbee */ NULL, /* cbef */ NULL, /* cbf0 */ NULL, /* cbf1 */ NULL, /* cbf2 */ NULL, /* cbf3 */ NULL, /* cbf4 */ NULL, /* cbf5 */ NULL, /* cbf6 */ NULL, /* cbf7 */ NULL, /* cbf8 */ NULL, /* cbf9 */ NULL, /* cbfa */ NULL, /* cbfb */ NULL, /* cbfc */ NULL, /* cbfd */ NULL, /* cbfe */ NULL, /* cbff */ NULL, /* cc00 */ NULL, /* cc01 */ NULL, /* cc02 */ NULL, /* cc03 */ NULL, /* cc04 */ NULL, /* cc05 */ NULL, /* cc06 */ NULL, /* cc07 */ NULL, /* cc08 */ NULL, /* cc09 */ NULL, /* cc0a */ NULL, /* cc0b */ NULL, /* cc0c */ NULL, /* cc0d */ NULL, /* cc0e */ NULL, /* cc0f */ NULL, /* cc10 */ NULL, /* cc11 */ NULL, /* cc12 */ NULL, /* cc13 */ NULL, /* cc14 */ NULL, /* cc15 */ NULL, /* cc16 */ NULL, /* cc17 */ NULL, /* cc18 */ NULL, /* cc19 */ NULL, /* cc1a */ NULL, /* cc1b */ NULL, /* cc1c */ NULL, /* cc1d */ NULL, /* cc1e */ NULL, /* cc1f */ NULL, /* cc20 */ NULL, /* cc21 */ NULL, /* cc22 */ NULL, /* cc23 */ NULL, /* cc24 */ NULL, /* cc25 */ NULL, /* cc26 */ NULL, /* cc27 */ NULL, /* cc28 */ NULL, /* cc29 */ NULL, /* cc2a */ NULL, /* cc2b */ NULL, /* cc2c */ NULL, /* cc2d */ NULL, /* cc2e */ NULL, /* cc2f */ NULL, /* cc30 */ NULL, /* cc31 */ NULL, /* cc32 */ NULL, /* cc33 */ NULL, /* cc34 */ NULL, /* cc35 */ NULL, /* cc36 */ NULL, /* cc37 */ NULL, /* cc38 */ NULL, /* cc39 */ NULL, /* cc3a */ NULL, /* cc3b */ NULL, /* cc3c */ NULL, /* cc3d */ NULL, /* cc3e */ NULL, /* cc3f */ NULL, /* cc40 */ NULL, /* cc41 */ NULL, /* cc42 */ NULL, /* cc43 */ NULL, /* cc44 */ NULL, /* cc45 */ NULL, /* cc46 */ NULL, /* cc47 */ NULL, /* cc48 */ NULL, /* cc49 */ NULL, /* cc4a */ NULL, /* cc4b */ NULL, /* cc4c */ NULL, /* cc4d */ NULL, /* cc4e */ NULL, /* cc4f */ NULL, /* cc50 */ NULL, /* cc51 */ NULL, /* cc52 */ NULL, /* cc53 */ NULL, /* cc54 */ NULL, /* cc55 */ NULL, /* cc56 */ NULL, /* cc57 */ NULL, /* cc58 */ NULL, /* cc59 */ NULL, /* cc5a */ NULL, /* cc5b */ NULL, /* cc5c */ NULL, /* cc5d */ NULL, /* cc5e */ NULL, /* cc5f */ NULL, /* cc60 */ NULL, /* cc61 */ NULL, /* cc62 */ NULL, /* cc63 */ NULL, /* cc64 */ NULL, /* cc65 */ NULL, /* cc66 */ NULL, /* cc67 */ NULL, /* cc68 */ NULL, /* cc69 */ NULL, /* cc6a */ NULL, /* cc6b */ NULL, /* cc6c */ NULL, /* cc6d */ NULL, /* cc6e */ NULL, /* cc6f */ NULL, /* cc70 */ NULL, /* cc71 */ NULL, /* cc72 */ NULL, /* cc73 */ NULL, /* cc74 */ NULL, /* cc75 */ NULL, /* cc76 */ NULL, /* cc77 */ NULL, /* cc78 */ NULL, /* cc79 */ NULL, /* cc7a */ NULL, /* cc7b */ NULL, /* cc7c */ NULL, /* cc7d */ NULL, /* cc7e */ NULL, /* cc7f */ NULL, /* cc80 */ NULL, /* cc81 */ NULL, /* cc82 */ NULL, /* cc83 */ NULL, /* cc84 */ NULL, /* cc85 */ NULL, /* cc86 */ NULL, /* cc87 */ NULL, /* cc88 */ NULL, /* cc89 */ NULL, /* cc8a */ NULL, /* cc8b */ NULL, /* cc8c */ NULL, /* cc8d */ NULL, /* cc8e */ NULL, /* cc8f */ NULL, /* cc90 */ NULL, /* cc91 */ NULL, /* cc92 */ NULL, /* cc93 */ NULL, /* cc94 */ NULL, /* cc95 */ NULL, /* cc96 */ NULL, /* cc97 */ NULL, /* cc98 */ NULL, /* cc99 */ NULL, /* cc9a */ NULL, /* cc9b */ NULL, /* cc9c */ NULL, /* cc9d */ NULL, /* cc9e */ NULL, /* cc9f */ NULL, /* cca0 */ NULL, /* cca1 */ NULL, /* cca2 */ NULL, /* cca3 */ NULL, /* cca4 */ NULL, /* cca5 */ NULL, /* cca6 */ NULL, /* cca7 */ NULL, /* cca8 */ NULL, /* cca9 */ NULL, /* ccaa */ NULL, /* ccab */ NULL, /* ccac */ NULL, /* ccad */ NULL, /* ccae */ NULL, /* ccaf */ NULL, /* ccb0 */ NULL, /* ccb1 */ NULL, /* ccb2 */ NULL, /* ccb3 */ NULL, /* ccb4 */ NULL, /* ccb5 */ NULL, /* ccb6 */ NULL, /* ccb7 */ NULL, /* ccb8 */ NULL, /* ccb9 */ NULL, /* ccba */ NULL, /* ccbb */ NULL, /* ccbc */ NULL, /* ccbd */ NULL, /* ccbe */ NULL, /* ccbf */ NULL, /* ccc0 */ NULL, /* ccc1 */ NULL, /* ccc2 */ NULL, /* ccc3 */ NULL, /* ccc4 */ NULL, /* ccc5 */ NULL, /* ccc6 */ NULL, /* ccc7 */ NULL, /* ccc8 */ NULL, /* ccc9 */ NULL, /* ccca */ NULL, /* cccb */ NULL, /* cccc */ NULL, /* cccd */ NULL, /* ccce */ NULL, /* cccf */ NULL, /* ccd0 */ NULL, /* ccd1 */ NULL, /* ccd2 */ NULL, /* ccd3 */ NULL, /* ccd4 */ NULL, /* ccd5 */ NULL, /* ccd6 */ NULL, /* ccd7 */ NULL, /* ccd8 */ NULL, /* ccd9 */ NULL, /* ccda */ NULL, /* ccdb */ NULL, /* ccdc */ NULL, /* ccdd */ NULL, /* ccde */ NULL, /* ccdf */ NULL, /* cce0 */ NULL, /* cce1 */ NULL, /* cce2 */ NULL, /* cce3 */ NULL, /* cce4 */ NULL, /* cce5 */ NULL, /* cce6 */ NULL, /* cce7 */ NULL, /* cce8 */ NULL, /* cce9 */ NULL, /* ccea */ NULL, /* cceb */ NULL, /* ccec */ NULL, /* cced */ NULL, /* ccee */ NULL, /* ccef */ NULL, /* ccf0 */ NULL, /* ccf1 */ NULL, /* ccf2 */ NULL, /* ccf3 */ NULL, /* ccf4 */ NULL, /* ccf5 */ NULL, /* ccf6 */ NULL, /* ccf7 */ NULL, /* ccf8 */ NULL, /* ccf9 */ NULL, /* ccfa */ NULL, /* ccfb */ NULL, /* ccfc */ NULL, /* ccfd */ NULL, /* ccfe */ NULL, /* ccff */ NULL, /* cd00 */ NULL, /* cd01 */ NULL, /* cd02 */ NULL, /* cd03 */ NULL, /* cd04 */ NULL, /* cd05 */ NULL, /* cd06 */ NULL, /* cd07 */ NULL, /* cd08 */ NULL, /* cd09 */ NULL, /* cd0a */ NULL, /* cd0b */ NULL, /* cd0c */ NULL, /* cd0d */ NULL, /* cd0e */ NULL, /* cd0f */ NULL, /* cd10 */ NULL, /* cd11 */ NULL, /* cd12 */ NULL, /* cd13 */ NULL, /* cd14 */ NULL, /* cd15 */ NULL, /* cd16 */ NULL, /* cd17 */ NULL, /* cd18 */ NULL, /* cd19 */ NULL, /* cd1a */ NULL, /* cd1b */ NULL, /* cd1c */ NULL, /* cd1d */ NULL, /* cd1e */ NULL, /* cd1f */ NULL, /* cd20 */ NULL, /* cd21 */ NULL, /* cd22 */ NULL, /* cd23 */ NULL, /* cd24 */ NULL, /* cd25 */ NULL, /* cd26 */ NULL, /* cd27 */ NULL, /* cd28 */ NULL, /* cd29 */ NULL, /* cd2a */ NULL, /* cd2b */ NULL, /* cd2c */ NULL, /* cd2d */ NULL, /* cd2e */ NULL, /* cd2f */ NULL, /* cd30 */ NULL, /* cd31 */ NULL, /* cd32 */ NULL, /* cd33 */ NULL, /* cd34 */ NULL, /* cd35 */ NULL, /* cd36 */ NULL, /* cd37 */ NULL, /* cd38 */ NULL, /* cd39 */ NULL, /* cd3a */ NULL, /* cd3b */ NULL, /* cd3c */ NULL, /* cd3d */ NULL, /* cd3e */ NULL, /* cd3f */ NULL, /* cd40 */ NULL, /* cd41 */ NULL, /* cd42 */ NULL, /* cd43 */ NULL, /* cd44 */ NULL, /* cd45 */ NULL, /* cd46 */ NULL, /* cd47 */ NULL, /* cd48 */ NULL, /* cd49 */ NULL, /* cd4a */ NULL, /* cd4b */ NULL, /* cd4c */ NULL, /* cd4d */ NULL, /* cd4e */ NULL, /* cd4f */ NULL, /* cd50 */ NULL, /* cd51 */ NULL, /* cd52 */ NULL, /* cd53 */ NULL, /* cd54 */ NULL, /* cd55 */ NULL, /* cd56 */ NULL, /* cd57 */ NULL, /* cd58 */ NULL, /* cd59 */ NULL, /* cd5a */ NULL, /* cd5b */ NULL, /* cd5c */ NULL, /* cd5d */ NULL, /* cd5e */ NULL, /* cd5f */ NULL, /* cd60 */ NULL, /* cd61 */ NULL, /* cd62 */ NULL, /* cd63 */ NULL, /* cd64 */ NULL, /* cd65 */ NULL, /* cd66 */ NULL, /* cd67 */ NULL, /* cd68 */ NULL, /* cd69 */ NULL, /* cd6a */ NULL, /* cd6b */ NULL, /* cd6c */ NULL, /* cd6d */ NULL, /* cd6e */ NULL, /* cd6f */ NULL, /* cd70 */ NULL, /* cd71 */ NULL, /* cd72 */ NULL, /* cd73 */ NULL, /* cd74 */ NULL, /* cd75 */ NULL, /* cd76 */ NULL, /* cd77 */ NULL, /* cd78 */ NULL, /* cd79 */ NULL, /* cd7a */ NULL, /* cd7b */ NULL, /* cd7c */ NULL, /* cd7d */ NULL, /* cd7e */ NULL, /* cd7f */ NULL, /* cd80 */ NULL, /* cd81 */ NULL, /* cd82 */ NULL, /* cd83 */ NULL, /* cd84 */ NULL, /* cd85 */ NULL, /* cd86 */ NULL, /* cd87 */ NULL, /* cd88 */ NULL, /* cd89 */ NULL, /* cd8a */ NULL, /* cd8b */ NULL, /* cd8c */ NULL, /* cd8d */ NULL, /* cd8e */ NULL, /* cd8f */ NULL, /* cd90 */ NULL, /* cd91 */ NULL, /* cd92 */ NULL, /* cd93 */ NULL, /* cd94 */ NULL, /* cd95 */ NULL, /* cd96 */ NULL, /* cd97 */ NULL, /* cd98 */ NULL, /* cd99 */ NULL, /* cd9a */ NULL, /* cd9b */ NULL, /* cd9c */ NULL, /* cd9d */ NULL, /* cd9e */ NULL, /* cd9f */ NULL, /* cda0 */ NULL, /* cda1 */ NULL, /* cda2 */ NULL, /* cda3 */ NULL, /* cda4 */ NULL, /* cda5 */ NULL, /* cda6 */ NULL, /* cda7 */ NULL, /* cda8 */ NULL, /* cda9 */ NULL, /* cdaa */ NULL, /* cdab */ NULL, /* cdac */ NULL, /* cdad */ NULL, /* cdae */ NULL, /* cdaf */ NULL, /* cdb0 */ NULL, /* cdb1 */ NULL, /* cdb2 */ NULL, /* cdb3 */ NULL, /* cdb4 */ NULL, /* cdb5 */ NULL, /* cdb6 */ NULL, /* cdb7 */ NULL, /* cdb8 */ NULL, /* cdb9 */ NULL, /* cdba */ NULL, /* cdbb */ NULL, /* cdbc */ NULL, /* cdbd */ NULL, /* cdbe */ NULL, /* cdbf */ NULL, /* cdc0 */ NULL, /* cdc1 */ NULL, /* cdc2 */ NULL, /* cdc3 */ NULL, /* cdc4 */ NULL, /* cdc5 */ NULL, /* cdc6 */ NULL, /* cdc7 */ NULL, /* cdc8 */ NULL, /* cdc9 */ NULL, /* cdca */ NULL, /* cdcb */ NULL, /* cdcc */ NULL, /* cdcd */ NULL, /* cdce */ NULL, /* cdcf */ NULL, /* cdd0 */ NULL, /* cdd1 */ NULL, /* cdd2 */ NULL, /* cdd3 */ NULL, /* cdd4 */ NULL, /* cdd5 */ NULL, /* cdd6 */ NULL, /* cdd7 */ NULL, /* cdd8 */ NULL, /* cdd9 */ NULL, /* cdda */ NULL, /* cddb */ NULL, /* cddc */ NULL, /* cddd */ NULL, /* cdde */ NULL, /* cddf */ NULL, /* cde0 */ NULL, /* cde1 */ NULL, /* cde2 */ NULL, /* cde3 */ NULL, /* cde4 */ NULL, /* cde5 */ NULL, /* cde6 */ NULL, /* cde7 */ NULL, /* cde8 */ NULL, /* cde9 */ NULL, /* cdea */ NULL, /* cdeb */ NULL, /* cdec */ NULL, /* cded */ NULL, /* cdee */ NULL, /* cdef */ NULL, /* cdf0 */ NULL, /* cdf1 */ NULL, /* cdf2 */ NULL, /* cdf3 */ NULL, /* cdf4 */ NULL, /* cdf5 */ NULL, /* cdf6 */ NULL, /* cdf7 */ NULL, /* cdf8 */ NULL, /* cdf9 */ NULL, /* cdfa */ NULL, /* cdfb */ NULL, /* cdfc */ NULL, /* cdfd */ NULL, /* cdfe */ NULL, /* cdff */ NULL, /* ce00 */ NULL, /* ce01 */ NULL, /* ce02 */ NULL, /* ce03 */ NULL, /* ce04 */ NULL, /* ce05 */ NULL, /* ce06 */ NULL, /* ce07 */ NULL, /* ce08 */ NULL, /* ce09 */ NULL, /* ce0a */ NULL, /* ce0b */ NULL, /* ce0c */ NULL, /* ce0d */ NULL, /* ce0e */ NULL, /* ce0f */ NULL, /* ce10 */ NULL, /* ce11 */ NULL, /* ce12 */ NULL, /* ce13 */ NULL, /* ce14 */ NULL, /* ce15 */ NULL, /* ce16 */ NULL, /* ce17 */ NULL, /* ce18 */ NULL, /* ce19 */ NULL, /* ce1a */ NULL, /* ce1b */ NULL, /* ce1c */ NULL, /* ce1d */ NULL, /* ce1e */ NULL, /* ce1f */ NULL, /* ce20 */ NULL, /* ce21 */ NULL, /* ce22 */ NULL, /* ce23 */ NULL, /* ce24 */ NULL, /* ce25 */ NULL, /* ce26 */ NULL, /* ce27 */ NULL, /* ce28 */ NULL, /* ce29 */ NULL, /* ce2a */ NULL, /* ce2b */ NULL, /* ce2c */ NULL, /* ce2d */ NULL, /* ce2e */ NULL, /* ce2f */ NULL, /* ce30 */ NULL, /* ce31 */ NULL, /* ce32 */ NULL, /* ce33 */ NULL, /* ce34 */ NULL, /* ce35 */ NULL, /* ce36 */ NULL, /* ce37 */ NULL, /* ce38 */ NULL, /* ce39 */ NULL, /* ce3a */ NULL, /* ce3b */ NULL, /* ce3c */ NULL, /* ce3d */ NULL, /* ce3e */ NULL, /* ce3f */ NULL, /* ce40 */ NULL, /* ce41 */ NULL, /* ce42 */ NULL, /* ce43 */ NULL, /* ce44 */ NULL, /* ce45 */ NULL, /* ce46 */ NULL, /* ce47 */ NULL, /* ce48 */ NULL, /* ce49 */ NULL, /* ce4a */ NULL, /* ce4b */ NULL, /* ce4c */ NULL, /* ce4d */ NULL, /* ce4e */ NULL, /* ce4f */ NULL, /* ce50 */ NULL, /* ce51 */ NULL, /* ce52 */ NULL, /* ce53 */ NULL, /* ce54 */ NULL, /* ce55 */ NULL, /* ce56 */ NULL, /* ce57 */ NULL, /* ce58 */ NULL, /* ce59 */ NULL, /* ce5a */ NULL, /* ce5b */ NULL, /* ce5c */ NULL, /* ce5d */ NULL, /* ce5e */ NULL, /* ce5f */ NULL, /* ce60 */ NULL, /* ce61 */ NULL, /* ce62 */ NULL, /* ce63 */ NULL, /* ce64 */ NULL, /* ce65 */ NULL, /* ce66 */ NULL, /* ce67 */ NULL, /* ce68 */ NULL, /* ce69 */ NULL, /* ce6a */ NULL, /* ce6b */ NULL, /* ce6c */ NULL, /* ce6d */ NULL, /* ce6e */ NULL, /* ce6f */ NULL, /* ce70 */ NULL, /* ce71 */ NULL, /* ce72 */ NULL, /* ce73 */ NULL, /* ce74 */ NULL, /* ce75 */ NULL, /* ce76 */ NULL, /* ce77 */ NULL, /* ce78 */ NULL, /* ce79 */ NULL, /* ce7a */ NULL, /* ce7b */ NULL, /* ce7c */ NULL, /* ce7d */ NULL, /* ce7e */ NULL, /* ce7f */ NULL, /* ce80 */ NULL, /* ce81 */ NULL, /* ce82 */ NULL, /* ce83 */ NULL, /* ce84 */ NULL, /* ce85 */ NULL, /* ce86 */ NULL, /* ce87 */ NULL, /* ce88 */ NULL, /* ce89 */ NULL, /* ce8a */ NULL, /* ce8b */ NULL, /* ce8c */ NULL, /* ce8d */ NULL, /* ce8e */ NULL, /* ce8f */ NULL, /* ce90 */ NULL, /* ce91 */ NULL, /* ce92 */ NULL, /* ce93 */ NULL, /* ce94 */ NULL, /* ce95 */ NULL, /* ce96 */ NULL, /* ce97 */ NULL, /* ce98 */ NULL, /* ce99 */ NULL, /* ce9a */ NULL, /* ce9b */ NULL, /* ce9c */ NULL, /* ce9d */ NULL, /* ce9e */ NULL, /* ce9f */ NULL, /* cea0 */ NULL, /* cea1 */ NULL, /* cea2 */ NULL, /* cea3 */ NULL, /* cea4 */ NULL, /* cea5 */ NULL, /* cea6 */ NULL, /* cea7 */ NULL, /* cea8 */ NULL, /* cea9 */ NULL, /* ceaa */ NULL, /* ceab */ NULL, /* ceac */ NULL, /* cead */ NULL, /* ceae */ NULL, /* ceaf */ NULL, /* ceb0 */ NULL, /* ceb1 */ NULL, /* ceb2 */ NULL, /* ceb3 */ NULL, /* ceb4 */ NULL, /* ceb5 */ NULL, /* ceb6 */ NULL, /* ceb7 */ NULL, /* ceb8 */ NULL, /* ceb9 */ NULL, /* ceba */ NULL, /* cebb */ NULL, /* cebc */ NULL, /* cebd */ NULL, /* cebe */ NULL, /* cebf */ NULL, /* cec0 */ NULL, /* cec1 */ NULL, /* cec2 */ NULL, /* cec3 */ NULL, /* cec4 */ NULL, /* cec5 */ NULL, /* cec6 */ NULL, /* cec7 */ NULL, /* cec8 */ NULL, /* cec9 */ NULL, /* ceca */ NULL, /* cecb */ NULL, /* cecc */ NULL, /* cecd */ NULL, /* cece */ NULL, /* cecf */ NULL, /* ced0 */ NULL, /* ced1 */ NULL, /* ced2 */ NULL, /* ced3 */ NULL, /* ced4 */ NULL, /* ced5 */ NULL, /* ced6 */ NULL, /* ced7 */ NULL, /* ced8 */ NULL, /* ced9 */ NULL, /* ceda */ NULL, /* cedb */ NULL, /* cedc */ NULL, /* cedd */ NULL, /* cede */ NULL, /* cedf */ NULL, /* cee0 */ NULL, /* cee1 */ NULL, /* cee2 */ NULL, /* cee3 */ NULL, /* cee4 */ NULL, /* cee5 */ NULL, /* cee6 */ NULL, /* cee7 */ NULL, /* cee8 */ NULL, /* cee9 */ NULL, /* ceea */ NULL, /* ceeb */ NULL, /* ceec */ NULL, /* ceed */ NULL, /* ceee */ NULL, /* ceef */ NULL, /* cef0 */ NULL, /* cef1 */ NULL, /* cef2 */ NULL, /* cef3 */ NULL, /* cef4 */ NULL, /* cef5 */ NULL, /* cef6 */ NULL, /* cef7 */ NULL, /* cef8 */ NULL, /* cef9 */ NULL, /* cefa */ NULL, /* cefb */ NULL, /* cefc */ NULL, /* cefd */ NULL, /* cefe */ NULL, /* ceff */ NULL, /* cf00 */ NULL, /* cf01 */ NULL, /* cf02 */ NULL, /* cf03 */ NULL, /* cf04 */ NULL, /* cf05 */ NULL, /* cf06 */ NULL, /* cf07 */ NULL, /* cf08 */ NULL, /* cf09 */ NULL, /* cf0a */ NULL, /* cf0b */ NULL, /* cf0c */ NULL, /* cf0d */ NULL, /* cf0e */ NULL, /* cf0f */ NULL, /* cf10 */ NULL, /* cf11 */ NULL, /* cf12 */ NULL, /* cf13 */ NULL, /* cf14 */ NULL, /* cf15 */ NULL, /* cf16 */ NULL, /* cf17 */ NULL, /* cf18 */ NULL, /* cf19 */ NULL, /* cf1a */ NULL, /* cf1b */ NULL, /* cf1c */ NULL, /* cf1d */ NULL, /* cf1e */ NULL, /* cf1f */ NULL, /* cf20 */ NULL, /* cf21 */ NULL, /* cf22 */ NULL, /* cf23 */ NULL, /* cf24 */ NULL, /* cf25 */ NULL, /* cf26 */ NULL, /* cf27 */ NULL, /* cf28 */ NULL, /* cf29 */ NULL, /* cf2a */ NULL, /* cf2b */ NULL, /* cf2c */ NULL, /* cf2d */ NULL, /* cf2e */ NULL, /* cf2f */ NULL, /* cf30 */ NULL, /* cf31 */ NULL, /* cf32 */ NULL, /* cf33 */ NULL, /* cf34 */ NULL, /* cf35 */ NULL, /* cf36 */ NULL, /* cf37 */ NULL, /* cf38 */ NULL, /* cf39 */ NULL, /* cf3a */ NULL, /* cf3b */ NULL, /* cf3c */ NULL, /* cf3d */ NULL, /* cf3e */ NULL, /* cf3f */ NULL, /* cf40 */ NULL, /* cf41 */ NULL, /* cf42 */ NULL, /* cf43 */ NULL, /* cf44 */ NULL, /* cf45 */ NULL, /* cf46 */ NULL, /* cf47 */ NULL, /* cf48 */ NULL, /* cf49 */ NULL, /* cf4a */ NULL, /* cf4b */ NULL, /* cf4c */ NULL, /* cf4d */ NULL, /* cf4e */ NULL, /* cf4f */ NULL, /* cf50 */ NULL, /* cf51 */ NULL, /* cf52 */ NULL, /* cf53 */ NULL, /* cf54 */ NULL, /* cf55 */ NULL, /* cf56 */ NULL, /* cf57 */ NULL, /* cf58 */ NULL, /* cf59 */ NULL, /* cf5a */ NULL, /* cf5b */ NULL, /* cf5c */ NULL, /* cf5d */ NULL, /* cf5e */ NULL, /* cf5f */ NULL, /* cf60 */ NULL, /* cf61 */ NULL, /* cf62 */ NULL, /* cf63 */ NULL, /* cf64 */ NULL, /* cf65 */ NULL, /* cf66 */ NULL, /* cf67 */ NULL, /* cf68 */ NULL, /* cf69 */ NULL, /* cf6a */ NULL, /* cf6b */ NULL, /* cf6c */ NULL, /* cf6d */ NULL, /* cf6e */ NULL, /* cf6f */ NULL, /* cf70 */ NULL, /* cf71 */ NULL, /* cf72 */ NULL, /* cf73 */ NULL, /* cf74 */ NULL, /* cf75 */ NULL, /* cf76 */ NULL, /* cf77 */ NULL, /* cf78 */ NULL, /* cf79 */ NULL, /* cf7a */ NULL, /* cf7b */ NULL, /* cf7c */ NULL, /* cf7d */ NULL, /* cf7e */ NULL, /* cf7f */ NULL, /* cf80 */ NULL, /* cf81 */ NULL, /* cf82 */ NULL, /* cf83 */ NULL, /* cf84 */ NULL, /* cf85 */ NULL, /* cf86 */ NULL, /* cf87 */ NULL, /* cf88 */ NULL, /* cf89 */ NULL, /* cf8a */ NULL, /* cf8b */ NULL, /* cf8c */ NULL, /* cf8d */ NULL, /* cf8e */ NULL, /* cf8f */ NULL, /* cf90 */ NULL, /* cf91 */ NULL, /* cf92 */ NULL, /* cf93 */ NULL, /* cf94 */ NULL, /* cf95 */ NULL, /* cf96 */ NULL, /* cf97 */ NULL, /* cf98 */ NULL, /* cf99 */ NULL, /* cf9a */ NULL, /* cf9b */ NULL, /* cf9c */ NULL, /* cf9d */ NULL, /* cf9e */ NULL, /* cf9f */ NULL, /* cfa0 */ NULL, /* cfa1 */ NULL, /* cfa2 */ NULL, /* cfa3 */ NULL, /* cfa4 */ NULL, /* cfa5 */ NULL, /* cfa6 */ NULL, /* cfa7 */ NULL, /* cfa8 */ NULL, /* cfa9 */ NULL, /* cfaa */ NULL, /* cfab */ NULL, /* cfac */ NULL, /* cfad */ NULL, /* cfae */ NULL, /* cfaf */ NULL, /* cfb0 */ NULL, /* cfb1 */ NULL, /* cfb2 */ NULL, /* cfb3 */ NULL, /* cfb4 */ NULL, /* cfb5 */ NULL, /* cfb6 */ NULL, /* cfb7 */ NULL, /* cfb8 */ NULL, /* cfb9 */ NULL, /* cfba */ NULL, /* cfbb */ NULL, /* cfbc */ NULL, /* cfbd */ NULL, /* cfbe */ NULL, /* cfbf */ NULL, /* cfc0 */ NULL, /* cfc1 */ NULL, /* cfc2 */ NULL, /* cfc3 */ NULL, /* cfc4 */ NULL, /* cfc5 */ NULL, /* cfc6 */ NULL, /* cfc7 */ NULL, /* cfc8 */ NULL, /* cfc9 */ NULL, /* cfca */ NULL, /* cfcb */ NULL, /* cfcc */ NULL, /* cfcd */ NULL, /* cfce */ NULL, /* cfcf */ NULL, /* cfd0 */ NULL, /* cfd1 */ NULL, /* cfd2 */ NULL, /* cfd3 */ NULL, /* cfd4 */ NULL, /* cfd5 */ NULL, /* cfd6 */ NULL, /* cfd7 */ NULL, /* cfd8 */ NULL, /* cfd9 */ NULL, /* cfda */ NULL, /* cfdb */ NULL, /* cfdc */ NULL, /* cfdd */ NULL, /* cfde */ NULL, /* cfdf */ NULL, /* cfe0 */ NULL, /* cfe1 */ NULL, /* cfe2 */ NULL, /* cfe3 */ NULL, /* cfe4 */ NULL, /* cfe5 */ NULL, /* cfe6 */ NULL, /* cfe7 */ NULL, /* cfe8 */ NULL, /* cfe9 */ NULL, /* cfea */ NULL, /* cfeb */ NULL, /* cfec */ NULL, /* cfed */ NULL, /* cfee */ NULL, /* cfef */ NULL, /* cff0 */ NULL, /* cff1 */ NULL, /* cff2 */ NULL, /* cff3 */ NULL, /* cff4 */ NULL, /* cff5 */ NULL, /* cff6 */ NULL, /* cff7 */ NULL, /* cff8 */ NULL, /* cff9 */ NULL, /* cffa */ NULL, /* cffb */ NULL, /* cffc */ NULL, /* cffd */ NULL, /* cffe */ NULL, /* cfff */ NULL, /* d000 */ NULL, /* d001 */ NULL, /* d002 */ NULL, /* d003 */ NULL, /* d004 */ NULL, /* d005 */ NULL, /* d006 */ NULL, /* d007 */ NULL, /* d008 */ NULL, /* d009 */ NULL, /* d00a */ NULL, /* d00b */ NULL, /* d00c */ NULL, /* d00d */ NULL, /* d00e */ NULL, /* d00f */ NULL, /* d010 */ NULL, /* d011 */ NULL, /* d012 */ NULL, /* d013 */ NULL, /* d014 */ NULL, /* d015 */ NULL, /* d016 */ NULL, /* d017 */ NULL, /* d018 */ NULL, /* d019 */ NULL, /* d01a */ NULL, /* d01b */ NULL, /* d01c */ NULL, /* d01d */ NULL, /* d01e */ NULL, /* d01f */ NULL, /* d020 */ NULL, /* d021 */ NULL, /* d022 */ NULL, /* d023 */ NULL, /* d024 */ NULL, /* d025 */ NULL, /* d026 */ NULL, /* d027 */ NULL, /* d028 */ NULL, /* d029 */ NULL, /* d02a */ NULL, /* d02b */ NULL, /* d02c */ NULL, /* d02d */ NULL, /* d02e */ NULL, /* d02f */ NULL, /* d030 */ NULL, /* d031 */ NULL, /* d032 */ NULL, /* d033 */ NULL, /* d034 */ NULL, /* d035 */ NULL, /* d036 */ NULL, /* d037 */ NULL, /* d038 */ NULL, /* d039 */ NULL, /* d03a */ NULL, /* d03b */ NULL, /* d03c */ NULL, /* d03d */ NULL, /* d03e */ NULL, /* d03f */ NULL, /* d040 */ NULL, /* d041 */ NULL, /* d042 */ NULL, /* d043 */ NULL, /* d044 */ NULL, /* d045 */ NULL, /* d046 */ NULL, /* d047 */ NULL, /* d048 */ NULL, /* d049 */ NULL, /* d04a */ NULL, /* d04b */ NULL, /* d04c */ NULL, /* d04d */ NULL, /* d04e */ NULL, /* d04f */ NULL, /* d050 */ NULL, /* d051 */ NULL, /* d052 */ NULL, /* d053 */ NULL, /* d054 */ NULL, /* d055 */ NULL, /* d056 */ NULL, /* d057 */ NULL, /* d058 */ NULL, /* d059 */ NULL, /* d05a */ NULL, /* d05b */ NULL, /* d05c */ NULL, /* d05d */ NULL, /* d05e */ NULL, /* d05f */ NULL, /* d060 */ NULL, /* d061 */ NULL, /* d062 */ NULL, /* d063 */ NULL, /* d064 */ NULL, /* d065 */ NULL, /* d066 */ NULL, /* d067 */ NULL, /* d068 */ NULL, /* d069 */ NULL, /* d06a */ NULL, /* d06b */ NULL, /* d06c */ NULL, /* d06d */ NULL, /* d06e */ NULL, /* d06f */ NULL, /* d070 */ NULL, /* d071 */ NULL, /* d072 */ NULL, /* d073 */ NULL, /* d074 */ NULL, /* d075 */ NULL, /* d076 */ NULL, /* d077 */ NULL, /* d078 */ NULL, /* d079 */ NULL, /* d07a */ NULL, /* d07b */ NULL, /* d07c */ NULL, /* d07d */ NULL, /* d07e */ NULL, /* d07f */ NULL, /* d080 */ NULL, /* d081 */ NULL, /* d082 */ NULL, /* d083 */ NULL, /* d084 */ NULL, /* d085 */ NULL, /* d086 */ NULL, /* d087 */ NULL, /* d088 */ NULL, /* d089 */ NULL, /* d08a */ NULL, /* d08b */ NULL, /* d08c */ NULL, /* d08d */ NULL, /* d08e */ NULL, /* d08f */ NULL, /* d090 */ NULL, /* d091 */ NULL, /* d092 */ NULL, /* d093 */ NULL, /* d094 */ NULL, /* d095 */ NULL, /* d096 */ NULL, /* d097 */ NULL, /* d098 */ NULL, /* d099 */ NULL, /* d09a */ NULL, /* d09b */ NULL, /* d09c */ NULL, /* d09d */ NULL, /* d09e */ NULL, /* d09f */ NULL, /* d0a0 */ NULL, /* d0a1 */ NULL, /* d0a2 */ NULL, /* d0a3 */ NULL, /* d0a4 */ NULL, /* d0a5 */ NULL, /* d0a6 */ NULL, /* d0a7 */ NULL, /* d0a8 */ NULL, /* d0a9 */ NULL, /* d0aa */ NULL, /* d0ab */ NULL, /* d0ac */ NULL, /* d0ad */ NULL, /* d0ae */ NULL, /* d0af */ NULL, /* d0b0 */ NULL, /* d0b1 */ NULL, /* d0b2 */ NULL, /* d0b3 */ NULL, /* d0b4 */ NULL, /* d0b5 */ NULL, /* d0b6 */ NULL, /* d0b7 */ NULL, /* d0b8 */ NULL, /* d0b9 */ NULL, /* d0ba */ NULL, /* d0bb */ NULL, /* d0bc */ NULL, /* d0bd */ NULL, /* d0be */ NULL, /* d0bf */ NULL, /* d0c0 */ NULL, /* d0c1 */ NULL, /* d0c2 */ NULL, /* d0c3 */ NULL, /* d0c4 */ NULL, /* d0c5 */ NULL, /* d0c6 */ NULL, /* d0c7 */ NULL, /* d0c8 */ NULL, /* d0c9 */ NULL, /* d0ca */ NULL, /* d0cb */ NULL, /* d0cc */ NULL, /* d0cd */ NULL, /* d0ce */ NULL, /* d0cf */ NULL, /* d0d0 */ NULL, /* d0d1 */ NULL, /* d0d2 */ NULL, /* d0d3 */ NULL, /* d0d4 */ NULL, /* d0d5 */ NULL, /* d0d6 */ NULL, /* d0d7 */ NULL, /* d0d8 */ NULL, /* d0d9 */ NULL, /* d0da */ NULL, /* d0db */ NULL, /* d0dc */ NULL, /* d0dd */ NULL, /* d0de */ NULL, /* d0df */ NULL, /* d0e0 */ NULL, /* d0e1 */ NULL, /* d0e2 */ NULL, /* d0e3 */ NULL, /* d0e4 */ NULL, /* d0e5 */ NULL, /* d0e6 */ NULL, /* d0e7 */ NULL, /* d0e8 */ NULL, /* d0e9 */ NULL, /* d0ea */ NULL, /* d0eb */ NULL, /* d0ec */ NULL, /* d0ed */ NULL, /* d0ee */ NULL, /* d0ef */ NULL, /* d0f0 */ NULL, /* d0f1 */ NULL, /* d0f2 */ NULL, /* d0f3 */ NULL, /* d0f4 */ NULL, /* d0f5 */ NULL, /* d0f6 */ NULL, /* d0f7 */ NULL, /* d0f8 */ NULL, /* d0f9 */ NULL, /* d0fa */ NULL, /* d0fb */ NULL, /* d0fc */ NULL, /* d0fd */ NULL, /* d0fe */ NULL, /* d0ff */ NULL, /* d100 */ NULL, /* d101 */ NULL, /* d102 */ NULL, /* d103 */ NULL, /* d104 */ NULL, /* d105 */ NULL, /* d106 */ NULL, /* d107 */ NULL, /* d108 */ NULL, /* d109 */ NULL, /* d10a */ NULL, /* d10b */ NULL, /* d10c */ NULL, /* d10d */ NULL, /* d10e */ NULL, /* d10f */ NULL, /* d110 */ NULL, /* d111 */ NULL, /* d112 */ NULL, /* d113 */ NULL, /* d114 */ NULL, /* d115 */ NULL, /* d116 */ NULL, /* d117 */ NULL, /* d118 */ NULL, /* d119 */ NULL, /* d11a */ NULL, /* d11b */ NULL, /* d11c */ NULL, /* d11d */ NULL, /* d11e */ NULL, /* d11f */ NULL, /* d120 */ NULL, /* d121 */ NULL, /* d122 */ NULL, /* d123 */ NULL, /* d124 */ NULL, /* d125 */ NULL, /* d126 */ NULL, /* d127 */ NULL, /* d128 */ NULL, /* d129 */ NULL, /* d12a */ NULL, /* d12b */ NULL, /* d12c */ NULL, /* d12d */ NULL, /* d12e */ NULL, /* d12f */ NULL, /* d130 */ NULL, /* d131 */ NULL, /* d132 */ NULL, /* d133 */ NULL, /* d134 */ NULL, /* d135 */ NULL, /* d136 */ NULL, /* d137 */ NULL, /* d138 */ NULL, /* d139 */ NULL, /* d13a */ NULL, /* d13b */ NULL, /* d13c */ NULL, /* d13d */ NULL, /* d13e */ NULL, /* d13f */ NULL, /* d140 */ NULL, /* d141 */ NULL, /* d142 */ NULL, /* d143 */ NULL, /* d144 */ NULL, /* d145 */ NULL, /* d146 */ NULL, /* d147 */ NULL, /* d148 */ NULL, /* d149 */ NULL, /* d14a */ NULL, /* d14b */ NULL, /* d14c */ NULL, /* d14d */ NULL, /* d14e */ NULL, /* d14f */ NULL, /* d150 */ NULL, /* d151 */ NULL, /* d152 */ NULL, /* d153 */ NULL, /* d154 */ NULL, /* d155 */ NULL, /* d156 */ NULL, /* d157 */ NULL, /* d158 */ NULL, /* d159 */ NULL, /* d15a */ NULL, /* d15b */ NULL, /* d15c */ NULL, /* d15d */ NULL, /* d15e */ NULL, /* d15f */ NULL, /* d160 */ NULL, /* d161 */ NULL, /* d162 */ NULL, /* d163 */ NULL, /* d164 */ NULL, /* d165 */ NULL, /* d166 */ NULL, /* d167 */ NULL, /* d168 */ NULL, /* d169 */ NULL, /* d16a */ NULL, /* d16b */ NULL, /* d16c */ NULL, /* d16d */ NULL, /* d16e */ NULL, /* d16f */ NULL, /* d170 */ NULL, /* d171 */ NULL, /* d172 */ NULL, /* d173 */ NULL, /* d174 */ NULL, /* d175 */ NULL, /* d176 */ NULL, /* d177 */ NULL, /* d178 */ NULL, /* d179 */ NULL, /* d17a */ NULL, /* d17b */ NULL, /* d17c */ NULL, /* d17d */ NULL, /* d17e */ NULL, /* d17f */ NULL, /* d180 */ NULL, /* d181 */ NULL, /* d182 */ NULL, /* d183 */ NULL, /* d184 */ NULL, /* d185 */ NULL, /* d186 */ NULL, /* d187 */ NULL, /* d188 */ NULL, /* d189 */ NULL, /* d18a */ NULL, /* d18b */ NULL, /* d18c */ NULL, /* d18d */ NULL, /* d18e */ NULL, /* d18f */ NULL, /* d190 */ NULL, /* d191 */ NULL, /* d192 */ NULL, /* d193 */ NULL, /* d194 */ NULL, /* d195 */ NULL, /* d196 */ NULL, /* d197 */ NULL, /* d198 */ NULL, /* d199 */ NULL, /* d19a */ NULL, /* d19b */ NULL, /* d19c */ NULL, /* d19d */ NULL, /* d19e */ NULL, /* d19f */ NULL, /* d1a0 */ NULL, /* d1a1 */ NULL, /* d1a2 */ NULL, /* d1a3 */ NULL, /* d1a4 */ NULL, /* d1a5 */ NULL, /* d1a6 */ NULL, /* d1a7 */ NULL, /* d1a8 */ NULL, /* d1a9 */ NULL, /* d1aa */ NULL, /* d1ab */ NULL, /* d1ac */ NULL, /* d1ad */ NULL, /* d1ae */ NULL, /* d1af */ NULL, /* d1b0 */ NULL, /* d1b1 */ NULL, /* d1b2 */ NULL, /* d1b3 */ NULL, /* d1b4 */ NULL, /* d1b5 */ NULL, /* d1b6 */ NULL, /* d1b7 */ NULL, /* d1b8 */ NULL, /* d1b9 */ NULL, /* d1ba */ NULL, /* d1bb */ NULL, /* d1bc */ NULL, /* d1bd */ NULL, /* d1be */ NULL, /* d1bf */ NULL, /* d1c0 */ NULL, /* d1c1 */ NULL, /* d1c2 */ NULL, /* d1c3 */ NULL, /* d1c4 */ NULL, /* d1c5 */ NULL, /* d1c6 */ NULL, /* d1c7 */ NULL, /* d1c8 */ NULL, /* d1c9 */ NULL, /* d1ca */ NULL, /* d1cb */ NULL, /* d1cc */ NULL, /* d1cd */ NULL, /* d1ce */ NULL, /* d1cf */ NULL, /* d1d0 */ NULL, /* d1d1 */ NULL, /* d1d2 */ NULL, /* d1d3 */ NULL, /* d1d4 */ NULL, /* d1d5 */ NULL, /* d1d6 */ NULL, /* d1d7 */ NULL, /* d1d8 */ NULL, /* d1d9 */ NULL, /* d1da */ NULL, /* d1db */ NULL, /* d1dc */ NULL, /* d1dd */ NULL, /* d1de */ NULL, /* d1df */ NULL, /* d1e0 */ NULL, /* d1e1 */ NULL, /* d1e2 */ NULL, /* d1e3 */ NULL, /* d1e4 */ NULL, /* d1e5 */ NULL, /* d1e6 */ NULL, /* d1e7 */ NULL, /* d1e8 */ NULL, /* d1e9 */ NULL, /* d1ea */ NULL, /* d1eb */ NULL, /* d1ec */ NULL, /* d1ed */ NULL, /* d1ee */ NULL, /* d1ef */ NULL, /* d1f0 */ NULL, /* d1f1 */ NULL, /* d1f2 */ NULL, /* d1f3 */ NULL, /* d1f4 */ NULL, /* d1f5 */ NULL, /* d1f6 */ NULL, /* d1f7 */ NULL, /* d1f8 */ NULL, /* d1f9 */ NULL, /* d1fa */ NULL, /* d1fb */ NULL, /* d1fc */ NULL, /* d1fd */ NULL, /* d1fe */ NULL, /* d1ff */ NULL, /* d200 */ NULL, /* d201 */ NULL, /* d202 */ NULL, /* d203 */ NULL, /* d204 */ NULL, /* d205 */ NULL, /* d206 */ NULL, /* d207 */ NULL, /* d208 */ NULL, /* d209 */ NULL, /* d20a */ NULL, /* d20b */ NULL, /* d20c */ NULL, /* d20d */ NULL, /* d20e */ NULL, /* d20f */ NULL, /* d210 */ NULL, /* d211 */ NULL, /* d212 */ NULL, /* d213 */ NULL, /* d214 */ NULL, /* d215 */ NULL, /* d216 */ NULL, /* d217 */ NULL, /* d218 */ NULL, /* d219 */ NULL, /* d21a */ NULL, /* d21b */ NULL, /* d21c */ NULL, /* d21d */ NULL, /* d21e */ NULL, /* d21f */ NULL, /* d220 */ NULL, /* d221 */ NULL, /* d222 */ NULL, /* d223 */ NULL, /* d224 */ NULL, /* d225 */ NULL, /* d226 */ NULL, /* d227 */ NULL, /* d228 */ NULL, /* d229 */ NULL, /* d22a */ NULL, /* d22b */ NULL, /* d22c */ NULL, /* d22d */ NULL, /* d22e */ NULL, /* d22f */ NULL, /* d230 */ NULL, /* d231 */ NULL, /* d232 */ NULL, /* d233 */ NULL, /* d234 */ NULL, /* d235 */ NULL, /* d236 */ NULL, /* d237 */ NULL, /* d238 */ NULL, /* d239 */ NULL, /* d23a */ NULL, /* d23b */ NULL, /* d23c */ NULL, /* d23d */ NULL, /* d23e */ NULL, /* d23f */ NULL, /* d240 */ NULL, /* d241 */ NULL, /* d242 */ NULL, /* d243 */ NULL, /* d244 */ NULL, /* d245 */ NULL, /* d246 */ NULL, /* d247 */ NULL, /* d248 */ NULL, /* d249 */ NULL, /* d24a */ NULL, /* d24b */ NULL, /* d24c */ NULL, /* d24d */ NULL, /* d24e */ NULL, /* d24f */ NULL, /* d250 */ NULL, /* d251 */ NULL, /* d252 */ NULL, /* d253 */ NULL, /* d254 */ NULL, /* d255 */ NULL, /* d256 */ NULL, /* d257 */ NULL, /* d258 */ NULL, /* d259 */ NULL, /* d25a */ NULL, /* d25b */ NULL, /* d25c */ NULL, /* d25d */ NULL, /* d25e */ NULL, /* d25f */ NULL, /* d260 */ NULL, /* d261 */ NULL, /* d262 */ NULL, /* d263 */ NULL, /* d264 */ NULL, /* d265 */ NULL, /* d266 */ NULL, /* d267 */ NULL, /* d268 */ NULL, /* d269 */ NULL, /* d26a */ NULL, /* d26b */ NULL, /* d26c */ NULL, /* d26d */ NULL, /* d26e */ NULL, /* d26f */ NULL, /* d270 */ NULL, /* d271 */ NULL, /* d272 */ NULL, /* d273 */ NULL, /* d274 */ NULL, /* d275 */ NULL, /* d276 */ NULL, /* d277 */ NULL, /* d278 */ NULL, /* d279 */ NULL, /* d27a */ NULL, /* d27b */ NULL, /* d27c */ NULL, /* d27d */ NULL, /* d27e */ NULL, /* d27f */ NULL, /* d280 */ NULL, /* d281 */ NULL, /* d282 */ NULL, /* d283 */ NULL, /* d284 */ NULL, /* d285 */ NULL, /* d286 */ NULL, /* d287 */ NULL, /* d288 */ NULL, /* d289 */ NULL, /* d28a */ NULL, /* d28b */ NULL, /* d28c */ NULL, /* d28d */ NULL, /* d28e */ NULL, /* d28f */ NULL, /* d290 */ NULL, /* d291 */ NULL, /* d292 */ NULL, /* d293 */ NULL, /* d294 */ NULL, /* d295 */ NULL, /* d296 */ NULL, /* d297 */ NULL, /* d298 */ NULL, /* d299 */ NULL, /* d29a */ NULL, /* d29b */ NULL, /* d29c */ NULL, /* d29d */ NULL, /* d29e */ NULL, /* d29f */ NULL, /* d2a0 */ NULL, /* d2a1 */ NULL, /* d2a2 */ NULL, /* d2a3 */ NULL, /* d2a4 */ NULL, /* d2a5 */ NULL, /* d2a6 */ NULL, /* d2a7 */ NULL, /* d2a8 */ NULL, /* d2a9 */ NULL, /* d2aa */ NULL, /* d2ab */ NULL, /* d2ac */ NULL, /* d2ad */ NULL, /* d2ae */ NULL, /* d2af */ NULL, /* d2b0 */ NULL, /* d2b1 */ NULL, /* d2b2 */ NULL, /* d2b3 */ NULL, /* d2b4 */ NULL, /* d2b5 */ NULL, /* d2b6 */ NULL, /* d2b7 */ NULL, /* d2b8 */ NULL, /* d2b9 */ NULL, /* d2ba */ NULL, /* d2bb */ NULL, /* d2bc */ NULL, /* d2bd */ NULL, /* d2be */ NULL, /* d2bf */ NULL, /* d2c0 */ NULL, /* d2c1 */ NULL, /* d2c2 */ NULL, /* d2c3 */ NULL, /* d2c4 */ NULL, /* d2c5 */ NULL, /* d2c6 */ NULL, /* d2c7 */ NULL, /* d2c8 */ NULL, /* d2c9 */ NULL, /* d2ca */ NULL, /* d2cb */ NULL, /* d2cc */ NULL, /* d2cd */ NULL, /* d2ce */ NULL, /* d2cf */ NULL, /* d2d0 */ NULL, /* d2d1 */ NULL, /* d2d2 */ NULL, /* d2d3 */ NULL, /* d2d4 */ NULL, /* d2d5 */ NULL, /* d2d6 */ NULL, /* d2d7 */ NULL, /* d2d8 */ NULL, /* d2d9 */ NULL, /* d2da */ NULL, /* d2db */ NULL, /* d2dc */ NULL, /* d2dd */ NULL, /* d2de */ NULL, /* d2df */ NULL, /* d2e0 */ NULL, /* d2e1 */ NULL, /* d2e2 */ NULL, /* d2e3 */ NULL, /* d2e4 */ NULL, /* d2e5 */ NULL, /* d2e6 */ NULL, /* d2e7 */ NULL, /* d2e8 */ NULL, /* d2e9 */ NULL, /* d2ea */ NULL, /* d2eb */ NULL, /* d2ec */ NULL, /* d2ed */ NULL, /* d2ee */ NULL, /* d2ef */ NULL, /* d2f0 */ NULL, /* d2f1 */ NULL, /* d2f2 */ NULL, /* d2f3 */ NULL, /* d2f4 */ NULL, /* d2f5 */ NULL, /* d2f6 */ NULL, /* d2f7 */ NULL, /* d2f8 */ NULL, /* d2f9 */ NULL, /* d2fa */ NULL, /* d2fb */ NULL, /* d2fc */ NULL, /* d2fd */ NULL, /* d2fe */ NULL, /* d2ff */ NULL, /* d300 */ NULL, /* d301 */ NULL, /* d302 */ NULL, /* d303 */ NULL, /* d304 */ NULL, /* d305 */ NULL, /* d306 */ NULL, /* d307 */ NULL, /* d308 */ NULL, /* d309 */ NULL, /* d30a */ NULL, /* d30b */ NULL, /* d30c */ NULL, /* d30d */ NULL, /* d30e */ NULL, /* d30f */ NULL, /* d310 */ NULL, /* d311 */ NULL, /* d312 */ NULL, /* d313 */ NULL, /* d314 */ NULL, /* d315 */ NULL, /* d316 */ NULL, /* d317 */ NULL, /* d318 */ NULL, /* d319 */ NULL, /* d31a */ NULL, /* d31b */ NULL, /* d31c */ NULL, /* d31d */ NULL, /* d31e */ NULL, /* d31f */ NULL, /* d320 */ NULL, /* d321 */ NULL, /* d322 */ NULL, /* d323 */ NULL, /* d324 */ NULL, /* d325 */ NULL, /* d326 */ NULL, /* d327 */ NULL, /* d328 */ NULL, /* d329 */ NULL, /* d32a */ NULL, /* d32b */ NULL, /* d32c */ NULL, /* d32d */ NULL, /* d32e */ NULL, /* d32f */ NULL, /* d330 */ NULL, /* d331 */ NULL, /* d332 */ NULL, /* d333 */ NULL, /* d334 */ NULL, /* d335 */ NULL, /* d336 */ NULL, /* d337 */ NULL, /* d338 */ NULL, /* d339 */ NULL, /* d33a */ NULL, /* d33b */ NULL, /* d33c */ NULL, /* d33d */ NULL, /* d33e */ NULL, /* d33f */ NULL, /* d340 */ NULL, /* d341 */ NULL, /* d342 */ NULL, /* d343 */ NULL, /* d344 */ NULL, /* d345 */ NULL, /* d346 */ NULL, /* d347 */ NULL, /* d348 */ NULL, /* d349 */ NULL, /* d34a */ NULL, /* d34b */ NULL, /* d34c */ NULL, /* d34d */ NULL, /* d34e */ NULL, /* d34f */ NULL, /* d350 */ NULL, /* d351 */ NULL, /* d352 */ NULL, /* d353 */ NULL, /* d354 */ NULL, /* d355 */ NULL, /* d356 */ NULL, /* d357 */ NULL, /* d358 */ NULL, /* d359 */ NULL, /* d35a */ NULL, /* d35b */ NULL, /* d35c */ NULL, /* d35d */ NULL, /* d35e */ NULL, /* d35f */ NULL, /* d360 */ NULL, /* d361 */ NULL, /* d362 */ NULL, /* d363 */ NULL, /* d364 */ NULL, /* d365 */ NULL, /* d366 */ NULL, /* d367 */ NULL, /* d368 */ NULL, /* d369 */ NULL, /* d36a */ NULL, /* d36b */ NULL, /* d36c */ NULL, /* d36d */ NULL, /* d36e */ NULL, /* d36f */ NULL, /* d370 */ NULL, /* d371 */ NULL, /* d372 */ NULL, /* d373 */ NULL, /* d374 */ NULL, /* d375 */ NULL, /* d376 */ NULL, /* d377 */ NULL, /* d378 */ NULL, /* d379 */ NULL, /* d37a */ NULL, /* d37b */ NULL, /* d37c */ NULL, /* d37d */ NULL, /* d37e */ NULL, /* d37f */ NULL, /* d380 */ NULL, /* d381 */ NULL, /* d382 */ NULL, /* d383 */ NULL, /* d384 */ NULL, /* d385 */ NULL, /* d386 */ NULL, /* d387 */ NULL, /* d388 */ NULL, /* d389 */ NULL, /* d38a */ NULL, /* d38b */ NULL, /* d38c */ NULL, /* d38d */ NULL, /* d38e */ NULL, /* d38f */ NULL, /* d390 */ NULL, /* d391 */ NULL, /* d392 */ NULL, /* d393 */ NULL, /* d394 */ NULL, /* d395 */ NULL, /* d396 */ NULL, /* d397 */ NULL, /* d398 */ NULL, /* d399 */ NULL, /* d39a */ NULL, /* d39b */ NULL, /* d39c */ NULL, /* d39d */ NULL, /* d39e */ NULL, /* d39f */ NULL, /* d3a0 */ NULL, /* d3a1 */ NULL, /* d3a2 */ NULL, /* d3a3 */ NULL, /* d3a4 */ NULL, /* d3a5 */ NULL, /* d3a6 */ NULL, /* d3a7 */ NULL, /* d3a8 */ NULL, /* d3a9 */ NULL, /* d3aa */ NULL, /* d3ab */ NULL, /* d3ac */ NULL, /* d3ad */ NULL, /* d3ae */ NULL, /* d3af */ NULL, /* d3b0 */ NULL, /* d3b1 */ NULL, /* d3b2 */ NULL, /* d3b3 */ NULL, /* d3b4 */ NULL, /* d3b5 */ NULL, /* d3b6 */ NULL, /* d3b7 */ NULL, /* d3b8 */ NULL, /* d3b9 */ NULL, /* d3ba */ NULL, /* d3bb */ NULL, /* d3bc */ NULL, /* d3bd */ NULL, /* d3be */ NULL, /* d3bf */ NULL, /* d3c0 */ NULL, /* d3c1 */ NULL, /* d3c2 */ NULL, /* d3c3 */ NULL, /* d3c4 */ NULL, /* d3c5 */ NULL, /* d3c6 */ NULL, /* d3c7 */ NULL, /* d3c8 */ NULL, /* d3c9 */ NULL, /* d3ca */ NULL, /* d3cb */ NULL, /* d3cc */ NULL, /* d3cd */ NULL, /* d3ce */ NULL, /* d3cf */ NULL, /* d3d0 */ NULL, /* d3d1 */ NULL, /* d3d2 */ NULL, /* d3d3 */ NULL, /* d3d4 */ NULL, /* d3d5 */ NULL, /* d3d6 */ NULL, /* d3d7 */ NULL, /* d3d8 */ NULL, /* d3d9 */ NULL, /* d3da */ NULL, /* d3db */ NULL, /* d3dc */ NULL, /* d3dd */ NULL, /* d3de */ NULL, /* d3df */ NULL, /* d3e0 */ NULL, /* d3e1 */ NULL, /* d3e2 */ NULL, /* d3e3 */ NULL, /* d3e4 */ NULL, /* d3e5 */ NULL, /* d3e6 */ NULL, /* d3e7 */ NULL, /* d3e8 */ NULL, /* d3e9 */ NULL, /* d3ea */ NULL, /* d3eb */ NULL, /* d3ec */ NULL, /* d3ed */ NULL, /* d3ee */ NULL, /* d3ef */ NULL, /* d3f0 */ NULL, /* d3f1 */ NULL, /* d3f2 */ NULL, /* d3f3 */ NULL, /* d3f4 */ NULL, /* d3f5 */ NULL, /* d3f6 */ NULL, /* d3f7 */ NULL, /* d3f8 */ NULL, /* d3f9 */ NULL, /* d3fa */ NULL, /* d3fb */ NULL, /* d3fc */ NULL, /* d3fd */ NULL, /* d3fe */ NULL, /* d3ff */ NULL, /* d400 */ NULL, /* d401 */ NULL, /* d402 */ NULL, /* d403 */ NULL, /* d404 */ NULL, /* d405 */ NULL, /* d406 */ NULL, /* d407 */ NULL, /* d408 */ NULL, /* d409 */ NULL, /* d40a */ NULL, /* d40b */ NULL, /* d40c */ NULL, /* d40d */ NULL, /* d40e */ NULL, /* d40f */ NULL, /* d410 */ NULL, /* d411 */ NULL, /* d412 */ NULL, /* d413 */ NULL, /* d414 */ NULL, /* d415 */ NULL, /* d416 */ NULL, /* d417 */ NULL, /* d418 */ NULL, /* d419 */ NULL, /* d41a */ NULL, /* d41b */ NULL, /* d41c */ NULL, /* d41d */ NULL, /* d41e */ NULL, /* d41f */ NULL, /* d420 */ NULL, /* d421 */ NULL, /* d422 */ NULL, /* d423 */ NULL, /* d424 */ NULL, /* d425 */ NULL, /* d426 */ NULL, /* d427 */ NULL, /* d428 */ NULL, /* d429 */ NULL, /* d42a */ NULL, /* d42b */ NULL, /* d42c */ NULL, /* d42d */ NULL, /* d42e */ NULL, /* d42f */ NULL, /* d430 */ NULL, /* d431 */ NULL, /* d432 */ NULL, /* d433 */ NULL, /* d434 */ NULL, /* d435 */ NULL, /* d436 */ NULL, /* d437 */ NULL, /* d438 */ NULL, /* d439 */ NULL, /* d43a */ NULL, /* d43b */ NULL, /* d43c */ NULL, /* d43d */ NULL, /* d43e */ NULL, /* d43f */ NULL, /* d440 */ NULL, /* d441 */ NULL, /* d442 */ NULL, /* d443 */ NULL, /* d444 */ NULL, /* d445 */ NULL, /* d446 */ NULL, /* d447 */ NULL, /* d448 */ NULL, /* d449 */ NULL, /* d44a */ NULL, /* d44b */ NULL, /* d44c */ NULL, /* d44d */ NULL, /* d44e */ NULL, /* d44f */ NULL, /* d450 */ NULL, /* d451 */ NULL, /* d452 */ NULL, /* d453 */ NULL, /* d454 */ NULL, /* d455 */ NULL, /* d456 */ NULL, /* d457 */ NULL, /* d458 */ NULL, /* d459 */ NULL, /* d45a */ NULL, /* d45b */ NULL, /* d45c */ NULL, /* d45d */ NULL, /* d45e */ NULL, /* d45f */ NULL, /* d460 */ NULL, /* d461 */ NULL, /* d462 */ NULL, /* d463 */ NULL, /* d464 */ NULL, /* d465 */ NULL, /* d466 */ NULL, /* d467 */ NULL, /* d468 */ NULL, /* d469 */ NULL, /* d46a */ NULL, /* d46b */ NULL, /* d46c */ NULL, /* d46d */ NULL, /* d46e */ NULL, /* d46f */ NULL, /* d470 */ NULL, /* d471 */ NULL, /* d472 */ NULL, /* d473 */ NULL, /* d474 */ NULL, /* d475 */ NULL, /* d476 */ NULL, /* d477 */ NULL, /* d478 */ NULL, /* d479 */ NULL, /* d47a */ NULL, /* d47b */ NULL, /* d47c */ NULL, /* d47d */ NULL, /* d47e */ NULL, /* d47f */ NULL, /* d480 */ NULL, /* d481 */ NULL, /* d482 */ NULL, /* d483 */ NULL, /* d484 */ NULL, /* d485 */ NULL, /* d486 */ NULL, /* d487 */ NULL, /* d488 */ NULL, /* d489 */ NULL, /* d48a */ NULL, /* d48b */ NULL, /* d48c */ NULL, /* d48d */ NULL, /* d48e */ NULL, /* d48f */ NULL, /* d490 */ NULL, /* d491 */ NULL, /* d492 */ NULL, /* d493 */ NULL, /* d494 */ NULL, /* d495 */ NULL, /* d496 */ NULL, /* d497 */ NULL, /* d498 */ NULL, /* d499 */ NULL, /* d49a */ NULL, /* d49b */ NULL, /* d49c */ NULL, /* d49d */ NULL, /* d49e */ NULL, /* d49f */ NULL, /* d4a0 */ NULL, /* d4a1 */ NULL, /* d4a2 */ NULL, /* d4a3 */ NULL, /* d4a4 */ NULL, /* d4a5 */ NULL, /* d4a6 */ NULL, /* d4a7 */ NULL, /* d4a8 */ NULL, /* d4a9 */ NULL, /* d4aa */ NULL, /* d4ab */ NULL, /* d4ac */ NULL, /* d4ad */ NULL, /* d4ae */ NULL, /* d4af */ NULL, /* d4b0 */ NULL, /* d4b1 */ NULL, /* d4b2 */ NULL, /* d4b3 */ NULL, /* d4b4 */ NULL, /* d4b5 */ NULL, /* d4b6 */ NULL, /* d4b7 */ NULL, /* d4b8 */ NULL, /* d4b9 */ NULL, /* d4ba */ NULL, /* d4bb */ NULL, /* d4bc */ NULL, /* d4bd */ NULL, /* d4be */ NULL, /* d4bf */ NULL, /* d4c0 */ NULL, /* d4c1 */ NULL, /* d4c2 */ NULL, /* d4c3 */ NULL, /* d4c4 */ NULL, /* d4c5 */ NULL, /* d4c6 */ NULL, /* d4c7 */ NULL, /* d4c8 */ NULL, /* d4c9 */ NULL, /* d4ca */ NULL, /* d4cb */ NULL, /* d4cc */ NULL, /* d4cd */ NULL, /* d4ce */ NULL, /* d4cf */ NULL, /* d4d0 */ NULL, /* d4d1 */ NULL, /* d4d2 */ NULL, /* d4d3 */ NULL, /* d4d4 */ NULL, /* d4d5 */ NULL, /* d4d6 */ NULL, /* d4d7 */ NULL, /* d4d8 */ NULL, /* d4d9 */ NULL, /* d4da */ NULL, /* d4db */ NULL, /* d4dc */ NULL, /* d4dd */ NULL, /* d4de */ NULL, /* d4df */ NULL, /* d4e0 */ NULL, /* d4e1 */ NULL, /* d4e2 */ NULL, /* d4e3 */ NULL, /* d4e4 */ NULL, /* d4e5 */ NULL, /* d4e6 */ NULL, /* d4e7 */ NULL, /* d4e8 */ NULL, /* d4e9 */ NULL, /* d4ea */ NULL, /* d4eb */ NULL, /* d4ec */ NULL, /* d4ed */ NULL, /* d4ee */ NULL, /* d4ef */ NULL, /* d4f0 */ NULL, /* d4f1 */ NULL, /* d4f2 */ NULL, /* d4f3 */ NULL, /* d4f4 */ NULL, /* d4f5 */ NULL, /* d4f6 */ NULL, /* d4f7 */ NULL, /* d4f8 */ NULL, /* d4f9 */ NULL, /* d4fa */ NULL, /* d4fb */ NULL, /* d4fc */ NULL, /* d4fd */ NULL, /* d4fe */ NULL, /* d4ff */ NULL, /* d500 */ NULL, /* d501 */ NULL, /* d502 */ NULL, /* d503 */ NULL, /* d504 */ NULL, /* d505 */ NULL, /* d506 */ NULL, /* d507 */ NULL, /* d508 */ NULL, /* d509 */ NULL, /* d50a */ NULL, /* d50b */ NULL, /* d50c */ NULL, /* d50d */ NULL, /* d50e */ NULL, /* d50f */ NULL, /* d510 */ NULL, /* d511 */ NULL, /* d512 */ NULL, /* d513 */ NULL, /* d514 */ NULL, /* d515 */ NULL, /* d516 */ NULL, /* d517 */ NULL, /* d518 */ NULL, /* d519 */ NULL, /* d51a */ NULL, /* d51b */ NULL, /* d51c */ NULL, /* d51d */ NULL, /* d51e */ NULL, /* d51f */ NULL, /* d520 */ NULL, /* d521 */ NULL, /* d522 */ NULL, /* d523 */ NULL, /* d524 */ NULL, /* d525 */ NULL, /* d526 */ NULL, /* d527 */ NULL, /* d528 */ NULL, /* d529 */ NULL, /* d52a */ NULL, /* d52b */ NULL, /* d52c */ NULL, /* d52d */ NULL, /* d52e */ NULL, /* d52f */ NULL, /* d530 */ NULL, /* d531 */ NULL, /* d532 */ NULL, /* d533 */ NULL, /* d534 */ NULL, /* d535 */ NULL, /* d536 */ NULL, /* d537 */ NULL, /* d538 */ NULL, /* d539 */ NULL, /* d53a */ NULL, /* d53b */ NULL, /* d53c */ NULL, /* d53d */ NULL, /* d53e */ NULL, /* d53f */ NULL, /* d540 */ NULL, /* d541 */ NULL, /* d542 */ NULL, /* d543 */ NULL, /* d544 */ NULL, /* d545 */ NULL, /* d546 */ NULL, /* d547 */ NULL, /* d548 */ NULL, /* d549 */ NULL, /* d54a */ NULL, /* d54b */ NULL, /* d54c */ NULL, /* d54d */ NULL, /* d54e */ NULL, /* d54f */ NULL, /* d550 */ NULL, /* d551 */ NULL, /* d552 */ NULL, /* d553 */ NULL, /* d554 */ NULL, /* d555 */ NULL, /* d556 */ NULL, /* d557 */ NULL, /* d558 */ NULL, /* d559 */ NULL, /* d55a */ NULL, /* d55b */ NULL, /* d55c */ NULL, /* d55d */ NULL, /* d55e */ NULL, /* d55f */ NULL, /* d560 */ NULL, /* d561 */ NULL, /* d562 */ NULL, /* d563 */ NULL, /* d564 */ NULL, /* d565 */ NULL, /* d566 */ NULL, /* d567 */ NULL, /* d568 */ NULL, /* d569 */ NULL, /* d56a */ NULL, /* d56b */ NULL, /* d56c */ NULL, /* d56d */ NULL, /* d56e */ NULL, /* d56f */ NULL, /* d570 */ NULL, /* d571 */ NULL, /* d572 */ NULL, /* d573 */ NULL, /* d574 */ NULL, /* d575 */ NULL, /* d576 */ NULL, /* d577 */ NULL, /* d578 */ NULL, /* d579 */ NULL, /* d57a */ NULL, /* d57b */ NULL, /* d57c */ NULL, /* d57d */ NULL, /* d57e */ NULL, /* d57f */ NULL, /* d580 */ NULL, /* d581 */ NULL, /* d582 */ NULL, /* d583 */ NULL, /* d584 */ NULL, /* d585 */ NULL, /* d586 */ NULL, /* d587 */ NULL, /* d588 */ NULL, /* d589 */ NULL, /* d58a */ NULL, /* d58b */ NULL, /* d58c */ NULL, /* d58d */ NULL, /* d58e */ NULL, /* d58f */ NULL, /* d590 */ NULL, /* d591 */ NULL, /* d592 */ NULL, /* d593 */ NULL, /* d594 */ NULL, /* d595 */ NULL, /* d596 */ NULL, /* d597 */ NULL, /* d598 */ NULL, /* d599 */ NULL, /* d59a */ NULL, /* d59b */ NULL, /* d59c */ NULL, /* d59d */ NULL, /* d59e */ NULL, /* d59f */ NULL, /* d5a0 */ NULL, /* d5a1 */ NULL, /* d5a2 */ NULL, /* d5a3 */ NULL, /* d5a4 */ NULL, /* d5a5 */ NULL, /* d5a6 */ NULL, /* d5a7 */ NULL, /* d5a8 */ NULL, /* d5a9 */ NULL, /* d5aa */ NULL, /* d5ab */ NULL, /* d5ac */ NULL, /* d5ad */ NULL, /* d5ae */ NULL, /* d5af */ NULL, /* d5b0 */ NULL, /* d5b1 */ NULL, /* d5b2 */ NULL, /* d5b3 */ NULL, /* d5b4 */ NULL, /* d5b5 */ NULL, /* d5b6 */ NULL, /* d5b7 */ NULL, /* d5b8 */ NULL, /* d5b9 */ NULL, /* d5ba */ NULL, /* d5bb */ NULL, /* d5bc */ NULL, /* d5bd */ NULL, /* d5be */ NULL, /* d5bf */ NULL, /* d5c0 */ NULL, /* d5c1 */ NULL, /* d5c2 */ NULL, /* d5c3 */ NULL, /* d5c4 */ NULL, /* d5c5 */ NULL, /* d5c6 */ NULL, /* d5c7 */ NULL, /* d5c8 */ NULL, /* d5c9 */ NULL, /* d5ca */ NULL, /* d5cb */ NULL, /* d5cc */ NULL, /* d5cd */ NULL, /* d5ce */ NULL, /* d5cf */ NULL, /* d5d0 */ NULL, /* d5d1 */ NULL, /* d5d2 */ NULL, /* d5d3 */ NULL, /* d5d4 */ NULL, /* d5d5 */ NULL, /* d5d6 */ NULL, /* d5d7 */ NULL, /* d5d8 */ NULL, /* d5d9 */ NULL, /* d5da */ NULL, /* d5db */ NULL, /* d5dc */ NULL, /* d5dd */ NULL, /* d5de */ NULL, /* d5df */ NULL, /* d5e0 */ NULL, /* d5e1 */ NULL, /* d5e2 */ NULL, /* d5e3 */ NULL, /* d5e4 */ NULL, /* d5e5 */ NULL, /* d5e6 */ NULL, /* d5e7 */ NULL, /* d5e8 */ NULL, /* d5e9 */ NULL, /* d5ea */ NULL, /* d5eb */ NULL, /* d5ec */ NULL, /* d5ed */ NULL, /* d5ee */ NULL, /* d5ef */ NULL, /* d5f0 */ NULL, /* d5f1 */ NULL, /* d5f2 */ NULL, /* d5f3 */ NULL, /* d5f4 */ NULL, /* d5f5 */ NULL, /* d5f6 */ NULL, /* d5f7 */ NULL, /* d5f8 */ NULL, /* d5f9 */ NULL, /* d5fa */ NULL, /* d5fb */ NULL, /* d5fc */ NULL, /* d5fd */ NULL, /* d5fe */ NULL, /* d5ff */ NULL, /* d600 */ NULL, /* d601 */ NULL, /* d602 */ NULL, /* d603 */ NULL, /* d604 */ NULL, /* d605 */ NULL, /* d606 */ NULL, /* d607 */ NULL, /* d608 */ NULL, /* d609 */ NULL, /* d60a */ NULL, /* d60b */ NULL, /* d60c */ NULL, /* d60d */ NULL, /* d60e */ NULL, /* d60f */ NULL, /* d610 */ NULL, /* d611 */ NULL, /* d612 */ NULL, /* d613 */ NULL, /* d614 */ NULL, /* d615 */ NULL, /* d616 */ NULL, /* d617 */ NULL, /* d618 */ NULL, /* d619 */ NULL, /* d61a */ NULL, /* d61b */ NULL, /* d61c */ NULL, /* d61d */ NULL, /* d61e */ NULL, /* d61f */ NULL, /* d620 */ NULL, /* d621 */ NULL, /* d622 */ NULL, /* d623 */ NULL, /* d624 */ NULL, /* d625 */ NULL, /* d626 */ NULL, /* d627 */ NULL, /* d628 */ NULL, /* d629 */ NULL, /* d62a */ NULL, /* d62b */ NULL, /* d62c */ NULL, /* d62d */ NULL, /* d62e */ NULL, /* d62f */ NULL, /* d630 */ NULL, /* d631 */ NULL, /* d632 */ NULL, /* d633 */ NULL, /* d634 */ NULL, /* d635 */ NULL, /* d636 */ NULL, /* d637 */ NULL, /* d638 */ NULL, /* d639 */ NULL, /* d63a */ NULL, /* d63b */ NULL, /* d63c */ NULL, /* d63d */ NULL, /* d63e */ NULL, /* d63f */ NULL, /* d640 */ NULL, /* d641 */ NULL, /* d642 */ NULL, /* d643 */ NULL, /* d644 */ NULL, /* d645 */ NULL, /* d646 */ NULL, /* d647 */ NULL, /* d648 */ NULL, /* d649 */ NULL, /* d64a */ NULL, /* d64b */ NULL, /* d64c */ NULL, /* d64d */ NULL, /* d64e */ NULL, /* d64f */ NULL, /* d650 */ NULL, /* d651 */ NULL, /* d652 */ NULL, /* d653 */ NULL, /* d654 */ NULL, /* d655 */ NULL, /* d656 */ NULL, /* d657 */ NULL, /* d658 */ NULL, /* d659 */ NULL, /* d65a */ NULL, /* d65b */ NULL, /* d65c */ NULL, /* d65d */ NULL, /* d65e */ NULL, /* d65f */ NULL, /* d660 */ NULL, /* d661 */ NULL, /* d662 */ NULL, /* d663 */ NULL, /* d664 */ NULL, /* d665 */ NULL, /* d666 */ NULL, /* d667 */ NULL, /* d668 */ NULL, /* d669 */ NULL, /* d66a */ NULL, /* d66b */ NULL, /* d66c */ NULL, /* d66d */ NULL, /* d66e */ NULL, /* d66f */ NULL, /* d670 */ NULL, /* d671 */ NULL, /* d672 */ NULL, /* d673 */ NULL, /* d674 */ NULL, /* d675 */ NULL, /* d676 */ NULL, /* d677 */ NULL, /* d678 */ NULL, /* d679 */ NULL, /* d67a */ NULL, /* d67b */ NULL, /* d67c */ NULL, /* d67d */ NULL, /* d67e */ NULL, /* d67f */ NULL, /* d680 */ NULL, /* d681 */ NULL, /* d682 */ NULL, /* d683 */ NULL, /* d684 */ NULL, /* d685 */ NULL, /* d686 */ NULL, /* d687 */ NULL, /* d688 */ NULL, /* d689 */ NULL, /* d68a */ NULL, /* d68b */ NULL, /* d68c */ NULL, /* d68d */ NULL, /* d68e */ NULL, /* d68f */ NULL, /* d690 */ NULL, /* d691 */ NULL, /* d692 */ NULL, /* d693 */ NULL, /* d694 */ NULL, /* d695 */ NULL, /* d696 */ NULL, /* d697 */ NULL, /* d698 */ NULL, /* d699 */ NULL, /* d69a */ NULL, /* d69b */ NULL, /* d69c */ NULL, /* d69d */ NULL, /* d69e */ NULL, /* d69f */ NULL, /* d6a0 */ NULL, /* d6a1 */ NULL, /* d6a2 */ NULL, /* d6a3 */ NULL, /* d6a4 */ NULL, /* d6a5 */ NULL, /* d6a6 */ NULL, /* d6a7 */ NULL, /* d6a8 */ NULL, /* d6a9 */ NULL, /* d6aa */ NULL, /* d6ab */ NULL, /* d6ac */ NULL, /* d6ad */ NULL, /* d6ae */ NULL, /* d6af */ NULL, /* d6b0 */ NULL, /* d6b1 */ NULL, /* d6b2 */ NULL, /* d6b3 */ NULL, /* d6b4 */ NULL, /* d6b5 */ NULL, /* d6b6 */ NULL, /* d6b7 */ NULL, /* d6b8 */ NULL, /* d6b9 */ NULL, /* d6ba */ NULL, /* d6bb */ NULL, /* d6bc */ NULL, /* d6bd */ NULL, /* d6be */ NULL, /* d6bf */ NULL, /* d6c0 */ NULL, /* d6c1 */ NULL, /* d6c2 */ NULL, /* d6c3 */ NULL, /* d6c4 */ NULL, /* d6c5 */ NULL, /* d6c6 */ NULL, /* d6c7 */ NULL, /* d6c8 */ NULL, /* d6c9 */ NULL, /* d6ca */ NULL, /* d6cb */ NULL, /* d6cc */ NULL, /* d6cd */ NULL, /* d6ce */ NULL, /* d6cf */ NULL, /* d6d0 */ NULL, /* d6d1 */ NULL, /* d6d2 */ NULL, /* d6d3 */ NULL, /* d6d4 */ NULL, /* d6d5 */ NULL, /* d6d6 */ NULL, /* d6d7 */ NULL, /* d6d8 */ NULL, /* d6d9 */ NULL, /* d6da */ NULL, /* d6db */ NULL, /* d6dc */ NULL, /* d6dd */ NULL, /* d6de */ NULL, /* d6df */ NULL, /* d6e0 */ NULL, /* d6e1 */ NULL, /* d6e2 */ NULL, /* d6e3 */ NULL, /* d6e4 */ NULL, /* d6e5 */ NULL, /* d6e6 */ NULL, /* d6e7 */ NULL, /* d6e8 */ NULL, /* d6e9 */ NULL, /* d6ea */ NULL, /* d6eb */ NULL, /* d6ec */ NULL, /* d6ed */ NULL, /* d6ee */ NULL, /* d6ef */ NULL, /* d6f0 */ NULL, /* d6f1 */ NULL, /* d6f2 */ NULL, /* d6f3 */ NULL, /* d6f4 */ NULL, /* d6f5 */ NULL, /* d6f6 */ NULL, /* d6f7 */ NULL, /* d6f8 */ NULL, /* d6f9 */ NULL, /* d6fa */ NULL, /* d6fb */ NULL, /* d6fc */ NULL, /* d6fd */ NULL, /* d6fe */ NULL, /* d6ff */ NULL, /* d700 */ NULL, /* d701 */ NULL, /* d702 */ NULL, /* d703 */ NULL, /* d704 */ NULL, /* d705 */ NULL, /* d706 */ NULL, /* d707 */ NULL, /* d708 */ NULL, /* d709 */ NULL, /* d70a */ NULL, /* d70b */ NULL, /* d70c */ NULL, /* d70d */ NULL, /* d70e */ NULL, /* d70f */ NULL, /* d710 */ NULL, /* d711 */ NULL, /* d712 */ NULL, /* d713 */ NULL, /* d714 */ NULL, /* d715 */ NULL, /* d716 */ NULL, /* d717 */ NULL, /* d718 */ NULL, /* d719 */ NULL, /* d71a */ NULL, /* d71b */ NULL, /* d71c */ NULL, /* d71d */ NULL, /* d71e */ NULL, /* d71f */ NULL, /* d720 */ NULL, /* d721 */ NULL, /* d722 */ NULL, /* d723 */ NULL, /* d724 */ NULL, /* d725 */ NULL, /* d726 */ NULL, /* d727 */ NULL, /* d728 */ NULL, /* d729 */ NULL, /* d72a */ NULL, /* d72b */ NULL, /* d72c */ NULL, /* d72d */ NULL, /* d72e */ NULL, /* d72f */ NULL, /* d730 */ NULL, /* d731 */ NULL, /* d732 */ NULL, /* d733 */ NULL, /* d734 */ NULL, /* d735 */ NULL, /* d736 */ NULL, /* d737 */ NULL, /* d738 */ NULL, /* d739 */ NULL, /* d73a */ NULL, /* d73b */ NULL, /* d73c */ NULL, /* d73d */ NULL, /* d73e */ NULL, /* d73f */ NULL, /* d740 */ NULL, /* d741 */ NULL, /* d742 */ NULL, /* d743 */ NULL, /* d744 */ NULL, /* d745 */ NULL, /* d746 */ NULL, /* d747 */ NULL, /* d748 */ NULL, /* d749 */ NULL, /* d74a */ NULL, /* d74b */ NULL, /* d74c */ NULL, /* d74d */ NULL, /* d74e */ NULL, /* d74f */ NULL, /* d750 */ NULL, /* d751 */ NULL, /* d752 */ NULL, /* d753 */ NULL, /* d754 */ NULL, /* d755 */ NULL, /* d756 */ NULL, /* d757 */ NULL, /* d758 */ NULL, /* d759 */ NULL, /* d75a */ NULL, /* d75b */ NULL, /* d75c */ NULL, /* d75d */ NULL, /* d75e */ NULL, /* d75f */ NULL, /* d760 */ NULL, /* d761 */ NULL, /* d762 */ NULL, /* d763 */ NULL, /* d764 */ NULL, /* d765 */ NULL, /* d766 */ NULL, /* d767 */ NULL, /* d768 */ NULL, /* d769 */ NULL, /* d76a */ NULL, /* d76b */ NULL, /* d76c */ NULL, /* d76d */ NULL, /* d76e */ NULL, /* d76f */ NULL, /* d770 */ NULL, /* d771 */ NULL, /* d772 */ NULL, /* d773 */ NULL, /* d774 */ NULL, /* d775 */ NULL, /* d776 */ NULL, /* d777 */ NULL, /* d778 */ NULL, /* d779 */ NULL, /* d77a */ NULL, /* d77b */ NULL, /* d77c */ NULL, /* d77d */ NULL, /* d77e */ NULL, /* d77f */ NULL, /* d780 */ NULL, /* d781 */ NULL, /* d782 */ NULL, /* d783 */ NULL, /* d784 */ NULL, /* d785 */ NULL, /* d786 */ NULL, /* d787 */ NULL, /* d788 */ NULL, /* d789 */ NULL, /* d78a */ NULL, /* d78b */ NULL, /* d78c */ NULL, /* d78d */ NULL, /* d78e */ NULL, /* d78f */ NULL, /* d790 */ NULL, /* d791 */ NULL, /* d792 */ NULL, /* d793 */ NULL, /* d794 */ NULL, /* d795 */ NULL, /* d796 */ NULL, /* d797 */ NULL, /* d798 */ NULL, /* d799 */ NULL, /* d79a */ NULL, /* d79b */ NULL, /* d79c */ NULL, /* d79d */ NULL, /* d79e */ NULL, /* d79f */ NULL, /* d7a0 */ NULL, /* d7a1 */ NULL, /* d7a2 */ NULL, /* d7a3 */ NULL, /* d7a4 */ NULL, /* d7a5 */ NULL, /* d7a6 */ NULL, /* d7a7 */ NULL, /* d7a8 */ NULL, /* d7a9 */ NULL, /* d7aa */ NULL, /* d7ab */ NULL, /* d7ac */ NULL, /* d7ad */ NULL, /* d7ae */ NULL, /* d7af */ NULL, /* d7b0 */ NULL, /* d7b1 */ NULL, /* d7b2 */ NULL, /* d7b3 */ NULL, /* d7b4 */ NULL, /* d7b5 */ NULL, /* d7b6 */ NULL, /* d7b7 */ NULL, /* d7b8 */ NULL, /* d7b9 */ NULL, /* d7ba */ NULL, /* d7bb */ NULL, /* d7bc */ NULL, /* d7bd */ NULL, /* d7be */ NULL, /* d7bf */ NULL, /* d7c0 */ NULL, /* d7c1 */ NULL, /* d7c2 */ NULL, /* d7c3 */ NULL, /* d7c4 */ NULL, /* d7c5 */ NULL, /* d7c6 */ NULL, /* d7c7 */ NULL, /* d7c8 */ NULL, /* d7c9 */ NULL, /* d7ca */ NULL, /* d7cb */ NULL, /* d7cc */ NULL, /* d7cd */ NULL, /* d7ce */ NULL, /* d7cf */ NULL, /* d7d0 */ NULL, /* d7d1 */ NULL, /* d7d2 */ NULL, /* d7d3 */ NULL, /* d7d4 */ NULL, /* d7d5 */ NULL, /* d7d6 */ NULL, /* d7d7 */ NULL, /* d7d8 */ NULL, /* d7d9 */ NULL, /* d7da */ NULL, /* d7db */ NULL, /* d7dc */ NULL, /* d7dd */ NULL, /* d7de */ NULL, /* d7df */ NULL, /* d7e0 */ NULL, /* d7e1 */ NULL, /* d7e2 */ NULL, /* d7e3 */ NULL, /* d7e4 */ NULL, /* d7e5 */ NULL, /* d7e6 */ NULL, /* d7e7 */ NULL, /* d7e8 */ NULL, /* d7e9 */ NULL, /* d7ea */ NULL, /* d7eb */ NULL, /* d7ec */ NULL, /* d7ed */ NULL, /* d7ee */ NULL, /* d7ef */ NULL, /* d7f0 */ NULL, /* d7f1 */ NULL, /* d7f2 */ NULL, /* d7f3 */ NULL, /* d7f4 */ NULL, /* d7f5 */ NULL, /* d7f6 */ NULL, /* d7f7 */ NULL, /* d7f8 */ NULL, /* d7f9 */ NULL, /* d7fa */ NULL, /* d7fb */ NULL, /* d7fc */ NULL, /* d7fd */ NULL, /* d7fe */ NULL, /* d7ff */ NULL, /* d800 */ NULL, /* d801 */ NULL, /* d802 */ NULL, /* d803 */ NULL, /* d804 */ NULL, /* d805 */ NULL, /* d806 */ NULL, /* d807 */ NULL, /* d808 */ NULL, /* d809 */ NULL, /* d80a */ NULL, /* d80b */ NULL, /* d80c */ NULL, /* d80d */ NULL, /* d80e */ NULL, /* d80f */ NULL, /* d810 */ NULL, /* d811 */ NULL, /* d812 */ NULL, /* d813 */ NULL, /* d814 */ NULL, /* d815 */ NULL, /* d816 */ NULL, /* d817 */ NULL, /* d818 */ NULL, /* d819 */ NULL, /* d81a */ NULL, /* d81b */ NULL, /* d81c */ NULL, /* d81d */ NULL, /* d81e */ NULL, /* d81f */ NULL, /* d820 */ NULL, /* d821 */ NULL, /* d822 */ NULL, /* d823 */ NULL, /* d824 */ NULL, /* d825 */ NULL, /* d826 */ NULL, /* d827 */ NULL, /* d828 */ NULL, /* d829 */ NULL, /* d82a */ NULL, /* d82b */ NULL, /* d82c */ NULL, /* d82d */ NULL, /* d82e */ NULL, /* d82f */ NULL, /* d830 */ NULL, /* d831 */ NULL, /* d832 */ NULL, /* d833 */ NULL, /* d834 */ NULL, /* d835 */ NULL, /* d836 */ NULL, /* d837 */ NULL, /* d838 */ NULL, /* d839 */ NULL, /* d83a */ NULL, /* d83b */ NULL, /* d83c */ NULL, /* d83d */ NULL, /* d83e */ NULL, /* d83f */ NULL, /* d840 */ NULL, /* d841 */ NULL, /* d842 */ NULL, /* d843 */ NULL, /* d844 */ NULL, /* d845 */ NULL, /* d846 */ NULL, /* d847 */ NULL, /* d848 */ NULL, /* d849 */ NULL, /* d84a */ NULL, /* d84b */ NULL, /* d84c */ NULL, /* d84d */ NULL, /* d84e */ NULL, /* d84f */ NULL, /* d850 */ NULL, /* d851 */ NULL, /* d852 */ NULL, /* d853 */ NULL, /* d854 */ NULL, /* d855 */ NULL, /* d856 */ NULL, /* d857 */ NULL, /* d858 */ NULL, /* d859 */ NULL, /* d85a */ NULL, /* d85b */ NULL, /* d85c */ NULL, /* d85d */ NULL, /* d85e */ NULL, /* d85f */ NULL, /* d860 */ NULL, /* d861 */ NULL, /* d862 */ NULL, /* d863 */ NULL, /* d864 */ NULL, /* d865 */ NULL, /* d866 */ NULL, /* d867 */ NULL, /* d868 */ NULL, /* d869 */ NULL, /* d86a */ NULL, /* d86b */ NULL, /* d86c */ NULL, /* d86d */ NULL, /* d86e */ NULL, /* d86f */ NULL, /* d870 */ NULL, /* d871 */ NULL, /* d872 */ NULL, /* d873 */ NULL, /* d874 */ NULL, /* d875 */ NULL, /* d876 */ NULL, /* d877 */ NULL, /* d878 */ NULL, /* d879 */ NULL, /* d87a */ NULL, /* d87b */ NULL, /* d87c */ NULL, /* d87d */ NULL, /* d87e */ NULL, /* d87f */ NULL, /* d880 */ NULL, /* d881 */ NULL, /* d882 */ NULL, /* d883 */ NULL, /* d884 */ NULL, /* d885 */ NULL, /* d886 */ NULL, /* d887 */ NULL, /* d888 */ NULL, /* d889 */ NULL, /* d88a */ NULL, /* d88b */ NULL, /* d88c */ NULL, /* d88d */ NULL, /* d88e */ NULL, /* d88f */ NULL, /* d890 */ NULL, /* d891 */ NULL, /* d892 */ NULL, /* d893 */ NULL, /* d894 */ NULL, /* d895 */ NULL, /* d896 */ NULL, /* d897 */ NULL, /* d898 */ NULL, /* d899 */ NULL, /* d89a */ NULL, /* d89b */ NULL, /* d89c */ NULL, /* d89d */ NULL, /* d89e */ NULL, /* d89f */ NULL, /* d8a0 */ NULL, /* d8a1 */ NULL, /* d8a2 */ NULL, /* d8a3 */ NULL, /* d8a4 */ NULL, /* d8a5 */ NULL, /* d8a6 */ NULL, /* d8a7 */ NULL, /* d8a8 */ NULL, /* d8a9 */ NULL, /* d8aa */ NULL, /* d8ab */ NULL, /* d8ac */ NULL, /* d8ad */ NULL, /* d8ae */ NULL, /* d8af */ NULL, /* d8b0 */ NULL, /* d8b1 */ NULL, /* d8b2 */ NULL, /* d8b3 */ NULL, /* d8b4 */ NULL, /* d8b5 */ NULL, /* d8b6 */ NULL, /* d8b7 */ NULL, /* d8b8 */ NULL, /* d8b9 */ NULL, /* d8ba */ NULL, /* d8bb */ NULL, /* d8bc */ NULL, /* d8bd */ NULL, /* d8be */ NULL, /* d8bf */ NULL, /* d8c0 */ NULL, /* d8c1 */ NULL, /* d8c2 */ NULL, /* d8c3 */ NULL, /* d8c4 */ NULL, /* d8c5 */ NULL, /* d8c6 */ NULL, /* d8c7 */ NULL, /* d8c8 */ NULL, /* d8c9 */ NULL, /* d8ca */ NULL, /* d8cb */ NULL, /* d8cc */ NULL, /* d8cd */ NULL, /* d8ce */ NULL, /* d8cf */ NULL, /* d8d0 */ NULL, /* d8d1 */ NULL, /* d8d2 */ NULL, /* d8d3 */ NULL, /* d8d4 */ NULL, /* d8d5 */ NULL, /* d8d6 */ NULL, /* d8d7 */ NULL, /* d8d8 */ NULL, /* d8d9 */ NULL, /* d8da */ NULL, /* d8db */ NULL, /* d8dc */ NULL, /* d8dd */ NULL, /* d8de */ NULL, /* d8df */ NULL, /* d8e0 */ NULL, /* d8e1 */ NULL, /* d8e2 */ NULL, /* d8e3 */ NULL, /* d8e4 */ NULL, /* d8e5 */ NULL, /* d8e6 */ NULL, /* d8e7 */ NULL, /* d8e8 */ NULL, /* d8e9 */ NULL, /* d8ea */ NULL, /* d8eb */ NULL, /* d8ec */ NULL, /* d8ed */ NULL, /* d8ee */ NULL, /* d8ef */ NULL, /* d8f0 */ NULL, /* d8f1 */ NULL, /* d8f2 */ NULL, /* d8f3 */ NULL, /* d8f4 */ NULL, /* d8f5 */ NULL, /* d8f6 */ NULL, /* d8f7 */ NULL, /* d8f8 */ NULL, /* d8f9 */ NULL, /* d8fa */ NULL, /* d8fb */ NULL, /* d8fc */ NULL, /* d8fd */ NULL, /* d8fe */ NULL, /* d8ff */ NULL, /* d900 */ NULL, /* d901 */ NULL, /* d902 */ NULL, /* d903 */ NULL, /* d904 */ NULL, /* d905 */ NULL, /* d906 */ NULL, /* d907 */ NULL, /* d908 */ NULL, /* d909 */ NULL, /* d90a */ NULL, /* d90b */ NULL, /* d90c */ NULL, /* d90d */ NULL, /* d90e */ NULL, /* d90f */ NULL, /* d910 */ NULL, /* d911 */ NULL, /* d912 */ NULL, /* d913 */ NULL, /* d914 */ NULL, /* d915 */ NULL, /* d916 */ NULL, /* d917 */ NULL, /* d918 */ NULL, /* d919 */ NULL, /* d91a */ NULL, /* d91b */ NULL, /* d91c */ NULL, /* d91d */ NULL, /* d91e */ NULL, /* d91f */ NULL, /* d920 */ NULL, /* d921 */ NULL, /* d922 */ NULL, /* d923 */ NULL, /* d924 */ NULL, /* d925 */ NULL, /* d926 */ NULL, /* d927 */ NULL, /* d928 */ NULL, /* d929 */ NULL, /* d92a */ NULL, /* d92b */ NULL, /* d92c */ NULL, /* d92d */ NULL, /* d92e */ NULL, /* d92f */ NULL, /* d930 */ NULL, /* d931 */ NULL, /* d932 */ NULL, /* d933 */ NULL, /* d934 */ NULL, /* d935 */ NULL, /* d936 */ NULL, /* d937 */ NULL, /* d938 */ NULL, /* d939 */ NULL, /* d93a */ NULL, /* d93b */ NULL, /* d93c */ NULL, /* d93d */ NULL, /* d93e */ NULL, /* d93f */ NULL, /* d940 */ NULL, /* d941 */ NULL, /* d942 */ NULL, /* d943 */ NULL, /* d944 */ NULL, /* d945 */ NULL, /* d946 */ NULL, /* d947 */ NULL, /* d948 */ NULL, /* d949 */ NULL, /* d94a */ NULL, /* d94b */ NULL, /* d94c */ NULL, /* d94d */ NULL, /* d94e */ NULL, /* d94f */ NULL, /* d950 */ NULL, /* d951 */ NULL, /* d952 */ NULL, /* d953 */ NULL, /* d954 */ NULL, /* d955 */ NULL, /* d956 */ NULL, /* d957 */ NULL, /* d958 */ NULL, /* d959 */ NULL, /* d95a */ NULL, /* d95b */ NULL, /* d95c */ NULL, /* d95d */ NULL, /* d95e */ NULL, /* d95f */ NULL, /* d960 */ NULL, /* d961 */ NULL, /* d962 */ NULL, /* d963 */ NULL, /* d964 */ NULL, /* d965 */ NULL, /* d966 */ NULL, /* d967 */ NULL, /* d968 */ NULL, /* d969 */ NULL, /* d96a */ NULL, /* d96b */ NULL, /* d96c */ NULL, /* d96d */ NULL, /* d96e */ NULL, /* d96f */ NULL, /* d970 */ NULL, /* d971 */ NULL, /* d972 */ NULL, /* d973 */ NULL, /* d974 */ NULL, /* d975 */ NULL, /* d976 */ NULL, /* d977 */ NULL, /* d978 */ NULL, /* d979 */ NULL, /* d97a */ NULL, /* d97b */ NULL, /* d97c */ NULL, /* d97d */ NULL, /* d97e */ NULL, /* d97f */ NULL, /* d980 */ NULL, /* d981 */ NULL, /* d982 */ NULL, /* d983 */ NULL, /* d984 */ NULL, /* d985 */ NULL, /* d986 */ NULL, /* d987 */ NULL, /* d988 */ NULL, /* d989 */ NULL, /* d98a */ NULL, /* d98b */ NULL, /* d98c */ NULL, /* d98d */ NULL, /* d98e */ NULL, /* d98f */ NULL, /* d990 */ NULL, /* d991 */ NULL, /* d992 */ NULL, /* d993 */ NULL, /* d994 */ NULL, /* d995 */ NULL, /* d996 */ NULL, /* d997 */ NULL, /* d998 */ NULL, /* d999 */ NULL, /* d99a */ NULL, /* d99b */ NULL, /* d99c */ NULL, /* d99d */ NULL, /* d99e */ NULL, /* d99f */ NULL, /* d9a0 */ NULL, /* d9a1 */ NULL, /* d9a2 */ NULL, /* d9a3 */ NULL, /* d9a4 */ NULL, /* d9a5 */ NULL, /* d9a6 */ NULL, /* d9a7 */ NULL, /* d9a8 */ NULL, /* d9a9 */ NULL, /* d9aa */ NULL, /* d9ab */ NULL, /* d9ac */ NULL, /* d9ad */ NULL, /* d9ae */ NULL, /* d9af */ NULL, /* d9b0 */ NULL, /* d9b1 */ NULL, /* d9b2 */ NULL, /* d9b3 */ NULL, /* d9b4 */ NULL, /* d9b5 */ NULL, /* d9b6 */ NULL, /* d9b7 */ NULL, /* d9b8 */ NULL, /* d9b9 */ NULL, /* d9ba */ NULL, /* d9bb */ NULL, /* d9bc */ NULL, /* d9bd */ NULL, /* d9be */ NULL, /* d9bf */ NULL, /* d9c0 */ NULL, /* d9c1 */ NULL, /* d9c2 */ NULL, /* d9c3 */ NULL, /* d9c4 */ NULL, /* d9c5 */ NULL, /* d9c6 */ NULL, /* d9c7 */ NULL, /* d9c8 */ NULL, /* d9c9 */ NULL, /* d9ca */ NULL, /* d9cb */ NULL, /* d9cc */ NULL, /* d9cd */ NULL, /* d9ce */ NULL, /* d9cf */ NULL, /* d9d0 */ NULL, /* d9d1 */ NULL, /* d9d2 */ NULL, /* d9d3 */ NULL, /* d9d4 */ NULL, /* d9d5 */ NULL, /* d9d6 */ NULL, /* d9d7 */ NULL, /* d9d8 */ NULL, /* d9d9 */ NULL, /* d9da */ NULL, /* d9db */ NULL, /* d9dc */ NULL, /* d9dd */ NULL, /* d9de */ NULL, /* d9df */ NULL, /* d9e0 */ NULL, /* d9e1 */ NULL, /* d9e2 */ NULL, /* d9e3 */ NULL, /* d9e4 */ NULL, /* d9e5 */ NULL, /* d9e6 */ NULL, /* d9e7 */ NULL, /* d9e8 */ NULL, /* d9e9 */ NULL, /* d9ea */ NULL, /* d9eb */ NULL, /* d9ec */ NULL, /* d9ed */ NULL, /* d9ee */ NULL, /* d9ef */ NULL, /* d9f0 */ NULL, /* d9f1 */ NULL, /* d9f2 */ NULL, /* d9f3 */ NULL, /* d9f4 */ NULL, /* d9f5 */ NULL, /* d9f6 */ NULL, /* d9f7 */ NULL, /* d9f8 */ NULL, /* d9f9 */ NULL, /* d9fa */ NULL, /* d9fb */ NULL, /* d9fc */ NULL, /* d9fd */ NULL, /* d9fe */ NULL, /* d9ff */ NULL, /* da00 */ NULL, /* da01 */ NULL, /* da02 */ NULL, /* da03 */ NULL, /* da04 */ NULL, /* da05 */ NULL, /* da06 */ NULL, /* da07 */ NULL, /* da08 */ NULL, /* da09 */ NULL, /* da0a */ NULL, /* da0b */ NULL, /* da0c */ NULL, /* da0d */ NULL, /* da0e */ NULL, /* da0f */ NULL, /* da10 */ NULL, /* da11 */ NULL, /* da12 */ NULL, /* da13 */ NULL, /* da14 */ NULL, /* da15 */ NULL, /* da16 */ NULL, /* da17 */ NULL, /* da18 */ NULL, /* da19 */ NULL, /* da1a */ NULL, /* da1b */ NULL, /* da1c */ NULL, /* da1d */ NULL, /* da1e */ NULL, /* da1f */ NULL, /* da20 */ NULL, /* da21 */ NULL, /* da22 */ NULL, /* da23 */ NULL, /* da24 */ NULL, /* da25 */ NULL, /* da26 */ NULL, /* da27 */ NULL, /* da28 */ NULL, /* da29 */ NULL, /* da2a */ NULL, /* da2b */ NULL, /* da2c */ NULL, /* da2d */ NULL, /* da2e */ NULL, /* da2f */ NULL, /* da30 */ NULL, /* da31 */ NULL, /* da32 */ NULL, /* da33 */ NULL, /* da34 */ NULL, /* da35 */ NULL, /* da36 */ NULL, /* da37 */ NULL, /* da38 */ NULL, /* da39 */ NULL, /* da3a */ NULL, /* da3b */ NULL, /* da3c */ NULL, /* da3d */ NULL, /* da3e */ NULL, /* da3f */ NULL, /* da40 */ NULL, /* da41 */ NULL, /* da42 */ NULL, /* da43 */ NULL, /* da44 */ NULL, /* da45 */ NULL, /* da46 */ NULL, /* da47 */ NULL, /* da48 */ NULL, /* da49 */ NULL, /* da4a */ NULL, /* da4b */ NULL, /* da4c */ NULL, /* da4d */ NULL, /* da4e */ NULL, /* da4f */ NULL, /* da50 */ NULL, /* da51 */ NULL, /* da52 */ NULL, /* da53 */ NULL, /* da54 */ NULL, /* da55 */ NULL, /* da56 */ NULL, /* da57 */ NULL, /* da58 */ NULL, /* da59 */ NULL, /* da5a */ NULL, /* da5b */ NULL, /* da5c */ NULL, /* da5d */ NULL, /* da5e */ NULL, /* da5f */ NULL, /* da60 */ NULL, /* da61 */ NULL, /* da62 */ NULL, /* da63 */ NULL, /* da64 */ NULL, /* da65 */ NULL, /* da66 */ NULL, /* da67 */ NULL, /* da68 */ NULL, /* da69 */ NULL, /* da6a */ NULL, /* da6b */ NULL, /* da6c */ NULL, /* da6d */ NULL, /* da6e */ NULL, /* da6f */ NULL, /* da70 */ NULL, /* da71 */ NULL, /* da72 */ NULL, /* da73 */ NULL, /* da74 */ NULL, /* da75 */ NULL, /* da76 */ NULL, /* da77 */ NULL, /* da78 */ NULL, /* da79 */ NULL, /* da7a */ NULL, /* da7b */ NULL, /* da7c */ NULL, /* da7d */ NULL, /* da7e */ NULL, /* da7f */ NULL, /* da80 */ NULL, /* da81 */ NULL, /* da82 */ NULL, /* da83 */ NULL, /* da84 */ NULL, /* da85 */ NULL, /* da86 */ NULL, /* da87 */ NULL, /* da88 */ NULL, /* da89 */ NULL, /* da8a */ NULL, /* da8b */ NULL, /* da8c */ NULL, /* da8d */ NULL, /* da8e */ NULL, /* da8f */ NULL, /* da90 */ NULL, /* da91 */ NULL, /* da92 */ NULL, /* da93 */ NULL, /* da94 */ NULL, /* da95 */ NULL, /* da96 */ NULL, /* da97 */ NULL, /* da98 */ NULL, /* da99 */ NULL, /* da9a */ NULL, /* da9b */ NULL, /* da9c */ NULL, /* da9d */ NULL, /* da9e */ NULL, /* da9f */ NULL, /* daa0 */ NULL, /* daa1 */ NULL, /* daa2 */ NULL, /* daa3 */ NULL, /* daa4 */ NULL, /* daa5 */ NULL, /* daa6 */ NULL, /* daa7 */ NULL, /* daa8 */ NULL, /* daa9 */ NULL, /* daaa */ NULL, /* daab */ NULL, /* daac */ NULL, /* daad */ NULL, /* daae */ NULL, /* daaf */ NULL, /* dab0 */ NULL, /* dab1 */ NULL, /* dab2 */ NULL, /* dab3 */ NULL, /* dab4 */ NULL, /* dab5 */ NULL, /* dab6 */ NULL, /* dab7 */ NULL, /* dab8 */ NULL, /* dab9 */ NULL, /* daba */ NULL, /* dabb */ NULL, /* dabc */ NULL, /* dabd */ NULL, /* dabe */ NULL, /* dabf */ NULL, /* dac0 */ NULL, /* dac1 */ NULL, /* dac2 */ NULL, /* dac3 */ NULL, /* dac4 */ NULL, /* dac5 */ NULL, /* dac6 */ NULL, /* dac7 */ NULL, /* dac8 */ NULL, /* dac9 */ NULL, /* daca */ NULL, /* dacb */ NULL, /* dacc */ NULL, /* dacd */ NULL, /* dace */ NULL, /* dacf */ NULL, /* dad0 */ NULL, /* dad1 */ NULL, /* dad2 */ NULL, /* dad3 */ NULL, /* dad4 */ NULL, /* dad5 */ NULL, /* dad6 */ NULL, /* dad7 */ NULL, /* dad8 */ NULL, /* dad9 */ NULL, /* dada */ NULL, /* dadb */ NULL, /* dadc */ NULL, /* dadd */ NULL, /* dade */ NULL, /* dadf */ NULL, /* dae0 */ NULL, /* dae1 */ NULL, /* dae2 */ NULL, /* dae3 */ NULL, /* dae4 */ NULL, /* dae5 */ NULL, /* dae6 */ NULL, /* dae7 */ NULL, /* dae8 */ NULL, /* dae9 */ NULL, /* daea */ NULL, /* daeb */ NULL, /* daec */ NULL, /* daed */ NULL, /* daee */ NULL, /* daef */ NULL, /* daf0 */ NULL, /* daf1 */ NULL, /* daf2 */ NULL, /* daf3 */ NULL, /* daf4 */ NULL, /* daf5 */ NULL, /* daf6 */ NULL, /* daf7 */ NULL, /* daf8 */ NULL, /* daf9 */ NULL, /* dafa */ NULL, /* dafb */ NULL, /* dafc */ NULL, /* dafd */ NULL, /* dafe */ NULL, /* daff */ NULL, /* db00 */ NULL, /* db01 */ NULL, /* db02 */ NULL, /* db03 */ NULL, /* db04 */ NULL, /* db05 */ NULL, /* db06 */ NULL, /* db07 */ NULL, /* db08 */ NULL, /* db09 */ NULL, /* db0a */ NULL, /* db0b */ NULL, /* db0c */ NULL, /* db0d */ NULL, /* db0e */ NULL, /* db0f */ NULL, /* db10 */ NULL, /* db11 */ NULL, /* db12 */ NULL, /* db13 */ NULL, /* db14 */ NULL, /* db15 */ NULL, /* db16 */ NULL, /* db17 */ NULL, /* db18 */ NULL, /* db19 */ NULL, /* db1a */ NULL, /* db1b */ NULL, /* db1c */ NULL, /* db1d */ NULL, /* db1e */ NULL, /* db1f */ NULL, /* db20 */ NULL, /* db21 */ NULL, /* db22 */ NULL, /* db23 */ NULL, /* db24 */ NULL, /* db25 */ NULL, /* db26 */ NULL, /* db27 */ NULL, /* db28 */ NULL, /* db29 */ NULL, /* db2a */ NULL, /* db2b */ NULL, /* db2c */ NULL, /* db2d */ NULL, /* db2e */ NULL, /* db2f */ NULL, /* db30 */ NULL, /* db31 */ NULL, /* db32 */ NULL, /* db33 */ NULL, /* db34 */ NULL, /* db35 */ NULL, /* db36 */ NULL, /* db37 */ NULL, /* db38 */ NULL, /* db39 */ NULL, /* db3a */ NULL, /* db3b */ NULL, /* db3c */ NULL, /* db3d */ NULL, /* db3e */ NULL, /* db3f */ NULL, /* db40 */ NULL, /* db41 */ NULL, /* db42 */ NULL, /* db43 */ NULL, /* db44 */ NULL, /* db45 */ NULL, /* db46 */ NULL, /* db47 */ NULL, /* db48 */ NULL, /* db49 */ NULL, /* db4a */ NULL, /* db4b */ NULL, /* db4c */ NULL, /* db4d */ NULL, /* db4e */ NULL, /* db4f */ NULL, /* db50 */ NULL, /* db51 */ NULL, /* db52 */ NULL, /* db53 */ NULL, /* db54 */ NULL, /* db55 */ NULL, /* db56 */ NULL, /* db57 */ NULL, /* db58 */ NULL, /* db59 */ NULL, /* db5a */ NULL, /* db5b */ NULL, /* db5c */ NULL, /* db5d */ NULL, /* db5e */ NULL, /* db5f */ NULL, /* db60 */ NULL, /* db61 */ NULL, /* db62 */ NULL, /* db63 */ NULL, /* db64 */ NULL, /* db65 */ NULL, /* db66 */ NULL, /* db67 */ NULL, /* db68 */ NULL, /* db69 */ NULL, /* db6a */ NULL, /* db6b */ NULL, /* db6c */ NULL, /* db6d */ NULL, /* db6e */ NULL, /* db6f */ NULL, /* db70 */ NULL, /* db71 */ NULL, /* db72 */ NULL, /* db73 */ NULL, /* db74 */ NULL, /* db75 */ NULL, /* db76 */ NULL, /* db77 */ NULL, /* db78 */ NULL, /* db79 */ NULL, /* db7a */ NULL, /* db7b */ NULL, /* db7c */ NULL, /* db7d */ NULL, /* db7e */ NULL, /* db7f */ NULL, /* db80 */ NULL, /* db81 */ NULL, /* db82 */ NULL, /* db83 */ NULL, /* db84 */ NULL, /* db85 */ NULL, /* db86 */ NULL, /* db87 */ NULL, /* db88 */ NULL, /* db89 */ NULL, /* db8a */ NULL, /* db8b */ NULL, /* db8c */ NULL, /* db8d */ NULL, /* db8e */ NULL, /* db8f */ NULL, /* db90 */ NULL, /* db91 */ NULL, /* db92 */ NULL, /* db93 */ NULL, /* db94 */ NULL, /* db95 */ NULL, /* db96 */ NULL, /* db97 */ NULL, /* db98 */ NULL, /* db99 */ NULL, /* db9a */ NULL, /* db9b */ NULL, /* db9c */ NULL, /* db9d */ NULL, /* db9e */ NULL, /* db9f */ NULL, /* dba0 */ NULL, /* dba1 */ NULL, /* dba2 */ NULL, /* dba3 */ NULL, /* dba4 */ NULL, /* dba5 */ NULL, /* dba6 */ NULL, /* dba7 */ NULL, /* dba8 */ NULL, /* dba9 */ NULL, /* dbaa */ NULL, /* dbab */ NULL, /* dbac */ NULL, /* dbad */ NULL, /* dbae */ NULL, /* dbaf */ NULL, /* dbb0 */ NULL, /* dbb1 */ NULL, /* dbb2 */ NULL, /* dbb3 */ NULL, /* dbb4 */ NULL, /* dbb5 */ NULL, /* dbb6 */ NULL, /* dbb7 */ NULL, /* dbb8 */ NULL, /* dbb9 */ NULL, /* dbba */ NULL, /* dbbb */ NULL, /* dbbc */ NULL, /* dbbd */ NULL, /* dbbe */ NULL, /* dbbf */ NULL, /* dbc0 */ NULL, /* dbc1 */ NULL, /* dbc2 */ NULL, /* dbc3 */ NULL, /* dbc4 */ NULL, /* dbc5 */ NULL, /* dbc6 */ NULL, /* dbc7 */ NULL, /* dbc8 */ NULL, /* dbc9 */ NULL, /* dbca */ NULL, /* dbcb */ NULL, /* dbcc */ NULL, /* dbcd */ NULL, /* dbce */ NULL, /* dbcf */ NULL, /* dbd0 */ NULL, /* dbd1 */ NULL, /* dbd2 */ NULL, /* dbd3 */ NULL, /* dbd4 */ NULL, /* dbd5 */ NULL, /* dbd6 */ NULL, /* dbd7 */ NULL, /* dbd8 */ NULL, /* dbd9 */ NULL, /* dbda */ NULL, /* dbdb */ NULL, /* dbdc */ NULL, /* dbdd */ NULL, /* dbde */ NULL, /* dbdf */ NULL, /* dbe0 */ NULL, /* dbe1 */ NULL, /* dbe2 */ NULL, /* dbe3 */ NULL, /* dbe4 */ NULL, /* dbe5 */ NULL, /* dbe6 */ NULL, /* dbe7 */ NULL, /* dbe8 */ NULL, /* dbe9 */ NULL, /* dbea */ NULL, /* dbeb */ NULL, /* dbec */ NULL, /* dbed */ NULL, /* dbee */ NULL, /* dbef */ NULL, /* dbf0 */ NULL, /* dbf1 */ NULL, /* dbf2 */ NULL, /* dbf3 */ NULL, /* dbf4 */ NULL, /* dbf5 */ NULL, /* dbf6 */ NULL, /* dbf7 */ NULL, /* dbf8 */ NULL, /* dbf9 */ NULL, /* dbfa */ NULL, /* dbfb */ NULL, /* dbfc */ NULL, /* dbfd */ NULL, /* dbfe */ NULL, /* dbff */ NULL, /* dc00 */ NULL, /* dc01 */ NULL, /* dc02 */ NULL, /* dc03 */ NULL, /* dc04 */ NULL, /* dc05 */ NULL, /* dc06 */ NULL, /* dc07 */ NULL, /* dc08 */ NULL, /* dc09 */ NULL, /* dc0a */ NULL, /* dc0b */ NULL, /* dc0c */ NULL, /* dc0d */ NULL, /* dc0e */ NULL, /* dc0f */ NULL, /* dc10 */ NULL, /* dc11 */ NULL, /* dc12 */ NULL, /* dc13 */ NULL, /* dc14 */ NULL, /* dc15 */ NULL, /* dc16 */ NULL, /* dc17 */ NULL, /* dc18 */ NULL, /* dc19 */ NULL, /* dc1a */ NULL, /* dc1b */ NULL, /* dc1c */ NULL, /* dc1d */ NULL, /* dc1e */ NULL, /* dc1f */ NULL, /* dc20 */ NULL, /* dc21 */ NULL, /* dc22 */ NULL, /* dc23 */ NULL, /* dc24 */ NULL, /* dc25 */ NULL, /* dc26 */ NULL, /* dc27 */ NULL, /* dc28 */ NULL, /* dc29 */ NULL, /* dc2a */ NULL, /* dc2b */ NULL, /* dc2c */ NULL, /* dc2d */ NULL, /* dc2e */ NULL, /* dc2f */ NULL, /* dc30 */ NULL, /* dc31 */ NULL, /* dc32 */ NULL, /* dc33 */ NULL, /* dc34 */ NULL, /* dc35 */ NULL, /* dc36 */ NULL, /* dc37 */ NULL, /* dc38 */ NULL, /* dc39 */ NULL, /* dc3a */ NULL, /* dc3b */ NULL, /* dc3c */ NULL, /* dc3d */ NULL, /* dc3e */ NULL, /* dc3f */ NULL, /* dc40 */ NULL, /* dc41 */ NULL, /* dc42 */ NULL, /* dc43 */ NULL, /* dc44 */ NULL, /* dc45 */ NULL, /* dc46 */ NULL, /* dc47 */ NULL, /* dc48 */ NULL, /* dc49 */ NULL, /* dc4a */ NULL, /* dc4b */ NULL, /* dc4c */ NULL, /* dc4d */ NULL, /* dc4e */ NULL, /* dc4f */ NULL, /* dc50 */ NULL, /* dc51 */ NULL, /* dc52 */ NULL, /* dc53 */ NULL, /* dc54 */ NULL, /* dc55 */ NULL, /* dc56 */ NULL, /* dc57 */ NULL, /* dc58 */ NULL, /* dc59 */ NULL, /* dc5a */ NULL, /* dc5b */ NULL, /* dc5c */ NULL, /* dc5d */ NULL, /* dc5e */ NULL, /* dc5f */ NULL, /* dc60 */ NULL, /* dc61 */ NULL, /* dc62 */ NULL, /* dc63 */ NULL, /* dc64 */ NULL, /* dc65 */ NULL, /* dc66 */ NULL, /* dc67 */ NULL, /* dc68 */ NULL, /* dc69 */ NULL, /* dc6a */ NULL, /* dc6b */ NULL, /* dc6c */ NULL, /* dc6d */ NULL, /* dc6e */ NULL, /* dc6f */ NULL, /* dc70 */ NULL, /* dc71 */ NULL, /* dc72 */ NULL, /* dc73 */ NULL, /* dc74 */ NULL, /* dc75 */ NULL, /* dc76 */ NULL, /* dc77 */ NULL, /* dc78 */ NULL, /* dc79 */ NULL, /* dc7a */ NULL, /* dc7b */ NULL, /* dc7c */ NULL, /* dc7d */ NULL, /* dc7e */ NULL, /* dc7f */ NULL, /* dc80 */ NULL, /* dc81 */ NULL, /* dc82 */ NULL, /* dc83 */ NULL, /* dc84 */ NULL, /* dc85 */ NULL, /* dc86 */ NULL, /* dc87 */ NULL, /* dc88 */ NULL, /* dc89 */ NULL, /* dc8a */ NULL, /* dc8b */ NULL, /* dc8c */ NULL, /* dc8d */ NULL, /* dc8e */ NULL, /* dc8f */ NULL, /* dc90 */ NULL, /* dc91 */ NULL, /* dc92 */ NULL, /* dc93 */ NULL, /* dc94 */ NULL, /* dc95 */ NULL, /* dc96 */ NULL, /* dc97 */ NULL, /* dc98 */ NULL, /* dc99 */ NULL, /* dc9a */ NULL, /* dc9b */ NULL, /* dc9c */ NULL, /* dc9d */ NULL, /* dc9e */ NULL, /* dc9f */ NULL, /* dca0 */ NULL, /* dca1 */ NULL, /* dca2 */ NULL, /* dca3 */ NULL, /* dca4 */ NULL, /* dca5 */ NULL, /* dca6 */ NULL, /* dca7 */ NULL, /* dca8 */ NULL, /* dca9 */ NULL, /* dcaa */ NULL, /* dcab */ NULL, /* dcac */ NULL, /* dcad */ NULL, /* dcae */ NULL, /* dcaf */ NULL, /* dcb0 */ NULL, /* dcb1 */ NULL, /* dcb2 */ NULL, /* dcb3 */ NULL, /* dcb4 */ NULL, /* dcb5 */ NULL, /* dcb6 */ NULL, /* dcb7 */ NULL, /* dcb8 */ NULL, /* dcb9 */ NULL, /* dcba */ NULL, /* dcbb */ NULL, /* dcbc */ NULL, /* dcbd */ NULL, /* dcbe */ NULL, /* dcbf */ NULL, /* dcc0 */ NULL, /* dcc1 */ NULL, /* dcc2 */ NULL, /* dcc3 */ NULL, /* dcc4 */ NULL, /* dcc5 */ NULL, /* dcc6 */ NULL, /* dcc7 */ NULL, /* dcc8 */ NULL, /* dcc9 */ NULL, /* dcca */ NULL, /* dccb */ NULL, /* dccc */ NULL, /* dccd */ NULL, /* dcce */ NULL, /* dccf */ NULL, /* dcd0 */ NULL, /* dcd1 */ NULL, /* dcd2 */ NULL, /* dcd3 */ NULL, /* dcd4 */ NULL, /* dcd5 */ NULL, /* dcd6 */ NULL, /* dcd7 */ NULL, /* dcd8 */ NULL, /* dcd9 */ NULL, /* dcda */ NULL, /* dcdb */ NULL, /* dcdc */ NULL, /* dcdd */ NULL, /* dcde */ NULL, /* dcdf */ NULL, /* dce0 */ NULL, /* dce1 */ NULL, /* dce2 */ NULL, /* dce3 */ NULL, /* dce4 */ NULL, /* dce5 */ NULL, /* dce6 */ NULL, /* dce7 */ NULL, /* dce8 */ NULL, /* dce9 */ NULL, /* dcea */ NULL, /* dceb */ NULL, /* dcec */ NULL, /* dced */ NULL, /* dcee */ NULL, /* dcef */ NULL, /* dcf0 */ NULL, /* dcf1 */ NULL, /* dcf2 */ NULL, /* dcf3 */ NULL, /* dcf4 */ NULL, /* dcf5 */ NULL, /* dcf6 */ NULL, /* dcf7 */ NULL, /* dcf8 */ NULL, /* dcf9 */ NULL, /* dcfa */ NULL, /* dcfb */ NULL, /* dcfc */ NULL, /* dcfd */ NULL, /* dcfe */ NULL, /* dcff */ NULL, /* dd00 */ NULL, /* dd01 */ NULL, /* dd02 */ NULL, /* dd03 */ NULL, /* dd04 */ NULL, /* dd05 */ NULL, /* dd06 */ NULL, /* dd07 */ NULL, /* dd08 */ NULL, /* dd09 */ NULL, /* dd0a */ NULL, /* dd0b */ NULL, /* dd0c */ NULL, /* dd0d */ NULL, /* dd0e */ NULL, /* dd0f */ NULL, /* dd10 */ NULL, /* dd11 */ NULL, /* dd12 */ NULL, /* dd13 */ NULL, /* dd14 */ NULL, /* dd15 */ NULL, /* dd16 */ NULL, /* dd17 */ NULL, /* dd18 */ NULL, /* dd19 */ NULL, /* dd1a */ NULL, /* dd1b */ NULL, /* dd1c */ NULL, /* dd1d */ NULL, /* dd1e */ NULL, /* dd1f */ NULL, /* dd20 */ NULL, /* dd21 */ NULL, /* dd22 */ NULL, /* dd23 */ NULL, /* dd24 */ NULL, /* dd25 */ NULL, /* dd26 */ NULL, /* dd27 */ NULL, /* dd28 */ NULL, /* dd29 */ NULL, /* dd2a */ NULL, /* dd2b */ NULL, /* dd2c */ NULL, /* dd2d */ NULL, /* dd2e */ NULL, /* dd2f */ NULL, /* dd30 */ NULL, /* dd31 */ NULL, /* dd32 */ NULL, /* dd33 */ NULL, /* dd34 */ NULL, /* dd35 */ NULL, /* dd36 */ NULL, /* dd37 */ NULL, /* dd38 */ NULL, /* dd39 */ NULL, /* dd3a */ NULL, /* dd3b */ NULL, /* dd3c */ NULL, /* dd3d */ NULL, /* dd3e */ NULL, /* dd3f */ NULL, /* dd40 */ NULL, /* dd41 */ NULL, /* dd42 */ NULL, /* dd43 */ NULL, /* dd44 */ NULL, /* dd45 */ NULL, /* dd46 */ NULL, /* dd47 */ NULL, /* dd48 */ NULL, /* dd49 */ NULL, /* dd4a */ NULL, /* dd4b */ NULL, /* dd4c */ NULL, /* dd4d */ NULL, /* dd4e */ NULL, /* dd4f */ NULL, /* dd50 */ NULL, /* dd51 */ NULL, /* dd52 */ NULL, /* dd53 */ NULL, /* dd54 */ NULL, /* dd55 */ NULL, /* dd56 */ NULL, /* dd57 */ NULL, /* dd58 */ NULL, /* dd59 */ NULL, /* dd5a */ NULL, /* dd5b */ NULL, /* dd5c */ NULL, /* dd5d */ NULL, /* dd5e */ NULL, /* dd5f */ NULL, /* dd60 */ NULL, /* dd61 */ NULL, /* dd62 */ NULL, /* dd63 */ NULL, /* dd64 */ NULL, /* dd65 */ NULL, /* dd66 */ NULL, /* dd67 */ NULL, /* dd68 */ NULL, /* dd69 */ NULL, /* dd6a */ NULL, /* dd6b */ NULL, /* dd6c */ NULL, /* dd6d */ NULL, /* dd6e */ NULL, /* dd6f */ NULL, /* dd70 */ NULL, /* dd71 */ NULL, /* dd72 */ NULL, /* dd73 */ NULL, /* dd74 */ NULL, /* dd75 */ NULL, /* dd76 */ NULL, /* dd77 */ NULL, /* dd78 */ NULL, /* dd79 */ NULL, /* dd7a */ NULL, /* dd7b */ NULL, /* dd7c */ NULL, /* dd7d */ NULL, /* dd7e */ NULL, /* dd7f */ NULL, /* dd80 */ NULL, /* dd81 */ NULL, /* dd82 */ NULL, /* dd83 */ NULL, /* dd84 */ NULL, /* dd85 */ NULL, /* dd86 */ NULL, /* dd87 */ NULL, /* dd88 */ NULL, /* dd89 */ NULL, /* dd8a */ NULL, /* dd8b */ NULL, /* dd8c */ NULL, /* dd8d */ NULL, /* dd8e */ NULL, /* dd8f */ NULL, /* dd90 */ NULL, /* dd91 */ NULL, /* dd92 */ NULL, /* dd93 */ NULL, /* dd94 */ NULL, /* dd95 */ NULL, /* dd96 */ NULL, /* dd97 */ NULL, /* dd98 */ NULL, /* dd99 */ NULL, /* dd9a */ NULL, /* dd9b */ NULL, /* dd9c */ NULL, /* dd9d */ NULL, /* dd9e */ NULL, /* dd9f */ NULL, /* dda0 */ NULL, /* dda1 */ NULL, /* dda2 */ NULL, /* dda3 */ NULL, /* dda4 */ NULL, /* dda5 */ NULL, /* dda6 */ NULL, /* dda7 */ NULL, /* dda8 */ NULL, /* dda9 */ NULL, /* ddaa */ NULL, /* ddab */ NULL, /* ddac */ NULL, /* ddad */ NULL, /* ddae */ NULL, /* ddaf */ NULL, /* ddb0 */ NULL, /* ddb1 */ NULL, /* ddb2 */ NULL, /* ddb3 */ NULL, /* ddb4 */ NULL, /* ddb5 */ NULL, /* ddb6 */ NULL, /* ddb7 */ NULL, /* ddb8 */ NULL, /* ddb9 */ NULL, /* ddba */ NULL, /* ddbb */ NULL, /* ddbc */ NULL, /* ddbd */ NULL, /* ddbe */ NULL, /* ddbf */ NULL, /* ddc0 */ NULL, /* ddc1 */ NULL, /* ddc2 */ NULL, /* ddc3 */ NULL, /* ddc4 */ NULL, /* ddc5 */ NULL, /* ddc6 */ NULL, /* ddc7 */ NULL, /* ddc8 */ NULL, /* ddc9 */ NULL, /* ddca */ NULL, /* ddcb */ NULL, /* ddcc */ NULL, /* ddcd */ NULL, /* ddce */ NULL, /* ddcf */ NULL, /* ddd0 */ NULL, /* ddd1 */ NULL, /* ddd2 */ NULL, /* ddd3 */ NULL, /* ddd4 */ NULL, /* ddd5 */ NULL, /* ddd6 */ NULL, /* ddd7 */ NULL, /* ddd8 */ NULL, /* ddd9 */ NULL, /* ddda */ NULL, /* dddb */ NULL, /* dddc */ NULL, /* dddd */ NULL, /* ddde */ NULL, /* dddf */ NULL, /* dde0 */ NULL, /* dde1 */ NULL, /* dde2 */ NULL, /* dde3 */ NULL, /* dde4 */ NULL, /* dde5 */ NULL, /* dde6 */ NULL, /* dde7 */ NULL, /* dde8 */ NULL, /* dde9 */ NULL, /* ddea */ NULL, /* ddeb */ NULL, /* ddec */ NULL, /* dded */ NULL, /* ddee */ NULL, /* ddef */ NULL, /* ddf0 */ NULL, /* ddf1 */ NULL, /* ddf2 */ NULL, /* ddf3 */ NULL, /* ddf4 */ NULL, /* ddf5 */ NULL, /* ddf6 */ NULL, /* ddf7 */ NULL, /* ddf8 */ NULL, /* ddf9 */ NULL, /* ddfa */ NULL, /* ddfb */ NULL, /* ddfc */ NULL, /* ddfd */ NULL, /* ddfe */ NULL, /* ddff */ NULL, /* de00 */ NULL, /* de01 */ NULL, /* de02 */ NULL, /* de03 */ NULL, /* de04 */ NULL, /* de05 */ NULL, /* de06 */ NULL, /* de07 */ NULL, /* de08 */ NULL, /* de09 */ NULL, /* de0a */ NULL, /* de0b */ NULL, /* de0c */ NULL, /* de0d */ NULL, /* de0e */ NULL, /* de0f */ NULL, /* de10 */ NULL, /* de11 */ NULL, /* de12 */ NULL, /* de13 */ NULL, /* de14 */ NULL, /* de15 */ NULL, /* de16 */ NULL, /* de17 */ NULL, /* de18 */ NULL, /* de19 */ NULL, /* de1a */ NULL, /* de1b */ NULL, /* de1c */ NULL, /* de1d */ NULL, /* de1e */ NULL, /* de1f */ NULL, /* de20 */ NULL, /* de21 */ NULL, /* de22 */ NULL, /* de23 */ NULL, /* de24 */ NULL, /* de25 */ NULL, /* de26 */ NULL, /* de27 */ NULL, /* de28 */ NULL, /* de29 */ NULL, /* de2a */ NULL, /* de2b */ NULL, /* de2c */ NULL, /* de2d */ NULL, /* de2e */ NULL, /* de2f */ NULL, /* de30 */ NULL, /* de31 */ NULL, /* de32 */ NULL, /* de33 */ NULL, /* de34 */ NULL, /* de35 */ NULL, /* de36 */ NULL, /* de37 */ NULL, /* de38 */ NULL, /* de39 */ NULL, /* de3a */ NULL, /* de3b */ NULL, /* de3c */ NULL, /* de3d */ NULL, /* de3e */ NULL, /* de3f */ NULL, /* de40 */ NULL, /* de41 */ NULL, /* de42 */ NULL, /* de43 */ NULL, /* de44 */ NULL, /* de45 */ NULL, /* de46 */ NULL, /* de47 */ NULL, /* de48 */ NULL, /* de49 */ NULL, /* de4a */ NULL, /* de4b */ NULL, /* de4c */ NULL, /* de4d */ NULL, /* de4e */ NULL, /* de4f */ NULL, /* de50 */ NULL, /* de51 */ NULL, /* de52 */ NULL, /* de53 */ NULL, /* de54 */ NULL, /* de55 */ NULL, /* de56 */ NULL, /* de57 */ NULL, /* de58 */ NULL, /* de59 */ NULL, /* de5a */ NULL, /* de5b */ NULL, /* de5c */ NULL, /* de5d */ NULL, /* de5e */ NULL, /* de5f */ NULL, /* de60 */ NULL, /* de61 */ NULL, /* de62 */ NULL, /* de63 */ NULL, /* de64 */ NULL, /* de65 */ NULL, /* de66 */ NULL, /* de67 */ NULL, /* de68 */ NULL, /* de69 */ NULL, /* de6a */ NULL, /* de6b */ NULL, /* de6c */ NULL, /* de6d */ NULL, /* de6e */ NULL, /* de6f */ NULL, /* de70 */ NULL, /* de71 */ NULL, /* de72 */ NULL, /* de73 */ NULL, /* de74 */ NULL, /* de75 */ NULL, /* de76 */ NULL, /* de77 */ NULL, /* de78 */ NULL, /* de79 */ NULL, /* de7a */ NULL, /* de7b */ NULL, /* de7c */ NULL, /* de7d */ NULL, /* de7e */ NULL, /* de7f */ NULL, /* de80 */ NULL, /* de81 */ NULL, /* de82 */ NULL, /* de83 */ NULL, /* de84 */ NULL, /* de85 */ NULL, /* de86 */ NULL, /* de87 */ NULL, /* de88 */ NULL, /* de89 */ NULL, /* de8a */ NULL, /* de8b */ NULL, /* de8c */ NULL, /* de8d */ NULL, /* de8e */ NULL, /* de8f */ NULL, /* de90 */ NULL, /* de91 */ NULL, /* de92 */ NULL, /* de93 */ NULL, /* de94 */ NULL, /* de95 */ NULL, /* de96 */ NULL, /* de97 */ NULL, /* de98 */ NULL, /* de99 */ NULL, /* de9a */ NULL, /* de9b */ NULL, /* de9c */ NULL, /* de9d */ NULL, /* de9e */ NULL, /* de9f */ NULL, /* dea0 */ NULL, /* dea1 */ NULL, /* dea2 */ NULL, /* dea3 */ NULL, /* dea4 */ NULL, /* dea5 */ NULL, /* dea6 */ NULL, /* dea7 */ NULL, /* dea8 */ NULL, /* dea9 */ NULL, /* deaa */ NULL, /* deab */ NULL, /* deac */ NULL, /* dead */ NULL, /* deae */ NULL, /* deaf */ NULL, /* deb0 */ NULL, /* deb1 */ NULL, /* deb2 */ NULL, /* deb3 */ NULL, /* deb4 */ NULL, /* deb5 */ NULL, /* deb6 */ NULL, /* deb7 */ NULL, /* deb8 */ NULL, /* deb9 */ NULL, /* deba */ NULL, /* debb */ NULL, /* debc */ NULL, /* debd */ NULL, /* debe */ NULL, /* debf */ NULL, /* dec0 */ NULL, /* dec1 */ NULL, /* dec2 */ NULL, /* dec3 */ NULL, /* dec4 */ NULL, /* dec5 */ NULL, /* dec6 */ NULL, /* dec7 */ NULL, /* dec8 */ NULL, /* dec9 */ NULL, /* deca */ NULL, /* decb */ NULL, /* decc */ NULL, /* decd */ NULL, /* dece */ NULL, /* decf */ NULL, /* ded0 */ NULL, /* ded1 */ NULL, /* ded2 */ NULL, /* ded3 */ NULL, /* ded4 */ NULL, /* ded5 */ NULL, /* ded6 */ NULL, /* ded7 */ NULL, /* ded8 */ NULL, /* ded9 */ NULL, /* deda */ NULL, /* dedb */ NULL, /* dedc */ NULL, /* dedd */ NULL, /* dede */ NULL, /* dedf */ NULL, /* dee0 */ NULL, /* dee1 */ NULL, /* dee2 */ NULL, /* dee3 */ NULL, /* dee4 */ NULL, /* dee5 */ NULL, /* dee6 */ NULL, /* dee7 */ NULL, /* dee8 */ NULL, /* dee9 */ NULL, /* deea */ NULL, /* deeb */ NULL, /* deec */ NULL, /* deed */ NULL, /* deee */ NULL, /* deef */ NULL, /* def0 */ NULL, /* def1 */ NULL, /* def2 */ NULL, /* def3 */ NULL, /* def4 */ NULL, /* def5 */ NULL, /* def6 */ NULL, /* def7 */ NULL, /* def8 */ NULL, /* def9 */ NULL, /* defa */ NULL, /* defb */ NULL, /* defc */ NULL, /* defd */ NULL, /* defe */ NULL, /* deff */ NULL, /* df00 */ NULL, /* df01 */ NULL, /* df02 */ NULL, /* df03 */ NULL, /* df04 */ NULL, /* df05 */ NULL, /* df06 */ NULL, /* df07 */ NULL, /* df08 */ NULL, /* df09 */ NULL, /* df0a */ NULL, /* df0b */ NULL, /* df0c */ NULL, /* df0d */ NULL, /* df0e */ NULL, /* df0f */ NULL, /* df10 */ NULL, /* df11 */ NULL, /* df12 */ NULL, /* df13 */ NULL, /* df14 */ NULL, /* df15 */ NULL, /* df16 */ NULL, /* df17 */ NULL, /* df18 */ NULL, /* df19 */ NULL, /* df1a */ NULL, /* df1b */ NULL, /* df1c */ NULL, /* df1d */ NULL, /* df1e */ NULL, /* df1f */ NULL, /* df20 */ NULL, /* df21 */ NULL, /* df22 */ NULL, /* df23 */ NULL, /* df24 */ NULL, /* df25 */ NULL, /* df26 */ NULL, /* df27 */ NULL, /* df28 */ NULL, /* df29 */ NULL, /* df2a */ NULL, /* df2b */ NULL, /* df2c */ NULL, /* df2d */ NULL, /* df2e */ NULL, /* df2f */ NULL, /* df30 */ NULL, /* df31 */ NULL, /* df32 */ NULL, /* df33 */ NULL, /* df34 */ NULL, /* df35 */ NULL, /* df36 */ NULL, /* df37 */ NULL, /* df38 */ NULL, /* df39 */ NULL, /* df3a */ NULL, /* df3b */ NULL, /* df3c */ NULL, /* df3d */ NULL, /* df3e */ NULL, /* df3f */ NULL, /* df40 */ NULL, /* df41 */ NULL, /* df42 */ NULL, /* df43 */ NULL, /* df44 */ NULL, /* df45 */ NULL, /* df46 */ NULL, /* df47 */ NULL, /* df48 */ NULL, /* df49 */ NULL, /* df4a */ NULL, /* df4b */ NULL, /* df4c */ NULL, /* df4d */ NULL, /* df4e */ NULL, /* df4f */ NULL, /* df50 */ NULL, /* df51 */ NULL, /* df52 */ NULL, /* df53 */ NULL, /* df54 */ NULL, /* df55 */ NULL, /* df56 */ NULL, /* df57 */ NULL, /* df58 */ NULL, /* df59 */ NULL, /* df5a */ NULL, /* df5b */ NULL, /* df5c */ NULL, /* df5d */ NULL, /* df5e */ NULL, /* df5f */ NULL, /* df60 */ NULL, /* df61 */ NULL, /* df62 */ NULL, /* df63 */ NULL, /* df64 */ NULL, /* df65 */ NULL, /* df66 */ NULL, /* df67 */ NULL, /* df68 */ NULL, /* df69 */ NULL, /* df6a */ NULL, /* df6b */ NULL, /* df6c */ NULL, /* df6d */ NULL, /* df6e */ NULL, /* df6f */ NULL, /* df70 */ NULL, /* df71 */ NULL, /* df72 */ NULL, /* df73 */ NULL, /* df74 */ NULL, /* df75 */ NULL, /* df76 */ NULL, /* df77 */ NULL, /* df78 */ NULL, /* df79 */ NULL, /* df7a */ NULL, /* df7b */ NULL, /* df7c */ NULL, /* df7d */ NULL, /* df7e */ NULL, /* df7f */ NULL, /* df80 */ NULL, /* df81 */ NULL, /* df82 */ NULL, /* df83 */ NULL, /* df84 */ NULL, /* df85 */ NULL, /* df86 */ NULL, /* df87 */ NULL, /* df88 */ NULL, /* df89 */ NULL, /* df8a */ NULL, /* df8b */ NULL, /* df8c */ NULL, /* df8d */ NULL, /* df8e */ NULL, /* df8f */ NULL, /* df90 */ NULL, /* df91 */ NULL, /* df92 */ NULL, /* df93 */ NULL, /* df94 */ NULL, /* df95 */ NULL, /* df96 */ NULL, /* df97 */ NULL, /* df98 */ NULL, /* df99 */ NULL, /* df9a */ NULL, /* df9b */ NULL, /* df9c */ NULL, /* df9d */ NULL, /* df9e */ NULL, /* df9f */ NULL, /* dfa0 */ NULL, /* dfa1 */ NULL, /* dfa2 */ NULL, /* dfa3 */ NULL, /* dfa4 */ NULL, /* dfa5 */ NULL, /* dfa6 */ NULL, /* dfa7 */ NULL, /* dfa8 */ NULL, /* dfa9 */ NULL, /* dfaa */ NULL, /* dfab */ NULL, /* dfac */ NULL, /* dfad */ NULL, /* dfae */ NULL, /* dfaf */ NULL, /* dfb0 */ NULL, /* dfb1 */ NULL, /* dfb2 */ NULL, /* dfb3 */ NULL, /* dfb4 */ NULL, /* dfb5 */ NULL, /* dfb6 */ NULL, /* dfb7 */ NULL, /* dfb8 */ NULL, /* dfb9 */ NULL, /* dfba */ NULL, /* dfbb */ NULL, /* dfbc */ NULL, /* dfbd */ NULL, /* dfbe */ NULL, /* dfbf */ NULL, /* dfc0 */ NULL, /* dfc1 */ NULL, /* dfc2 */ NULL, /* dfc3 */ NULL, /* dfc4 */ NULL, /* dfc5 */ NULL, /* dfc6 */ NULL, /* dfc7 */ NULL, /* dfc8 */ NULL, /* dfc9 */ NULL, /* dfca */ NULL, /* dfcb */ NULL, /* dfcc */ NULL, /* dfcd */ NULL, /* dfce */ NULL, /* dfcf */ NULL, /* dfd0 */ NULL, /* dfd1 */ NULL, /* dfd2 */ NULL, /* dfd3 */ NULL, /* dfd4 */ NULL, /* dfd5 */ NULL, /* dfd6 */ NULL, /* dfd7 */ NULL, /* dfd8 */ NULL, /* dfd9 */ NULL, /* dfda */ NULL, /* dfdb */ NULL, /* dfdc */ NULL, /* dfdd */ NULL, /* dfde */ NULL, /* dfdf */ NULL, /* dfe0 */ NULL, /* dfe1 */ NULL, /* dfe2 */ NULL, /* dfe3 */ NULL, /* dfe4 */ NULL, /* dfe5 */ NULL, /* dfe6 */ NULL, /* dfe7 */ NULL, /* dfe8 */ NULL, /* dfe9 */ NULL, /* dfea */ NULL, /* dfeb */ NULL, /* dfec */ NULL, /* dfed */ NULL, /* dfee */ NULL, /* dfef */ NULL, /* dff0 */ NULL, /* dff1 */ NULL, /* dff2 */ NULL, /* dff3 */ NULL, /* dff4 */ NULL, /* dff5 */ NULL, /* dff6 */ NULL, /* dff7 */ NULL, /* dff8 */ NULL, /* dff9 */ NULL, /* dffa */ NULL, /* dffb */ NULL, /* dffc */ NULL, /* dffd */ NULL, /* dffe */ NULL, /* dfff */ NULL, /* e000 */ NULL, /* e001 */ NULL, /* e002 */ NULL, /* e003 */ NULL, /* e004 */ NULL, /* e005 */ NULL, /* e006 */ NULL, /* e007 */ NULL, /* e008 */ NULL, /* e009 */ NULL, /* e00a */ NULL, /* e00b */ NULL, /* e00c */ NULL, /* e00d */ NULL, /* e00e */ NULL, /* e00f */ NULL, /* e010 */ NULL, /* e011 */ NULL, /* e012 */ NULL, /* e013 */ NULL, /* e014 */ NULL, /* e015 */ NULL, /* e016 */ NULL, /* e017 */ NULL, /* e018 */ NULL, /* e019 */ NULL, /* e01a */ NULL, /* e01b */ NULL, /* e01c */ NULL, /* e01d */ NULL, /* e01e */ NULL, /* e01f */ NULL, /* e020 */ NULL, /* e021 */ NULL, /* e022 */ NULL, /* e023 */ NULL, /* e024 */ NULL, /* e025 */ NULL, /* e026 */ NULL, /* e027 */ NULL, /* e028 */ NULL, /* e029 */ NULL, /* e02a */ NULL, /* e02b */ NULL, /* e02c */ NULL, /* e02d */ NULL, /* e02e */ NULL, /* e02f */ NULL, /* e030 */ NULL, /* e031 */ NULL, /* e032 */ NULL, /* e033 */ NULL, /* e034 */ NULL, /* e035 */ NULL, /* e036 */ NULL, /* e037 */ NULL, /* e038 */ NULL, /* e039 */ NULL, /* e03a */ NULL, /* e03b */ NULL, /* e03c */ NULL, /* e03d */ NULL, /* e03e */ NULL, /* e03f */ NULL, /* e040 */ NULL, /* e041 */ NULL, /* e042 */ NULL, /* e043 */ NULL, /* e044 */ NULL, /* e045 */ NULL, /* e046 */ NULL, /* e047 */ NULL, /* e048 */ NULL, /* e049 */ NULL, /* e04a */ NULL, /* e04b */ NULL, /* e04c */ NULL, /* e04d */ NULL, /* e04e */ NULL, /* e04f */ NULL, /* e050 */ NULL, /* e051 */ NULL, /* e052 */ NULL, /* e053 */ NULL, /* e054 */ NULL, /* e055 */ NULL, /* e056 */ NULL, /* e057 */ NULL, /* e058 */ NULL, /* e059 */ NULL, /* e05a */ NULL, /* e05b */ NULL, /* e05c */ NULL, /* e05d */ NULL, /* e05e */ NULL, /* e05f */ NULL, /* e060 */ NULL, /* e061 */ NULL, /* e062 */ NULL, /* e063 */ NULL, /* e064 */ NULL, /* e065 */ NULL, /* e066 */ NULL, /* e067 */ NULL, /* e068 */ NULL, /* e069 */ NULL, /* e06a */ NULL, /* e06b */ NULL, /* e06c */ NULL, /* e06d */ NULL, /* e06e */ NULL, /* e06f */ NULL, /* e070 */ NULL, /* e071 */ NULL, /* e072 */ NULL, /* e073 */ NULL, /* e074 */ NULL, /* e075 */ NULL, /* e076 */ NULL, /* e077 */ NULL, /* e078 */ NULL, /* e079 */ NULL, /* e07a */ NULL, /* e07b */ NULL, /* e07c */ NULL, /* e07d */ NULL, /* e07e */ NULL, /* e07f */ NULL, /* e080 */ NULL, /* e081 */ NULL, /* e082 */ NULL, /* e083 */ NULL, /* e084 */ NULL, /* e085 */ NULL, /* e086 */ NULL, /* e087 */ NULL, /* e088 */ NULL, /* e089 */ NULL, /* e08a */ NULL, /* e08b */ NULL, /* e08c */ NULL, /* e08d */ NULL, /* e08e */ NULL, /* e08f */ NULL, /* e090 */ NULL, /* e091 */ NULL, /* e092 */ NULL, /* e093 */ NULL, /* e094 */ NULL, /* e095 */ NULL, /* e096 */ NULL, /* e097 */ NULL, /* e098 */ NULL, /* e099 */ NULL, /* e09a */ NULL, /* e09b */ NULL, /* e09c */ NULL, /* e09d */ NULL, /* e09e */ NULL, /* e09f */ NULL, /* e0a0 */ NULL, /* e0a1 */ NULL, /* e0a2 */ NULL, /* e0a3 */ NULL, /* e0a4 */ NULL, /* e0a5 */ NULL, /* e0a6 */ NULL, /* e0a7 */ NULL, /* e0a8 */ NULL, /* e0a9 */ NULL, /* e0aa */ NULL, /* e0ab */ NULL, /* e0ac */ NULL, /* e0ad */ NULL, /* e0ae */ NULL, /* e0af */ NULL, /* e0b0 */ NULL, /* e0b1 */ NULL, /* e0b2 */ NULL, /* e0b3 */ NULL, /* e0b4 */ NULL, /* e0b5 */ NULL, /* e0b6 */ NULL, /* e0b7 */ NULL, /* e0b8 */ NULL, /* e0b9 */ NULL, /* e0ba */ NULL, /* e0bb */ NULL, /* e0bc */ NULL, /* e0bd */ NULL, /* e0be */ NULL, /* e0bf */ NULL, /* e0c0 */ NULL, /* e0c1 */ NULL, /* e0c2 */ NULL, /* e0c3 */ NULL, /* e0c4 */ NULL, /* e0c5 */ NULL, /* e0c6 */ NULL, /* e0c7 */ NULL, /* e0c8 */ NULL, /* e0c9 */ NULL, /* e0ca */ NULL, /* e0cb */ NULL, /* e0cc */ NULL, /* e0cd */ NULL, /* e0ce */ NULL, /* e0cf */ NULL, /* e0d0 */ NULL, /* e0d1 */ NULL, /* e0d2 */ NULL, /* e0d3 */ NULL, /* e0d4 */ NULL, /* e0d5 */ NULL, /* e0d6 */ NULL, /* e0d7 */ NULL, /* e0d8 */ NULL, /* e0d9 */ NULL, /* e0da */ NULL, /* e0db */ NULL, /* e0dc */ NULL, /* e0dd */ NULL, /* e0de */ NULL, /* e0df */ NULL, /* e0e0 */ NULL, /* e0e1 */ NULL, /* e0e2 */ NULL, /* e0e3 */ NULL, /* e0e4 */ NULL, /* e0e5 */ NULL, /* e0e6 */ NULL, /* e0e7 */ NULL, /* e0e8 */ NULL, /* e0e9 */ NULL, /* e0ea */ NULL, /* e0eb */ NULL, /* e0ec */ NULL, /* e0ed */ NULL, /* e0ee */ NULL, /* e0ef */ NULL, /* e0f0 */ NULL, /* e0f1 */ NULL, /* e0f2 */ NULL, /* e0f3 */ NULL, /* e0f4 */ NULL, /* e0f5 */ NULL, /* e0f6 */ NULL, /* e0f7 */ NULL, /* e0f8 */ NULL, /* e0f9 */ NULL, /* e0fa */ NULL, /* e0fb */ NULL, /* e0fc */ NULL, /* e0fd */ NULL, /* e0fe */ NULL, /* e0ff */ NULL, /* e100 */ NULL, /* e101 */ NULL, /* e102 */ NULL, /* e103 */ NULL, /* e104 */ NULL, /* e105 */ NULL, /* e106 */ NULL, /* e107 */ NULL, /* e108 */ NULL, /* e109 */ NULL, /* e10a */ NULL, /* e10b */ NULL, /* e10c */ NULL, /* e10d */ NULL, /* e10e */ NULL, /* e10f */ NULL, /* e110 */ NULL, /* e111 */ NULL, /* e112 */ NULL, /* e113 */ NULL, /* e114 */ NULL, /* e115 */ NULL, /* e116 */ NULL, /* e117 */ NULL, /* e118 */ NULL, /* e119 */ NULL, /* e11a */ NULL, /* e11b */ NULL, /* e11c */ NULL, /* e11d */ NULL, /* e11e */ NULL, /* e11f */ NULL, /* e120 */ NULL, /* e121 */ NULL, /* e122 */ NULL, /* e123 */ NULL, /* e124 */ NULL, /* e125 */ NULL, /* e126 */ NULL, /* e127 */ NULL, /* e128 */ NULL, /* e129 */ NULL, /* e12a */ NULL, /* e12b */ NULL, /* e12c */ NULL, /* e12d */ NULL, /* e12e */ NULL, /* e12f */ NULL, /* e130 */ NULL, /* e131 */ NULL, /* e132 */ NULL, /* e133 */ NULL, /* e134 */ NULL, /* e135 */ NULL, /* e136 */ NULL, /* e137 */ NULL, /* e138 */ NULL, /* e139 */ NULL, /* e13a */ NULL, /* e13b */ NULL, /* e13c */ NULL, /* e13d */ NULL, /* e13e */ NULL, /* e13f */ NULL, /* e140 */ NULL, /* e141 */ NULL, /* e142 */ NULL, /* e143 */ NULL, /* e144 */ NULL, /* e145 */ NULL, /* e146 */ NULL, /* e147 */ NULL, /* e148 */ NULL, /* e149 */ NULL, /* e14a */ NULL, /* e14b */ NULL, /* e14c */ NULL, /* e14d */ NULL, /* e14e */ NULL, /* e14f */ NULL, /* e150 */ NULL, /* e151 */ NULL, /* e152 */ NULL, /* e153 */ NULL, /* e154 */ NULL, /* e155 */ NULL, /* e156 */ NULL, /* e157 */ NULL, /* e158 */ NULL, /* e159 */ NULL, /* e15a */ NULL, /* e15b */ NULL, /* e15c */ NULL, /* e15d */ NULL, /* e15e */ NULL, /* e15f */ NULL, /* e160 */ NULL, /* e161 */ NULL, /* e162 */ NULL, /* e163 */ NULL, /* e164 */ NULL, /* e165 */ NULL, /* e166 */ NULL, /* e167 */ NULL, /* e168 */ NULL, /* e169 */ NULL, /* e16a */ NULL, /* e16b */ NULL, /* e16c */ NULL, /* e16d */ NULL, /* e16e */ NULL, /* e16f */ NULL, /* e170 */ NULL, /* e171 */ NULL, /* e172 */ NULL, /* e173 */ NULL, /* e174 */ NULL, /* e175 */ NULL, /* e176 */ NULL, /* e177 */ NULL, /* e178 */ NULL, /* e179 */ NULL, /* e17a */ NULL, /* e17b */ NULL, /* e17c */ NULL, /* e17d */ NULL, /* e17e */ NULL, /* e17f */ NULL, /* e180 */ NULL, /* e181 */ NULL, /* e182 */ NULL, /* e183 */ NULL, /* e184 */ NULL, /* e185 */ NULL, /* e186 */ NULL, /* e187 */ NULL, /* e188 */ NULL, /* e189 */ NULL, /* e18a */ NULL, /* e18b */ NULL, /* e18c */ NULL, /* e18d */ NULL, /* e18e */ NULL, /* e18f */ NULL, /* e190 */ NULL, /* e191 */ NULL, /* e192 */ NULL, /* e193 */ NULL, /* e194 */ NULL, /* e195 */ NULL, /* e196 */ NULL, /* e197 */ NULL, /* e198 */ NULL, /* e199 */ NULL, /* e19a */ NULL, /* e19b */ NULL, /* e19c */ NULL, /* e19d */ NULL, /* e19e */ NULL, /* e19f */ NULL, /* e1a0 */ NULL, /* e1a1 */ NULL, /* e1a2 */ NULL, /* e1a3 */ NULL, /* e1a4 */ NULL, /* e1a5 */ NULL, /* e1a6 */ NULL, /* e1a7 */ NULL, /* e1a8 */ NULL, /* e1a9 */ NULL, /* e1aa */ NULL, /* e1ab */ NULL, /* e1ac */ NULL, /* e1ad */ NULL, /* e1ae */ NULL, /* e1af */ NULL, /* e1b0 */ NULL, /* e1b1 */ NULL, /* e1b2 */ NULL, /* e1b3 */ NULL, /* e1b4 */ NULL, /* e1b5 */ NULL, /* e1b6 */ NULL, /* e1b7 */ NULL, /* e1b8 */ NULL, /* e1b9 */ NULL, /* e1ba */ NULL, /* e1bb */ NULL, /* e1bc */ NULL, /* e1bd */ NULL, /* e1be */ NULL, /* e1bf */ NULL, /* e1c0 */ NULL, /* e1c1 */ NULL, /* e1c2 */ NULL, /* e1c3 */ NULL, /* e1c4 */ NULL, /* e1c5 */ NULL, /* e1c6 */ NULL, /* e1c7 */ NULL, /* e1c8 */ NULL, /* e1c9 */ NULL, /* e1ca */ NULL, /* e1cb */ NULL, /* e1cc */ NULL, /* e1cd */ NULL, /* e1ce */ NULL, /* e1cf */ NULL, /* e1d0 */ NULL, /* e1d1 */ NULL, /* e1d2 */ NULL, /* e1d3 */ NULL, /* e1d4 */ NULL, /* e1d5 */ NULL, /* e1d6 */ NULL, /* e1d7 */ NULL, /* e1d8 */ NULL, /* e1d9 */ NULL, /* e1da */ NULL, /* e1db */ NULL, /* e1dc */ NULL, /* e1dd */ NULL, /* e1de */ NULL, /* e1df */ NULL, /* e1e0 */ NULL, /* e1e1 */ NULL, /* e1e2 */ NULL, /* e1e3 */ NULL, /* e1e4 */ NULL, /* e1e5 */ NULL, /* e1e6 */ NULL, /* e1e7 */ NULL, /* e1e8 */ NULL, /* e1e9 */ NULL, /* e1ea */ NULL, /* e1eb */ NULL, /* e1ec */ NULL, /* e1ed */ NULL, /* e1ee */ NULL, /* e1ef */ NULL, /* e1f0 */ NULL, /* e1f1 */ NULL, /* e1f2 */ NULL, /* e1f3 */ NULL, /* e1f4 */ NULL, /* e1f5 */ NULL, /* e1f6 */ NULL, /* e1f7 */ NULL, /* e1f8 */ NULL, /* e1f9 */ NULL, /* e1fa */ NULL, /* e1fb */ NULL, /* e1fc */ NULL, /* e1fd */ NULL, /* e1fe */ NULL, /* e1ff */ NULL, /* e200 */ NULL, /* e201 */ NULL, /* e202 */ NULL, /* e203 */ NULL, /* e204 */ NULL, /* e205 */ NULL, /* e206 */ NULL, /* e207 */ NULL, /* e208 */ NULL, /* e209 */ NULL, /* e20a */ NULL, /* e20b */ NULL, /* e20c */ NULL, /* e20d */ NULL, /* e20e */ NULL, /* e20f */ NULL, /* e210 */ NULL, /* e211 */ NULL, /* e212 */ NULL, /* e213 */ NULL, /* e214 */ NULL, /* e215 */ NULL, /* e216 */ NULL, /* e217 */ NULL, /* e218 */ NULL, /* e219 */ NULL, /* e21a */ NULL, /* e21b */ NULL, /* e21c */ NULL, /* e21d */ NULL, /* e21e */ NULL, /* e21f */ NULL, /* e220 */ NULL, /* e221 */ NULL, /* e222 */ NULL, /* e223 */ NULL, /* e224 */ NULL, /* e225 */ NULL, /* e226 */ NULL, /* e227 */ NULL, /* e228 */ NULL, /* e229 */ NULL, /* e22a */ NULL, /* e22b */ NULL, /* e22c */ NULL, /* e22d */ NULL, /* e22e */ NULL, /* e22f */ NULL, /* e230 */ NULL, /* e231 */ NULL, /* e232 */ NULL, /* e233 */ NULL, /* e234 */ NULL, /* e235 */ NULL, /* e236 */ NULL, /* e237 */ NULL, /* e238 */ NULL, /* e239 */ NULL, /* e23a */ NULL, /* e23b */ NULL, /* e23c */ NULL, /* e23d */ NULL, /* e23e */ NULL, /* e23f */ NULL, /* e240 */ NULL, /* e241 */ NULL, /* e242 */ NULL, /* e243 */ NULL, /* e244 */ NULL, /* e245 */ NULL, /* e246 */ NULL, /* e247 */ NULL, /* e248 */ NULL, /* e249 */ NULL, /* e24a */ NULL, /* e24b */ NULL, /* e24c */ NULL, /* e24d */ NULL, /* e24e */ NULL, /* e24f */ NULL, /* e250 */ NULL, /* e251 */ NULL, /* e252 */ NULL, /* e253 */ NULL, /* e254 */ NULL, /* e255 */ NULL, /* e256 */ NULL, /* e257 */ NULL, /* e258 */ NULL, /* e259 */ NULL, /* e25a */ NULL, /* e25b */ NULL, /* e25c */ NULL, /* e25d */ NULL, /* e25e */ NULL, /* e25f */ NULL, /* e260 */ NULL, /* e261 */ NULL, /* e262 */ NULL, /* e263 */ NULL, /* e264 */ NULL, /* e265 */ NULL, /* e266 */ NULL, /* e267 */ NULL, /* e268 */ NULL, /* e269 */ NULL, /* e26a */ NULL, /* e26b */ NULL, /* e26c */ NULL, /* e26d */ NULL, /* e26e */ NULL, /* e26f */ NULL, /* e270 */ NULL, /* e271 */ NULL, /* e272 */ NULL, /* e273 */ NULL, /* e274 */ NULL, /* e275 */ NULL, /* e276 */ NULL, /* e277 */ NULL, /* e278 */ NULL, /* e279 */ NULL, /* e27a */ NULL, /* e27b */ NULL, /* e27c */ NULL, /* e27d */ NULL, /* e27e */ NULL, /* e27f */ NULL, /* e280 */ NULL, /* e281 */ NULL, /* e282 */ NULL, /* e283 */ NULL, /* e284 */ NULL, /* e285 */ NULL, /* e286 */ NULL, /* e287 */ NULL, /* e288 */ NULL, /* e289 */ NULL, /* e28a */ NULL, /* e28b */ NULL, /* e28c */ NULL, /* e28d */ NULL, /* e28e */ NULL, /* e28f */ NULL, /* e290 */ NULL, /* e291 */ NULL, /* e292 */ NULL, /* e293 */ NULL, /* e294 */ NULL, /* e295 */ NULL, /* e296 */ NULL, /* e297 */ NULL, /* e298 */ NULL, /* e299 */ NULL, /* e29a */ NULL, /* e29b */ NULL, /* e29c */ NULL, /* e29d */ NULL, /* e29e */ NULL, /* e29f */ NULL, /* e2a0 */ NULL, /* e2a1 */ NULL, /* e2a2 */ NULL, /* e2a3 */ NULL, /* e2a4 */ NULL, /* e2a5 */ NULL, /* e2a6 */ NULL, /* e2a7 */ NULL, /* e2a8 */ NULL, /* e2a9 */ NULL, /* e2aa */ NULL, /* e2ab */ NULL, /* e2ac */ NULL, /* e2ad */ NULL, /* e2ae */ NULL, /* e2af */ NULL, /* e2b0 */ NULL, /* e2b1 */ NULL, /* e2b2 */ NULL, /* e2b3 */ NULL, /* e2b4 */ NULL, /* e2b5 */ NULL, /* e2b6 */ NULL, /* e2b7 */ NULL, /* e2b8 */ NULL, /* e2b9 */ NULL, /* e2ba */ NULL, /* e2bb */ NULL, /* e2bc */ NULL, /* e2bd */ NULL, /* e2be */ NULL, /* e2bf */ NULL, /* e2c0 */ NULL, /* e2c1 */ NULL, /* e2c2 */ NULL, /* e2c3 */ NULL, /* e2c4 */ NULL, /* e2c5 */ NULL, /* e2c6 */ NULL, /* e2c7 */ NULL, /* e2c8 */ NULL, /* e2c9 */ NULL, /* e2ca */ NULL, /* e2cb */ NULL, /* e2cc */ NULL, /* e2cd */ NULL, /* e2ce */ NULL, /* e2cf */ NULL, /* e2d0 */ NULL, /* e2d1 */ NULL, /* e2d2 */ NULL, /* e2d3 */ NULL, /* e2d4 */ NULL, /* e2d5 */ NULL, /* e2d6 */ NULL, /* e2d7 */ NULL, /* e2d8 */ NULL, /* e2d9 */ NULL, /* e2da */ NULL, /* e2db */ NULL, /* e2dc */ NULL, /* e2dd */ NULL, /* e2de */ NULL, /* e2df */ NULL, /* e2e0 */ NULL, /* e2e1 */ NULL, /* e2e2 */ NULL, /* e2e3 */ NULL, /* e2e4 */ NULL, /* e2e5 */ NULL, /* e2e6 */ NULL, /* e2e7 */ NULL, /* e2e8 */ NULL, /* e2e9 */ NULL, /* e2ea */ NULL, /* e2eb */ NULL, /* e2ec */ NULL, /* e2ed */ NULL, /* e2ee */ NULL, /* e2ef */ NULL, /* e2f0 */ NULL, /* e2f1 */ NULL, /* e2f2 */ NULL, /* e2f3 */ NULL, /* e2f4 */ NULL, /* e2f5 */ NULL, /* e2f6 */ NULL, /* e2f7 */ NULL, /* e2f8 */ NULL, /* e2f9 */ NULL, /* e2fa */ NULL, /* e2fb */ NULL, /* e2fc */ NULL, /* e2fd */ NULL, /* e2fe */ NULL, /* e2ff */ NULL, /* e300 */ NULL, /* e301 */ NULL, /* e302 */ NULL, /* e303 */ NULL, /* e304 */ NULL, /* e305 */ NULL, /* e306 */ NULL, /* e307 */ NULL, /* e308 */ NULL, /* e309 */ NULL, /* e30a */ NULL, /* e30b */ NULL, /* e30c */ NULL, /* e30d */ NULL, /* e30e */ NULL, /* e30f */ NULL, /* e310 */ NULL, /* e311 */ NULL, /* e312 */ NULL, /* e313 */ NULL, /* e314 */ NULL, /* e315 */ NULL, /* e316 */ NULL, /* e317 */ NULL, /* e318 */ NULL, /* e319 */ NULL, /* e31a */ NULL, /* e31b */ NULL, /* e31c */ NULL, /* e31d */ NULL, /* e31e */ NULL, /* e31f */ NULL, /* e320 */ NULL, /* e321 */ NULL, /* e322 */ NULL, /* e323 */ NULL, /* e324 */ NULL, /* e325 */ NULL, /* e326 */ NULL, /* e327 */ NULL, /* e328 */ NULL, /* e329 */ NULL, /* e32a */ NULL, /* e32b */ NULL, /* e32c */ NULL, /* e32d */ NULL, /* e32e */ NULL, /* e32f */ NULL, /* e330 */ NULL, /* e331 */ NULL, /* e332 */ NULL, /* e333 */ NULL, /* e334 */ NULL, /* e335 */ NULL, /* e336 */ NULL, /* e337 */ NULL, /* e338 */ NULL, /* e339 */ NULL, /* e33a */ NULL, /* e33b */ NULL, /* e33c */ NULL, /* e33d */ NULL, /* e33e */ NULL, /* e33f */ NULL, /* e340 */ NULL, /* e341 */ NULL, /* e342 */ NULL, /* e343 */ NULL, /* e344 */ NULL, /* e345 */ NULL, /* e346 */ NULL, /* e347 */ NULL, /* e348 */ NULL, /* e349 */ NULL, /* e34a */ NULL, /* e34b */ NULL, /* e34c */ NULL, /* e34d */ NULL, /* e34e */ NULL, /* e34f */ NULL, /* e350 */ NULL, /* e351 */ NULL, /* e352 */ NULL, /* e353 */ NULL, /* e354 */ NULL, /* e355 */ NULL, /* e356 */ NULL, /* e357 */ NULL, /* e358 */ NULL, /* e359 */ NULL, /* e35a */ NULL, /* e35b */ NULL, /* e35c */ NULL, /* e35d */ NULL, /* e35e */ NULL, /* e35f */ NULL, /* e360 */ NULL, /* e361 */ NULL, /* e362 */ NULL, /* e363 */ NULL, /* e364 */ NULL, /* e365 */ NULL, /* e366 */ NULL, /* e367 */ NULL, /* e368 */ NULL, /* e369 */ NULL, /* e36a */ NULL, /* e36b */ NULL, /* e36c */ NULL, /* e36d */ NULL, /* e36e */ NULL, /* e36f */ NULL, /* e370 */ NULL, /* e371 */ NULL, /* e372 */ NULL, /* e373 */ NULL, /* e374 */ NULL, /* e375 */ NULL, /* e376 */ NULL, /* e377 */ NULL, /* e378 */ NULL, /* e379 */ NULL, /* e37a */ NULL, /* e37b */ NULL, /* e37c */ NULL, /* e37d */ NULL, /* e37e */ NULL, /* e37f */ NULL, /* e380 */ NULL, /* e381 */ NULL, /* e382 */ NULL, /* e383 */ NULL, /* e384 */ NULL, /* e385 */ NULL, /* e386 */ NULL, /* e387 */ NULL, /* e388 */ NULL, /* e389 */ NULL, /* e38a */ NULL, /* e38b */ NULL, /* e38c */ NULL, /* e38d */ NULL, /* e38e */ NULL, /* e38f */ NULL, /* e390 */ NULL, /* e391 */ NULL, /* e392 */ NULL, /* e393 */ NULL, /* e394 */ NULL, /* e395 */ NULL, /* e396 */ NULL, /* e397 */ NULL, /* e398 */ NULL, /* e399 */ NULL, /* e39a */ NULL, /* e39b */ NULL, /* e39c */ NULL, /* e39d */ NULL, /* e39e */ NULL, /* e39f */ NULL, /* e3a0 */ NULL, /* e3a1 */ NULL, /* e3a2 */ NULL, /* e3a3 */ NULL, /* e3a4 */ NULL, /* e3a5 */ NULL, /* e3a6 */ NULL, /* e3a7 */ NULL, /* e3a8 */ NULL, /* e3a9 */ NULL, /* e3aa */ NULL, /* e3ab */ NULL, /* e3ac */ NULL, /* e3ad */ NULL, /* e3ae */ NULL, /* e3af */ NULL, /* e3b0 */ NULL, /* e3b1 */ NULL, /* e3b2 */ NULL, /* e3b3 */ NULL, /* e3b4 */ NULL, /* e3b5 */ NULL, /* e3b6 */ NULL, /* e3b7 */ NULL, /* e3b8 */ NULL, /* e3b9 */ NULL, /* e3ba */ NULL, /* e3bb */ NULL, /* e3bc */ NULL, /* e3bd */ NULL, /* e3be */ NULL, /* e3bf */ NULL, /* e3c0 */ NULL, /* e3c1 */ NULL, /* e3c2 */ NULL, /* e3c3 */ NULL, /* e3c4 */ NULL, /* e3c5 */ NULL, /* e3c6 */ NULL, /* e3c7 */ NULL, /* e3c8 */ NULL, /* e3c9 */ NULL, /* e3ca */ NULL, /* e3cb */ NULL, /* e3cc */ NULL, /* e3cd */ NULL, /* e3ce */ NULL, /* e3cf */ NULL, /* e3d0 */ NULL, /* e3d1 */ NULL, /* e3d2 */ NULL, /* e3d3 */ NULL, /* e3d4 */ NULL, /* e3d5 */ NULL, /* e3d6 */ NULL, /* e3d7 */ NULL, /* e3d8 */ NULL, /* e3d9 */ NULL, /* e3da */ NULL, /* e3db */ NULL, /* e3dc */ NULL, /* e3dd */ NULL, /* e3de */ NULL, /* e3df */ NULL, /* e3e0 */ NULL, /* e3e1 */ NULL, /* e3e2 */ NULL, /* e3e3 */ NULL, /* e3e4 */ NULL, /* e3e5 */ NULL, /* e3e6 */ NULL, /* e3e7 */ NULL, /* e3e8 */ NULL, /* e3e9 */ NULL, /* e3ea */ NULL, /* e3eb */ NULL, /* e3ec */ NULL, /* e3ed */ NULL, /* e3ee */ NULL, /* e3ef */ NULL, /* e3f0 */ NULL, /* e3f1 */ NULL, /* e3f2 */ NULL, /* e3f3 */ NULL, /* e3f4 */ NULL, /* e3f5 */ NULL, /* e3f6 */ NULL, /* e3f7 */ NULL, /* e3f8 */ NULL, /* e3f9 */ NULL, /* e3fa */ NULL, /* e3fb */ NULL, /* e3fc */ NULL, /* e3fd */ NULL, /* e3fe */ NULL, /* e3ff */ NULL, /* e400 */ NULL, /* e401 */ NULL, /* e402 */ NULL, /* e403 */ NULL, /* e404 */ NULL, /* e405 */ NULL, /* e406 */ NULL, /* e407 */ NULL, /* e408 */ NULL, /* e409 */ NULL, /* e40a */ NULL, /* e40b */ NULL, /* e40c */ NULL, /* e40d */ NULL, /* e40e */ NULL, /* e40f */ NULL, /* e410 */ NULL, /* e411 */ NULL, /* e412 */ NULL, /* e413 */ NULL, /* e414 */ NULL, /* e415 */ NULL, /* e416 */ NULL, /* e417 */ NULL, /* e418 */ NULL, /* e419 */ NULL, /* e41a */ NULL, /* e41b */ NULL, /* e41c */ NULL, /* e41d */ NULL, /* e41e */ NULL, /* e41f */ NULL, /* e420 */ NULL, /* e421 */ NULL, /* e422 */ NULL, /* e423 */ NULL, /* e424 */ NULL, /* e425 */ NULL, /* e426 */ NULL, /* e427 */ NULL, /* e428 */ NULL, /* e429 */ NULL, /* e42a */ NULL, /* e42b */ NULL, /* e42c */ NULL, /* e42d */ NULL, /* e42e */ NULL, /* e42f */ NULL, /* e430 */ NULL, /* e431 */ NULL, /* e432 */ NULL, /* e433 */ NULL, /* e434 */ NULL, /* e435 */ NULL, /* e436 */ NULL, /* e437 */ NULL, /* e438 */ NULL, /* e439 */ NULL, /* e43a */ NULL, /* e43b */ NULL, /* e43c */ NULL, /* e43d */ NULL, /* e43e */ NULL, /* e43f */ NULL, /* e440 */ NULL, /* e441 */ NULL, /* e442 */ NULL, /* e443 */ NULL, /* e444 */ NULL, /* e445 */ NULL, /* e446 */ NULL, /* e447 */ NULL, /* e448 */ NULL, /* e449 */ NULL, /* e44a */ NULL, /* e44b */ NULL, /* e44c */ NULL, /* e44d */ NULL, /* e44e */ NULL, /* e44f */ NULL, /* e450 */ NULL, /* e451 */ NULL, /* e452 */ NULL, /* e453 */ NULL, /* e454 */ NULL, /* e455 */ NULL, /* e456 */ NULL, /* e457 */ NULL, /* e458 */ NULL, /* e459 */ NULL, /* e45a */ NULL, /* e45b */ NULL, /* e45c */ NULL, /* e45d */ NULL, /* e45e */ NULL, /* e45f */ NULL, /* e460 */ NULL, /* e461 */ NULL, /* e462 */ NULL, /* e463 */ NULL, /* e464 */ NULL, /* e465 */ NULL, /* e466 */ NULL, /* e467 */ NULL, /* e468 */ NULL, /* e469 */ NULL, /* e46a */ NULL, /* e46b */ NULL, /* e46c */ NULL, /* e46d */ NULL, /* e46e */ NULL, /* e46f */ NULL, /* e470 */ NULL, /* e471 */ NULL, /* e472 */ NULL, /* e473 */ NULL, /* e474 */ NULL, /* e475 */ NULL, /* e476 */ NULL, /* e477 */ NULL, /* e478 */ NULL, /* e479 */ NULL, /* e47a */ NULL, /* e47b */ NULL, /* e47c */ NULL, /* e47d */ NULL, /* e47e */ NULL, /* e47f */ NULL, /* e480 */ NULL, /* e481 */ NULL, /* e482 */ NULL, /* e483 */ NULL, /* e484 */ NULL, /* e485 */ NULL, /* e486 */ NULL, /* e487 */ NULL, /* e488 */ NULL, /* e489 */ NULL, /* e48a */ NULL, /* e48b */ NULL, /* e48c */ NULL, /* e48d */ NULL, /* e48e */ NULL, /* e48f */ NULL, /* e490 */ NULL, /* e491 */ NULL, /* e492 */ NULL, /* e493 */ NULL, /* e494 */ NULL, /* e495 */ NULL, /* e496 */ NULL, /* e497 */ NULL, /* e498 */ NULL, /* e499 */ NULL, /* e49a */ NULL, /* e49b */ NULL, /* e49c */ NULL, /* e49d */ NULL, /* e49e */ NULL, /* e49f */ NULL, /* e4a0 */ NULL, /* e4a1 */ NULL, /* e4a2 */ NULL, /* e4a3 */ NULL, /* e4a4 */ NULL, /* e4a5 */ NULL, /* e4a6 */ NULL, /* e4a7 */ NULL, /* e4a8 */ NULL, /* e4a9 */ NULL, /* e4aa */ NULL, /* e4ab */ NULL, /* e4ac */ NULL, /* e4ad */ NULL, /* e4ae */ NULL, /* e4af */ NULL, /* e4b0 */ NULL, /* e4b1 */ NULL, /* e4b2 */ NULL, /* e4b3 */ NULL, /* e4b4 */ NULL, /* e4b5 */ NULL, /* e4b6 */ NULL, /* e4b7 */ NULL, /* e4b8 */ NULL, /* e4b9 */ NULL, /* e4ba */ NULL, /* e4bb */ NULL, /* e4bc */ NULL, /* e4bd */ NULL, /* e4be */ NULL, /* e4bf */ NULL, /* e4c0 */ NULL, /* e4c1 */ NULL, /* e4c2 */ NULL, /* e4c3 */ NULL, /* e4c4 */ NULL, /* e4c5 */ NULL, /* e4c6 */ NULL, /* e4c7 */ NULL, /* e4c8 */ NULL, /* e4c9 */ NULL, /* e4ca */ NULL, /* e4cb */ NULL, /* e4cc */ NULL, /* e4cd */ NULL, /* e4ce */ NULL, /* e4cf */ NULL, /* e4d0 */ NULL, /* e4d1 */ NULL, /* e4d2 */ NULL, /* e4d3 */ NULL, /* e4d4 */ NULL, /* e4d5 */ NULL, /* e4d6 */ NULL, /* e4d7 */ NULL, /* e4d8 */ NULL, /* e4d9 */ NULL, /* e4da */ NULL, /* e4db */ NULL, /* e4dc */ NULL, /* e4dd */ NULL, /* e4de */ NULL, /* e4df */ NULL, /* e4e0 */ NULL, /* e4e1 */ NULL, /* e4e2 */ NULL, /* e4e3 */ NULL, /* e4e4 */ NULL, /* e4e5 */ NULL, /* e4e6 */ NULL, /* e4e7 */ NULL, /* e4e8 */ NULL, /* e4e9 */ NULL, /* e4ea */ NULL, /* e4eb */ NULL, /* e4ec */ NULL, /* e4ed */ NULL, /* e4ee */ NULL, /* e4ef */ NULL, /* e4f0 */ NULL, /* e4f1 */ NULL, /* e4f2 */ NULL, /* e4f3 */ NULL, /* e4f4 */ NULL, /* e4f5 */ NULL, /* e4f6 */ NULL, /* e4f7 */ NULL, /* e4f8 */ NULL, /* e4f9 */ NULL, /* e4fa */ NULL, /* e4fb */ NULL, /* e4fc */ NULL, /* e4fd */ NULL, /* e4fe */ NULL, /* e4ff */ NULL, /* e500 */ NULL, /* e501 */ NULL, /* e502 */ NULL, /* e503 */ NULL, /* e504 */ NULL, /* e505 */ NULL, /* e506 */ NULL, /* e507 */ NULL, /* e508 */ NULL, /* e509 */ NULL, /* e50a */ NULL, /* e50b */ NULL, /* e50c */ NULL, /* e50d */ NULL, /* e50e */ NULL, /* e50f */ NULL, /* e510 */ NULL, /* e511 */ NULL, /* e512 */ NULL, /* e513 */ NULL, /* e514 */ NULL, /* e515 */ NULL, /* e516 */ NULL, /* e517 */ NULL, /* e518 */ NULL, /* e519 */ NULL, /* e51a */ NULL, /* e51b */ NULL, /* e51c */ NULL, /* e51d */ NULL, /* e51e */ NULL, /* e51f */ NULL, /* e520 */ NULL, /* e521 */ NULL, /* e522 */ NULL, /* e523 */ NULL, /* e524 */ NULL, /* e525 */ NULL, /* e526 */ NULL, /* e527 */ NULL, /* e528 */ NULL, /* e529 */ NULL, /* e52a */ NULL, /* e52b */ NULL, /* e52c */ NULL, /* e52d */ NULL, /* e52e */ NULL, /* e52f */ NULL, /* e530 */ NULL, /* e531 */ NULL, /* e532 */ NULL, /* e533 */ NULL, /* e534 */ NULL, /* e535 */ NULL, /* e536 */ NULL, /* e537 */ NULL, /* e538 */ NULL, /* e539 */ NULL, /* e53a */ NULL, /* e53b */ NULL, /* e53c */ NULL, /* e53d */ NULL, /* e53e */ NULL, /* e53f */ NULL, /* e540 */ NULL, /* e541 */ NULL, /* e542 */ NULL, /* e543 */ NULL, /* e544 */ NULL, /* e545 */ NULL, /* e546 */ NULL, /* e547 */ NULL, /* e548 */ NULL, /* e549 */ NULL, /* e54a */ NULL, /* e54b */ NULL, /* e54c */ NULL, /* e54d */ NULL, /* e54e */ NULL, /* e54f */ NULL, /* e550 */ NULL, /* e551 */ NULL, /* e552 */ NULL, /* e553 */ NULL, /* e554 */ NULL, /* e555 */ NULL, /* e556 */ NULL, /* e557 */ NULL, /* e558 */ NULL, /* e559 */ NULL, /* e55a */ NULL, /* e55b */ NULL, /* e55c */ NULL, /* e55d */ NULL, /* e55e */ NULL, /* e55f */ NULL, /* e560 */ NULL, /* e561 */ NULL, /* e562 */ NULL, /* e563 */ NULL, /* e564 */ NULL, /* e565 */ NULL, /* e566 */ NULL, /* e567 */ NULL, /* e568 */ NULL, /* e569 */ NULL, /* e56a */ NULL, /* e56b */ NULL, /* e56c */ NULL, /* e56d */ NULL, /* e56e */ NULL, /* e56f */ NULL, /* e570 */ NULL, /* e571 */ NULL, /* e572 */ NULL, /* e573 */ NULL, /* e574 */ NULL, /* e575 */ NULL, /* e576 */ NULL, /* e577 */ NULL, /* e578 */ NULL, /* e579 */ NULL, /* e57a */ NULL, /* e57b */ NULL, /* e57c */ NULL, /* e57d */ NULL, /* e57e */ NULL, /* e57f */ NULL, /* e580 */ NULL, /* e581 */ NULL, /* e582 */ NULL, /* e583 */ NULL, /* e584 */ NULL, /* e585 */ NULL, /* e586 */ NULL, /* e587 */ NULL, /* e588 */ NULL, /* e589 */ NULL, /* e58a */ NULL, /* e58b */ NULL, /* e58c */ NULL, /* e58d */ NULL, /* e58e */ NULL, /* e58f */ NULL, /* e590 */ NULL, /* e591 */ NULL, /* e592 */ NULL, /* e593 */ NULL, /* e594 */ NULL, /* e595 */ NULL, /* e596 */ NULL, /* e597 */ NULL, /* e598 */ NULL, /* e599 */ NULL, /* e59a */ NULL, /* e59b */ NULL, /* e59c */ NULL, /* e59d */ NULL, /* e59e */ NULL, /* e59f */ NULL, /* e5a0 */ NULL, /* e5a1 */ NULL, /* e5a2 */ NULL, /* e5a3 */ NULL, /* e5a4 */ NULL, /* e5a5 */ NULL, /* e5a6 */ NULL, /* e5a7 */ NULL, /* e5a8 */ NULL, /* e5a9 */ NULL, /* e5aa */ NULL, /* e5ab */ NULL, /* e5ac */ NULL, /* e5ad */ NULL, /* e5ae */ NULL, /* e5af */ NULL, /* e5b0 */ NULL, /* e5b1 */ NULL, /* e5b2 */ NULL, /* e5b3 */ NULL, /* e5b4 */ NULL, /* e5b5 */ NULL, /* e5b6 */ NULL, /* e5b7 */ NULL, /* e5b8 */ NULL, /* e5b9 */ NULL, /* e5ba */ NULL, /* e5bb */ NULL, /* e5bc */ NULL, /* e5bd */ NULL, /* e5be */ NULL, /* e5bf */ NULL, /* e5c0 */ NULL, /* e5c1 */ NULL, /* e5c2 */ NULL, /* e5c3 */ NULL, /* e5c4 */ NULL, /* e5c5 */ NULL, /* e5c6 */ NULL, /* e5c7 */ NULL, /* e5c8 */ NULL, /* e5c9 */ NULL, /* e5ca */ NULL, /* e5cb */ NULL, /* e5cc */ NULL, /* e5cd */ NULL, /* e5ce */ NULL, /* e5cf */ NULL, /* e5d0 */ NULL, /* e5d1 */ NULL, /* e5d2 */ NULL, /* e5d3 */ NULL, /* e5d4 */ NULL, /* e5d5 */ NULL, /* e5d6 */ NULL, /* e5d7 */ NULL, /* e5d8 */ NULL, /* e5d9 */ NULL, /* e5da */ NULL, /* e5db */ NULL, /* e5dc */ NULL, /* e5dd */ NULL, /* e5de */ NULL, /* e5df */ NULL, /* e5e0 */ NULL, /* e5e1 */ NULL, /* e5e2 */ NULL, /* e5e3 */ NULL, /* e5e4 */ NULL, /* e5e5 */ NULL, /* e5e6 */ NULL, /* e5e7 */ NULL, /* e5e8 */ NULL, /* e5e9 */ NULL, /* e5ea */ NULL, /* e5eb */ NULL, /* e5ec */ NULL, /* e5ed */ NULL, /* e5ee */ NULL, /* e5ef */ NULL, /* e5f0 */ NULL, /* e5f1 */ NULL, /* e5f2 */ NULL, /* e5f3 */ NULL, /* e5f4 */ NULL, /* e5f5 */ NULL, /* e5f6 */ NULL, /* e5f7 */ NULL, /* e5f8 */ NULL, /* e5f9 */ NULL, /* e5fa */ NULL, /* e5fb */ NULL, /* e5fc */ NULL, /* e5fd */ NULL, /* e5fe */ NULL, /* e5ff */ NULL, /* e600 */ NULL, /* e601 */ NULL, /* e602 */ NULL, /* e603 */ NULL, /* e604 */ NULL, /* e605 */ NULL, /* e606 */ NULL, /* e607 */ NULL, /* e608 */ NULL, /* e609 */ NULL, /* e60a */ NULL, /* e60b */ NULL, /* e60c */ NULL, /* e60d */ NULL, /* e60e */ NULL, /* e60f */ NULL, /* e610 */ NULL, /* e611 */ NULL, /* e612 */ NULL, /* e613 */ NULL, /* e614 */ NULL, /* e615 */ NULL, /* e616 */ NULL, /* e617 */ NULL, /* e618 */ NULL, /* e619 */ NULL, /* e61a */ NULL, /* e61b */ NULL, /* e61c */ NULL, /* e61d */ NULL, /* e61e */ NULL, /* e61f */ NULL, /* e620 */ NULL, /* e621 */ NULL, /* e622 */ NULL, /* e623 */ NULL, /* e624 */ NULL, /* e625 */ NULL, /* e626 */ NULL, /* e627 */ NULL, /* e628 */ NULL, /* e629 */ NULL, /* e62a */ NULL, /* e62b */ NULL, /* e62c */ NULL, /* e62d */ NULL, /* e62e */ NULL, /* e62f */ NULL, /* e630 */ NULL, /* e631 */ NULL, /* e632 */ NULL, /* e633 */ NULL, /* e634 */ NULL, /* e635 */ NULL, /* e636 */ NULL, /* e637 */ NULL, /* e638 */ NULL, /* e639 */ NULL, /* e63a */ NULL, /* e63b */ NULL, /* e63c */ NULL, /* e63d */ NULL, /* e63e */ NULL, /* e63f */ NULL, /* e640 */ NULL, /* e641 */ NULL, /* e642 */ NULL, /* e643 */ NULL, /* e644 */ NULL, /* e645 */ NULL, /* e646 */ NULL, /* e647 */ NULL, /* e648 */ NULL, /* e649 */ NULL, /* e64a */ NULL, /* e64b */ NULL, /* e64c */ NULL, /* e64d */ NULL, /* e64e */ NULL, /* e64f */ NULL, /* e650 */ NULL, /* e651 */ NULL, /* e652 */ NULL, /* e653 */ NULL, /* e654 */ NULL, /* e655 */ NULL, /* e656 */ NULL, /* e657 */ NULL, /* e658 */ NULL, /* e659 */ NULL, /* e65a */ NULL, /* e65b */ NULL, /* e65c */ NULL, /* e65d */ NULL, /* e65e */ NULL, /* e65f */ NULL, /* e660 */ NULL, /* e661 */ NULL, /* e662 */ NULL, /* e663 */ NULL, /* e664 */ NULL, /* e665 */ NULL, /* e666 */ NULL, /* e667 */ NULL, /* e668 */ NULL, /* e669 */ NULL, /* e66a */ NULL, /* e66b */ NULL, /* e66c */ NULL, /* e66d */ NULL, /* e66e */ NULL, /* e66f */ NULL, /* e670 */ NULL, /* e671 */ NULL, /* e672 */ NULL, /* e673 */ NULL, /* e674 */ NULL, /* e675 */ NULL, /* e676 */ NULL, /* e677 */ NULL, /* e678 */ NULL, /* e679 */ NULL, /* e67a */ NULL, /* e67b */ NULL, /* e67c */ NULL, /* e67d */ NULL, /* e67e */ NULL, /* e67f */ NULL, /* e680 */ NULL, /* e681 */ NULL, /* e682 */ NULL, /* e683 */ NULL, /* e684 */ NULL, /* e685 */ NULL, /* e686 */ NULL, /* e687 */ NULL, /* e688 */ NULL, /* e689 */ NULL, /* e68a */ NULL, /* e68b */ NULL, /* e68c */ NULL, /* e68d */ NULL, /* e68e */ NULL, /* e68f */ NULL, /* e690 */ NULL, /* e691 */ NULL, /* e692 */ NULL, /* e693 */ NULL, /* e694 */ NULL, /* e695 */ NULL, /* e696 */ NULL, /* e697 */ NULL, /* e698 */ NULL, /* e699 */ NULL, /* e69a */ NULL, /* e69b */ NULL, /* e69c */ NULL, /* e69d */ NULL, /* e69e */ NULL, /* e69f */ NULL, /* e6a0 */ NULL, /* e6a1 */ NULL, /* e6a2 */ NULL, /* e6a3 */ NULL, /* e6a4 */ NULL, /* e6a5 */ NULL, /* e6a6 */ NULL, /* e6a7 */ NULL, /* e6a8 */ NULL, /* e6a9 */ NULL, /* e6aa */ NULL, /* e6ab */ NULL, /* e6ac */ NULL, /* e6ad */ NULL, /* e6ae */ NULL, /* e6af */ NULL, /* e6b0 */ NULL, /* e6b1 */ NULL, /* e6b2 */ NULL, /* e6b3 */ NULL, /* e6b4 */ NULL, /* e6b5 */ NULL, /* e6b6 */ NULL, /* e6b7 */ NULL, /* e6b8 */ NULL, /* e6b9 */ NULL, /* e6ba */ NULL, /* e6bb */ NULL, /* e6bc */ NULL, /* e6bd */ NULL, /* e6be */ NULL, /* e6bf */ NULL, /* e6c0 */ NULL, /* e6c1 */ NULL, /* e6c2 */ NULL, /* e6c3 */ NULL, /* e6c4 */ NULL, /* e6c5 */ NULL, /* e6c6 */ NULL, /* e6c7 */ NULL, /* e6c8 */ NULL, /* e6c9 */ NULL, /* e6ca */ NULL, /* e6cb */ NULL, /* e6cc */ NULL, /* e6cd */ NULL, /* e6ce */ NULL, /* e6cf */ NULL, /* e6d0 */ NULL, /* e6d1 */ NULL, /* e6d2 */ NULL, /* e6d3 */ NULL, /* e6d4 */ NULL, /* e6d5 */ NULL, /* e6d6 */ NULL, /* e6d7 */ NULL, /* e6d8 */ NULL, /* e6d9 */ NULL, /* e6da */ NULL, /* e6db */ NULL, /* e6dc */ NULL, /* e6dd */ NULL, /* e6de */ NULL, /* e6df */ NULL, /* e6e0 */ NULL, /* e6e1 */ NULL, /* e6e2 */ NULL, /* e6e3 */ NULL, /* e6e4 */ NULL, /* e6e5 */ NULL, /* e6e6 */ NULL, /* e6e7 */ NULL, /* e6e8 */ NULL, /* e6e9 */ NULL, /* e6ea */ NULL, /* e6eb */ NULL, /* e6ec */ NULL, /* e6ed */ NULL, /* e6ee */ NULL, /* e6ef */ NULL, /* e6f0 */ NULL, /* e6f1 */ NULL, /* e6f2 */ NULL, /* e6f3 */ NULL, /* e6f4 */ NULL, /* e6f5 */ NULL, /* e6f6 */ NULL, /* e6f7 */ NULL, /* e6f8 */ NULL, /* e6f9 */ NULL, /* e6fa */ NULL, /* e6fb */ NULL, /* e6fc */ NULL, /* e6fd */ NULL, /* e6fe */ NULL, /* e6ff */ NULL, /* e700 */ NULL, /* e701 */ NULL, /* e702 */ NULL, /* e703 */ NULL, /* e704 */ NULL, /* e705 */ NULL, /* e706 */ NULL, /* e707 */ NULL, /* e708 */ NULL, /* e709 */ NULL, /* e70a */ NULL, /* e70b */ NULL, /* e70c */ NULL, /* e70d */ NULL, /* e70e */ NULL, /* e70f */ NULL, /* e710 */ NULL, /* e711 */ NULL, /* e712 */ NULL, /* e713 */ NULL, /* e714 */ NULL, /* e715 */ NULL, /* e716 */ NULL, /* e717 */ NULL, /* e718 */ NULL, /* e719 */ NULL, /* e71a */ NULL, /* e71b */ NULL, /* e71c */ NULL, /* e71d */ NULL, /* e71e */ NULL, /* e71f */ NULL, /* e720 */ NULL, /* e721 */ NULL, /* e722 */ NULL, /* e723 */ NULL, /* e724 */ NULL, /* e725 */ NULL, /* e726 */ NULL, /* e727 */ NULL, /* e728 */ NULL, /* e729 */ NULL, /* e72a */ NULL, /* e72b */ NULL, /* e72c */ NULL, /* e72d */ NULL, /* e72e */ NULL, /* e72f */ NULL, /* e730 */ NULL, /* e731 */ NULL, /* e732 */ NULL, /* e733 */ NULL, /* e734 */ NULL, /* e735 */ NULL, /* e736 */ NULL, /* e737 */ NULL, /* e738 */ NULL, /* e739 */ NULL, /* e73a */ NULL, /* e73b */ NULL, /* e73c */ NULL, /* e73d */ NULL, /* e73e */ NULL, /* e73f */ NULL, /* e740 */ NULL, /* e741 */ NULL, /* e742 */ NULL, /* e743 */ NULL, /* e744 */ NULL, /* e745 */ NULL, /* e746 */ NULL, /* e747 */ NULL, /* e748 */ NULL, /* e749 */ NULL, /* e74a */ NULL, /* e74b */ NULL, /* e74c */ NULL, /* e74d */ NULL, /* e74e */ NULL, /* e74f */ NULL, /* e750 */ NULL, /* e751 */ NULL, /* e752 */ NULL, /* e753 */ NULL, /* e754 */ NULL, /* e755 */ NULL, /* e756 */ NULL, /* e757 */ NULL, /* e758 */ NULL, /* e759 */ NULL, /* e75a */ NULL, /* e75b */ NULL, /* e75c */ NULL, /* e75d */ NULL, /* e75e */ NULL, /* e75f */ NULL, /* e760 */ NULL, /* e761 */ NULL, /* e762 */ NULL, /* e763 */ NULL, /* e764 */ NULL, /* e765 */ NULL, /* e766 */ NULL, /* e767 */ NULL, /* e768 */ NULL, /* e769 */ NULL, /* e76a */ NULL, /* e76b */ NULL, /* e76c */ NULL, /* e76d */ NULL, /* e76e */ NULL, /* e76f */ NULL, /* e770 */ NULL, /* e771 */ NULL, /* e772 */ NULL, /* e773 */ NULL, /* e774 */ NULL, /* e775 */ NULL, /* e776 */ NULL, /* e777 */ NULL, /* e778 */ NULL, /* e779 */ NULL, /* e77a */ NULL, /* e77b */ NULL, /* e77c */ NULL, /* e77d */ NULL, /* e77e */ NULL, /* e77f */ NULL, /* e780 */ NULL, /* e781 */ NULL, /* e782 */ NULL, /* e783 */ NULL, /* e784 */ NULL, /* e785 */ NULL, /* e786 */ NULL, /* e787 */ NULL, /* e788 */ NULL, /* e789 */ NULL, /* e78a */ NULL, /* e78b */ NULL, /* e78c */ NULL, /* e78d */ NULL, /* e78e */ NULL, /* e78f */ NULL, /* e790 */ NULL, /* e791 */ NULL, /* e792 */ NULL, /* e793 */ NULL, /* e794 */ NULL, /* e795 */ NULL, /* e796 */ NULL, /* e797 */ NULL, /* e798 */ NULL, /* e799 */ NULL, /* e79a */ NULL, /* e79b */ NULL, /* e79c */ NULL, /* e79d */ NULL, /* e79e */ NULL, /* e79f */ NULL, /* e7a0 */ NULL, /* e7a1 */ NULL, /* e7a2 */ NULL, /* e7a3 */ NULL, /* e7a4 */ NULL, /* e7a5 */ NULL, /* e7a6 */ NULL, /* e7a7 */ NULL, /* e7a8 */ NULL, /* e7a9 */ NULL, /* e7aa */ NULL, /* e7ab */ NULL, /* e7ac */ NULL, /* e7ad */ NULL, /* e7ae */ NULL, /* e7af */ NULL, /* e7b0 */ NULL, /* e7b1 */ NULL, /* e7b2 */ NULL, /* e7b3 */ NULL, /* e7b4 */ NULL, /* e7b5 */ NULL, /* e7b6 */ NULL, /* e7b7 */ NULL, /* e7b8 */ NULL, /* e7b9 */ NULL, /* e7ba */ NULL, /* e7bb */ NULL, /* e7bc */ NULL, /* e7bd */ NULL, /* e7be */ NULL, /* e7bf */ NULL, /* e7c0 */ NULL, /* e7c1 */ NULL, /* e7c2 */ NULL, /* e7c3 */ NULL, /* e7c4 */ NULL, /* e7c5 */ NULL, /* e7c6 */ NULL, /* e7c7 */ NULL, /* e7c8 */ NULL, /* e7c9 */ NULL, /* e7ca */ NULL, /* e7cb */ NULL, /* e7cc */ NULL, /* e7cd */ NULL, /* e7ce */ NULL, /* e7cf */ NULL, /* e7d0 */ NULL, /* e7d1 */ NULL, /* e7d2 */ NULL, /* e7d3 */ NULL, /* e7d4 */ NULL, /* e7d5 */ NULL, /* e7d6 */ NULL, /* e7d7 */ NULL, /* e7d8 */ NULL, /* e7d9 */ NULL, /* e7da */ NULL, /* e7db */ NULL, /* e7dc */ NULL, /* e7dd */ NULL, /* e7de */ NULL, /* e7df */ NULL, /* e7e0 */ NULL, /* e7e1 */ NULL, /* e7e2 */ NULL, /* e7e3 */ NULL, /* e7e4 */ NULL, /* e7e5 */ NULL, /* e7e6 */ NULL, /* e7e7 */ NULL, /* e7e8 */ NULL, /* e7e9 */ NULL, /* e7ea */ NULL, /* e7eb */ NULL, /* e7ec */ NULL, /* e7ed */ NULL, /* e7ee */ NULL, /* e7ef */ NULL, /* e7f0 */ NULL, /* e7f1 */ NULL, /* e7f2 */ NULL, /* e7f3 */ NULL, /* e7f4 */ NULL, /* e7f5 */ NULL, /* e7f6 */ NULL, /* e7f7 */ NULL, /* e7f8 */ NULL, /* e7f9 */ NULL, /* e7fa */ NULL, /* e7fb */ NULL, /* e7fc */ NULL, /* e7fd */ NULL, /* e7fe */ NULL, /* e7ff */ NULL, /* e800 */ NULL, /* e801 */ NULL, /* e802 */ NULL, /* e803 */ NULL, /* e804 */ NULL, /* e805 */ NULL, /* e806 */ NULL, /* e807 */ NULL, /* e808 */ NULL, /* e809 */ NULL, /* e80a */ NULL, /* e80b */ NULL, /* e80c */ NULL, /* e80d */ NULL, /* e80e */ NULL, /* e80f */ NULL, /* e810 */ NULL, /* e811 */ NULL, /* e812 */ NULL, /* e813 */ NULL, /* e814 */ NULL, /* e815 */ NULL, /* e816 */ NULL, /* e817 */ NULL, /* e818 */ NULL, /* e819 */ NULL, /* e81a */ NULL, /* e81b */ NULL, /* e81c */ NULL, /* e81d */ NULL, /* e81e */ NULL, /* e81f */ NULL, /* e820 */ NULL, /* e821 */ NULL, /* e822 */ NULL, /* e823 */ NULL, /* e824 */ NULL, /* e825 */ NULL, /* e826 */ NULL, /* e827 */ NULL, /* e828 */ NULL, /* e829 */ NULL, /* e82a */ NULL, /* e82b */ NULL, /* e82c */ NULL, /* e82d */ NULL, /* e82e */ NULL, /* e82f */ NULL, /* e830 */ NULL, /* e831 */ NULL, /* e832 */ NULL, /* e833 */ NULL, /* e834 */ NULL, /* e835 */ NULL, /* e836 */ NULL, /* e837 */ NULL, /* e838 */ NULL, /* e839 */ NULL, /* e83a */ NULL, /* e83b */ NULL, /* e83c */ NULL, /* e83d */ NULL, /* e83e */ NULL, /* e83f */ NULL, /* e840 */ NULL, /* e841 */ NULL, /* e842 */ NULL, /* e843 */ NULL, /* e844 */ NULL, /* e845 */ NULL, /* e846 */ NULL, /* e847 */ NULL, /* e848 */ NULL, /* e849 */ NULL, /* e84a */ NULL, /* e84b */ NULL, /* e84c */ NULL, /* e84d */ NULL, /* e84e */ NULL, /* e84f */ NULL, /* e850 */ NULL, /* e851 */ NULL, /* e852 */ NULL, /* e853 */ NULL, /* e854 */ NULL, /* e855 */ NULL, /* e856 */ NULL, /* e857 */ NULL, /* e858 */ NULL, /* e859 */ NULL, /* e85a */ NULL, /* e85b */ NULL, /* e85c */ NULL, /* e85d */ NULL, /* e85e */ NULL, /* e85f */ NULL, /* e860 */ NULL, /* e861 */ NULL, /* e862 */ NULL, /* e863 */ NULL, /* e864 */ NULL, /* e865 */ NULL, /* e866 */ NULL, /* e867 */ NULL, /* e868 */ NULL, /* e869 */ NULL, /* e86a */ NULL, /* e86b */ NULL, /* e86c */ NULL, /* e86d */ NULL, /* e86e */ NULL, /* e86f */ NULL, /* e870 */ NULL, /* e871 */ NULL, /* e872 */ NULL, /* e873 */ NULL, /* e874 */ NULL, /* e875 */ NULL, /* e876 */ NULL, /* e877 */ NULL, /* e878 */ NULL, /* e879 */ NULL, /* e87a */ NULL, /* e87b */ NULL, /* e87c */ NULL, /* e87d */ NULL, /* e87e */ NULL, /* e87f */ NULL, /* e880 */ NULL, /* e881 */ NULL, /* e882 */ NULL, /* e883 */ NULL, /* e884 */ NULL, /* e885 */ NULL, /* e886 */ NULL, /* e887 */ NULL, /* e888 */ NULL, /* e889 */ NULL, /* e88a */ NULL, /* e88b */ NULL, /* e88c */ NULL, /* e88d */ NULL, /* e88e */ NULL, /* e88f */ NULL, /* e890 */ NULL, /* e891 */ NULL, /* e892 */ NULL, /* e893 */ NULL, /* e894 */ NULL, /* e895 */ NULL, /* e896 */ NULL, /* e897 */ NULL, /* e898 */ NULL, /* e899 */ NULL, /* e89a */ NULL, /* e89b */ NULL, /* e89c */ NULL, /* e89d */ NULL, /* e89e */ NULL, /* e89f */ NULL, /* e8a0 */ NULL, /* e8a1 */ NULL, /* e8a2 */ NULL, /* e8a3 */ NULL, /* e8a4 */ NULL, /* e8a5 */ NULL, /* e8a6 */ NULL, /* e8a7 */ NULL, /* e8a8 */ NULL, /* e8a9 */ NULL, /* e8aa */ NULL, /* e8ab */ NULL, /* e8ac */ NULL, /* e8ad */ NULL, /* e8ae */ NULL, /* e8af */ NULL, /* e8b0 */ NULL, /* e8b1 */ NULL, /* e8b2 */ NULL, /* e8b3 */ NULL, /* e8b4 */ NULL, /* e8b5 */ NULL, /* e8b6 */ NULL, /* e8b7 */ NULL, /* e8b8 */ NULL, /* e8b9 */ NULL, /* e8ba */ NULL, /* e8bb */ NULL, /* e8bc */ NULL, /* e8bd */ NULL, /* e8be */ NULL, /* e8bf */ NULL, /* e8c0 */ NULL, /* e8c1 */ NULL, /* e8c2 */ NULL, /* e8c3 */ NULL, /* e8c4 */ NULL, /* e8c5 */ NULL, /* e8c6 */ NULL, /* e8c7 */ NULL, /* e8c8 */ NULL, /* e8c9 */ NULL, /* e8ca */ NULL, /* e8cb */ NULL, /* e8cc */ NULL, /* e8cd */ NULL, /* e8ce */ NULL, /* e8cf */ NULL, /* e8d0 */ NULL, /* e8d1 */ NULL, /* e8d2 */ NULL, /* e8d3 */ NULL, /* e8d4 */ NULL, /* e8d5 */ NULL, /* e8d6 */ NULL, /* e8d7 */ NULL, /* e8d8 */ NULL, /* e8d9 */ NULL, /* e8da */ NULL, /* e8db */ NULL, /* e8dc */ NULL, /* e8dd */ NULL, /* e8de */ NULL, /* e8df */ NULL, /* e8e0 */ NULL, /* e8e1 */ NULL, /* e8e2 */ NULL, /* e8e3 */ NULL, /* e8e4 */ NULL, /* e8e5 */ NULL, /* e8e6 */ NULL, /* e8e7 */ NULL, /* e8e8 */ NULL, /* e8e9 */ NULL, /* e8ea */ NULL, /* e8eb */ NULL, /* e8ec */ NULL, /* e8ed */ NULL, /* e8ee */ NULL, /* e8ef */ NULL, /* e8f0 */ NULL, /* e8f1 */ NULL, /* e8f2 */ NULL, /* e8f3 */ NULL, /* e8f4 */ NULL, /* e8f5 */ NULL, /* e8f6 */ NULL, /* e8f7 */ NULL, /* e8f8 */ NULL, /* e8f9 */ NULL, /* e8fa */ NULL, /* e8fb */ NULL, /* e8fc */ NULL, /* e8fd */ NULL, /* e8fe */ NULL, /* e8ff */ NULL, /* e900 */ NULL, /* e901 */ NULL, /* e902 */ NULL, /* e903 */ NULL, /* e904 */ NULL, /* e905 */ NULL, /* e906 */ NULL, /* e907 */ NULL, /* e908 */ NULL, /* e909 */ NULL, /* e90a */ NULL, /* e90b */ NULL, /* e90c */ NULL, /* e90d */ NULL, /* e90e */ NULL, /* e90f */ NULL, /* e910 */ NULL, /* e911 */ NULL, /* e912 */ NULL, /* e913 */ NULL, /* e914 */ NULL, /* e915 */ NULL, /* e916 */ NULL, /* e917 */ NULL, /* e918 */ NULL, /* e919 */ NULL, /* e91a */ NULL, /* e91b */ NULL, /* e91c */ NULL, /* e91d */ NULL, /* e91e */ NULL, /* e91f */ NULL, /* e920 */ NULL, /* e921 */ NULL, /* e922 */ NULL, /* e923 */ NULL, /* e924 */ NULL, /* e925 */ NULL, /* e926 */ NULL, /* e927 */ NULL, /* e928 */ NULL, /* e929 */ NULL, /* e92a */ NULL, /* e92b */ NULL, /* e92c */ NULL, /* e92d */ NULL, /* e92e */ NULL, /* e92f */ NULL, /* e930 */ NULL, /* e931 */ NULL, /* e932 */ NULL, /* e933 */ NULL, /* e934 */ NULL, /* e935 */ NULL, /* e936 */ NULL, /* e937 */ NULL, /* e938 */ NULL, /* e939 */ NULL, /* e93a */ NULL, /* e93b */ NULL, /* e93c */ NULL, /* e93d */ NULL, /* e93e */ NULL, /* e93f */ NULL, /* e940 */ NULL, /* e941 */ NULL, /* e942 */ NULL, /* e943 */ NULL, /* e944 */ NULL, /* e945 */ NULL, /* e946 */ NULL, /* e947 */ NULL, /* e948 */ NULL, /* e949 */ NULL, /* e94a */ NULL, /* e94b */ NULL, /* e94c */ NULL, /* e94d */ NULL, /* e94e */ NULL, /* e94f */ NULL, /* e950 */ NULL, /* e951 */ NULL, /* e952 */ NULL, /* e953 */ NULL, /* e954 */ NULL, /* e955 */ NULL, /* e956 */ NULL, /* e957 */ NULL, /* e958 */ NULL, /* e959 */ NULL, /* e95a */ NULL, /* e95b */ NULL, /* e95c */ NULL, /* e95d */ NULL, /* e95e */ NULL, /* e95f */ NULL, /* e960 */ NULL, /* e961 */ NULL, /* e962 */ NULL, /* e963 */ NULL, /* e964 */ NULL, /* e965 */ NULL, /* e966 */ NULL, /* e967 */ NULL, /* e968 */ NULL, /* e969 */ NULL, /* e96a */ NULL, /* e96b */ NULL, /* e96c */ NULL, /* e96d */ NULL, /* e96e */ NULL, /* e96f */ NULL, /* e970 */ NULL, /* e971 */ NULL, /* e972 */ NULL, /* e973 */ NULL, /* e974 */ NULL, /* e975 */ NULL, /* e976 */ NULL, /* e977 */ NULL, /* e978 */ NULL, /* e979 */ NULL, /* e97a */ NULL, /* e97b */ NULL, /* e97c */ NULL, /* e97d */ NULL, /* e97e */ NULL, /* e97f */ NULL, /* e980 */ NULL, /* e981 */ NULL, /* e982 */ NULL, /* e983 */ NULL, /* e984 */ NULL, /* e985 */ NULL, /* e986 */ NULL, /* e987 */ NULL, /* e988 */ NULL, /* e989 */ NULL, /* e98a */ NULL, /* e98b */ NULL, /* e98c */ NULL, /* e98d */ NULL, /* e98e */ NULL, /* e98f */ NULL, /* e990 */ NULL, /* e991 */ NULL, /* e992 */ NULL, /* e993 */ NULL, /* e994 */ NULL, /* e995 */ NULL, /* e996 */ NULL, /* e997 */ NULL, /* e998 */ NULL, /* e999 */ NULL, /* e99a */ NULL, /* e99b */ NULL, /* e99c */ NULL, /* e99d */ NULL, /* e99e */ NULL, /* e99f */ NULL, /* e9a0 */ NULL, /* e9a1 */ NULL, /* e9a2 */ NULL, /* e9a3 */ NULL, /* e9a4 */ NULL, /* e9a5 */ NULL, /* e9a6 */ NULL, /* e9a7 */ NULL, /* e9a8 */ NULL, /* e9a9 */ NULL, /* e9aa */ NULL, /* e9ab */ NULL, /* e9ac */ NULL, /* e9ad */ NULL, /* e9ae */ NULL, /* e9af */ NULL, /* e9b0 */ NULL, /* e9b1 */ NULL, /* e9b2 */ NULL, /* e9b3 */ NULL, /* e9b4 */ NULL, /* e9b5 */ NULL, /* e9b6 */ NULL, /* e9b7 */ NULL, /* e9b8 */ NULL, /* e9b9 */ NULL, /* e9ba */ NULL, /* e9bb */ NULL, /* e9bc */ NULL, /* e9bd */ NULL, /* e9be */ NULL, /* e9bf */ NULL, /* e9c0 */ NULL, /* e9c1 */ NULL, /* e9c2 */ NULL, /* e9c3 */ NULL, /* e9c4 */ NULL, /* e9c5 */ NULL, /* e9c6 */ NULL, /* e9c7 */ NULL, /* e9c8 */ NULL, /* e9c9 */ NULL, /* e9ca */ NULL, /* e9cb */ NULL, /* e9cc */ NULL, /* e9cd */ NULL, /* e9ce */ NULL, /* e9cf */ NULL, /* e9d0 */ NULL, /* e9d1 */ NULL, /* e9d2 */ NULL, /* e9d3 */ NULL, /* e9d4 */ NULL, /* e9d5 */ NULL, /* e9d6 */ NULL, /* e9d7 */ NULL, /* e9d8 */ NULL, /* e9d9 */ NULL, /* e9da */ NULL, /* e9db */ NULL, /* e9dc */ NULL, /* e9dd */ NULL, /* e9de */ NULL, /* e9df */ NULL, /* e9e0 */ NULL, /* e9e1 */ NULL, /* e9e2 */ NULL, /* e9e3 */ NULL, /* e9e4 */ NULL, /* e9e5 */ NULL, /* e9e6 */ NULL, /* e9e7 */ NULL, /* e9e8 */ NULL, /* e9e9 */ NULL, /* e9ea */ NULL, /* e9eb */ NULL, /* e9ec */ NULL, /* e9ed */ NULL, /* e9ee */ NULL, /* e9ef */ NULL, /* e9f0 */ NULL, /* e9f1 */ NULL, /* e9f2 */ NULL, /* e9f3 */ NULL, /* e9f4 */ NULL, /* e9f5 */ NULL, /* e9f6 */ NULL, /* e9f7 */ NULL, /* e9f8 */ NULL, /* e9f9 */ NULL, /* e9fa */ NULL, /* e9fb */ NULL, /* e9fc */ NULL, /* e9fd */ NULL, /* e9fe */ NULL, /* e9ff */ NULL, /* ea00 */ NULL, /* ea01 */ NULL, /* ea02 */ NULL, /* ea03 */ NULL, /* ea04 */ NULL, /* ea05 */ NULL, /* ea06 */ NULL, /* ea07 */ NULL, /* ea08 */ NULL, /* ea09 */ NULL, /* ea0a */ NULL, /* ea0b */ NULL, /* ea0c */ NULL, /* ea0d */ NULL, /* ea0e */ NULL, /* ea0f */ NULL, /* ea10 */ NULL, /* ea11 */ NULL, /* ea12 */ NULL, /* ea13 */ NULL, /* ea14 */ NULL, /* ea15 */ NULL, /* ea16 */ NULL, /* ea17 */ NULL, /* ea18 */ NULL, /* ea19 */ NULL, /* ea1a */ NULL, /* ea1b */ NULL, /* ea1c */ NULL, /* ea1d */ NULL, /* ea1e */ NULL, /* ea1f */ NULL, /* ea20 */ NULL, /* ea21 */ NULL, /* ea22 */ NULL, /* ea23 */ NULL, /* ea24 */ NULL, /* ea25 */ NULL, /* ea26 */ NULL, /* ea27 */ NULL, /* ea28 */ NULL, /* ea29 */ NULL, /* ea2a */ NULL, /* ea2b */ NULL, /* ea2c */ NULL, /* ea2d */ NULL, /* ea2e */ NULL, /* ea2f */ NULL, /* ea30 */ NULL, /* ea31 */ NULL, /* ea32 */ NULL, /* ea33 */ NULL, /* ea34 */ NULL, /* ea35 */ NULL, /* ea36 */ NULL, /* ea37 */ NULL, /* ea38 */ NULL, /* ea39 */ NULL, /* ea3a */ NULL, /* ea3b */ NULL, /* ea3c */ NULL, /* ea3d */ NULL, /* ea3e */ NULL, /* ea3f */ NULL, /* ea40 */ NULL, /* ea41 */ NULL, /* ea42 */ NULL, /* ea43 */ NULL, /* ea44 */ NULL, /* ea45 */ NULL, /* ea46 */ NULL, /* ea47 */ NULL, /* ea48 */ NULL, /* ea49 */ NULL, /* ea4a */ NULL, /* ea4b */ NULL, /* ea4c */ NULL, /* ea4d */ NULL, /* ea4e */ NULL, /* ea4f */ NULL, /* ea50 */ NULL, /* ea51 */ NULL, /* ea52 */ NULL, /* ea53 */ NULL, /* ea54 */ NULL, /* ea55 */ NULL, /* ea56 */ NULL, /* ea57 */ NULL, /* ea58 */ NULL, /* ea59 */ NULL, /* ea5a */ NULL, /* ea5b */ NULL, /* ea5c */ NULL, /* ea5d */ NULL, /* ea5e */ NULL, /* ea5f */ NULL, /* ea60 */ NULL, /* ea61 */ NULL, /* ea62 */ NULL, /* ea63 */ NULL, /* ea64 */ NULL, /* ea65 */ NULL, /* ea66 */ NULL, /* ea67 */ NULL, /* ea68 */ NULL, /* ea69 */ NULL, /* ea6a */ NULL, /* ea6b */ NULL, /* ea6c */ NULL, /* ea6d */ NULL, /* ea6e */ NULL, /* ea6f */ NULL, /* ea70 */ NULL, /* ea71 */ NULL, /* ea72 */ NULL, /* ea73 */ NULL, /* ea74 */ NULL, /* ea75 */ NULL, /* ea76 */ NULL, /* ea77 */ NULL, /* ea78 */ NULL, /* ea79 */ NULL, /* ea7a */ NULL, /* ea7b */ NULL, /* ea7c */ NULL, /* ea7d */ NULL, /* ea7e */ NULL, /* ea7f */ NULL, /* ea80 */ NULL, /* ea81 */ NULL, /* ea82 */ NULL, /* ea83 */ NULL, /* ea84 */ NULL, /* ea85 */ NULL, /* ea86 */ NULL, /* ea87 */ NULL, /* ea88 */ NULL, /* ea89 */ NULL, /* ea8a */ NULL, /* ea8b */ NULL, /* ea8c */ NULL, /* ea8d */ NULL, /* ea8e */ NULL, /* ea8f */ NULL, /* ea90 */ NULL, /* ea91 */ NULL, /* ea92 */ NULL, /* ea93 */ NULL, /* ea94 */ NULL, /* ea95 */ NULL, /* ea96 */ NULL, /* ea97 */ NULL, /* ea98 */ NULL, /* ea99 */ NULL, /* ea9a */ NULL, /* ea9b */ NULL, /* ea9c */ NULL, /* ea9d */ NULL, /* ea9e */ NULL, /* ea9f */ NULL, /* eaa0 */ NULL, /* eaa1 */ NULL, /* eaa2 */ NULL, /* eaa3 */ NULL, /* eaa4 */ NULL, /* eaa5 */ NULL, /* eaa6 */ NULL, /* eaa7 */ NULL, /* eaa8 */ NULL, /* eaa9 */ NULL, /* eaaa */ NULL, /* eaab */ NULL, /* eaac */ NULL, /* eaad */ NULL, /* eaae */ NULL, /* eaaf */ NULL, /* eab0 */ NULL, /* eab1 */ NULL, /* eab2 */ NULL, /* eab3 */ NULL, /* eab4 */ NULL, /* eab5 */ NULL, /* eab6 */ NULL, /* eab7 */ NULL, /* eab8 */ NULL, /* eab9 */ NULL, /* eaba */ NULL, /* eabb */ NULL, /* eabc */ NULL, /* eabd */ NULL, /* eabe */ NULL, /* eabf */ NULL, /* eac0 */ NULL, /* eac1 */ NULL, /* eac2 */ NULL, /* eac3 */ NULL, /* eac4 */ NULL, /* eac5 */ NULL, /* eac6 */ NULL, /* eac7 */ NULL, /* eac8 */ NULL, /* eac9 */ NULL, /* eaca */ NULL, /* eacb */ NULL, /* eacc */ NULL, /* eacd */ NULL, /* eace */ NULL, /* eacf */ NULL, /* ead0 */ NULL, /* ead1 */ NULL, /* ead2 */ NULL, /* ead3 */ NULL, /* ead4 */ NULL, /* ead5 */ NULL, /* ead6 */ NULL, /* ead7 */ NULL, /* ead8 */ NULL, /* ead9 */ NULL, /* eada */ NULL, /* eadb */ NULL, /* eadc */ NULL, /* eadd */ NULL, /* eade */ NULL, /* eadf */ NULL, /* eae0 */ NULL, /* eae1 */ NULL, /* eae2 */ NULL, /* eae3 */ NULL, /* eae4 */ NULL, /* eae5 */ NULL, /* eae6 */ NULL, /* eae7 */ NULL, /* eae8 */ NULL, /* eae9 */ NULL, /* eaea */ NULL, /* eaeb */ NULL, /* eaec */ NULL, /* eaed */ NULL, /* eaee */ NULL, /* eaef */ NULL, /* eaf0 */ NULL, /* eaf1 */ NULL, /* eaf2 */ NULL, /* eaf3 */ NULL, /* eaf4 */ NULL, /* eaf5 */ NULL, /* eaf6 */ NULL, /* eaf7 */ NULL, /* eaf8 */ NULL, /* eaf9 */ NULL, /* eafa */ NULL, /* eafb */ NULL, /* eafc */ NULL, /* eafd */ NULL, /* eafe */ NULL, /* eaff */ NULL, /* eb00 */ NULL, /* eb01 */ NULL, /* eb02 */ NULL, /* eb03 */ NULL, /* eb04 */ NULL, /* eb05 */ NULL, /* eb06 */ NULL, /* eb07 */ NULL, /* eb08 */ NULL, /* eb09 */ NULL, /* eb0a */ NULL, /* eb0b */ NULL, /* eb0c */ NULL, /* eb0d */ NULL, /* eb0e */ NULL, /* eb0f */ NULL, /* eb10 */ NULL, /* eb11 */ NULL, /* eb12 */ NULL, /* eb13 */ NULL, /* eb14 */ NULL, /* eb15 */ NULL, /* eb16 */ NULL, /* eb17 */ NULL, /* eb18 */ NULL, /* eb19 */ NULL, /* eb1a */ NULL, /* eb1b */ NULL, /* eb1c */ NULL, /* eb1d */ NULL, /* eb1e */ NULL, /* eb1f */ NULL, /* eb20 */ NULL, /* eb21 */ NULL, /* eb22 */ NULL, /* eb23 */ NULL, /* eb24 */ NULL, /* eb25 */ NULL, /* eb26 */ NULL, /* eb27 */ NULL, /* eb28 */ NULL, /* eb29 */ NULL, /* eb2a */ NULL, /* eb2b */ NULL, /* eb2c */ NULL, /* eb2d */ NULL, /* eb2e */ NULL, /* eb2f */ NULL, /* eb30 */ NULL, /* eb31 */ NULL, /* eb32 */ NULL, /* eb33 */ NULL, /* eb34 */ NULL, /* eb35 */ NULL, /* eb36 */ NULL, /* eb37 */ NULL, /* eb38 */ NULL, /* eb39 */ NULL, /* eb3a */ NULL, /* eb3b */ NULL, /* eb3c */ NULL, /* eb3d */ NULL, /* eb3e */ NULL, /* eb3f */ NULL, /* eb40 */ NULL, /* eb41 */ NULL, /* eb42 */ NULL, /* eb43 */ NULL, /* eb44 */ NULL, /* eb45 */ NULL, /* eb46 */ NULL, /* eb47 */ NULL, /* eb48 */ NULL, /* eb49 */ NULL, /* eb4a */ NULL, /* eb4b */ NULL, /* eb4c */ NULL, /* eb4d */ NULL, /* eb4e */ NULL, /* eb4f */ NULL, /* eb50 */ NULL, /* eb51 */ NULL, /* eb52 */ NULL, /* eb53 */ NULL, /* eb54 */ NULL, /* eb55 */ NULL, /* eb56 */ NULL, /* eb57 */ NULL, /* eb58 */ NULL, /* eb59 */ NULL, /* eb5a */ NULL, /* eb5b */ NULL, /* eb5c */ NULL, /* eb5d */ NULL, /* eb5e */ NULL, /* eb5f */ NULL, /* eb60 */ NULL, /* eb61 */ NULL, /* eb62 */ NULL, /* eb63 */ NULL, /* eb64 */ NULL, /* eb65 */ NULL, /* eb66 */ NULL, /* eb67 */ NULL, /* eb68 */ NULL, /* eb69 */ NULL, /* eb6a */ NULL, /* eb6b */ NULL, /* eb6c */ NULL, /* eb6d */ NULL, /* eb6e */ NULL, /* eb6f */ NULL, /* eb70 */ NULL, /* eb71 */ NULL, /* eb72 */ NULL, /* eb73 */ NULL, /* eb74 */ NULL, /* eb75 */ NULL, /* eb76 */ NULL, /* eb77 */ NULL, /* eb78 */ NULL, /* eb79 */ NULL, /* eb7a */ NULL, /* eb7b */ NULL, /* eb7c */ NULL, /* eb7d */ NULL, /* eb7e */ NULL, /* eb7f */ NULL, /* eb80 */ NULL, /* eb81 */ NULL, /* eb82 */ NULL, /* eb83 */ NULL, /* eb84 */ NULL, /* eb85 */ NULL, /* eb86 */ NULL, /* eb87 */ NULL, /* eb88 */ NULL, /* eb89 */ NULL, /* eb8a */ NULL, /* eb8b */ NULL, /* eb8c */ NULL, /* eb8d */ NULL, /* eb8e */ NULL, /* eb8f */ NULL, /* eb90 */ NULL, /* eb91 */ NULL, /* eb92 */ NULL, /* eb93 */ NULL, /* eb94 */ NULL, /* eb95 */ NULL, /* eb96 */ NULL, /* eb97 */ NULL, /* eb98 */ NULL, /* eb99 */ NULL, /* eb9a */ NULL, /* eb9b */ NULL, /* eb9c */ NULL, /* eb9d */ NULL, /* eb9e */ NULL, /* eb9f */ NULL, /* eba0 */ NULL, /* eba1 */ NULL, /* eba2 */ NULL, /* eba3 */ NULL, /* eba4 */ NULL, /* eba5 */ NULL, /* eba6 */ NULL, /* eba7 */ NULL, /* eba8 */ NULL, /* eba9 */ NULL, /* ebaa */ NULL, /* ebab */ NULL, /* ebac */ NULL, /* ebad */ NULL, /* ebae */ NULL, /* ebaf */ NULL, /* ebb0 */ NULL, /* ebb1 */ NULL, /* ebb2 */ NULL, /* ebb3 */ NULL, /* ebb4 */ NULL, /* ebb5 */ NULL, /* ebb6 */ NULL, /* ebb7 */ NULL, /* ebb8 */ NULL, /* ebb9 */ NULL, /* ebba */ NULL, /* ebbb */ NULL, /* ebbc */ NULL, /* ebbd */ NULL, /* ebbe */ NULL, /* ebbf */ NULL, /* ebc0 */ NULL, /* ebc1 */ NULL, /* ebc2 */ NULL, /* ebc3 */ NULL, /* ebc4 */ NULL, /* ebc5 */ NULL, /* ebc6 */ NULL, /* ebc7 */ NULL, /* ebc8 */ NULL, /* ebc9 */ NULL, /* ebca */ NULL, /* ebcb */ NULL, /* ebcc */ NULL, /* ebcd */ NULL, /* ebce */ NULL, /* ebcf */ NULL, /* ebd0 */ NULL, /* ebd1 */ NULL, /* ebd2 */ NULL, /* ebd3 */ NULL, /* ebd4 */ NULL, /* ebd5 */ NULL, /* ebd6 */ NULL, /* ebd7 */ NULL, /* ebd8 */ NULL, /* ebd9 */ NULL, /* ebda */ NULL, /* ebdb */ NULL, /* ebdc */ NULL, /* ebdd */ NULL, /* ebde */ NULL, /* ebdf */ NULL, /* ebe0 */ NULL, /* ebe1 */ NULL, /* ebe2 */ NULL, /* ebe3 */ NULL, /* ebe4 */ NULL, /* ebe5 */ NULL, /* ebe6 */ NULL, /* ebe7 */ NULL, /* ebe8 */ NULL, /* ebe9 */ NULL, /* ebea */ NULL, /* ebeb */ NULL, /* ebec */ NULL, /* ebed */ NULL, /* ebee */ NULL, /* ebef */ NULL, /* ebf0 */ NULL, /* ebf1 */ NULL, /* ebf2 */ NULL, /* ebf3 */ NULL, /* ebf4 */ NULL, /* ebf5 */ NULL, /* ebf6 */ NULL, /* ebf7 */ NULL, /* ebf8 */ NULL, /* ebf9 */ NULL, /* ebfa */ NULL, /* ebfb */ NULL, /* ebfc */ NULL, /* ebfd */ NULL, /* ebfe */ NULL, /* ebff */ NULL, /* ec00 */ NULL, /* ec01 */ NULL, /* ec02 */ NULL, /* ec03 */ NULL, /* ec04 */ NULL, /* ec05 */ NULL, /* ec06 */ NULL, /* ec07 */ NULL, /* ec08 */ NULL, /* ec09 */ NULL, /* ec0a */ NULL, /* ec0b */ NULL, /* ec0c */ NULL, /* ec0d */ NULL, /* ec0e */ NULL, /* ec0f */ NULL, /* ec10 */ NULL, /* ec11 */ NULL, /* ec12 */ NULL, /* ec13 */ NULL, /* ec14 */ NULL, /* ec15 */ NULL, /* ec16 */ NULL, /* ec17 */ NULL, /* ec18 */ NULL, /* ec19 */ NULL, /* ec1a */ NULL, /* ec1b */ NULL, /* ec1c */ NULL, /* ec1d */ NULL, /* ec1e */ NULL, /* ec1f */ NULL, /* ec20 */ NULL, /* ec21 */ NULL, /* ec22 */ NULL, /* ec23 */ NULL, /* ec24 */ NULL, /* ec25 */ NULL, /* ec26 */ NULL, /* ec27 */ NULL, /* ec28 */ NULL, /* ec29 */ NULL, /* ec2a */ NULL, /* ec2b */ NULL, /* ec2c */ NULL, /* ec2d */ NULL, /* ec2e */ NULL, /* ec2f */ NULL, /* ec30 */ NULL, /* ec31 */ NULL, /* ec32 */ NULL, /* ec33 */ NULL, /* ec34 */ NULL, /* ec35 */ NULL, /* ec36 */ NULL, /* ec37 */ NULL, /* ec38 */ NULL, /* ec39 */ NULL, /* ec3a */ NULL, /* ec3b */ NULL, /* ec3c */ NULL, /* ec3d */ NULL, /* ec3e */ NULL, /* ec3f */ NULL, /* ec40 */ NULL, /* ec41 */ NULL, /* ec42 */ NULL, /* ec43 */ NULL, /* ec44 */ NULL, /* ec45 */ NULL, /* ec46 */ NULL, /* ec47 */ NULL, /* ec48 */ NULL, /* ec49 */ NULL, /* ec4a */ NULL, /* ec4b */ NULL, /* ec4c */ NULL, /* ec4d */ NULL, /* ec4e */ NULL, /* ec4f */ NULL, /* ec50 */ NULL, /* ec51 */ NULL, /* ec52 */ NULL, /* ec53 */ NULL, /* ec54 */ NULL, /* ec55 */ NULL, /* ec56 */ NULL, /* ec57 */ NULL, /* ec58 */ NULL, /* ec59 */ NULL, /* ec5a */ NULL, /* ec5b */ NULL, /* ec5c */ NULL, /* ec5d */ NULL, /* ec5e */ NULL, /* ec5f */ NULL, /* ec60 */ NULL, /* ec61 */ NULL, /* ec62 */ NULL, /* ec63 */ NULL, /* ec64 */ NULL, /* ec65 */ NULL, /* ec66 */ NULL, /* ec67 */ NULL, /* ec68 */ NULL, /* ec69 */ NULL, /* ec6a */ NULL, /* ec6b */ NULL, /* ec6c */ NULL, /* ec6d */ NULL, /* ec6e */ NULL, /* ec6f */ NULL, /* ec70 */ NULL, /* ec71 */ NULL, /* ec72 */ NULL, /* ec73 */ NULL, /* ec74 */ NULL, /* ec75 */ NULL, /* ec76 */ NULL, /* ec77 */ NULL, /* ec78 */ NULL, /* ec79 */ NULL, /* ec7a */ NULL, /* ec7b */ NULL, /* ec7c */ NULL, /* ec7d */ NULL, /* ec7e */ NULL, /* ec7f */ NULL, /* ec80 */ NULL, /* ec81 */ NULL, /* ec82 */ NULL, /* ec83 */ NULL, /* ec84 */ NULL, /* ec85 */ NULL, /* ec86 */ NULL, /* ec87 */ NULL, /* ec88 */ NULL, /* ec89 */ NULL, /* ec8a */ NULL, /* ec8b */ NULL, /* ec8c */ NULL, /* ec8d */ NULL, /* ec8e */ NULL, /* ec8f */ NULL, /* ec90 */ NULL, /* ec91 */ NULL, /* ec92 */ NULL, /* ec93 */ NULL, /* ec94 */ NULL, /* ec95 */ NULL, /* ec96 */ NULL, /* ec97 */ NULL, /* ec98 */ NULL, /* ec99 */ NULL, /* ec9a */ NULL, /* ec9b */ NULL, /* ec9c */ NULL, /* ec9d */ NULL, /* ec9e */ NULL, /* ec9f */ NULL, /* eca0 */ NULL, /* eca1 */ NULL, /* eca2 */ NULL, /* eca3 */ NULL, /* eca4 */ NULL, /* eca5 */ NULL, /* eca6 */ NULL, /* eca7 */ NULL, /* eca8 */ NULL, /* eca9 */ NULL, /* ecaa */ NULL, /* ecab */ NULL, /* ecac */ NULL, /* ecad */ NULL, /* ecae */ NULL, /* ecaf */ NULL, /* ecb0 */ NULL, /* ecb1 */ NULL, /* ecb2 */ NULL, /* ecb3 */ NULL, /* ecb4 */ NULL, /* ecb5 */ NULL, /* ecb6 */ NULL, /* ecb7 */ NULL, /* ecb8 */ NULL, /* ecb9 */ NULL, /* ecba */ NULL, /* ecbb */ NULL, /* ecbc */ NULL, /* ecbd */ NULL, /* ecbe */ NULL, /* ecbf */ NULL, /* ecc0 */ NULL, /* ecc1 */ NULL, /* ecc2 */ NULL, /* ecc3 */ NULL, /* ecc4 */ NULL, /* ecc5 */ NULL, /* ecc6 */ NULL, /* ecc7 */ NULL, /* ecc8 */ NULL, /* ecc9 */ NULL, /* ecca */ NULL, /* eccb */ NULL, /* eccc */ NULL, /* eccd */ NULL, /* ecce */ NULL, /* eccf */ NULL, /* ecd0 */ NULL, /* ecd1 */ NULL, /* ecd2 */ NULL, /* ecd3 */ NULL, /* ecd4 */ NULL, /* ecd5 */ NULL, /* ecd6 */ NULL, /* ecd7 */ NULL, /* ecd8 */ NULL, /* ecd9 */ NULL, /* ecda */ NULL, /* ecdb */ NULL, /* ecdc */ NULL, /* ecdd */ NULL, /* ecde */ NULL, /* ecdf */ NULL, /* ece0 */ NULL, /* ece1 */ NULL, /* ece2 */ NULL, /* ece3 */ NULL, /* ece4 */ NULL, /* ece5 */ NULL, /* ece6 */ NULL, /* ece7 */ NULL, /* ece8 */ NULL, /* ece9 */ NULL, /* ecea */ NULL, /* eceb */ NULL, /* ecec */ NULL, /* eced */ NULL, /* ecee */ NULL, /* ecef */ NULL, /* ecf0 */ NULL, /* ecf1 */ NULL, /* ecf2 */ NULL, /* ecf3 */ NULL, /* ecf4 */ NULL, /* ecf5 */ NULL, /* ecf6 */ NULL, /* ecf7 */ NULL, /* ecf8 */ NULL, /* ecf9 */ NULL, /* ecfa */ NULL, /* ecfb */ NULL, /* ecfc */ NULL, /* ecfd */ NULL, /* ecfe */ NULL, /* ecff */ NULL, /* ed00 */ NULL, /* ed01 */ NULL, /* ed02 */ NULL, /* ed03 */ NULL, /* ed04 */ NULL, /* ed05 */ NULL, /* ed06 */ NULL, /* ed07 */ NULL, /* ed08 */ NULL, /* ed09 */ NULL, /* ed0a */ NULL, /* ed0b */ NULL, /* ed0c */ NULL, /* ed0d */ NULL, /* ed0e */ NULL, /* ed0f */ NULL, /* ed10 */ NULL, /* ed11 */ NULL, /* ed12 */ NULL, /* ed13 */ NULL, /* ed14 */ NULL, /* ed15 */ NULL, /* ed16 */ NULL, /* ed17 */ NULL, /* ed18 */ NULL, /* ed19 */ NULL, /* ed1a */ NULL, /* ed1b */ NULL, /* ed1c */ NULL, /* ed1d */ NULL, /* ed1e */ NULL, /* ed1f */ NULL, /* ed20 */ NULL, /* ed21 */ NULL, /* ed22 */ NULL, /* ed23 */ NULL, /* ed24 */ NULL, /* ed25 */ NULL, /* ed26 */ NULL, /* ed27 */ NULL, /* ed28 */ NULL, /* ed29 */ NULL, /* ed2a */ NULL, /* ed2b */ NULL, /* ed2c */ NULL, /* ed2d */ NULL, /* ed2e */ NULL, /* ed2f */ NULL, /* ed30 */ NULL, /* ed31 */ NULL, /* ed32 */ NULL, /* ed33 */ NULL, /* ed34 */ NULL, /* ed35 */ NULL, /* ed36 */ NULL, /* ed37 */ NULL, /* ed38 */ NULL, /* ed39 */ NULL, /* ed3a */ NULL, /* ed3b */ NULL, /* ed3c */ NULL, /* ed3d */ NULL, /* ed3e */ NULL, /* ed3f */ NULL, /* ed40 */ NULL, /* ed41 */ NULL, /* ed42 */ NULL, /* ed43 */ NULL, /* ed44 */ NULL, /* ed45 */ NULL, /* ed46 */ NULL, /* ed47 */ NULL, /* ed48 */ NULL, /* ed49 */ NULL, /* ed4a */ NULL, /* ed4b */ NULL, /* ed4c */ NULL, /* ed4d */ NULL, /* ed4e */ NULL, /* ed4f */ NULL, /* ed50 */ NULL, /* ed51 */ NULL, /* ed52 */ NULL, /* ed53 */ NULL, /* ed54 */ NULL, /* ed55 */ NULL, /* ed56 */ NULL, /* ed57 */ NULL, /* ed58 */ NULL, /* ed59 */ NULL, /* ed5a */ NULL, /* ed5b */ NULL, /* ed5c */ NULL, /* ed5d */ NULL, /* ed5e */ NULL, /* ed5f */ NULL, /* ed60 */ NULL, /* ed61 */ NULL, /* ed62 */ NULL, /* ed63 */ NULL, /* ed64 */ NULL, /* ed65 */ NULL, /* ed66 */ NULL, /* ed67 */ NULL, /* ed68 */ NULL, /* ed69 */ NULL, /* ed6a */ NULL, /* ed6b */ NULL, /* ed6c */ NULL, /* ed6d */ NULL, /* ed6e */ NULL, /* ed6f */ NULL, /* ed70 */ NULL, /* ed71 */ NULL, /* ed72 */ NULL, /* ed73 */ NULL, /* ed74 */ NULL, /* ed75 */ NULL, /* ed76 */ NULL, /* ed77 */ NULL, /* ed78 */ NULL, /* ed79 */ NULL, /* ed7a */ NULL, /* ed7b */ NULL, /* ed7c */ NULL, /* ed7d */ NULL, /* ed7e */ NULL, /* ed7f */ NULL, /* ed80 */ NULL, /* ed81 */ NULL, /* ed82 */ NULL, /* ed83 */ NULL, /* ed84 */ NULL, /* ed85 */ NULL, /* ed86 */ NULL, /* ed87 */ NULL, /* ed88 */ NULL, /* ed89 */ NULL, /* ed8a */ NULL, /* ed8b */ NULL, /* ed8c */ NULL, /* ed8d */ NULL, /* ed8e */ NULL, /* ed8f */ NULL, /* ed90 */ NULL, /* ed91 */ NULL, /* ed92 */ NULL, /* ed93 */ NULL, /* ed94 */ NULL, /* ed95 */ NULL, /* ed96 */ NULL, /* ed97 */ NULL, /* ed98 */ NULL, /* ed99 */ NULL, /* ed9a */ NULL, /* ed9b */ NULL, /* ed9c */ NULL, /* ed9d */ NULL, /* ed9e */ NULL, /* ed9f */ NULL, /* eda0 */ NULL, /* eda1 */ NULL, /* eda2 */ NULL, /* eda3 */ NULL, /* eda4 */ NULL, /* eda5 */ NULL, /* eda6 */ NULL, /* eda7 */ NULL, /* eda8 */ NULL, /* eda9 */ NULL, /* edaa */ NULL, /* edab */ NULL, /* edac */ NULL, /* edad */ NULL, /* edae */ NULL, /* edaf */ NULL, /* edb0 */ NULL, /* edb1 */ NULL, /* edb2 */ NULL, /* edb3 */ NULL, /* edb4 */ NULL, /* edb5 */ NULL, /* edb6 */ NULL, /* edb7 */ NULL, /* edb8 */ NULL, /* edb9 */ NULL, /* edba */ NULL, /* edbb */ NULL, /* edbc */ NULL, /* edbd */ NULL, /* edbe */ NULL, /* edbf */ NULL, /* edc0 */ NULL, /* edc1 */ NULL, /* edc2 */ NULL, /* edc3 */ NULL, /* edc4 */ NULL, /* edc5 */ NULL, /* edc6 */ NULL, /* edc7 */ NULL, /* edc8 */ NULL, /* edc9 */ NULL, /* edca */ NULL, /* edcb */ NULL, /* edcc */ NULL, /* edcd */ NULL, /* edce */ NULL, /* edcf */ NULL, /* edd0 */ NULL, /* edd1 */ NULL, /* edd2 */ NULL, /* edd3 */ NULL, /* edd4 */ NULL, /* edd5 */ NULL, /* edd6 */ NULL, /* edd7 */ NULL, /* edd8 */ NULL, /* edd9 */ NULL, /* edda */ NULL, /* eddb */ NULL, /* eddc */ NULL, /* eddd */ NULL, /* edde */ NULL, /* eddf */ NULL, /* ede0 */ NULL, /* ede1 */ NULL, /* ede2 */ NULL, /* ede3 */ NULL, /* ede4 */ NULL, /* ede5 */ NULL, /* ede6 */ NULL, /* ede7 */ NULL, /* ede8 */ NULL, /* ede9 */ NULL, /* edea */ NULL, /* edeb */ NULL, /* edec */ NULL, /* eded */ NULL, /* edee */ NULL, /* edef */ NULL, /* edf0 */ NULL, /* edf1 */ NULL, /* edf2 */ NULL, /* edf3 */ NULL, /* edf4 */ NULL, /* edf5 */ NULL, /* edf6 */ NULL, /* edf7 */ NULL, /* edf8 */ NULL, /* edf9 */ NULL, /* edfa */ NULL, /* edfb */ NULL, /* edfc */ NULL, /* edfd */ NULL, /* edfe */ NULL, /* edff */ NULL, /* ee00 */ NULL, /* ee01 */ NULL, /* ee02 */ NULL, /* ee03 */ NULL, /* ee04 */ NULL, /* ee05 */ NULL, /* ee06 */ NULL, /* ee07 */ NULL, /* ee08 */ NULL, /* ee09 */ NULL, /* ee0a */ NULL, /* ee0b */ NULL, /* ee0c */ NULL, /* ee0d */ NULL, /* ee0e */ NULL, /* ee0f */ NULL, /* ee10 */ NULL, /* ee11 */ NULL, /* ee12 */ NULL, /* ee13 */ NULL, /* ee14 */ NULL, /* ee15 */ NULL, /* ee16 */ NULL, /* ee17 */ NULL, /* ee18 */ NULL, /* ee19 */ NULL, /* ee1a */ NULL, /* ee1b */ NULL, /* ee1c */ NULL, /* ee1d */ NULL, /* ee1e */ NULL, /* ee1f */ NULL, /* ee20 */ NULL, /* ee21 */ NULL, /* ee22 */ NULL, /* ee23 */ NULL, /* ee24 */ NULL, /* ee25 */ NULL, /* ee26 */ NULL, /* ee27 */ NULL, /* ee28 */ NULL, /* ee29 */ NULL, /* ee2a */ NULL, /* ee2b */ NULL, /* ee2c */ NULL, /* ee2d */ NULL, /* ee2e */ NULL, /* ee2f */ NULL, /* ee30 */ NULL, /* ee31 */ NULL, /* ee32 */ NULL, /* ee33 */ NULL, /* ee34 */ NULL, /* ee35 */ NULL, /* ee36 */ NULL, /* ee37 */ NULL, /* ee38 */ NULL, /* ee39 */ NULL, /* ee3a */ NULL, /* ee3b */ NULL, /* ee3c */ NULL, /* ee3d */ NULL, /* ee3e */ NULL, /* ee3f */ NULL, /* ee40 */ NULL, /* ee41 */ NULL, /* ee42 */ NULL, /* ee43 */ NULL, /* ee44 */ NULL, /* ee45 */ NULL, /* ee46 */ NULL, /* ee47 */ NULL, /* ee48 */ NULL, /* ee49 */ NULL, /* ee4a */ NULL, /* ee4b */ NULL, /* ee4c */ NULL, /* ee4d */ NULL, /* ee4e */ NULL, /* ee4f */ NULL, /* ee50 */ NULL, /* ee51 */ NULL, /* ee52 */ NULL, /* ee53 */ NULL, /* ee54 */ NULL, /* ee55 */ NULL, /* ee56 */ NULL, /* ee57 */ NULL, /* ee58 */ NULL, /* ee59 */ NULL, /* ee5a */ NULL, /* ee5b */ NULL, /* ee5c */ NULL, /* ee5d */ NULL, /* ee5e */ NULL, /* ee5f */ NULL, /* ee60 */ NULL, /* ee61 */ NULL, /* ee62 */ NULL, /* ee63 */ NULL, /* ee64 */ NULL, /* ee65 */ NULL, /* ee66 */ NULL, /* ee67 */ NULL, /* ee68 */ NULL, /* ee69 */ NULL, /* ee6a */ NULL, /* ee6b */ NULL, /* ee6c */ NULL, /* ee6d */ NULL, /* ee6e */ NULL, /* ee6f */ NULL, /* ee70 */ NULL, /* ee71 */ NULL, /* ee72 */ NULL, /* ee73 */ NULL, /* ee74 */ NULL, /* ee75 */ NULL, /* ee76 */ NULL, /* ee77 */ NULL, /* ee78 */ NULL, /* ee79 */ NULL, /* ee7a */ NULL, /* ee7b */ NULL, /* ee7c */ NULL, /* ee7d */ NULL, /* ee7e */ NULL, /* ee7f */ NULL, /* ee80 */ NULL, /* ee81 */ NULL, /* ee82 */ NULL, /* ee83 */ NULL, /* ee84 */ NULL, /* ee85 */ NULL, /* ee86 */ NULL, /* ee87 */ NULL, /* ee88 */ NULL, /* ee89 */ NULL, /* ee8a */ NULL, /* ee8b */ NULL, /* ee8c */ NULL, /* ee8d */ NULL, /* ee8e */ NULL, /* ee8f */ NULL, /* ee90 */ NULL, /* ee91 */ NULL, /* ee92 */ NULL, /* ee93 */ NULL, /* ee94 */ NULL, /* ee95 */ NULL, /* ee96 */ NULL, /* ee97 */ NULL, /* ee98 */ NULL, /* ee99 */ NULL, /* ee9a */ NULL, /* ee9b */ NULL, /* ee9c */ NULL, /* ee9d */ NULL, /* ee9e */ NULL, /* ee9f */ NULL, /* eea0 */ NULL, /* eea1 */ NULL, /* eea2 */ NULL, /* eea3 */ NULL, /* eea4 */ NULL, /* eea5 */ NULL, /* eea6 */ NULL, /* eea7 */ NULL, /* eea8 */ NULL, /* eea9 */ NULL, /* eeaa */ NULL, /* eeab */ NULL, /* eeac */ NULL, /* eead */ NULL, /* eeae */ NULL, /* eeaf */ NULL, /* eeb0 */ NULL, /* eeb1 */ NULL, /* eeb2 */ NULL, /* eeb3 */ NULL, /* eeb4 */ NULL, /* eeb5 */ NULL, /* eeb6 */ NULL, /* eeb7 */ NULL, /* eeb8 */ NULL, /* eeb9 */ NULL, /* eeba */ NULL, /* eebb */ NULL, /* eebc */ NULL, /* eebd */ NULL, /* eebe */ NULL, /* eebf */ NULL, /* eec0 */ NULL, /* eec1 */ NULL, /* eec2 */ NULL, /* eec3 */ NULL, /* eec4 */ NULL, /* eec5 */ NULL, /* eec6 */ NULL, /* eec7 */ NULL, /* eec8 */ NULL, /* eec9 */ NULL, /* eeca */ NULL, /* eecb */ NULL, /* eecc */ NULL, /* eecd */ NULL, /* eece */ NULL, /* eecf */ NULL, /* eed0 */ NULL, /* eed1 */ NULL, /* eed2 */ NULL, /* eed3 */ NULL, /* eed4 */ NULL, /* eed5 */ NULL, /* eed6 */ NULL, /* eed7 */ NULL, /* eed8 */ NULL, /* eed9 */ NULL, /* eeda */ NULL, /* eedb */ NULL, /* eedc */ NULL, /* eedd */ NULL, /* eede */ NULL, /* eedf */ NULL, /* eee0 */ NULL, /* eee1 */ NULL, /* eee2 */ NULL, /* eee3 */ NULL, /* eee4 */ NULL, /* eee5 */ NULL, /* eee6 */ NULL, /* eee7 */ NULL, /* eee8 */ NULL, /* eee9 */ NULL, /* eeea */ NULL, /* eeeb */ NULL, /* eeec */ NULL, /* eeed */ NULL, /* eeee */ NULL, /* eeef */ NULL, /* eef0 */ NULL, /* eef1 */ NULL, /* eef2 */ NULL, /* eef3 */ NULL, /* eef4 */ NULL, /* eef5 */ NULL, /* eef6 */ NULL, /* eef7 */ NULL, /* eef8 */ NULL, /* eef9 */ NULL, /* eefa */ NULL, /* eefb */ NULL, /* eefc */ NULL, /* eefd */ NULL, /* eefe */ NULL, /* eeff */ NULL, /* ef00 */ NULL, /* ef01 */ NULL, /* ef02 */ NULL, /* ef03 */ NULL, /* ef04 */ NULL, /* ef05 */ NULL, /* ef06 */ NULL, /* ef07 */ NULL, /* ef08 */ NULL, /* ef09 */ NULL, /* ef0a */ NULL, /* ef0b */ NULL, /* ef0c */ NULL, /* ef0d */ NULL, /* ef0e */ NULL, /* ef0f */ NULL, /* ef10 */ NULL, /* ef11 */ NULL, /* ef12 */ NULL, /* ef13 */ NULL, /* ef14 */ NULL, /* ef15 */ NULL, /* ef16 */ NULL, /* ef17 */ NULL, /* ef18 */ NULL, /* ef19 */ NULL, /* ef1a */ NULL, /* ef1b */ NULL, /* ef1c */ NULL, /* ef1d */ NULL, /* ef1e */ NULL, /* ef1f */ NULL, /* ef20 */ NULL, /* ef21 */ NULL, /* ef22 */ NULL, /* ef23 */ NULL, /* ef24 */ NULL, /* ef25 */ NULL, /* ef26 */ NULL, /* ef27 */ NULL, /* ef28 */ NULL, /* ef29 */ NULL, /* ef2a */ NULL, /* ef2b */ NULL, /* ef2c */ NULL, /* ef2d */ NULL, /* ef2e */ NULL, /* ef2f */ NULL, /* ef30 */ NULL, /* ef31 */ NULL, /* ef32 */ NULL, /* ef33 */ NULL, /* ef34 */ NULL, /* ef35 */ NULL, /* ef36 */ NULL, /* ef37 */ NULL, /* ef38 */ NULL, /* ef39 */ NULL, /* ef3a */ NULL, /* ef3b */ NULL, /* ef3c */ NULL, /* ef3d */ NULL, /* ef3e */ NULL, /* ef3f */ NULL, /* ef40 */ NULL, /* ef41 */ NULL, /* ef42 */ NULL, /* ef43 */ NULL, /* ef44 */ NULL, /* ef45 */ NULL, /* ef46 */ NULL, /* ef47 */ NULL, /* ef48 */ NULL, /* ef49 */ NULL, /* ef4a */ NULL, /* ef4b */ NULL, /* ef4c */ NULL, /* ef4d */ NULL, /* ef4e */ NULL, /* ef4f */ NULL, /* ef50 */ NULL, /* ef51 */ NULL, /* ef52 */ NULL, /* ef53 */ NULL, /* ef54 */ NULL, /* ef55 */ NULL, /* ef56 */ NULL, /* ef57 */ NULL, /* ef58 */ NULL, /* ef59 */ NULL, /* ef5a */ NULL, /* ef5b */ NULL, /* ef5c */ NULL, /* ef5d */ NULL, /* ef5e */ NULL, /* ef5f */ NULL, /* ef60 */ NULL, /* ef61 */ NULL, /* ef62 */ NULL, /* ef63 */ NULL, /* ef64 */ NULL, /* ef65 */ NULL, /* ef66 */ NULL, /* ef67 */ NULL, /* ef68 */ NULL, /* ef69 */ NULL, /* ef6a */ NULL, /* ef6b */ NULL, /* ef6c */ NULL, /* ef6d */ NULL, /* ef6e */ NULL, /* ef6f */ NULL, /* ef70 */ NULL, /* ef71 */ NULL, /* ef72 */ NULL, /* ef73 */ NULL, /* ef74 */ NULL, /* ef75 */ NULL, /* ef76 */ NULL, /* ef77 */ NULL, /* ef78 */ NULL, /* ef79 */ NULL, /* ef7a */ NULL, /* ef7b */ NULL, /* ef7c */ NULL, /* ef7d */ NULL, /* ef7e */ NULL, /* ef7f */ NULL, /* ef80 */ NULL, /* ef81 */ NULL, /* ef82 */ NULL, /* ef83 */ NULL, /* ef84 */ NULL, /* ef85 */ NULL, /* ef86 */ NULL, /* ef87 */ NULL, /* ef88 */ NULL, /* ef89 */ NULL, /* ef8a */ NULL, /* ef8b */ NULL, /* ef8c */ NULL, /* ef8d */ NULL, /* ef8e */ NULL, /* ef8f */ NULL, /* ef90 */ NULL, /* ef91 */ NULL, /* ef92 */ NULL, /* ef93 */ NULL, /* ef94 */ NULL, /* ef95 */ NULL, /* ef96 */ NULL, /* ef97 */ NULL, /* ef98 */ NULL, /* ef99 */ NULL, /* ef9a */ NULL, /* ef9b */ NULL, /* ef9c */ NULL, /* ef9d */ NULL, /* ef9e */ NULL, /* ef9f */ NULL, /* efa0 */ NULL, /* efa1 */ NULL, /* efa2 */ NULL, /* efa3 */ NULL, /* efa4 */ NULL, /* efa5 */ NULL, /* efa6 */ NULL, /* efa7 */ NULL, /* efa8 */ NULL, /* efa9 */ NULL, /* efaa */ NULL, /* efab */ NULL, /* efac */ NULL, /* efad */ NULL, /* efae */ NULL, /* efaf */ NULL, /* efb0 */ NULL, /* efb1 */ NULL, /* efb2 */ NULL, /* efb3 */ NULL, /* efb4 */ NULL, /* efb5 */ NULL, /* efb6 */ NULL, /* efb7 */ NULL, /* efb8 */ NULL, /* efb9 */ NULL, /* efba */ NULL, /* efbb */ NULL, /* efbc */ NULL, /* efbd */ NULL, /* efbe */ NULL, /* efbf */ NULL, /* efc0 */ NULL, /* efc1 */ NULL, /* efc2 */ NULL, /* efc3 */ NULL, /* efc4 */ NULL, /* efc5 */ NULL, /* efc6 */ NULL, /* efc7 */ NULL, /* efc8 */ NULL, /* efc9 */ NULL, /* efca */ NULL, /* efcb */ NULL, /* efcc */ NULL, /* efcd */ NULL, /* efce */ NULL, /* efcf */ NULL, /* efd0 */ NULL, /* efd1 */ NULL, /* efd2 */ NULL, /* efd3 */ NULL, /* efd4 */ NULL, /* efd5 */ NULL, /* efd6 */ NULL, /* efd7 */ NULL, /* efd8 */ NULL, /* efd9 */ NULL, /* efda */ NULL, /* efdb */ NULL, /* efdc */ NULL, /* efdd */ NULL, /* efde */ NULL, /* efdf */ NULL, /* efe0 */ NULL, /* efe1 */ NULL, /* efe2 */ NULL, /* efe3 */ NULL, /* efe4 */ NULL, /* efe5 */ NULL, /* efe6 */ NULL, /* efe7 */ NULL, /* efe8 */ NULL, /* efe9 */ NULL, /* efea */ NULL, /* efeb */ NULL, /* efec */ NULL, /* efed */ NULL, /* efee */ NULL, /* efef */ NULL, /* eff0 */ NULL, /* eff1 */ NULL, /* eff2 */ NULL, /* eff3 */ NULL, /* eff4 */ NULL, /* eff5 */ NULL, /* eff6 */ NULL, /* eff7 */ NULL, /* eff8 */ NULL, /* eff9 */ NULL, /* effa */ NULL, /* effb */ NULL, /* effc */ NULL, /* effd */ NULL, /* effe */ NULL, /* efff */ NULL, /* f000 */ NULL, /* f001 */ NULL, /* f002 */ NULL, /* f003 */ NULL, /* f004 */ NULL, /* f005 */ NULL, /* f006 */ NULL, /* f007 */ NULL, /* f008 */ NULL, /* f009 */ NULL, /* f00a */ NULL, /* f00b */ NULL, /* f00c */ NULL, /* f00d */ NULL, /* f00e */ NULL, /* f00f */ NULL, /* f010 */ NULL, /* f011 */ NULL, /* f012 */ NULL, /* f013 */ NULL, /* f014 */ NULL, /* f015 */ NULL, /* f016 */ NULL, /* f017 */ NULL, /* f018 */ NULL, /* f019 */ NULL, /* f01a */ NULL, /* f01b */ NULL, /* f01c */ NULL, /* f01d */ NULL, /* f01e */ NULL, /* f01f */ NULL, /* f020 */ NULL, /* f021 */ NULL, /* f022 */ NULL, /* f023 */ NULL, /* f024 */ NULL, /* f025 */ NULL, /* f026 */ NULL, /* f027 */ NULL, /* f028 */ NULL, /* f029 */ NULL, /* f02a */ NULL, /* f02b */ NULL, /* f02c */ NULL, /* f02d */ NULL, /* f02e */ NULL, /* f02f */ NULL, /* f030 */ NULL, /* f031 */ NULL, /* f032 */ NULL, /* f033 */ NULL, /* f034 */ NULL, /* f035 */ NULL, /* f036 */ NULL, /* f037 */ NULL, /* f038 */ NULL, /* f039 */ NULL, /* f03a */ NULL, /* f03b */ NULL, /* f03c */ NULL, /* f03d */ NULL, /* f03e */ NULL, /* f03f */ NULL, /* f040 */ NULL, /* f041 */ NULL, /* f042 */ NULL, /* f043 */ NULL, /* f044 */ NULL, /* f045 */ NULL, /* f046 */ NULL, /* f047 */ NULL, /* f048 */ NULL, /* f049 */ NULL, /* f04a */ NULL, /* f04b */ NULL, /* f04c */ NULL, /* f04d */ NULL, /* f04e */ NULL, /* f04f */ NULL, /* f050 */ NULL, /* f051 */ NULL, /* f052 */ NULL, /* f053 */ NULL, /* f054 */ NULL, /* f055 */ NULL, /* f056 */ NULL, /* f057 */ NULL, /* f058 */ NULL, /* f059 */ NULL, /* f05a */ NULL, /* f05b */ NULL, /* f05c */ NULL, /* f05d */ NULL, /* f05e */ NULL, /* f05f */ NULL, /* f060 */ NULL, /* f061 */ NULL, /* f062 */ NULL, /* f063 */ NULL, /* f064 */ NULL, /* f065 */ NULL, /* f066 */ NULL, /* f067 */ NULL, /* f068 */ NULL, /* f069 */ NULL, /* f06a */ NULL, /* f06b */ NULL, /* f06c */ NULL, /* f06d */ NULL, /* f06e */ NULL, /* f06f */ NULL, /* f070 */ NULL, /* f071 */ NULL, /* f072 */ NULL, /* f073 */ NULL, /* f074 */ NULL, /* f075 */ NULL, /* f076 */ NULL, /* f077 */ NULL, /* f078 */ NULL, /* f079 */ NULL, /* f07a */ NULL, /* f07b */ NULL, /* f07c */ NULL, /* f07d */ NULL, /* f07e */ NULL, /* f07f */ NULL, /* f080 */ NULL, /* f081 */ NULL, /* f082 */ NULL, /* f083 */ NULL, /* f084 */ NULL, /* f085 */ NULL, /* f086 */ NULL, /* f087 */ NULL, /* f088 */ NULL, /* f089 */ NULL, /* f08a */ NULL, /* f08b */ NULL, /* f08c */ NULL, /* f08d */ NULL, /* f08e */ NULL, /* f08f */ NULL, /* f090 */ NULL, /* f091 */ NULL, /* f092 */ NULL, /* f093 */ NULL, /* f094 */ NULL, /* f095 */ NULL, /* f096 */ NULL, /* f097 */ NULL, /* f098 */ NULL, /* f099 */ NULL, /* f09a */ NULL, /* f09b */ NULL, /* f09c */ NULL, /* f09d */ NULL, /* f09e */ NULL, /* f09f */ NULL, /* f0a0 */ NULL, /* f0a1 */ NULL, /* f0a2 */ NULL, /* f0a3 */ NULL, /* f0a4 */ NULL, /* f0a5 */ NULL, /* f0a6 */ NULL, /* f0a7 */ NULL, /* f0a8 */ NULL, /* f0a9 */ NULL, /* f0aa */ NULL, /* f0ab */ NULL, /* f0ac */ NULL, /* f0ad */ NULL, /* f0ae */ NULL, /* f0af */ NULL, /* f0b0 */ NULL, /* f0b1 */ NULL, /* f0b2 */ NULL, /* f0b3 */ NULL, /* f0b4 */ NULL, /* f0b5 */ NULL, /* f0b6 */ NULL, /* f0b7 */ NULL, /* f0b8 */ NULL, /* f0b9 */ NULL, /* f0ba */ NULL, /* f0bb */ NULL, /* f0bc */ NULL, /* f0bd */ NULL, /* f0be */ NULL, /* f0bf */ NULL, /* f0c0 */ NULL, /* f0c1 */ NULL, /* f0c2 */ NULL, /* f0c3 */ NULL, /* f0c4 */ NULL, /* f0c5 */ NULL, /* f0c6 */ NULL, /* f0c7 */ NULL, /* f0c8 */ NULL, /* f0c9 */ NULL, /* f0ca */ NULL, /* f0cb */ NULL, /* f0cc */ NULL, /* f0cd */ NULL, /* f0ce */ NULL, /* f0cf */ NULL, /* f0d0 */ NULL, /* f0d1 */ NULL, /* f0d2 */ NULL, /* f0d3 */ NULL, /* f0d4 */ NULL, /* f0d5 */ NULL, /* f0d6 */ NULL, /* f0d7 */ NULL, /* f0d8 */ NULL, /* f0d9 */ NULL, /* f0da */ NULL, /* f0db */ NULL, /* f0dc */ NULL, /* f0dd */ NULL, /* f0de */ NULL, /* f0df */ NULL, /* f0e0 */ NULL, /* f0e1 */ NULL, /* f0e2 */ NULL, /* f0e3 */ NULL, /* f0e4 */ NULL, /* f0e5 */ NULL, /* f0e6 */ NULL, /* f0e7 */ NULL, /* f0e8 */ NULL, /* f0e9 */ NULL, /* f0ea */ NULL, /* f0eb */ NULL, /* f0ec */ NULL, /* f0ed */ NULL, /* f0ee */ NULL, /* f0ef */ NULL, /* f0f0 */ NULL, /* f0f1 */ NULL, /* f0f2 */ NULL, /* f0f3 */ NULL, /* f0f4 */ NULL, /* f0f5 */ NULL, /* f0f6 */ NULL, /* f0f7 */ NULL, /* f0f8 */ NULL, /* f0f9 */ NULL, /* f0fa */ NULL, /* f0fb */ NULL, /* f0fc */ NULL, /* f0fd */ NULL, /* f0fe */ NULL, /* f0ff */ NULL, /* f100 */ NULL, /* f101 */ NULL, /* f102 */ NULL, /* f103 */ NULL, /* f104 */ NULL, /* f105 */ NULL, /* f106 */ NULL, /* f107 */ NULL, /* f108 */ NULL, /* f109 */ NULL, /* f10a */ NULL, /* f10b */ NULL, /* f10c */ NULL, /* f10d */ NULL, /* f10e */ NULL, /* f10f */ NULL, /* f110 */ NULL, /* f111 */ NULL, /* f112 */ NULL, /* f113 */ NULL, /* f114 */ NULL, /* f115 */ NULL, /* f116 */ NULL, /* f117 */ NULL, /* f118 */ NULL, /* f119 */ NULL, /* f11a */ NULL, /* f11b */ NULL, /* f11c */ NULL, /* f11d */ NULL, /* f11e */ NULL, /* f11f */ NULL, /* f120 */ NULL, /* f121 */ NULL, /* f122 */ NULL, /* f123 */ NULL, /* f124 */ NULL, /* f125 */ NULL, /* f126 */ NULL, /* f127 */ NULL, /* f128 */ NULL, /* f129 */ NULL, /* f12a */ NULL, /* f12b */ NULL, /* f12c */ NULL, /* f12d */ NULL, /* f12e */ NULL, /* f12f */ NULL, /* f130 */ NULL, /* f131 */ NULL, /* f132 */ NULL, /* f133 */ NULL, /* f134 */ NULL, /* f135 */ NULL, /* f136 */ NULL, /* f137 */ NULL, /* f138 */ NULL, /* f139 */ NULL, /* f13a */ NULL, /* f13b */ NULL, /* f13c */ NULL, /* f13d */ NULL, /* f13e */ NULL, /* f13f */ NULL, /* f140 */ NULL, /* f141 */ NULL, /* f142 */ NULL, /* f143 */ NULL, /* f144 */ NULL, /* f145 */ NULL, /* f146 */ NULL, /* f147 */ NULL, /* f148 */ NULL, /* f149 */ NULL, /* f14a */ NULL, /* f14b */ NULL, /* f14c */ NULL, /* f14d */ NULL, /* f14e */ NULL, /* f14f */ NULL, /* f150 */ NULL, /* f151 */ NULL, /* f152 */ NULL, /* f153 */ NULL, /* f154 */ NULL, /* f155 */ NULL, /* f156 */ NULL, /* f157 */ NULL, /* f158 */ NULL, /* f159 */ NULL, /* f15a */ NULL, /* f15b */ NULL, /* f15c */ NULL, /* f15d */ NULL, /* f15e */ NULL, /* f15f */ NULL, /* f160 */ NULL, /* f161 */ NULL, /* f162 */ NULL, /* f163 */ NULL, /* f164 */ NULL, /* f165 */ NULL, /* f166 */ NULL, /* f167 */ NULL, /* f168 */ NULL, /* f169 */ NULL, /* f16a */ NULL, /* f16b */ NULL, /* f16c */ NULL, /* f16d */ NULL, /* f16e */ NULL, /* f16f */ NULL, /* f170 */ NULL, /* f171 */ NULL, /* f172 */ NULL, /* f173 */ NULL, /* f174 */ NULL, /* f175 */ NULL, /* f176 */ NULL, /* f177 */ NULL, /* f178 */ NULL, /* f179 */ NULL, /* f17a */ NULL, /* f17b */ NULL, /* f17c */ NULL, /* f17d */ NULL, /* f17e */ NULL, /* f17f */ NULL, /* f180 */ NULL, /* f181 */ NULL, /* f182 */ NULL, /* f183 */ NULL, /* f184 */ NULL, /* f185 */ NULL, /* f186 */ NULL, /* f187 */ NULL, /* f188 */ NULL, /* f189 */ NULL, /* f18a */ NULL, /* f18b */ NULL, /* f18c */ NULL, /* f18d */ NULL, /* f18e */ NULL, /* f18f */ NULL, /* f190 */ NULL, /* f191 */ NULL, /* f192 */ NULL, /* f193 */ NULL, /* f194 */ NULL, /* f195 */ NULL, /* f196 */ NULL, /* f197 */ NULL, /* f198 */ NULL, /* f199 */ NULL, /* f19a */ NULL, /* f19b */ NULL, /* f19c */ NULL, /* f19d */ NULL, /* f19e */ NULL, /* f19f */ NULL, /* f1a0 */ NULL, /* f1a1 */ NULL, /* f1a2 */ NULL, /* f1a3 */ NULL, /* f1a4 */ NULL, /* f1a5 */ NULL, /* f1a6 */ NULL, /* f1a7 */ NULL, /* f1a8 */ NULL, /* f1a9 */ NULL, /* f1aa */ NULL, /* f1ab */ NULL, /* f1ac */ NULL, /* f1ad */ NULL, /* f1ae */ NULL, /* f1af */ NULL, /* f1b0 */ NULL, /* f1b1 */ NULL, /* f1b2 */ NULL, /* f1b3 */ NULL, /* f1b4 */ NULL, /* f1b5 */ NULL, /* f1b6 */ NULL, /* f1b7 */ NULL, /* f1b8 */ NULL, /* f1b9 */ NULL, /* f1ba */ NULL, /* f1bb */ NULL, /* f1bc */ NULL, /* f1bd */ NULL, /* f1be */ NULL, /* f1bf */ NULL, /* f1c0 */ NULL, /* f1c1 */ NULL, /* f1c2 */ NULL, /* f1c3 */ NULL, /* f1c4 */ NULL, /* f1c5 */ NULL, /* f1c6 */ NULL, /* f1c7 */ NULL, /* f1c8 */ NULL, /* f1c9 */ NULL, /* f1ca */ NULL, /* f1cb */ NULL, /* f1cc */ NULL, /* f1cd */ NULL, /* f1ce */ NULL, /* f1cf */ NULL, /* f1d0 */ NULL, /* f1d1 */ NULL, /* f1d2 */ NULL, /* f1d3 */ NULL, /* f1d4 */ NULL, /* f1d5 */ NULL, /* f1d6 */ NULL, /* f1d7 */ NULL, /* f1d8 */ NULL, /* f1d9 */ NULL, /* f1da */ NULL, /* f1db */ NULL, /* f1dc */ NULL, /* f1dd */ NULL, /* f1de */ NULL, /* f1df */ NULL, /* f1e0 */ NULL, /* f1e1 */ NULL, /* f1e2 */ NULL, /* f1e3 */ NULL, /* f1e4 */ NULL, /* f1e5 */ NULL, /* f1e6 */ NULL, /* f1e7 */ NULL, /* f1e8 */ NULL, /* f1e9 */ NULL, /* f1ea */ NULL, /* f1eb */ NULL, /* f1ec */ NULL, /* f1ed */ NULL, /* f1ee */ NULL, /* f1ef */ NULL, /* f1f0 */ NULL, /* f1f1 */ NULL, /* f1f2 */ NULL, /* f1f3 */ NULL, /* f1f4 */ NULL, /* f1f5 */ NULL, /* f1f6 */ NULL, /* f1f7 */ NULL, /* f1f8 */ NULL, /* f1f9 */ NULL, /* f1fa */ NULL, /* f1fb */ NULL, /* f1fc */ NULL, /* f1fd */ NULL, /* f1fe */ NULL, /* f1ff */ NULL, /* f200 */ NULL, /* f201 */ NULL, /* f202 */ NULL, /* f203 */ NULL, /* f204 */ NULL, /* f205 */ NULL, /* f206 */ NULL, /* f207 */ NULL, /* f208 */ NULL, /* f209 */ NULL, /* f20a */ NULL, /* f20b */ NULL, /* f20c */ NULL, /* f20d */ NULL, /* f20e */ NULL, /* f20f */ NULL, /* f210 */ NULL, /* f211 */ NULL, /* f212 */ NULL, /* f213 */ NULL, /* f214 */ NULL, /* f215 */ NULL, /* f216 */ NULL, /* f217 */ NULL, /* f218 */ NULL, /* f219 */ NULL, /* f21a */ NULL, /* f21b */ NULL, /* f21c */ NULL, /* f21d */ NULL, /* f21e */ NULL, /* f21f */ NULL, /* f220 */ NULL, /* f221 */ NULL, /* f222 */ NULL, /* f223 */ NULL, /* f224 */ NULL, /* f225 */ NULL, /* f226 */ NULL, /* f227 */ NULL, /* f228 */ NULL, /* f229 */ NULL, /* f22a */ NULL, /* f22b */ NULL, /* f22c */ NULL, /* f22d */ NULL, /* f22e */ NULL, /* f22f */ NULL, /* f230 */ NULL, /* f231 */ NULL, /* f232 */ NULL, /* f233 */ NULL, /* f234 */ NULL, /* f235 */ NULL, /* f236 */ NULL, /* f237 */ NULL, /* f238 */ NULL, /* f239 */ NULL, /* f23a */ NULL, /* f23b */ NULL, /* f23c */ NULL, /* f23d */ NULL, /* f23e */ NULL, /* f23f */ NULL, /* f240 */ NULL, /* f241 */ NULL, /* f242 */ NULL, /* f243 */ NULL, /* f244 */ NULL, /* f245 */ NULL, /* f246 */ NULL, /* f247 */ NULL, /* f248 */ NULL, /* f249 */ NULL, /* f24a */ NULL, /* f24b */ NULL, /* f24c */ NULL, /* f24d */ NULL, /* f24e */ NULL, /* f24f */ NULL, /* f250 */ NULL, /* f251 */ NULL, /* f252 */ NULL, /* f253 */ NULL, /* f254 */ NULL, /* f255 */ NULL, /* f256 */ NULL, /* f257 */ NULL, /* f258 */ NULL, /* f259 */ NULL, /* f25a */ NULL, /* f25b */ NULL, /* f25c */ NULL, /* f25d */ NULL, /* f25e */ NULL, /* f25f */ NULL, /* f260 */ NULL, /* f261 */ NULL, /* f262 */ NULL, /* f263 */ NULL, /* f264 */ NULL, /* f265 */ NULL, /* f266 */ NULL, /* f267 */ NULL, /* f268 */ NULL, /* f269 */ NULL, /* f26a */ NULL, /* f26b */ NULL, /* f26c */ NULL, /* f26d */ NULL, /* f26e */ NULL, /* f26f */ NULL, /* f270 */ NULL, /* f271 */ NULL, /* f272 */ NULL, /* f273 */ NULL, /* f274 */ NULL, /* f275 */ NULL, /* f276 */ NULL, /* f277 */ NULL, /* f278 */ NULL, /* f279 */ NULL, /* f27a */ NULL, /* f27b */ NULL, /* f27c */ NULL, /* f27d */ NULL, /* f27e */ NULL, /* f27f */ NULL, /* f280 */ NULL, /* f281 */ NULL, /* f282 */ NULL, /* f283 */ NULL, /* f284 */ NULL, /* f285 */ NULL, /* f286 */ NULL, /* f287 */ NULL, /* f288 */ NULL, /* f289 */ NULL, /* f28a */ NULL, /* f28b */ NULL, /* f28c */ NULL, /* f28d */ NULL, /* f28e */ NULL, /* f28f */ NULL, /* f290 */ NULL, /* f291 */ NULL, /* f292 */ NULL, /* f293 */ NULL, /* f294 */ NULL, /* f295 */ NULL, /* f296 */ NULL, /* f297 */ NULL, /* f298 */ NULL, /* f299 */ NULL, /* f29a */ NULL, /* f29b */ NULL, /* f29c */ NULL, /* f29d */ NULL, /* f29e */ NULL, /* f29f */ NULL, /* f2a0 */ NULL, /* f2a1 */ NULL, /* f2a2 */ NULL, /* f2a3 */ NULL, /* f2a4 */ NULL, /* f2a5 */ NULL, /* f2a6 */ NULL, /* f2a7 */ NULL, /* f2a8 */ NULL, /* f2a9 */ NULL, /* f2aa */ NULL, /* f2ab */ NULL, /* f2ac */ NULL, /* f2ad */ NULL, /* f2ae */ NULL, /* f2af */ NULL, /* f2b0 */ NULL, /* f2b1 */ NULL, /* f2b2 */ NULL, /* f2b3 */ NULL, /* f2b4 */ NULL, /* f2b5 */ NULL, /* f2b6 */ NULL, /* f2b7 */ NULL, /* f2b8 */ NULL, /* f2b9 */ NULL, /* f2ba */ NULL, /* f2bb */ NULL, /* f2bc */ NULL, /* f2bd */ NULL, /* f2be */ NULL, /* f2bf */ NULL, /* f2c0 */ NULL, /* f2c1 */ NULL, /* f2c2 */ NULL, /* f2c3 */ NULL, /* f2c4 */ NULL, /* f2c5 */ NULL, /* f2c6 */ NULL, /* f2c7 */ NULL, /* f2c8 */ NULL, /* f2c9 */ NULL, /* f2ca */ NULL, /* f2cb */ NULL, /* f2cc */ NULL, /* f2cd */ NULL, /* f2ce */ NULL, /* f2cf */ NULL, /* f2d0 */ NULL, /* f2d1 */ NULL, /* f2d2 */ NULL, /* f2d3 */ NULL, /* f2d4 */ NULL, /* f2d5 */ NULL, /* f2d6 */ NULL, /* f2d7 */ NULL, /* f2d8 */ NULL, /* f2d9 */ NULL, /* f2da */ NULL, /* f2db */ NULL, /* f2dc */ NULL, /* f2dd */ NULL, /* f2de */ NULL, /* f2df */ NULL, /* f2e0 */ NULL, /* f2e1 */ NULL, /* f2e2 */ NULL, /* f2e3 */ NULL, /* f2e4 */ NULL, /* f2e5 */ NULL, /* f2e6 */ NULL, /* f2e7 */ NULL, /* f2e8 */ NULL, /* f2e9 */ NULL, /* f2ea */ NULL, /* f2eb */ NULL, /* f2ec */ NULL, /* f2ed */ NULL, /* f2ee */ NULL, /* f2ef */ NULL, /* f2f0 */ NULL, /* f2f1 */ NULL, /* f2f2 */ NULL, /* f2f3 */ NULL, /* f2f4 */ NULL, /* f2f5 */ NULL, /* f2f6 */ NULL, /* f2f7 */ NULL, /* f2f8 */ NULL, /* f2f9 */ NULL, /* f2fa */ NULL, /* f2fb */ NULL, /* f2fc */ NULL, /* f2fd */ NULL, /* f2fe */ NULL, /* f2ff */ NULL, /* f300 */ NULL, /* f301 */ NULL, /* f302 */ NULL, /* f303 */ NULL, /* f304 */ NULL, /* f305 */ NULL, /* f306 */ NULL, /* f307 */ NULL, /* f308 */ NULL, /* f309 */ NULL, /* f30a */ NULL, /* f30b */ NULL, /* f30c */ NULL, /* f30d */ NULL, /* f30e */ NULL, /* f30f */ NULL, /* f310 */ NULL, /* f311 */ NULL, /* f312 */ NULL, /* f313 */ NULL, /* f314 */ NULL, /* f315 */ NULL, /* f316 */ NULL, /* f317 */ NULL, /* f318 */ NULL, /* f319 */ NULL, /* f31a */ NULL, /* f31b */ NULL, /* f31c */ NULL, /* f31d */ NULL, /* f31e */ NULL, /* f31f */ NULL, /* f320 */ NULL, /* f321 */ NULL, /* f322 */ NULL, /* f323 */ NULL, /* f324 */ NULL, /* f325 */ NULL, /* f326 */ NULL, /* f327 */ NULL, /* f328 */ NULL, /* f329 */ NULL, /* f32a */ NULL, /* f32b */ NULL, /* f32c */ NULL, /* f32d */ NULL, /* f32e */ NULL, /* f32f */ NULL, /* f330 */ NULL, /* f331 */ NULL, /* f332 */ NULL, /* f333 */ NULL, /* f334 */ NULL, /* f335 */ NULL, /* f336 */ NULL, /* f337 */ NULL, /* f338 */ NULL, /* f339 */ NULL, /* f33a */ NULL, /* f33b */ NULL, /* f33c */ NULL, /* f33d */ NULL, /* f33e */ NULL, /* f33f */ NULL, /* f340 */ NULL, /* f341 */ NULL, /* f342 */ NULL, /* f343 */ NULL, /* f344 */ NULL, /* f345 */ NULL, /* f346 */ NULL, /* f347 */ NULL, /* f348 */ NULL, /* f349 */ NULL, /* f34a */ NULL, /* f34b */ NULL, /* f34c */ NULL, /* f34d */ NULL, /* f34e */ NULL, /* f34f */ NULL, /* f350 */ NULL, /* f351 */ NULL, /* f352 */ NULL, /* f353 */ NULL, /* f354 */ NULL, /* f355 */ NULL, /* f356 */ NULL, /* f357 */ NULL, /* f358 */ NULL, /* f359 */ NULL, /* f35a */ NULL, /* f35b */ NULL, /* f35c */ NULL, /* f35d */ NULL, /* f35e */ NULL, /* f35f */ NULL, /* f360 */ NULL, /* f361 */ NULL, /* f362 */ NULL, /* f363 */ NULL, /* f364 */ NULL, /* f365 */ NULL, /* f366 */ NULL, /* f367 */ NULL, /* f368 */ NULL, /* f369 */ NULL, /* f36a */ NULL, /* f36b */ NULL, /* f36c */ NULL, /* f36d */ NULL, /* f36e */ NULL, /* f36f */ NULL, /* f370 */ NULL, /* f371 */ NULL, /* f372 */ NULL, /* f373 */ NULL, /* f374 */ NULL, /* f375 */ NULL, /* f376 */ NULL, /* f377 */ NULL, /* f378 */ NULL, /* f379 */ NULL, /* f37a */ NULL, /* f37b */ NULL, /* f37c */ NULL, /* f37d */ NULL, /* f37e */ NULL, /* f37f */ NULL, /* f380 */ NULL, /* f381 */ NULL, /* f382 */ NULL, /* f383 */ NULL, /* f384 */ NULL, /* f385 */ NULL, /* f386 */ NULL, /* f387 */ NULL, /* f388 */ NULL, /* f389 */ NULL, /* f38a */ NULL, /* f38b */ NULL, /* f38c */ NULL, /* f38d */ NULL, /* f38e */ NULL, /* f38f */ NULL, /* f390 */ NULL, /* f391 */ NULL, /* f392 */ NULL, /* f393 */ NULL, /* f394 */ NULL, /* f395 */ NULL, /* f396 */ NULL, /* f397 */ NULL, /* f398 */ NULL, /* f399 */ NULL, /* f39a */ NULL, /* f39b */ NULL, /* f39c */ NULL, /* f39d */ NULL, /* f39e */ NULL, /* f39f */ NULL, /* f3a0 */ NULL, /* f3a1 */ NULL, /* f3a2 */ NULL, /* f3a3 */ NULL, /* f3a4 */ NULL, /* f3a5 */ NULL, /* f3a6 */ NULL, /* f3a7 */ NULL, /* f3a8 */ NULL, /* f3a9 */ NULL, /* f3aa */ NULL, /* f3ab */ NULL, /* f3ac */ NULL, /* f3ad */ NULL, /* f3ae */ NULL, /* f3af */ NULL, /* f3b0 */ NULL, /* f3b1 */ NULL, /* f3b2 */ NULL, /* f3b3 */ NULL, /* f3b4 */ NULL, /* f3b5 */ NULL, /* f3b6 */ NULL, /* f3b7 */ NULL, /* f3b8 */ NULL, /* f3b9 */ NULL, /* f3ba */ NULL, /* f3bb */ NULL, /* f3bc */ NULL, /* f3bd */ NULL, /* f3be */ NULL, /* f3bf */ NULL, /* f3c0 */ NULL, /* f3c1 */ NULL, /* f3c2 */ NULL, /* f3c3 */ NULL, /* f3c4 */ NULL, /* f3c5 */ NULL, /* f3c6 */ NULL, /* f3c7 */ NULL, /* f3c8 */ NULL, /* f3c9 */ NULL, /* f3ca */ NULL, /* f3cb */ NULL, /* f3cc */ NULL, /* f3cd */ NULL, /* f3ce */ NULL, /* f3cf */ NULL, /* f3d0 */ NULL, /* f3d1 */ NULL, /* f3d2 */ NULL, /* f3d3 */ NULL, /* f3d4 */ NULL, /* f3d5 */ NULL, /* f3d6 */ NULL, /* f3d7 */ NULL, /* f3d8 */ NULL, /* f3d9 */ NULL, /* f3da */ NULL, /* f3db */ NULL, /* f3dc */ NULL, /* f3dd */ NULL, /* f3de */ NULL, /* f3df */ NULL, /* f3e0 */ NULL, /* f3e1 */ NULL, /* f3e2 */ NULL, /* f3e3 */ NULL, /* f3e4 */ NULL, /* f3e5 */ NULL, /* f3e6 */ NULL, /* f3e7 */ NULL, /* f3e8 */ NULL, /* f3e9 */ NULL, /* f3ea */ NULL, /* f3eb */ NULL, /* f3ec */ NULL, /* f3ed */ NULL, /* f3ee */ NULL, /* f3ef */ NULL, /* f3f0 */ NULL, /* f3f1 */ NULL, /* f3f2 */ NULL, /* f3f3 */ NULL, /* f3f4 */ NULL, /* f3f5 */ NULL, /* f3f6 */ NULL, /* f3f7 */ NULL, /* f3f8 */ NULL, /* f3f9 */ NULL, /* f3fa */ NULL, /* f3fb */ NULL, /* f3fc */ NULL, /* f3fd */ NULL, /* f3fe */ NULL, /* f3ff */ NULL, /* f400 */ NULL, /* f401 */ NULL, /* f402 */ NULL, /* f403 */ NULL, /* f404 */ NULL, /* f405 */ NULL, /* f406 */ NULL, /* f407 */ NULL, /* f408 */ NULL, /* f409 */ NULL, /* f40a */ NULL, /* f40b */ NULL, /* f40c */ NULL, /* f40d */ NULL, /* f40e */ NULL, /* f40f */ NULL, /* f410 */ NULL, /* f411 */ NULL, /* f412 */ NULL, /* f413 */ NULL, /* f414 */ NULL, /* f415 */ NULL, /* f416 */ NULL, /* f417 */ NULL, /* f418 */ NULL, /* f419 */ NULL, /* f41a */ NULL, /* f41b */ NULL, /* f41c */ NULL, /* f41d */ NULL, /* f41e */ NULL, /* f41f */ NULL, /* f420 */ NULL, /* f421 */ NULL, /* f422 */ NULL, /* f423 */ NULL, /* f424 */ NULL, /* f425 */ NULL, /* f426 */ NULL, /* f427 */ NULL, /* f428 */ NULL, /* f429 */ NULL, /* f42a */ NULL, /* f42b */ NULL, /* f42c */ NULL, /* f42d */ NULL, /* f42e */ NULL, /* f42f */ NULL, /* f430 */ NULL, /* f431 */ NULL, /* f432 */ NULL, /* f433 */ NULL, /* f434 */ NULL, /* f435 */ NULL, /* f436 */ NULL, /* f437 */ NULL, /* f438 */ NULL, /* f439 */ NULL, /* f43a */ NULL, /* f43b */ NULL, /* f43c */ NULL, /* f43d */ NULL, /* f43e */ NULL, /* f43f */ NULL, /* f440 */ NULL, /* f441 */ NULL, /* f442 */ NULL, /* f443 */ NULL, /* f444 */ NULL, /* f445 */ NULL, /* f446 */ NULL, /* f447 */ NULL, /* f448 */ NULL, /* f449 */ NULL, /* f44a */ NULL, /* f44b */ NULL, /* f44c */ NULL, /* f44d */ NULL, /* f44e */ NULL, /* f44f */ NULL, /* f450 */ NULL, /* f451 */ NULL, /* f452 */ NULL, /* f453 */ NULL, /* f454 */ NULL, /* f455 */ NULL, /* f456 */ NULL, /* f457 */ NULL, /* f458 */ NULL, /* f459 */ NULL, /* f45a */ NULL, /* f45b */ NULL, /* f45c */ NULL, /* f45d */ NULL, /* f45e */ NULL, /* f45f */ NULL, /* f460 */ NULL, /* f461 */ NULL, /* f462 */ NULL, /* f463 */ NULL, /* f464 */ NULL, /* f465 */ NULL, /* f466 */ NULL, /* f467 */ NULL, /* f468 */ NULL, /* f469 */ NULL, /* f46a */ NULL, /* f46b */ NULL, /* f46c */ NULL, /* f46d */ NULL, /* f46e */ NULL, /* f46f */ NULL, /* f470 */ NULL, /* f471 */ NULL, /* f472 */ NULL, /* f473 */ NULL, /* f474 */ NULL, /* f475 */ NULL, /* f476 */ NULL, /* f477 */ NULL, /* f478 */ NULL, /* f479 */ NULL, /* f47a */ NULL, /* f47b */ NULL, /* f47c */ NULL, /* f47d */ NULL, /* f47e */ NULL, /* f47f */ NULL, /* f480 */ NULL, /* f481 */ NULL, /* f482 */ NULL, /* f483 */ NULL, /* f484 */ NULL, /* f485 */ NULL, /* f486 */ NULL, /* f487 */ NULL, /* f488 */ NULL, /* f489 */ NULL, /* f48a */ NULL, /* f48b */ NULL, /* f48c */ NULL, /* f48d */ NULL, /* f48e */ NULL, /* f48f */ NULL, /* f490 */ NULL, /* f491 */ NULL, /* f492 */ NULL, /* f493 */ NULL, /* f494 */ NULL, /* f495 */ NULL, /* f496 */ NULL, /* f497 */ NULL, /* f498 */ NULL, /* f499 */ NULL, /* f49a */ NULL, /* f49b */ NULL, /* f49c */ NULL, /* f49d */ NULL, /* f49e */ NULL, /* f49f */ NULL, /* f4a0 */ NULL, /* f4a1 */ NULL, /* f4a2 */ NULL, /* f4a3 */ NULL, /* f4a4 */ NULL, /* f4a5 */ NULL, /* f4a6 */ NULL, /* f4a7 */ NULL, /* f4a8 */ NULL, /* f4a9 */ NULL, /* f4aa */ NULL, /* f4ab */ NULL, /* f4ac */ NULL, /* f4ad */ NULL, /* f4ae */ NULL, /* f4af */ NULL, /* f4b0 */ NULL, /* f4b1 */ NULL, /* f4b2 */ NULL, /* f4b3 */ NULL, /* f4b4 */ NULL, /* f4b5 */ NULL, /* f4b6 */ NULL, /* f4b7 */ NULL, /* f4b8 */ NULL, /* f4b9 */ NULL, /* f4ba */ NULL, /* f4bb */ NULL, /* f4bc */ NULL, /* f4bd */ NULL, /* f4be */ NULL, /* f4bf */ NULL, /* f4c0 */ NULL, /* f4c1 */ NULL, /* f4c2 */ NULL, /* f4c3 */ NULL, /* f4c4 */ NULL, /* f4c5 */ NULL, /* f4c6 */ NULL, /* f4c7 */ NULL, /* f4c8 */ NULL, /* f4c9 */ NULL, /* f4ca */ NULL, /* f4cb */ NULL, /* f4cc */ NULL, /* f4cd */ NULL, /* f4ce */ NULL, /* f4cf */ NULL, /* f4d0 */ NULL, /* f4d1 */ NULL, /* f4d2 */ NULL, /* f4d3 */ NULL, /* f4d4 */ NULL, /* f4d5 */ NULL, /* f4d6 */ NULL, /* f4d7 */ NULL, /* f4d8 */ NULL, /* f4d9 */ NULL, /* f4da */ NULL, /* f4db */ NULL, /* f4dc */ NULL, /* f4dd */ NULL, /* f4de */ NULL, /* f4df */ NULL, /* f4e0 */ NULL, /* f4e1 */ NULL, /* f4e2 */ NULL, /* f4e3 */ NULL, /* f4e4 */ NULL, /* f4e5 */ NULL, /* f4e6 */ NULL, /* f4e7 */ NULL, /* f4e8 */ NULL, /* f4e9 */ NULL, /* f4ea */ NULL, /* f4eb */ NULL, /* f4ec */ NULL, /* f4ed */ NULL, /* f4ee */ NULL, /* f4ef */ NULL, /* f4f0 */ NULL, /* f4f1 */ NULL, /* f4f2 */ NULL, /* f4f3 */ NULL, /* f4f4 */ NULL, /* f4f5 */ NULL, /* f4f6 */ NULL, /* f4f7 */ NULL, /* f4f8 */ NULL, /* f4f9 */ NULL, /* f4fa */ NULL, /* f4fb */ NULL, /* f4fc */ NULL, /* f4fd */ NULL, /* f4fe */ NULL, /* f4ff */ NULL, /* f500 */ NULL, /* f501 */ NULL, /* f502 */ NULL, /* f503 */ NULL, /* f504 */ NULL, /* f505 */ NULL, /* f506 */ NULL, /* f507 */ NULL, /* f508 */ NULL, /* f509 */ NULL, /* f50a */ NULL, /* f50b */ NULL, /* f50c */ NULL, /* f50d */ NULL, /* f50e */ NULL, /* f50f */ NULL, /* f510 */ NULL, /* f511 */ NULL, /* f512 */ NULL, /* f513 */ NULL, /* f514 */ NULL, /* f515 */ NULL, /* f516 */ NULL, /* f517 */ NULL, /* f518 */ NULL, /* f519 */ NULL, /* f51a */ NULL, /* f51b */ NULL, /* f51c */ NULL, /* f51d */ NULL, /* f51e */ NULL, /* f51f */ NULL, /* f520 */ NULL, /* f521 */ NULL, /* f522 */ NULL, /* f523 */ NULL, /* f524 */ NULL, /* f525 */ NULL, /* f526 */ NULL, /* f527 */ NULL, /* f528 */ NULL, /* f529 */ NULL, /* f52a */ NULL, /* f52b */ NULL, /* f52c */ NULL, /* f52d */ NULL, /* f52e */ NULL, /* f52f */ NULL, /* f530 */ NULL, /* f531 */ NULL, /* f532 */ NULL, /* f533 */ NULL, /* f534 */ NULL, /* f535 */ NULL, /* f536 */ NULL, /* f537 */ NULL, /* f538 */ NULL, /* f539 */ NULL, /* f53a */ NULL, /* f53b */ NULL, /* f53c */ NULL, /* f53d */ NULL, /* f53e */ NULL, /* f53f */ NULL, /* f540 */ NULL, /* f541 */ NULL, /* f542 */ NULL, /* f543 */ NULL, /* f544 */ NULL, /* f545 */ NULL, /* f546 */ NULL, /* f547 */ NULL, /* f548 */ NULL, /* f549 */ NULL, /* f54a */ NULL, /* f54b */ NULL, /* f54c */ NULL, /* f54d */ NULL, /* f54e */ NULL, /* f54f */ NULL, /* f550 */ NULL, /* f551 */ NULL, /* f552 */ NULL, /* f553 */ NULL, /* f554 */ NULL, /* f555 */ NULL, /* f556 */ NULL, /* f557 */ NULL, /* f558 */ NULL, /* f559 */ NULL, /* f55a */ NULL, /* f55b */ NULL, /* f55c */ NULL, /* f55d */ NULL, /* f55e */ NULL, /* f55f */ NULL, /* f560 */ NULL, /* f561 */ NULL, /* f562 */ NULL, /* f563 */ NULL, /* f564 */ NULL, /* f565 */ NULL, /* f566 */ NULL, /* f567 */ NULL, /* f568 */ NULL, /* f569 */ NULL, /* f56a */ NULL, /* f56b */ NULL, /* f56c */ NULL, /* f56d */ NULL, /* f56e */ NULL, /* f56f */ NULL, /* f570 */ NULL, /* f571 */ NULL, /* f572 */ NULL, /* f573 */ NULL, /* f574 */ NULL, /* f575 */ NULL, /* f576 */ NULL, /* f577 */ NULL, /* f578 */ NULL, /* f579 */ NULL, /* f57a */ NULL, /* f57b */ NULL, /* f57c */ NULL, /* f57d */ NULL, /* f57e */ NULL, /* f57f */ NULL, /* f580 */ NULL, /* f581 */ NULL, /* f582 */ NULL, /* f583 */ NULL, /* f584 */ NULL, /* f585 */ NULL, /* f586 */ NULL, /* f587 */ NULL, /* f588 */ NULL, /* f589 */ NULL, /* f58a */ NULL, /* f58b */ NULL, /* f58c */ NULL, /* f58d */ NULL, /* f58e */ NULL, /* f58f */ NULL, /* f590 */ NULL, /* f591 */ NULL, /* f592 */ NULL, /* f593 */ NULL, /* f594 */ NULL, /* f595 */ NULL, /* f596 */ NULL, /* f597 */ NULL, /* f598 */ NULL, /* f599 */ NULL, /* f59a */ NULL, /* f59b */ NULL, /* f59c */ NULL, /* f59d */ NULL, /* f59e */ NULL, /* f59f */ NULL, /* f5a0 */ NULL, /* f5a1 */ NULL, /* f5a2 */ NULL, /* f5a3 */ NULL, /* f5a4 */ NULL, /* f5a5 */ NULL, /* f5a6 */ NULL, /* f5a7 */ NULL, /* f5a8 */ NULL, /* f5a9 */ NULL, /* f5aa */ NULL, /* f5ab */ NULL, /* f5ac */ NULL, /* f5ad */ NULL, /* f5ae */ NULL, /* f5af */ NULL, /* f5b0 */ NULL, /* f5b1 */ NULL, /* f5b2 */ NULL, /* f5b3 */ NULL, /* f5b4 */ NULL, /* f5b5 */ NULL, /* f5b6 */ NULL, /* f5b7 */ NULL, /* f5b8 */ NULL, /* f5b9 */ NULL, /* f5ba */ NULL, /* f5bb */ NULL, /* f5bc */ NULL, /* f5bd */ NULL, /* f5be */ NULL, /* f5bf */ NULL, /* f5c0 */ NULL, /* f5c1 */ NULL, /* f5c2 */ NULL, /* f5c3 */ NULL, /* f5c4 */ NULL, /* f5c5 */ NULL, /* f5c6 */ NULL, /* f5c7 */ NULL, /* f5c8 */ NULL, /* f5c9 */ NULL, /* f5ca */ NULL, /* f5cb */ NULL, /* f5cc */ NULL, /* f5cd */ NULL, /* f5ce */ NULL, /* f5cf */ NULL, /* f5d0 */ NULL, /* f5d1 */ NULL, /* f5d2 */ NULL, /* f5d3 */ NULL, /* f5d4 */ NULL, /* f5d5 */ NULL, /* f5d6 */ NULL, /* f5d7 */ NULL, /* f5d8 */ NULL, /* f5d9 */ NULL, /* f5da */ NULL, /* f5db */ NULL, /* f5dc */ NULL, /* f5dd */ NULL, /* f5de */ NULL, /* f5df */ NULL, /* f5e0 */ NULL, /* f5e1 */ NULL, /* f5e2 */ NULL, /* f5e3 */ NULL, /* f5e4 */ NULL, /* f5e5 */ NULL, /* f5e6 */ NULL, /* f5e7 */ NULL, /* f5e8 */ NULL, /* f5e9 */ NULL, /* f5ea */ NULL, /* f5eb */ NULL, /* f5ec */ NULL, /* f5ed */ NULL, /* f5ee */ NULL, /* f5ef */ NULL, /* f5f0 */ NULL, /* f5f1 */ NULL, /* f5f2 */ NULL, /* f5f3 */ NULL, /* f5f4 */ NULL, /* f5f5 */ NULL, /* f5f6 */ NULL, /* f5f7 */ NULL, /* f5f8 */ NULL, /* f5f9 */ NULL, /* f5fa */ NULL, /* f5fb */ NULL, /* f5fc */ NULL, /* f5fd */ NULL, /* f5fe */ NULL, /* f5ff */ NULL, /* f600 */ NULL, /* f601 */ NULL, /* f602 */ NULL, /* f603 */ NULL, /* f604 */ NULL, /* f605 */ NULL, /* f606 */ NULL, /* f607 */ NULL, /* f608 */ NULL, /* f609 */ NULL, /* f60a */ NULL, /* f60b */ NULL, /* f60c */ NULL, /* f60d */ NULL, /* f60e */ NULL, /* f60f */ NULL, /* f610 */ NULL, /* f611 */ NULL, /* f612 */ NULL, /* f613 */ NULL, /* f614 */ NULL, /* f615 */ NULL, /* f616 */ NULL, /* f617 */ NULL, /* f618 */ NULL, /* f619 */ NULL, /* f61a */ NULL, /* f61b */ NULL, /* f61c */ NULL, /* f61d */ NULL, /* f61e */ NULL, /* f61f */ NULL, /* f620 */ NULL, /* f621 */ NULL, /* f622 */ NULL, /* f623 */ NULL, /* f624 */ NULL, /* f625 */ NULL, /* f626 */ NULL, /* f627 */ NULL, /* f628 */ NULL, /* f629 */ NULL, /* f62a */ NULL, /* f62b */ NULL, /* f62c */ NULL, /* f62d */ NULL, /* f62e */ NULL, /* f62f */ NULL, /* f630 */ NULL, /* f631 */ NULL, /* f632 */ NULL, /* f633 */ NULL, /* f634 */ NULL, /* f635 */ NULL, /* f636 */ NULL, /* f637 */ NULL, /* f638 */ NULL, /* f639 */ NULL, /* f63a */ NULL, /* f63b */ NULL, /* f63c */ NULL, /* f63d */ NULL, /* f63e */ NULL, /* f63f */ NULL, /* f640 */ NULL, /* f641 */ NULL, /* f642 */ NULL, /* f643 */ NULL, /* f644 */ NULL, /* f645 */ NULL, /* f646 */ NULL, /* f647 */ NULL, /* f648 */ NULL, /* f649 */ NULL, /* f64a */ NULL, /* f64b */ NULL, /* f64c */ NULL, /* f64d */ NULL, /* f64e */ NULL, /* f64f */ NULL, /* f650 */ NULL, /* f651 */ NULL, /* f652 */ NULL, /* f653 */ NULL, /* f654 */ NULL, /* f655 */ NULL, /* f656 */ NULL, /* f657 */ NULL, /* f658 */ NULL, /* f659 */ NULL, /* f65a */ NULL, /* f65b */ NULL, /* f65c */ NULL, /* f65d */ NULL, /* f65e */ NULL, /* f65f */ NULL, /* f660 */ NULL, /* f661 */ NULL, /* f662 */ NULL, /* f663 */ NULL, /* f664 */ NULL, /* f665 */ NULL, /* f666 */ NULL, /* f667 */ NULL, /* f668 */ NULL, /* f669 */ NULL, /* f66a */ NULL, /* f66b */ NULL, /* f66c */ NULL, /* f66d */ NULL, /* f66e */ NULL, /* f66f */ NULL, /* f670 */ NULL, /* f671 */ NULL, /* f672 */ NULL, /* f673 */ NULL, /* f674 */ NULL, /* f675 */ NULL, /* f676 */ NULL, /* f677 */ NULL, /* f678 */ NULL, /* f679 */ NULL, /* f67a */ NULL, /* f67b */ NULL, /* f67c */ NULL, /* f67d */ NULL, /* f67e */ NULL, /* f67f */ NULL, /* f680 */ NULL, /* f681 */ NULL, /* f682 */ NULL, /* f683 */ NULL, /* f684 */ NULL, /* f685 */ NULL, /* f686 */ NULL, /* f687 */ NULL, /* f688 */ NULL, /* f689 */ NULL, /* f68a */ NULL, /* f68b */ NULL, /* f68c */ NULL, /* f68d */ NULL, /* f68e */ NULL, /* f68f */ NULL, /* f690 */ NULL, /* f691 */ NULL, /* f692 */ NULL, /* f693 */ NULL, /* f694 */ NULL, /* f695 */ NULL, /* f696 */ NULL, /* f697 */ NULL, /* f698 */ NULL, /* f699 */ NULL, /* f69a */ NULL, /* f69b */ NULL, /* f69c */ NULL, /* f69d */ NULL, /* f69e */ NULL, /* f69f */ NULL, /* f6a0 */ NULL, /* f6a1 */ NULL, /* f6a2 */ NULL, /* f6a3 */ NULL, /* f6a4 */ NULL, /* f6a5 */ NULL, /* f6a6 */ NULL, /* f6a7 */ NULL, /* f6a8 */ NULL, /* f6a9 */ NULL, /* f6aa */ NULL, /* f6ab */ NULL, /* f6ac */ NULL, /* f6ad */ NULL, /* f6ae */ NULL, /* f6af */ NULL, /* f6b0 */ NULL, /* f6b1 */ NULL, /* f6b2 */ NULL, /* f6b3 */ NULL, /* f6b4 */ NULL, /* f6b5 */ NULL, /* f6b6 */ NULL, /* f6b7 */ NULL, /* f6b8 */ NULL, /* f6b9 */ NULL, /* f6ba */ NULL, /* f6bb */ NULL, /* f6bc */ NULL, /* f6bd */ NULL, /* f6be */ NULL, /* f6bf */ NULL, /* f6c0 */ NULL, /* f6c1 */ NULL, /* f6c2 */ NULL, /* f6c3 */ NULL, /* f6c4 */ NULL, /* f6c5 */ NULL, /* f6c6 */ NULL, /* f6c7 */ NULL, /* f6c8 */ NULL, /* f6c9 */ NULL, /* f6ca */ NULL, /* f6cb */ NULL, /* f6cc */ NULL, /* f6cd */ NULL, /* f6ce */ NULL, /* f6cf */ NULL, /* f6d0 */ NULL, /* f6d1 */ NULL, /* f6d2 */ NULL, /* f6d3 */ NULL, /* f6d4 */ NULL, /* f6d5 */ NULL, /* f6d6 */ NULL, /* f6d7 */ NULL, /* f6d8 */ NULL, /* f6d9 */ NULL, /* f6da */ NULL, /* f6db */ NULL, /* f6dc */ NULL, /* f6dd */ NULL, /* f6de */ NULL, /* f6df */ NULL, /* f6e0 */ NULL, /* f6e1 */ NULL, /* f6e2 */ NULL, /* f6e3 */ NULL, /* f6e4 */ NULL, /* f6e5 */ NULL, /* f6e6 */ NULL, /* f6e7 */ NULL, /* f6e8 */ NULL, /* f6e9 */ NULL, /* f6ea */ NULL, /* f6eb */ NULL, /* f6ec */ NULL, /* f6ed */ NULL, /* f6ee */ NULL, /* f6ef */ NULL, /* f6f0 */ NULL, /* f6f1 */ NULL, /* f6f2 */ NULL, /* f6f3 */ NULL, /* f6f4 */ NULL, /* f6f5 */ NULL, /* f6f6 */ NULL, /* f6f7 */ NULL, /* f6f8 */ NULL, /* f6f9 */ NULL, /* f6fa */ NULL, /* f6fb */ NULL, /* f6fc */ NULL, /* f6fd */ NULL, /* f6fe */ NULL, /* f6ff */ NULL, /* f700 */ NULL, /* f701 */ NULL, /* f702 */ NULL, /* f703 */ NULL, /* f704 */ NULL, /* f705 */ NULL, /* f706 */ NULL, /* f707 */ NULL, /* f708 */ NULL, /* f709 */ NULL, /* f70a */ NULL, /* f70b */ NULL, /* f70c */ NULL, /* f70d */ NULL, /* f70e */ NULL, /* f70f */ NULL, /* f710 */ NULL, /* f711 */ NULL, /* f712 */ NULL, /* f713 */ NULL, /* f714 */ NULL, /* f715 */ NULL, /* f716 */ NULL, /* f717 */ NULL, /* f718 */ NULL, /* f719 */ NULL, /* f71a */ NULL, /* f71b */ NULL, /* f71c */ NULL, /* f71d */ NULL, /* f71e */ NULL, /* f71f */ NULL, /* f720 */ NULL, /* f721 */ NULL, /* f722 */ NULL, /* f723 */ NULL, /* f724 */ NULL, /* f725 */ NULL, /* f726 */ NULL, /* f727 */ NULL, /* f728 */ NULL, /* f729 */ NULL, /* f72a */ NULL, /* f72b */ NULL, /* f72c */ NULL, /* f72d */ NULL, /* f72e */ NULL, /* f72f */ NULL, /* f730 */ NULL, /* f731 */ NULL, /* f732 */ NULL, /* f733 */ NULL, /* f734 */ NULL, /* f735 */ NULL, /* f736 */ NULL, /* f737 */ NULL, /* f738 */ NULL, /* f739 */ NULL, /* f73a */ NULL, /* f73b */ NULL, /* f73c */ NULL, /* f73d */ NULL, /* f73e */ NULL, /* f73f */ NULL, /* f740 */ NULL, /* f741 */ NULL, /* f742 */ NULL, /* f743 */ NULL, /* f744 */ NULL, /* f745 */ NULL, /* f746 */ NULL, /* f747 */ NULL, /* f748 */ NULL, /* f749 */ NULL, /* f74a */ NULL, /* f74b */ NULL, /* f74c */ NULL, /* f74d */ NULL, /* f74e */ NULL, /* f74f */ NULL, /* f750 */ NULL, /* f751 */ NULL, /* f752 */ NULL, /* f753 */ NULL, /* f754 */ NULL, /* f755 */ NULL, /* f756 */ NULL, /* f757 */ NULL, /* f758 */ NULL, /* f759 */ NULL, /* f75a */ NULL, /* f75b */ NULL, /* f75c */ NULL, /* f75d */ NULL, /* f75e */ NULL, /* f75f */ NULL, /* f760 */ NULL, /* f761 */ NULL, /* f762 */ NULL, /* f763 */ NULL, /* f764 */ NULL, /* f765 */ NULL, /* f766 */ NULL, /* f767 */ NULL, /* f768 */ NULL, /* f769 */ NULL, /* f76a */ NULL, /* f76b */ NULL, /* f76c */ NULL, /* f76d */ NULL, /* f76e */ NULL, /* f76f */ NULL, /* f770 */ NULL, /* f771 */ NULL, /* f772 */ NULL, /* f773 */ NULL, /* f774 */ NULL, /* f775 */ NULL, /* f776 */ NULL, /* f777 */ NULL, /* f778 */ NULL, /* f779 */ NULL, /* f77a */ NULL, /* f77b */ NULL, /* f77c */ NULL, /* f77d */ NULL, /* f77e */ NULL, /* f77f */ NULL, /* f780 */ NULL, /* f781 */ NULL, /* f782 */ NULL, /* f783 */ NULL, /* f784 */ NULL, /* f785 */ NULL, /* f786 */ NULL, /* f787 */ NULL, /* f788 */ NULL, /* f789 */ NULL, /* f78a */ NULL, /* f78b */ NULL, /* f78c */ NULL, /* f78d */ NULL, /* f78e */ NULL, /* f78f */ NULL, /* f790 */ NULL, /* f791 */ NULL, /* f792 */ NULL, /* f793 */ NULL, /* f794 */ NULL, /* f795 */ NULL, /* f796 */ NULL, /* f797 */ NULL, /* f798 */ NULL, /* f799 */ NULL, /* f79a */ NULL, /* f79b */ NULL, /* f79c */ NULL, /* f79d */ NULL, /* f79e */ NULL, /* f79f */ NULL, /* f7a0 */ NULL, /* f7a1 */ NULL, /* f7a2 */ NULL, /* f7a3 */ NULL, /* f7a4 */ NULL, /* f7a5 */ NULL, /* f7a6 */ NULL, /* f7a7 */ NULL, /* f7a8 */ NULL, /* f7a9 */ NULL, /* f7aa */ NULL, /* f7ab */ NULL, /* f7ac */ NULL, /* f7ad */ NULL, /* f7ae */ NULL, /* f7af */ NULL, /* f7b0 */ NULL, /* f7b1 */ NULL, /* f7b2 */ NULL, /* f7b3 */ NULL, /* f7b4 */ NULL, /* f7b5 */ NULL, /* f7b6 */ NULL, /* f7b7 */ NULL, /* f7b8 */ NULL, /* f7b9 */ NULL, /* f7ba */ NULL, /* f7bb */ NULL, /* f7bc */ NULL, /* f7bd */ NULL, /* f7be */ NULL, /* f7bf */ NULL, /* f7c0 */ NULL, /* f7c1 */ NULL, /* f7c2 */ NULL, /* f7c3 */ NULL, /* f7c4 */ NULL, /* f7c5 */ NULL, /* f7c6 */ NULL, /* f7c7 */ NULL, /* f7c8 */ NULL, /* f7c9 */ NULL, /* f7ca */ NULL, /* f7cb */ NULL, /* f7cc */ NULL, /* f7cd */ NULL, /* f7ce */ NULL, /* f7cf */ NULL, /* f7d0 */ NULL, /* f7d1 */ NULL, /* f7d2 */ NULL, /* f7d3 */ NULL, /* f7d4 */ NULL, /* f7d5 */ NULL, /* f7d6 */ NULL, /* f7d7 */ NULL, /* f7d8 */ NULL, /* f7d9 */ NULL, /* f7da */ NULL, /* f7db */ NULL, /* f7dc */ NULL, /* f7dd */ NULL, /* f7de */ NULL, /* f7df */ NULL, /* f7e0 */ NULL, /* f7e1 */ NULL, /* f7e2 */ NULL, /* f7e3 */ NULL, /* f7e4 */ NULL, /* f7e5 */ NULL, /* f7e6 */ NULL, /* f7e7 */ NULL, /* f7e8 */ NULL, /* f7e9 */ NULL, /* f7ea */ NULL, /* f7eb */ NULL, /* f7ec */ NULL, /* f7ed */ NULL, /* f7ee */ NULL, /* f7ef */ NULL, /* f7f0 */ NULL, /* f7f1 */ NULL, /* f7f2 */ NULL, /* f7f3 */ NULL, /* f7f4 */ NULL, /* f7f5 */ NULL, /* f7f6 */ NULL, /* f7f7 */ NULL, /* f7f8 */ NULL, /* f7f9 */ NULL, /* f7fa */ NULL, /* f7fb */ NULL, /* f7fc */ NULL, /* f7fd */ NULL, /* f7fe */ NULL, /* f7ff */ NULL, /* f800 */ NULL, /* f801 */ NULL, /* f802 */ NULL, /* f803 */ NULL, /* f804 */ NULL, /* f805 */ NULL, /* f806 */ NULL, /* f807 */ NULL, /* f808 */ NULL, /* f809 */ NULL, /* f80a */ NULL, /* f80b */ NULL, /* f80c */ NULL, /* f80d */ NULL, /* f80e */ NULL, /* f80f */ NULL, /* f810 */ NULL, /* f811 */ NULL, /* f812 */ NULL, /* f813 */ NULL, /* f814 */ NULL, /* f815 */ NULL, /* f816 */ NULL, /* f817 */ NULL, /* f818 */ NULL, /* f819 */ NULL, /* f81a */ NULL, /* f81b */ NULL, /* f81c */ NULL, /* f81d */ NULL, /* f81e */ NULL, /* f81f */ NULL, /* f820 */ NULL, /* f821 */ NULL, /* f822 */ NULL, /* f823 */ NULL, /* f824 */ NULL, /* f825 */ NULL, /* f826 */ NULL, /* f827 */ NULL, /* f828 */ NULL, /* f829 */ NULL, /* f82a */ NULL, /* f82b */ NULL, /* f82c */ NULL, /* f82d */ NULL, /* f82e */ NULL, /* f82f */ NULL, /* f830 */ NULL, /* f831 */ NULL, /* f832 */ NULL, /* f833 */ NULL, /* f834 */ NULL, /* f835 */ NULL, /* f836 */ NULL, /* f837 */ NULL, /* f838 */ NULL, /* f839 */ NULL, /* f83a */ NULL, /* f83b */ NULL, /* f83c */ NULL, /* f83d */ NULL, /* f83e */ NULL, /* f83f */ NULL, /* f840 */ NULL, /* f841 */ NULL, /* f842 */ NULL, /* f843 */ NULL, /* f844 */ NULL, /* f845 */ NULL, /* f846 */ NULL, /* f847 */ NULL, /* f848 */ NULL, /* f849 */ NULL, /* f84a */ NULL, /* f84b */ NULL, /* f84c */ NULL, /* f84d */ NULL, /* f84e */ NULL, /* f84f */ NULL, /* f850 */ NULL, /* f851 */ NULL, /* f852 */ NULL, /* f853 */ NULL, /* f854 */ NULL, /* f855 */ NULL, /* f856 */ NULL, /* f857 */ NULL, /* f858 */ NULL, /* f859 */ NULL, /* f85a */ NULL, /* f85b */ NULL, /* f85c */ NULL, /* f85d */ NULL, /* f85e */ NULL, /* f85f */ NULL, /* f860 */ NULL, /* f861 */ NULL, /* f862 */ NULL, /* f863 */ NULL, /* f864 */ NULL, /* f865 */ NULL, /* f866 */ NULL, /* f867 */ NULL, /* f868 */ NULL, /* f869 */ NULL, /* f86a */ NULL, /* f86b */ NULL, /* f86c */ NULL, /* f86d */ NULL, /* f86e */ NULL, /* f86f */ NULL, /* f870 */ NULL, /* f871 */ NULL, /* f872 */ NULL, /* f873 */ NULL, /* f874 */ NULL, /* f875 */ NULL, /* f876 */ NULL, /* f877 */ NULL, /* f878 */ NULL, /* f879 */ NULL, /* f87a */ NULL, /* f87b */ NULL, /* f87c */ NULL, /* f87d */ NULL, /* f87e */ NULL, /* f87f */ NULL, /* f880 */ NULL, /* f881 */ NULL, /* f882 */ NULL, /* f883 */ NULL, /* f884 */ NULL, /* f885 */ NULL, /* f886 */ NULL, /* f887 */ NULL, /* f888 */ NULL, /* f889 */ NULL, /* f88a */ NULL, /* f88b */ NULL, /* f88c */ NULL, /* f88d */ NULL, /* f88e */ NULL, /* f88f */ NULL, /* f890 */ NULL, /* f891 */ NULL, /* f892 */ NULL, /* f893 */ NULL, /* f894 */ NULL, /* f895 */ NULL, /* f896 */ NULL, /* f897 */ NULL, /* f898 */ NULL, /* f899 */ NULL, /* f89a */ NULL, /* f89b */ NULL, /* f89c */ NULL, /* f89d */ NULL, /* f89e */ NULL, /* f89f */ NULL, /* f8a0 */ NULL, /* f8a1 */ NULL, /* f8a2 */ NULL, /* f8a3 */ NULL, /* f8a4 */ NULL, /* f8a5 */ NULL, /* f8a6 */ NULL, /* f8a7 */ NULL, /* f8a8 */ NULL, /* f8a9 */ NULL, /* f8aa */ NULL, /* f8ab */ NULL, /* f8ac */ NULL, /* f8ad */ NULL, /* f8ae */ NULL, /* f8af */ NULL, /* f8b0 */ NULL, /* f8b1 */ NULL, /* f8b2 */ NULL, /* f8b3 */ NULL, /* f8b4 */ NULL, /* f8b5 */ NULL, /* f8b6 */ NULL, /* f8b7 */ NULL, /* f8b8 */ NULL, /* f8b9 */ NULL, /* f8ba */ NULL, /* f8bb */ NULL, /* f8bc */ NULL, /* f8bd */ NULL, /* f8be */ NULL, /* f8bf */ NULL, /* f8c0 */ NULL, /* f8c1 */ NULL, /* f8c2 */ NULL, /* f8c3 */ NULL, /* f8c4 */ NULL, /* f8c5 */ NULL, /* f8c6 */ NULL, /* f8c7 */ NULL, /* f8c8 */ NULL, /* f8c9 */ NULL, /* f8ca */ NULL, /* f8cb */ NULL, /* f8cc */ NULL, /* f8cd */ NULL, /* f8ce */ NULL, /* f8cf */ NULL, /* f8d0 */ NULL, /* f8d1 */ NULL, /* f8d2 */ NULL, /* f8d3 */ NULL, /* f8d4 */ NULL, /* f8d5 */ NULL, /* f8d6 */ NULL, /* f8d7 */ NULL, /* f8d8 */ NULL, /* f8d9 */ NULL, /* f8da */ NULL, /* f8db */ NULL, /* f8dc */ NULL, /* f8dd */ NULL, /* f8de */ NULL, /* f8df */ NULL, /* f8e0 */ NULL, /* f8e1 */ NULL, /* f8e2 */ NULL, /* f8e3 */ NULL, /* f8e4 */ NULL, /* f8e5 */ NULL, /* f8e6 */ NULL, /* f8e7 */ NULL, /* f8e8 */ NULL, /* f8e9 */ NULL, /* f8ea */ NULL, /* f8eb */ NULL, /* f8ec */ NULL, /* f8ed */ NULL, /* f8ee */ NULL, /* f8ef */ NULL, /* f8f0 */ NULL, /* f8f1 */ NULL, /* f8f2 */ NULL, /* f8f3 */ NULL, /* f8f4 */ NULL, /* f8f5 */ NULL, /* f8f6 */ NULL, /* f8f7 */ NULL, /* f8f8 */ NULL, /* f8f9 */ NULL, /* f8fa */ NULL, /* f8fb */ NULL, /* f8fc */ NULL, /* f8fd */ NULL, /* f8fe */ NULL, /* f8ff */ NULL, /* f900 */ NULL, /* f901 */ NULL, /* f902 */ NULL, /* f903 */ NULL, /* f904 */ NULL, /* f905 */ NULL, /* f906 */ NULL, /* f907 */ NULL, /* f908 */ NULL, /* f909 */ NULL, /* f90a */ NULL, /* f90b */ NULL, /* f90c */ NULL, /* f90d */ NULL, /* f90e */ NULL, /* f90f */ NULL, /* f910 */ NULL, /* f911 */ NULL, /* f912 */ NULL, /* f913 */ NULL, /* f914 */ NULL, /* f915 */ NULL, /* f916 */ NULL, /* f917 */ NULL, /* f918 */ NULL, /* f919 */ NULL, /* f91a */ NULL, /* f91b */ NULL, /* f91c */ NULL, /* f91d */ NULL, /* f91e */ NULL, /* f91f */ NULL, /* f920 */ NULL, /* f921 */ NULL, /* f922 */ NULL, /* f923 */ NULL, /* f924 */ NULL, /* f925 */ NULL, /* f926 */ NULL, /* f927 */ NULL, /* f928 */ NULL, /* f929 */ NULL, /* f92a */ NULL, /* f92b */ NULL, /* f92c */ NULL, /* f92d */ NULL, /* f92e */ NULL, /* f92f */ NULL, /* f930 */ NULL, /* f931 */ NULL, /* f932 */ NULL, /* f933 */ NULL, /* f934 */ NULL, /* f935 */ NULL, /* f936 */ NULL, /* f937 */ NULL, /* f938 */ NULL, /* f939 */ NULL, /* f93a */ NULL, /* f93b */ NULL, /* f93c */ NULL, /* f93d */ NULL, /* f93e */ NULL, /* f93f */ NULL, /* f940 */ NULL, /* f941 */ NULL, /* f942 */ NULL, /* f943 */ NULL, /* f944 */ NULL, /* f945 */ NULL, /* f946 */ NULL, /* f947 */ NULL, /* f948 */ NULL, /* f949 */ NULL, /* f94a */ NULL, /* f94b */ NULL, /* f94c */ NULL, /* f94d */ NULL, /* f94e */ NULL, /* f94f */ NULL, /* f950 */ NULL, /* f951 */ NULL, /* f952 */ NULL, /* f953 */ NULL, /* f954 */ NULL, /* f955 */ NULL, /* f956 */ NULL, /* f957 */ NULL, /* f958 */ NULL, /* f959 */ NULL, /* f95a */ NULL, /* f95b */ NULL, /* f95c */ NULL, /* f95d */ NULL, /* f95e */ NULL, /* f95f */ NULL, /* f960 */ NULL, /* f961 */ NULL, /* f962 */ NULL, /* f963 */ NULL, /* f964 */ NULL, /* f965 */ NULL, /* f966 */ NULL, /* f967 */ NULL, /* f968 */ NULL, /* f969 */ NULL, /* f96a */ NULL, /* f96b */ NULL, /* f96c */ NULL, /* f96d */ NULL, /* f96e */ NULL, /* f96f */ NULL, /* f970 */ NULL, /* f971 */ NULL, /* f972 */ NULL, /* f973 */ NULL, /* f974 */ NULL, /* f975 */ NULL, /* f976 */ NULL, /* f977 */ NULL, /* f978 */ NULL, /* f979 */ NULL, /* f97a */ NULL, /* f97b */ NULL, /* f97c */ NULL, /* f97d */ NULL, /* f97e */ NULL, /* f97f */ NULL, /* f980 */ NULL, /* f981 */ NULL, /* f982 */ NULL, /* f983 */ NULL, /* f984 */ NULL, /* f985 */ NULL, /* f986 */ NULL, /* f987 */ NULL, /* f988 */ NULL, /* f989 */ NULL, /* f98a */ NULL, /* f98b */ NULL, /* f98c */ NULL, /* f98d */ NULL, /* f98e */ NULL, /* f98f */ NULL, /* f990 */ NULL, /* f991 */ NULL, /* f992 */ NULL, /* f993 */ NULL, /* f994 */ NULL, /* f995 */ NULL, /* f996 */ NULL, /* f997 */ NULL, /* f998 */ NULL, /* f999 */ NULL, /* f99a */ NULL, /* f99b */ NULL, /* f99c */ NULL, /* f99d */ NULL, /* f99e */ NULL, /* f99f */ NULL, /* f9a0 */ NULL, /* f9a1 */ NULL, /* f9a2 */ NULL, /* f9a3 */ NULL, /* f9a4 */ NULL, /* f9a5 */ NULL, /* f9a6 */ NULL, /* f9a7 */ NULL, /* f9a8 */ NULL, /* f9a9 */ NULL, /* f9aa */ NULL, /* f9ab */ NULL, /* f9ac */ NULL, /* f9ad */ NULL, /* f9ae */ NULL, /* f9af */ NULL, /* f9b0 */ NULL, /* f9b1 */ NULL, /* f9b2 */ NULL, /* f9b3 */ NULL, /* f9b4 */ NULL, /* f9b5 */ NULL, /* f9b6 */ NULL, /* f9b7 */ NULL, /* f9b8 */ NULL, /* f9b9 */ NULL, /* f9ba */ NULL, /* f9bb */ NULL, /* f9bc */ NULL, /* f9bd */ NULL, /* f9be */ NULL, /* f9bf */ NULL, /* f9c0 */ NULL, /* f9c1 */ NULL, /* f9c2 */ NULL, /* f9c3 */ NULL, /* f9c4 */ NULL, /* f9c5 */ NULL, /* f9c6 */ NULL, /* f9c7 */ NULL, /* f9c8 */ NULL, /* f9c9 */ NULL, /* f9ca */ NULL, /* f9cb */ NULL, /* f9cc */ NULL, /* f9cd */ NULL, /* f9ce */ NULL, /* f9cf */ NULL, /* f9d0 */ NULL, /* f9d1 */ NULL, /* f9d2 */ NULL, /* f9d3 */ NULL, /* f9d4 */ NULL, /* f9d5 */ NULL, /* f9d6 */ NULL, /* f9d7 */ NULL, /* f9d8 */ NULL, /* f9d9 */ NULL, /* f9da */ NULL, /* f9db */ NULL, /* f9dc */ NULL, /* f9dd */ NULL, /* f9de */ NULL, /* f9df */ NULL, /* f9e0 */ NULL, /* f9e1 */ NULL, /* f9e2 */ NULL, /* f9e3 */ NULL, /* f9e4 */ NULL, /* f9e5 */ NULL, /* f9e6 */ NULL, /* f9e7 */ NULL, /* f9e8 */ NULL, /* f9e9 */ NULL, /* f9ea */ NULL, /* f9eb */ NULL, /* f9ec */ NULL, /* f9ed */ NULL, /* f9ee */ NULL, /* f9ef */ NULL, /* f9f0 */ NULL, /* f9f1 */ NULL, /* f9f2 */ NULL, /* f9f3 */ NULL, /* f9f4 */ NULL, /* f9f5 */ NULL, /* f9f6 */ NULL, /* f9f7 */ NULL, /* f9f8 */ NULL, /* f9f9 */ NULL, /* f9fa */ NULL, /* f9fb */ NULL, /* f9fc */ NULL, /* f9fd */ NULL, /* f9fe */ NULL, /* f9ff */ NULL, /* fa00 */ NULL, /* fa01 */ NULL, /* fa02 */ NULL, /* fa03 */ NULL, /* fa04 */ NULL, /* fa05 */ NULL, /* fa06 */ NULL, /* fa07 */ NULL, /* fa08 */ NULL, /* fa09 */ NULL, /* fa0a */ NULL, /* fa0b */ NULL, /* fa0c */ NULL, /* fa0d */ NULL, /* fa0e */ NULL, /* fa0f */ NULL, /* fa10 */ NULL, /* fa11 */ NULL, /* fa12 */ NULL, /* fa13 */ NULL, /* fa14 */ NULL, /* fa15 */ NULL, /* fa16 */ NULL, /* fa17 */ NULL, /* fa18 */ NULL, /* fa19 */ NULL, /* fa1a */ NULL, /* fa1b */ NULL, /* fa1c */ NULL, /* fa1d */ NULL, /* fa1e */ NULL, /* fa1f */ NULL, /* fa20 */ NULL, /* fa21 */ NULL, /* fa22 */ NULL, /* fa23 */ NULL, /* fa24 */ NULL, /* fa25 */ NULL, /* fa26 */ NULL, /* fa27 */ NULL, /* fa28 */ NULL, /* fa29 */ NULL, /* fa2a */ NULL, /* fa2b */ NULL, /* fa2c */ NULL, /* fa2d */ NULL, /* fa2e */ NULL, /* fa2f */ NULL, /* fa30 */ NULL, /* fa31 */ NULL, /* fa32 */ NULL, /* fa33 */ NULL, /* fa34 */ NULL, /* fa35 */ NULL, /* fa36 */ NULL, /* fa37 */ NULL, /* fa38 */ NULL, /* fa39 */ NULL, /* fa3a */ NULL, /* fa3b */ NULL, /* fa3c */ NULL, /* fa3d */ NULL, /* fa3e */ NULL, /* fa3f */ NULL, /* fa40 */ NULL, /* fa41 */ NULL, /* fa42 */ NULL, /* fa43 */ NULL, /* fa44 */ NULL, /* fa45 */ NULL, /* fa46 */ NULL, /* fa47 */ NULL, /* fa48 */ NULL, /* fa49 */ NULL, /* fa4a */ NULL, /* fa4b */ NULL, /* fa4c */ NULL, /* fa4d */ NULL, /* fa4e */ NULL, /* fa4f */ NULL, /* fa50 */ NULL, /* fa51 */ NULL, /* fa52 */ NULL, /* fa53 */ NULL, /* fa54 */ NULL, /* fa55 */ NULL, /* fa56 */ NULL, /* fa57 */ NULL, /* fa58 */ NULL, /* fa59 */ NULL, /* fa5a */ NULL, /* fa5b */ NULL, /* fa5c */ NULL, /* fa5d */ NULL, /* fa5e */ NULL, /* fa5f */ NULL, /* fa60 */ NULL, /* fa61 */ NULL, /* fa62 */ NULL, /* fa63 */ NULL, /* fa64 */ NULL, /* fa65 */ NULL, /* fa66 */ NULL, /* fa67 */ NULL, /* fa68 */ NULL, /* fa69 */ NULL, /* fa6a */ NULL, /* fa6b */ NULL, /* fa6c */ NULL, /* fa6d */ NULL, /* fa6e */ NULL, /* fa6f */ NULL, /* fa70 */ NULL, /* fa71 */ NULL, /* fa72 */ NULL, /* fa73 */ NULL, /* fa74 */ NULL, /* fa75 */ NULL, /* fa76 */ NULL, /* fa77 */ NULL, /* fa78 */ NULL, /* fa79 */ NULL, /* fa7a */ NULL, /* fa7b */ NULL, /* fa7c */ NULL, /* fa7d */ NULL, /* fa7e */ NULL, /* fa7f */ NULL, /* fa80 */ NULL, /* fa81 */ NULL, /* fa82 */ NULL, /* fa83 */ NULL, /* fa84 */ NULL, /* fa85 */ NULL, /* fa86 */ NULL, /* fa87 */ NULL, /* fa88 */ NULL, /* fa89 */ NULL, /* fa8a */ NULL, /* fa8b */ NULL, /* fa8c */ NULL, /* fa8d */ NULL, /* fa8e */ NULL, /* fa8f */ NULL, /* fa90 */ NULL, /* fa91 */ NULL, /* fa92 */ NULL, /* fa93 */ NULL, /* fa94 */ NULL, /* fa95 */ NULL, /* fa96 */ NULL, /* fa97 */ NULL, /* fa98 */ NULL, /* fa99 */ NULL, /* fa9a */ NULL, /* fa9b */ NULL, /* fa9c */ NULL, /* fa9d */ NULL, /* fa9e */ NULL, /* fa9f */ NULL, /* faa0 */ NULL, /* faa1 */ NULL, /* faa2 */ NULL, /* faa3 */ NULL, /* faa4 */ NULL, /* faa5 */ NULL, /* faa6 */ NULL, /* faa7 */ NULL, /* faa8 */ NULL, /* faa9 */ NULL, /* faaa */ NULL, /* faab */ NULL, /* faac */ NULL, /* faad */ NULL, /* faae */ NULL, /* faaf */ NULL, /* fab0 */ NULL, /* fab1 */ NULL, /* fab2 */ NULL, /* fab3 */ NULL, /* fab4 */ NULL, /* fab5 */ NULL, /* fab6 */ NULL, /* fab7 */ NULL, /* fab8 */ NULL, /* fab9 */ NULL, /* faba */ NULL, /* fabb */ NULL, /* fabc */ NULL, /* fabd */ NULL, /* fabe */ NULL, /* fabf */ NULL, /* fac0 */ NULL, /* fac1 */ NULL, /* fac2 */ NULL, /* fac3 */ NULL, /* fac4 */ NULL, /* fac5 */ NULL, /* fac6 */ NULL, /* fac7 */ NULL, /* fac8 */ NULL, /* fac9 */ NULL, /* faca */ NULL, /* facb */ NULL, /* facc */ NULL, /* facd */ NULL, /* face */ NULL, /* facf */ NULL, /* fad0 */ NULL, /* fad1 */ NULL, /* fad2 */ NULL, /* fad3 */ NULL, /* fad4 */ NULL, /* fad5 */ NULL, /* fad6 */ NULL, /* fad7 */ NULL, /* fad8 */ NULL, /* fad9 */ NULL, /* fada */ NULL, /* fadb */ NULL, /* fadc */ NULL, /* fadd */ NULL, /* fade */ NULL, /* fadf */ NULL, /* fae0 */ NULL, /* fae1 */ NULL, /* fae2 */ NULL, /* fae3 */ NULL, /* fae4 */ NULL, /* fae5 */ NULL, /* fae6 */ NULL, /* fae7 */ NULL, /* fae8 */ NULL, /* fae9 */ NULL, /* faea */ NULL, /* faeb */ NULL, /* faec */ NULL, /* faed */ NULL, /* faee */ NULL, /* faef */ NULL, /* faf0 */ NULL, /* faf1 */ NULL, /* faf2 */ NULL, /* faf3 */ NULL, /* faf4 */ NULL, /* faf5 */ NULL, /* faf6 */ NULL, /* faf7 */ NULL, /* faf8 */ NULL, /* faf9 */ NULL, /* fafa */ NULL, /* fafb */ NULL, /* fafc */ NULL, /* fafd */ NULL, /* fafe */ NULL, /* faff */ NULL, /* fb00 */ NULL, /* fb01 */ NULL, /* fb02 */ NULL, /* fb03 */ NULL, /* fb04 */ NULL, /* fb05 */ NULL, /* fb06 */ NULL, /* fb07 */ NULL, /* fb08 */ NULL, /* fb09 */ NULL, /* fb0a */ NULL, /* fb0b */ NULL, /* fb0c */ NULL, /* fb0d */ NULL, /* fb0e */ NULL, /* fb0f */ NULL, /* fb10 */ NULL, /* fb11 */ NULL, /* fb12 */ NULL, /* fb13 */ NULL, /* fb14 */ NULL, /* fb15 */ NULL, /* fb16 */ NULL, /* fb17 */ NULL, /* fb18 */ NULL, /* fb19 */ NULL, /* fb1a */ NULL, /* fb1b */ NULL, /* fb1c */ NULL, /* fb1d */ NULL, /* fb1e */ NULL, /* fb1f */ NULL, /* fb20 */ NULL, /* fb21 */ NULL, /* fb22 */ NULL, /* fb23 */ NULL, /* fb24 */ NULL, /* fb25 */ NULL, /* fb26 */ NULL, /* fb27 */ NULL, /* fb28 */ NULL, /* fb29 */ NULL, /* fb2a */ NULL, /* fb2b */ NULL, /* fb2c */ NULL, /* fb2d */ NULL, /* fb2e */ NULL, /* fb2f */ NULL, /* fb30 */ NULL, /* fb31 */ NULL, /* fb32 */ NULL, /* fb33 */ NULL, /* fb34 */ NULL, /* fb35 */ NULL, /* fb36 */ NULL, /* fb37 */ NULL, /* fb38 */ NULL, /* fb39 */ NULL, /* fb3a */ NULL, /* fb3b */ NULL, /* fb3c */ NULL, /* fb3d */ NULL, /* fb3e */ NULL, /* fb3f */ NULL, /* fb40 */ NULL, /* fb41 */ NULL, /* fb42 */ NULL, /* fb43 */ NULL, /* fb44 */ NULL, /* fb45 */ NULL, /* fb46 */ NULL, /* fb47 */ NULL, /* fb48 */ NULL, /* fb49 */ NULL, /* fb4a */ NULL, /* fb4b */ NULL, /* fb4c */ NULL, /* fb4d */ NULL, /* fb4e */ NULL, /* fb4f */ NULL, /* fb50 */ NULL, /* fb51 */ NULL, /* fb52 */ NULL, /* fb53 */ NULL, /* fb54 */ NULL, /* fb55 */ NULL, /* fb56 */ NULL, /* fb57 */ NULL, /* fb58 */ NULL, /* fb59 */ NULL, /* fb5a */ NULL, /* fb5b */ NULL, /* fb5c */ NULL, /* fb5d */ NULL, /* fb5e */ NULL, /* fb5f */ NULL, /* fb60 */ NULL, /* fb61 */ NULL, /* fb62 */ NULL, /* fb63 */ NULL, /* fb64 */ NULL, /* fb65 */ NULL, /* fb66 */ NULL, /* fb67 */ NULL, /* fb68 */ NULL, /* fb69 */ NULL, /* fb6a */ NULL, /* fb6b */ NULL, /* fb6c */ NULL, /* fb6d */ NULL, /* fb6e */ NULL, /* fb6f */ NULL, /* fb70 */ NULL, /* fb71 */ NULL, /* fb72 */ NULL, /* fb73 */ NULL, /* fb74 */ NULL, /* fb75 */ NULL, /* fb76 */ NULL, /* fb77 */ NULL, /* fb78 */ NULL, /* fb79 */ NULL, /* fb7a */ NULL, /* fb7b */ NULL, /* fb7c */ NULL, /* fb7d */ NULL, /* fb7e */ NULL, /* fb7f */ NULL, /* fb80 */ NULL, /* fb81 */ NULL, /* fb82 */ NULL, /* fb83 */ NULL, /* fb84 */ NULL, /* fb85 */ NULL, /* fb86 */ NULL, /* fb87 */ NULL, /* fb88 */ NULL, /* fb89 */ NULL, /* fb8a */ NULL, /* fb8b */ NULL, /* fb8c */ NULL, /* fb8d */ NULL, /* fb8e */ NULL, /* fb8f */ NULL, /* fb90 */ NULL, /* fb91 */ NULL, /* fb92 */ NULL, /* fb93 */ NULL, /* fb94 */ NULL, /* fb95 */ NULL, /* fb96 */ NULL, /* fb97 */ NULL, /* fb98 */ NULL, /* fb99 */ NULL, /* fb9a */ NULL, /* fb9b */ NULL, /* fb9c */ NULL, /* fb9d */ NULL, /* fb9e */ NULL, /* fb9f */ NULL, /* fba0 */ NULL, /* fba1 */ NULL, /* fba2 */ NULL, /* fba3 */ NULL, /* fba4 */ NULL, /* fba5 */ NULL, /* fba6 */ NULL, /* fba7 */ NULL, /* fba8 */ NULL, /* fba9 */ NULL, /* fbaa */ NULL, /* fbab */ NULL, /* fbac */ NULL, /* fbad */ NULL, /* fbae */ NULL, /* fbaf */ NULL, /* fbb0 */ NULL, /* fbb1 */ NULL, /* fbb2 */ NULL, /* fbb3 */ NULL, /* fbb4 */ NULL, /* fbb5 */ NULL, /* fbb6 */ NULL, /* fbb7 */ NULL, /* fbb8 */ NULL, /* fbb9 */ NULL, /* fbba */ NULL, /* fbbb */ NULL, /* fbbc */ NULL, /* fbbd */ NULL, /* fbbe */ NULL, /* fbbf */ NULL, /* fbc0 */ NULL, /* fbc1 */ NULL, /* fbc2 */ NULL, /* fbc3 */ NULL, /* fbc4 */ NULL, /* fbc5 */ NULL, /* fbc6 */ NULL, /* fbc7 */ NULL, /* fbc8 */ NULL, /* fbc9 */ NULL, /* fbca */ NULL, /* fbcb */ NULL, /* fbcc */ NULL, /* fbcd */ NULL, /* fbce */ NULL, /* fbcf */ NULL, /* fbd0 */ NULL, /* fbd1 */ NULL, /* fbd2 */ NULL, /* fbd3 */ NULL, /* fbd4 */ NULL, /* fbd5 */ NULL, /* fbd6 */ NULL, /* fbd7 */ NULL, /* fbd8 */ NULL, /* fbd9 */ NULL, /* fbda */ NULL, /* fbdb */ NULL, /* fbdc */ NULL, /* fbdd */ NULL, /* fbde */ NULL, /* fbdf */ NULL, /* fbe0 */ NULL, /* fbe1 */ NULL, /* fbe2 */ NULL, /* fbe3 */ NULL, /* fbe4 */ NULL, /* fbe5 */ NULL, /* fbe6 */ NULL, /* fbe7 */ NULL, /* fbe8 */ NULL, /* fbe9 */ NULL, /* fbea */ NULL, /* fbeb */ NULL, /* fbec */ NULL, /* fbed */ NULL, /* fbee */ NULL, /* fbef */ NULL, /* fbf0 */ NULL, /* fbf1 */ NULL, /* fbf2 */ NULL, /* fbf3 */ NULL, /* fbf4 */ NULL, /* fbf5 */ NULL, /* fbf6 */ NULL, /* fbf7 */ NULL, /* fbf8 */ NULL, /* fbf9 */ NULL, /* fbfa */ NULL, /* fbfb */ NULL, /* fbfc */ NULL, /* fbfd */ NULL, /* fbfe */ NULL, /* fbff */ NULL, /* fc00 */ NULL, /* fc01 */ NULL, /* fc02 */ NULL, /* fc03 */ NULL, /* fc04 */ NULL, /* fc05 */ NULL, /* fc06 */ NULL, /* fc07 */ NULL, /* fc08 */ NULL, /* fc09 */ NULL, /* fc0a */ NULL, /* fc0b */ NULL, /* fc0c */ NULL, /* fc0d */ NULL, /* fc0e */ NULL, /* fc0f */ NULL, /* fc10 */ NULL, /* fc11 */ NULL, /* fc12 */ NULL, /* fc13 */ NULL, /* fc14 */ NULL, /* fc15 */ NULL, /* fc16 */ NULL, /* fc17 */ NULL, /* fc18 */ NULL, /* fc19 */ NULL, /* fc1a */ NULL, /* fc1b */ NULL, /* fc1c */ NULL, /* fc1d */ NULL, /* fc1e */ NULL, /* fc1f */ NULL, /* fc20 */ NULL, /* fc21 */ NULL, /* fc22 */ NULL, /* fc23 */ NULL, /* fc24 */ NULL, /* fc25 */ NULL, /* fc26 */ NULL, /* fc27 */ NULL, /* fc28 */ NULL, /* fc29 */ NULL, /* fc2a */ NULL, /* fc2b */ NULL, /* fc2c */ NULL, /* fc2d */ NULL, /* fc2e */ NULL, /* fc2f */ NULL, /* fc30 */ NULL, /* fc31 */ NULL, /* fc32 */ NULL, /* fc33 */ NULL, /* fc34 */ NULL, /* fc35 */ NULL, /* fc36 */ NULL, /* fc37 */ NULL, /* fc38 */ NULL, /* fc39 */ NULL, /* fc3a */ NULL, /* fc3b */ NULL, /* fc3c */ NULL, /* fc3d */ NULL, /* fc3e */ NULL, /* fc3f */ NULL, /* fc40 */ NULL, /* fc41 */ NULL, /* fc42 */ NULL, /* fc43 */ NULL, /* fc44 */ NULL, /* fc45 */ NULL, /* fc46 */ NULL, /* fc47 */ NULL, /* fc48 */ NULL, /* fc49 */ NULL, /* fc4a */ NULL, /* fc4b */ NULL, /* fc4c */ NULL, /* fc4d */ NULL, /* fc4e */ NULL, /* fc4f */ NULL, /* fc50 */ NULL, /* fc51 */ NULL, /* fc52 */ NULL, /* fc53 */ NULL, /* fc54 */ NULL, /* fc55 */ NULL, /* fc56 */ NULL, /* fc57 */ NULL, /* fc58 */ NULL, /* fc59 */ NULL, /* fc5a */ NULL, /* fc5b */ NULL, /* fc5c */ NULL, /* fc5d */ NULL, /* fc5e */ NULL, /* fc5f */ NULL, /* fc60 */ NULL, /* fc61 */ NULL, /* fc62 */ NULL, /* fc63 */ NULL, /* fc64 */ NULL, /* fc65 */ NULL, /* fc66 */ NULL, /* fc67 */ NULL, /* fc68 */ NULL, /* fc69 */ NULL, /* fc6a */ NULL, /* fc6b */ NULL, /* fc6c */ NULL, /* fc6d */ NULL, /* fc6e */ NULL, /* fc6f */ NULL, /* fc70 */ NULL, /* fc71 */ NULL, /* fc72 */ NULL, /* fc73 */ NULL, /* fc74 */ NULL, /* fc75 */ NULL, /* fc76 */ NULL, /* fc77 */ NULL, /* fc78 */ NULL, /* fc79 */ NULL, /* fc7a */ NULL, /* fc7b */ NULL, /* fc7c */ NULL, /* fc7d */ NULL, /* fc7e */ NULL, /* fc7f */ NULL, /* fc80 */ NULL, /* fc81 */ NULL, /* fc82 */ NULL, /* fc83 */ NULL, /* fc84 */ NULL, /* fc85 */ NULL, /* fc86 */ NULL, /* fc87 */ NULL, /* fc88 */ NULL, /* fc89 */ NULL, /* fc8a */ NULL, /* fc8b */ NULL, /* fc8c */ NULL, /* fc8d */ NULL, /* fc8e */ NULL, /* fc8f */ NULL, /* fc90 */ NULL, /* fc91 */ NULL, /* fc92 */ NULL, /* fc93 */ NULL, /* fc94 */ NULL, /* fc95 */ NULL, /* fc96 */ NULL, /* fc97 */ NULL, /* fc98 */ NULL, /* fc99 */ NULL, /* fc9a */ NULL, /* fc9b */ NULL, /* fc9c */ NULL, /* fc9d */ NULL, /* fc9e */ NULL, /* fc9f */ NULL, /* fca0 */ NULL, /* fca1 */ NULL, /* fca2 */ NULL, /* fca3 */ NULL, /* fca4 */ NULL, /* fca5 */ NULL, /* fca6 */ NULL, /* fca7 */ NULL, /* fca8 */ NULL, /* fca9 */ NULL, /* fcaa */ NULL, /* fcab */ NULL, /* fcac */ NULL, /* fcad */ NULL, /* fcae */ NULL, /* fcaf */ NULL, /* fcb0 */ NULL, /* fcb1 */ NULL, /* fcb2 */ NULL, /* fcb3 */ NULL, /* fcb4 */ NULL, /* fcb5 */ NULL, /* fcb6 */ NULL, /* fcb7 */ NULL, /* fcb8 */ NULL, /* fcb9 */ NULL, /* fcba */ NULL, /* fcbb */ NULL, /* fcbc */ NULL, /* fcbd */ NULL, /* fcbe */ NULL, /* fcbf */ NULL, /* fcc0 */ NULL, /* fcc1 */ NULL, /* fcc2 */ NULL, /* fcc3 */ NULL, /* fcc4 */ NULL, /* fcc5 */ NULL, /* fcc6 */ NULL, /* fcc7 */ NULL, /* fcc8 */ NULL, /* fcc9 */ NULL, /* fcca */ NULL, /* fccb */ NULL, /* fccc */ NULL, /* fccd */ NULL, /* fcce */ NULL, /* fccf */ NULL, /* fcd0 */ NULL, /* fcd1 */ NULL, /* fcd2 */ NULL, /* fcd3 */ NULL, /* fcd4 */ NULL, /* fcd5 */ NULL, /* fcd6 */ NULL, /* fcd7 */ NULL, /* fcd8 */ NULL, /* fcd9 */ NULL, /* fcda */ NULL, /* fcdb */ NULL, /* fcdc */ NULL, /* fcdd */ NULL, /* fcde */ NULL, /* fcdf */ NULL, /* fce0 */ NULL, /* fce1 */ NULL, /* fce2 */ NULL, /* fce3 */ NULL, /* fce4 */ NULL, /* fce5 */ NULL, /* fce6 */ NULL, /* fce7 */ NULL, /* fce8 */ NULL, /* fce9 */ NULL, /* fcea */ NULL, /* fceb */ NULL, /* fcec */ NULL, /* fced */ NULL, /* fcee */ NULL, /* fcef */ NULL, /* fcf0 */ NULL, /* fcf1 */ NULL, /* fcf2 */ NULL, /* fcf3 */ NULL, /* fcf4 */ NULL, /* fcf5 */ NULL, /* fcf6 */ NULL, /* fcf7 */ NULL, /* fcf8 */ NULL, /* fcf9 */ NULL, /* fcfa */ NULL, /* fcfb */ NULL, /* fcfc */ NULL, /* fcfd */ NULL, /* fcfe */ NULL, /* fcff */ NULL, /* fd00 */ NULL, /* fd01 */ NULL, /* fd02 */ NULL, /* fd03 */ NULL, /* fd04 */ NULL, /* fd05 */ NULL, /* fd06 */ NULL, /* fd07 */ NULL, /* fd08 */ NULL, /* fd09 */ NULL, /* fd0a */ NULL, /* fd0b */ NULL, /* fd0c */ NULL, /* fd0d */ NULL, /* fd0e */ NULL, /* fd0f */ NULL, /* fd10 */ NULL, /* fd11 */ NULL, /* fd12 */ NULL, /* fd13 */ NULL, /* fd14 */ NULL, /* fd15 */ NULL, /* fd16 */ NULL, /* fd17 */ NULL, /* fd18 */ NULL, /* fd19 */ NULL, /* fd1a */ NULL, /* fd1b */ NULL, /* fd1c */ NULL, /* fd1d */ NULL, /* fd1e */ NULL, /* fd1f */ NULL, /* fd20 */ NULL, /* fd21 */ NULL, /* fd22 */ NULL, /* fd23 */ NULL, /* fd24 */ NULL, /* fd25 */ NULL, /* fd26 */ NULL, /* fd27 */ NULL, /* fd28 */ NULL, /* fd29 */ NULL, /* fd2a */ NULL, /* fd2b */ NULL, /* fd2c */ NULL, /* fd2d */ NULL, /* fd2e */ NULL, /* fd2f */ NULL, /* fd30 */ NULL, /* fd31 */ NULL, /* fd32 */ NULL, /* fd33 */ NULL, /* fd34 */ NULL, /* fd35 */ NULL, /* fd36 */ NULL, /* fd37 */ NULL, /* fd38 */ NULL, /* fd39 */ NULL, /* fd3a */ NULL, /* fd3b */ NULL, /* fd3c */ NULL, /* fd3d */ NULL, /* fd3e */ NULL, /* fd3f */ NULL, /* fd40 */ NULL, /* fd41 */ NULL, /* fd42 */ NULL, /* fd43 */ NULL, /* fd44 */ NULL, /* fd45 */ NULL, /* fd46 */ NULL, /* fd47 */ NULL, /* fd48 */ NULL, /* fd49 */ NULL, /* fd4a */ NULL, /* fd4b */ NULL, /* fd4c */ NULL, /* fd4d */ NULL, /* fd4e */ NULL, /* fd4f */ NULL, /* fd50 */ NULL, /* fd51 */ NULL, /* fd52 */ NULL, /* fd53 */ NULL, /* fd54 */ NULL, /* fd55 */ NULL, /* fd56 */ NULL, /* fd57 */ NULL, /* fd58 */ NULL, /* fd59 */ NULL, /* fd5a */ NULL, /* fd5b */ NULL, /* fd5c */ NULL, /* fd5d */ NULL, /* fd5e */ NULL, /* fd5f */ NULL, /* fd60 */ NULL, /* fd61 */ NULL, /* fd62 */ NULL, /* fd63 */ NULL, /* fd64 */ NULL, /* fd65 */ NULL, /* fd66 */ NULL, /* fd67 */ NULL, /* fd68 */ NULL, /* fd69 */ NULL, /* fd6a */ NULL, /* fd6b */ NULL, /* fd6c */ NULL, /* fd6d */ NULL, /* fd6e */ NULL, /* fd6f */ NULL, /* fd70 */ NULL, /* fd71 */ NULL, /* fd72 */ NULL, /* fd73 */ NULL, /* fd74 */ NULL, /* fd75 */ NULL, /* fd76 */ NULL, /* fd77 */ NULL, /* fd78 */ NULL, /* fd79 */ NULL, /* fd7a */ NULL, /* fd7b */ NULL, /* fd7c */ NULL, /* fd7d */ NULL, /* fd7e */ NULL, /* fd7f */ NULL, /* fd80 */ NULL, /* fd81 */ NULL, /* fd82 */ NULL, /* fd83 */ NULL, /* fd84 */ NULL, /* fd85 */ NULL, /* fd86 */ NULL, /* fd87 */ NULL, /* fd88 */ NULL, /* fd89 */ NULL, /* fd8a */ NULL, /* fd8b */ NULL, /* fd8c */ NULL, /* fd8d */ NULL, /* fd8e */ NULL, /* fd8f */ NULL, /* fd90 */ NULL, /* fd91 */ NULL, /* fd92 */ NULL, /* fd93 */ NULL, /* fd94 */ NULL, /* fd95 */ NULL, /* fd96 */ NULL, /* fd97 */ NULL, /* fd98 */ NULL, /* fd99 */ NULL, /* fd9a */ NULL, /* fd9b */ NULL, /* fd9c */ NULL, /* fd9d */ NULL, /* fd9e */ NULL, /* fd9f */ NULL, /* fda0 */ NULL, /* fda1 */ NULL, /* fda2 */ NULL, /* fda3 */ NULL, /* fda4 */ NULL, /* fda5 */ NULL, /* fda6 */ NULL, /* fda7 */ NULL, /* fda8 */ NULL, /* fda9 */ NULL, /* fdaa */ NULL, /* fdab */ NULL, /* fdac */ NULL, /* fdad */ NULL, /* fdae */ NULL, /* fdaf */ NULL, /* fdb0 */ NULL, /* fdb1 */ NULL, /* fdb2 */ NULL, /* fdb3 */ NULL, /* fdb4 */ NULL, /* fdb5 */ NULL, /* fdb6 */ NULL, /* fdb7 */ NULL, /* fdb8 */ NULL, /* fdb9 */ NULL, /* fdba */ NULL, /* fdbb */ NULL, /* fdbc */ NULL, /* fdbd */ NULL, /* fdbe */ NULL, /* fdbf */ NULL, /* fdc0 */ NULL, /* fdc1 */ NULL, /* fdc2 */ NULL, /* fdc3 */ NULL, /* fdc4 */ NULL, /* fdc5 */ NULL, /* fdc6 */ NULL, /* fdc7 */ NULL, /* fdc8 */ NULL, /* fdc9 */ NULL, /* fdca */ NULL, /* fdcb */ NULL, /* fdcc */ NULL, /* fdcd */ NULL, /* fdce */ NULL, /* fdcf */ NULL, /* fdd0 */ NULL, /* fdd1 */ NULL, /* fdd2 */ NULL, /* fdd3 */ NULL, /* fdd4 */ NULL, /* fdd5 */ NULL, /* fdd6 */ NULL, /* fdd7 */ NULL, /* fdd8 */ NULL, /* fdd9 */ NULL, /* fdda */ NULL, /* fddb */ NULL, /* fddc */ NULL, /* fddd */ NULL, /* fdde */ NULL, /* fddf */ NULL, /* fde0 */ NULL, /* fde1 */ NULL, /* fde2 */ NULL, /* fde3 */ NULL, /* fde4 */ NULL, /* fde5 */ NULL, /* fde6 */ NULL, /* fde7 */ NULL, /* fde8 */ NULL, /* fde9 */ NULL, /* fdea */ NULL, /* fdeb */ NULL, /* fdec */ NULL, /* fded */ NULL, /* fdee */ NULL, /* fdef */ NULL, /* fdf0 */ NULL, /* fdf1 */ NULL, /* fdf2 */ NULL, /* fdf3 */ NULL, /* fdf4 */ NULL, /* fdf5 */ NULL, /* fdf6 */ NULL, /* fdf7 */ NULL, /* fdf8 */ NULL, /* fdf9 */ NULL, /* fdfa */ NULL, /* fdfb */ NULL, /* fdfc */ NULL, /* fdfd */ NULL, /* fdfe */ NULL, /* fdff */ NULL, /* fe00 */ NULL, /* fe01 */ NULL, /* fe02 */ NULL, /* fe03 */ NULL, /* fe04 */ NULL, /* fe05 */ NULL, /* fe06 */ NULL, /* fe07 */ NULL, /* fe08 */ NULL, /* fe09 */ NULL, /* fe0a */ NULL, /* fe0b */ NULL, /* fe0c */ NULL, /* fe0d */ NULL, /* fe0e */ NULL, /* fe0f */ NULL, /* fe10 */ NULL, /* fe11 */ NULL, /* fe12 */ NULL, /* fe13 */ NULL, /* fe14 */ NULL, /* fe15 */ NULL, /* fe16 */ NULL, /* fe17 */ NULL, /* fe18 */ NULL, /* fe19 */ NULL, /* fe1a */ NULL, /* fe1b */ NULL, /* fe1c */ NULL, /* fe1d */ NULL, /* fe1e */ NULL, /* fe1f */ NULL, /* fe20 */ NULL, /* fe21 */ NULL, /* fe22 */ NULL, /* fe23 */ NULL, /* fe24 */ NULL, /* fe25 */ NULL, /* fe26 */ NULL, /* fe27 */ NULL, /* fe28 */ NULL, /* fe29 */ NULL, /* fe2a */ NULL, /* fe2b */ NULL, /* fe2c */ NULL, /* fe2d */ NULL, /* fe2e */ NULL, /* fe2f */ NULL, /* fe30 */ NULL, /* fe31 */ NULL, /* fe32 */ NULL, /* fe33 */ NULL, /* fe34 */ NULL, /* fe35 */ NULL, /* fe36 */ NULL, /* fe37 */ NULL, /* fe38 */ NULL, /* fe39 */ NULL, /* fe3a */ NULL, /* fe3b */ NULL, /* fe3c */ NULL, /* fe3d */ NULL, /* fe3e */ NULL, /* fe3f */ NULL, /* fe40 */ NULL, /* fe41 */ NULL, /* fe42 */ NULL, /* fe43 */ NULL, /* fe44 */ NULL, /* fe45 */ NULL, /* fe46 */ NULL, /* fe47 */ NULL, /* fe48 */ NULL, /* fe49 */ NULL, /* fe4a */ NULL, /* fe4b */ NULL, /* fe4c */ NULL, /* fe4d */ NULL, /* fe4e */ NULL, /* fe4f */ NULL, /* fe50 */ NULL, /* fe51 */ NULL, /* fe52 */ NULL, /* fe53 */ NULL, /* fe54 */ NULL, /* fe55 */ NULL, /* fe56 */ NULL, /* fe57 */ NULL, /* fe58 */ NULL, /* fe59 */ NULL, /* fe5a */ NULL, /* fe5b */ NULL, /* fe5c */ NULL, /* fe5d */ NULL, /* fe5e */ NULL, /* fe5f */ NULL, /* fe60 */ NULL, /* fe61 */ NULL, /* fe62 */ NULL, /* fe63 */ NULL, /* fe64 */ NULL, /* fe65 */ NULL, /* fe66 */ NULL, /* fe67 */ NULL, /* fe68 */ NULL, /* fe69 */ NULL, /* fe6a */ NULL, /* fe6b */ NULL, /* fe6c */ NULL, /* fe6d */ NULL, /* fe6e */ NULL, /* fe6f */ NULL, /* fe70 */ NULL, /* fe71 */ NULL, /* fe72 */ NULL, /* fe73 */ NULL, /* fe74 */ NULL, /* fe75 */ NULL, /* fe76 */ NULL, /* fe77 */ NULL, /* fe78 */ NULL, /* fe79 */ NULL, /* fe7a */ NULL, /* fe7b */ NULL, /* fe7c */ NULL, /* fe7d */ NULL, /* fe7e */ NULL, /* fe7f */ NULL, /* fe80 */ NULL, /* fe81 */ NULL, /* fe82 */ NULL, /* fe83 */ NULL, /* fe84 */ NULL, /* fe85 */ NULL, /* fe86 */ NULL, /* fe87 */ NULL, /* fe88 */ NULL, /* fe89 */ NULL, /* fe8a */ NULL, /* fe8b */ NULL, /* fe8c */ NULL, /* fe8d */ NULL, /* fe8e */ NULL, /* fe8f */ NULL, /* fe90 */ NULL, /* fe91 */ NULL, /* fe92 */ NULL, /* fe93 */ NULL, /* fe94 */ NULL, /* fe95 */ NULL, /* fe96 */ NULL, /* fe97 */ NULL, /* fe98 */ NULL, /* fe99 */ NULL, /* fe9a */ NULL, /* fe9b */ NULL, /* fe9c */ NULL, /* fe9d */ NULL, /* fe9e */ NULL, /* fe9f */ NULL, /* fea0 */ NULL, /* fea1 */ NULL, /* fea2 */ NULL, /* fea3 */ NULL, /* fea4 */ NULL, /* fea5 */ NULL, /* fea6 */ NULL, /* fea7 */ NULL, /* fea8 */ NULL, /* fea9 */ NULL, /* feaa */ NULL, /* feab */ NULL, /* feac */ NULL, /* fead */ NULL, /* feae */ NULL, /* feaf */ NULL, /* feb0 */ NULL, /* feb1 */ NULL, /* feb2 */ NULL, /* feb3 */ NULL, /* feb4 */ NULL, /* feb5 */ NULL, /* feb6 */ NULL, /* feb7 */ NULL, /* feb8 */ NULL, /* feb9 */ NULL, /* feba */ NULL, /* febb */ NULL, /* febc */ NULL, /* febd */ NULL, /* febe */ NULL, /* febf */ NULL, /* fec0 */ NULL, /* fec1 */ NULL, /* fec2 */ NULL, /* fec3 */ NULL, /* fec4 */ NULL, /* fec5 */ NULL, /* fec6 */ NULL, /* fec7 */ NULL, /* fec8 */ NULL, /* fec9 */ NULL, /* feca */ NULL, /* fecb */ NULL, /* fecc */ NULL, /* fecd */ NULL, /* fece */ NULL, /* fecf */ NULL, /* fed0 */ NULL, /* fed1 */ NULL, /* fed2 */ NULL, /* fed3 */ NULL, /* fed4 */ NULL, /* fed5 */ NULL, /* fed6 */ NULL, /* fed7 */ NULL, /* fed8 */ NULL, /* fed9 */ NULL, /* feda */ NULL, /* fedb */ NULL, /* fedc */ NULL, /* fedd */ NULL, /* fede */ NULL, /* fedf */ NULL, /* fee0 */ NULL, /* fee1 */ NULL, /* fee2 */ NULL, /* fee3 */ NULL, /* fee4 */ NULL, /* fee5 */ NULL, /* fee6 */ NULL, /* fee7 */ NULL, /* fee8 */ NULL, /* fee9 */ NULL, /* feea */ NULL, /* feeb */ NULL, /* feec */ NULL, /* feed */ NULL, /* feee */ NULL, /* feef */ NULL, /* fef0 */ NULL, /* fef1 */ NULL, /* fef2 */ NULL, /* fef3 */ NULL, /* fef4 */ NULL, /* fef5 */ NULL, /* fef6 */ NULL, /* fef7 */ NULL, /* fef8 */ NULL, /* fef9 */ NULL, /* fefa */ NULL, /* fefb */ NULL, /* fefc */ NULL, /* fefd */ NULL, /* fefe */ NULL, /* feff */ NULL, /* ff00 */ NULL, /* ff01 */ NULL, /* ff02 */ NULL, /* ff03 */ NULL, /* ff04 */ NULL, /* ff05 */ NULL, /* ff06 */ NULL, /* ff07 */ NULL, /* ff08 */ NULL, /* ff09 */ NULL, /* ff0a */ NULL, /* ff0b */ NULL, /* ff0c */ NULL, /* ff0d */ NULL, /* ff0e */ NULL, /* ff0f */ NULL, /* ff10 */ NULL, /* ff11 */ NULL, /* ff12 */ NULL, /* ff13 */ NULL, /* ff14 */ NULL, /* ff15 */ NULL, /* ff16 */ NULL, /* ff17 */ NULL, /* ff18 */ NULL, /* ff19 */ NULL, /* ff1a */ NULL, /* ff1b */ NULL, /* ff1c */ NULL, /* ff1d */ NULL, /* ff1e */ NULL, /* ff1f */ NULL, /* ff20 */ NULL, /* ff21 */ NULL, /* ff22 */ NULL, /* ff23 */ NULL, /* ff24 */ NULL, /* ff25 */ NULL, /* ff26 */ NULL, /* ff27 */ NULL, /* ff28 */ NULL, /* ff29 */ NULL, /* ff2a */ NULL, /* ff2b */ NULL, /* ff2c */ NULL, /* ff2d */ NULL, /* ff2e */ NULL, /* ff2f */ NULL, /* ff30 */ NULL, /* ff31 */ NULL, /* ff32 */ NULL, /* ff33 */ NULL, /* ff34 */ NULL, /* ff35 */ NULL, /* ff36 */ NULL, /* ff37 */ NULL, /* ff38 */ NULL, /* ff39 */ NULL, /* ff3a */ NULL, /* ff3b */ NULL, /* ff3c */ NULL, /* ff3d */ NULL, /* ff3e */ NULL, /* ff3f */ NULL, /* ff40 */ NULL, /* ff41 */ NULL, /* ff42 */ NULL, /* ff43 */ NULL, /* ff44 */ NULL, /* ff45 */ NULL, /* ff46 */ NULL, /* ff47 */ NULL, /* ff48 */ NULL, /* ff49 */ NULL, /* ff4a */ NULL, /* ff4b */ NULL, /* ff4c */ NULL, /* ff4d */ NULL, /* ff4e */ NULL, /* ff4f */ NULL, /* ff50 */ NULL, /* ff51 */ NULL, /* ff52 */ NULL, /* ff53 */ NULL, /* ff54 */ NULL, /* ff55 */ NULL, /* ff56 */ NULL, /* ff57 */ NULL, /* ff58 */ NULL, /* ff59 */ NULL, /* ff5a */ NULL, /* ff5b */ NULL, /* ff5c */ NULL, /* ff5d */ NULL, /* ff5e */ NULL, /* ff5f */ NULL, /* ff60 */ NULL, /* ff61 */ NULL, /* ff62 */ NULL, /* ff63 */ NULL, /* ff64 */ NULL, /* ff65 */ NULL, /* ff66 */ NULL, /* ff67 */ NULL, /* ff68 */ NULL, /* ff69 */ NULL, /* ff6a */ NULL, /* ff6b */ NULL, /* ff6c */ NULL, /* ff6d */ NULL, /* ff6e */ NULL, /* ff6f */ NULL, /* ff70 */ NULL, /* ff71 */ NULL, /* ff72 */ NULL, /* ff73 */ NULL, /* ff74 */ NULL, /* ff75 */ NULL, /* ff76 */ NULL, /* ff77 */ NULL, /* ff78 */ NULL, /* ff79 */ NULL, /* ff7a */ NULL, /* ff7b */ NULL, /* ff7c */ NULL, /* ff7d */ NULL, /* ff7e */ NULL, /* ff7f */ NULL, /* ff80 */ NULL, /* ff81 */ NULL, /* ff82 */ NULL, /* ff83 */ NULL, /* ff84 */ NULL, /* ff85 */ NULL, /* ff86 */ NULL, /* ff87 */ NULL, /* ff88 */ NULL, /* ff89 */ NULL, /* ff8a */ NULL, /* ff8b */ NULL, /* ff8c */ NULL, /* ff8d */ NULL, /* ff8e */ NULL, /* ff8f */ NULL, /* ff90 */ NULL, /* ff91 */ NULL, /* ff92 */ NULL, /* ff93 */ NULL, /* ff94 */ NULL, /* ff95 */ NULL, /* ff96 */ NULL, /* ff97 */ NULL, /* ff98 */ NULL, /* ff99 */ NULL, /* ff9a */ NULL, /* ff9b */ NULL, /* ff9c */ NULL, /* ff9d */ NULL, /* ff9e */ NULL, /* ff9f */ NULL, /* ffa0 */ NULL, /* ffa1 */ NULL, /* ffa2 */ NULL, /* ffa3 */ NULL, /* ffa4 */ NULL, /* ffa5 */ NULL, /* ffa6 */ NULL, /* ffa7 */ NULL, /* ffa8 */ NULL, /* ffa9 */ NULL, /* ffaa */ NULL, /* ffab */ NULL, /* ffac */ NULL, /* ffad */ NULL, /* ffae */ NULL, /* ffaf */ NULL, /* ffb0 */ NULL, /* ffb1 */ NULL, /* ffb2 */ NULL, /* ffb3 */ NULL, /* ffb4 */ NULL, /* ffb5 */ NULL, /* ffb6 */ NULL, /* ffb7 */ NULL, /* ffb8 */ NULL, /* ffb9 */ NULL, /* ffba */ NULL, /* ffbb */ NULL, /* ffbc */ NULL, /* ffbd */ NULL, /* ffbe */ NULL, /* ffbf */ NULL, /* ffc0 */ NULL, /* ffc1 */ NULL, /* ffc2 */ NULL, /* ffc3 */ NULL, /* ffc4 */ NULL, /* ffc5 */ NULL, /* ffc6 */ NULL, /* ffc7 */ NULL, /* ffc8 */ NULL, /* ffc9 */ NULL, /* ffca */ NULL, /* ffcb */ NULL, /* ffcc */ NULL, /* ffcd */ NULL, /* ffce */ NULL, /* ffcf */ NULL, /* ffd0 */ NULL, /* ffd1 */ NULL, /* ffd2 */ NULL, /* ffd3 */ NULL, /* ffd4 */ NULL, /* ffd5 */ NULL, /* ffd6 */ NULL, /* ffd7 */ NULL, /* ffd8 */ NULL, /* ffd9 */ NULL, /* ffda */ NULL, /* ffdb */ NULL, /* ffdc */ NULL, /* ffdd */ NULL, /* ffde */ NULL, /* ffdf */ NULL, /* ffe0 */ NULL, /* ffe1 */ NULL, /* ffe2 */ NULL, /* ffe3 */ NULL, /* ffe4 */ NULL, /* ffe5 */ NULL, /* ffe6 */ NULL, /* ffe7 */ NULL, /* ffe8 */ NULL, /* ffe9 */ NULL, /* ffea */ NULL, /* ffeb */ NULL, /* ffec */ NULL, /* ffed */ NULL, /* ffee */ NULL, /* ffef */ NULL, /* fff0 */ NULL, /* fff1 */ NULL, /* fff2 */ NULL, /* fff3 */ NULL, /* fff4 */ NULL, /* fff5 */ NULL, /* fff6 */ NULL, /* fff7 */ NULL, /* fff8 */ NULL, /* fff9 */ NULL, /* fffa */ NULL, /* fffb */ NULL, /* fffc */ NULL, /* fffd */ NULL, /* fffe */ NULL, /* ffff */ NULL }; /* Adobe also allows for alternate names */ const struct psaltnames { char *name; int unicode; } psaltuninames[] = { /* These names are those that Adobe says people should use */ /* in their naming conventions file, but which they do not */ /* actually list in the glyph list files. I don't understand */ /* their logic */ /* http://partners.adobe.com/asn/tech/type/unicodegn.html */ { "cent.inferior", 0xf6df }, { "cent.superior", 0xf6e0 }, { "comma.inferior", 0xf6e1 }, { "comma.superior", 0xf6e2 }, { "dollar.inferior", 0xf6e3 }, { "dollar.superior", 0xf6e4 }, { "hyphen.inferior", 0xf6e5 }, { "hyphen.superior", 0xf6e6 }, { "period.inferior", 0xf6e7 }, { "period.superior", 0xf6e8 }, { "a.superior", 0xf6e9 }, { "b.superior", 0xf6ea }, { "d.superior", 0xf6eb }, { "e.superior", 0xf6ec }, { "i.superior", 0xf6ed }, { "l.superior", 0xf6ee }, { "m.superior", 0xf6ef }, { "o.superior", 0xf6f0 }, { "r.superior", 0xf6f1 }, { "s.superior", 0xf6f2 }, { "t.superior", 0xf6f3 }, { "breve.sc", 0xf6f4 }, { "caron.sc", 0xf6f5 }, { "circumflex.sc", 0xf6f6 }, { "dotaccent.sc", 0xf6f7 }, { "hungarumlaut.sc", 0xf6f8 }, { "lslash.sc", 0xf6f9 }, { "oe.sc", 0xf6fa }, { "ogonek.sc", 0xf6fb }, { "ring.sc", 0xf6fc }, { "scaron.sc", 0xf6fd }, { "tilde.sc", 0xf6fe }, { "zcaron.sc", 0xf6ff }, { "exclam.sc", 0xf721 }, { "dollar.oldstyle", 0xf724 }, { "ampersand.sc", 0xf726 }, { "zero.oldstyle", 0xf730 }, { "one.oldstyle", 0xf731 }, { "two.oldstyle", 0xf732 }, { "three.oldstyle", 0xf733 }, { "four.oldstyle", 0xf734 }, { "five.oldstyle", 0xf735 }, { "six.oldstyle", 0xf736 }, { "seven.oldstyle", 0xf737 }, { "eight.oldstyle", 0xf738 }, { "nine.oldstyle", 0xf739 }, { "question.sc", 0xf73f }, { "grave.sc", 0xf760 }, { "a.sc", 0xf761 }, { "b.sc", 0xf762 }, { "c.sc", 0xf763 }, { "d.sc", 0xf764 }, { "e.sc", 0xf765 }, { "f.sc", 0xf766 }, { "g.sc", 0xf767 }, { "h.sc", 0xf768 }, { "i.sc", 0xf769 }, { "j.sc", 0xf76a }, { "k.sc", 0xf76b }, { "l.sc", 0xf76c }, { "m.sc", 0xf76d }, { "n.sc", 0xf76e }, { "o.sc", 0xf76f }, { "p.sc", 0xf770 }, { "q.sc", 0xf771 }, { "r.sc", 0xf772 }, { "s.sc", 0xf773 }, { "t.sc", 0xf774 }, { "u.sc", 0xf775 }, { "v.sc", 0xf776 }, { "w.sc", 0xf777 }, { "x.sc", 0xf778 }, { "y.sc", 0xf779 }, { "z.sc", 0xf77a }, { "exclamdown.sc", 0xf7a1 }, { "cent.oldstyle", 0xf7a2 }, { "dieresis.sc", 0xf7a8 }, { "macron.sc", 0xf7af }, { "acute.sc", 0xf7b4 }, { "cedilla.sc", 0xf7b8 }, { "questiondown.sc", 0xf7bf }, { "agrave.sc", 0xf7e0 }, { "aacute.sc", 0xf7e1 }, { "acircumflex.sc", 0xf7e2 }, { "atilde.sc", 0xf7e3 }, { "adieresis.sc", 0xf7e4 }, { "aring.sc", 0xf7e5 }, { "ae.sc", 0xf7e6 }, { "ccedilla.sc", 0xf7e7 }, { "egrave.sc", 0xf7e8 }, { "eacute.sc", 0xf7e9 }, { "ecircumflex.sc", 0xf7ea }, { "edieresis.sc", 0xf7eb }, { "igrave.sc", 0xf7ec }, { "iacute.sc", 0xf7ed }, { "icircumflex.sc", 0xf7ee }, { "idieresis.sc", 0xf7ef }, { "eth.sc", 0xf7f0 }, { "ntilde.sc", 0xf7f1 }, { "ograve.sc", 0xf7f2 }, { "oacute.sc", 0xf7f3 }, { "ocircumflex.sc", 0xf7f4 }, { "otilde.sc", 0xf7f5 }, { "odieresis.sc", 0xf7f6 }, { "oslash.sc", 0xf7f8 }, { "ugrave.sc", 0xf7f9 }, { "uacute.sc", 0xf7fa }, { "ucircumflex.sc", 0xf7fb }, { "udieresis.sc", 0xf7fc }, { "yacute.sc", 0xf7fd }, { "thorn.sc", 0xf7fe }, { "ydieresis.sc", 0xf7ff }, { "f_i", 0xfb01 }, { "f_l", 0xfb02 }, { "one.superior", 0x00b9 }, { "two.superior", 0x00b2 }, { "three.superior", 0x00b3 }, { "parenleft.superior", 0x207d }, { "parenright.superior", 0x207e }, { "uni2014.alt", 0xf6de }, { "n.superior", 0x207f }, { "f_f", 0xfb00 }, { "f_f_i", 0xfb03 }, { "f_f_l", 0xfb04 }, { "parenleft.inferior", 0x208d }, { "parenright.inferior", 0x208e }, { "one.fitted", 0xf6dc }, { "R_p", 0xf6dd }, { "zero.superior", 0x2070 }, { "four.superior", 0x2074 }, { "five.superior", 0x2075 }, { "six.superior", 0x2076 }, { "seven.superior", 0x2077 }, { "eight.superior", 0x2078 }, { "nine.superior", 0x2079 }, { "zero.inferior", 0x2080 }, { "one.inferior", 0x2081 }, { "two.inferior", 0x2082 }, { "three.inferior", 0x2083 }, { "four.inferior", 0x2084 }, { "five.inferior", 0x2085 }, { "six.inferior", 0x2086 }, { "seven.inferior", 0x2087 }, { "eight.inferior", 0x2088 }, { "nine.inferior", 0x2089 }, { "mu.greek", 0x03bc }, { "Delta.greek", 0x0394 }, { "Omega.greek", 0x03a9 }, { "sigma.end", 0x03c2 }, { "beta.alt", 0x03d0 }, { "kappa.alt", 0x03f0 }, { "theta.alt", 0x03d1 }, { "Upsilon.alt", 0x03d2 }, { "phi.alt", 0x03d5 }, { "pi.alt", 0x03d6 }, { "A.cyr", 0x0410 }, { "Ghe.up", 0x0490 }, { "I.cyr", 0x0418 }, { "I.short", 0x0419 }, { "O.cyr", 0x041e }, { "U.cyr", 0x0423 }, { "E.cyr", 0x042d }, { "Ie.ukran", 0x0404 }, { "I.ukran", 0x0406 }, { "U.short", 0x040e }, { "a.cyr", 0x0430 }, { "ghe.up", 0x0491 }, { "i.cyr", 0x0438 }, { "i.short", 0x0439 }, { "o.cyr", 0x043e }, { "u.cyr", 0x0443 }, { "e.cyr", 0x044d }, { "ie.ukran", 0x0454 }, { "i.ukran", 0x0456 }, { "u.short", 0x045e }, { "afii10068.ital", 0xf6c4 }, { "ghe.ital", 0xf6c4 }, { "afii10066.ital", 0xf6c5 }, { "be.alt", 0xf6c5 }, { "afii10069.ital", 0xf6c6 }, { "de.ital", 0xf6c6 }, { "afii10081.ital", 0xf6c7 }, { "pe.ital", 0xf6c7 }, { "afii10084.ital", 0xf6c8 }, { "te.ital", 0xf6c8 }, { "Omega.math", 0x2126 }, { "Delta.math", 0x2206 }, { "acute.cap", 0xf6c9 }, { "caron.cap", 0xf6ca }, { "dieresis.cap", 0xf6cb }, { "space_uni0308_uni0301.cap", 0xf6cc }, { "space_uni0308_uni0300.cap", 0xf6cd }, { "grave.cap", 0xf6ce }, { "hungarumlaut.cap", 0xf6cf }, { "macron.cap", 0xf6d0 }, { "breve.cyrcap", 0xf6d1 }, { "circumflex.cyrcap", 0xf6d2 }, { "space_uni030F.cap", 0xf6d3 }, { "breve.cyr", 0xf6d4 }, { "circumflex.cyr", 0xf6d5 }, { "space_uni030F", 0xf6d6 }, { "space_uni0308_uni0301", 0xf6d7 }, { "space_uni0308_uni0300", 0xf6d8 }, { "commaaccent.cap", 0xf634 }, { "commaaccent.small", 0xf635 }, { "pi.math", 0xf636 }, { "h.superior", 0xf637 }, { "zero.slash", 0xf638 }, { "zero.fitted", 0xf639 }, { "one.fitted", 0xf6dc }, { "two.fitted", 0xf63a }, { "three.fitted", 0xf63b }, { "four.fitted", 0xf63c }, { "five.fitted", 0xf63d }, { "six.fitted", 0xf63e }, { "seven.fitted", 0xf63f }, { "eight.fitted", 0xf640 }, { "nine.fitted", 0xf641 }, { "percent.oldstyle", 0xf642 }, { "perthousand.oldstyle", 0xf628 }, { "zero.taboldstyle", 0xf643 }, { "one.taboldstyle", 0xf644 }, { "two.taboldstyle", 0xf645 }, { "three.taboldstyle", 0xf646 }, { "four.taboldstyle", 0xf647 }, { "five.taboldstyle", 0xf648 }, { "six.taboldstyle", 0xf649 }, { "seven.taboldstyle", 0xf64a }, { "eight.taboldstyle", 0xf64b }, { "nine.taboldstyle", 0xf64c }, { "colonmonetary.taboldstyle", 0xf64d }, { "Euro.taboldstyle", 0xf64e }, { "florin.taboldstyle", 0xf64f }, { "numbersign.taboldstyle", 0xf650 }, { "sterling.taboldstyle", 0xf651 }, { "yen.taboldstyle", 0xf652 }, { "dollar.taboldstyle", 0xf653 }, { "cent.taboldstyle", 0xf654 }, { "zero.denominator", 0xf655 }, { "one.denominator", 0xf656 }, { "two.denominator", 0xf657 }, { "three.denominator", 0xf658 }, { "four.denominator", 0xf659 }, { "five.denominator", 0xf65a }, { "six.denominator", 0xf65b }, { "seven.denominator", 0xf65c }, { "eight.denominator", 0xf65d }, { "nine.denominator", 0xf65e }, { "comma.denominator", 0xf65f }, { "period.denominator", 0xf660 }, { "cent.denominator", 0xf629 }, { "dollar.denominator", 0xf62a }, { "hyphen.denominator", 0xf62b }, { "parenleft.denominator", 0xf62c }, { "parenright.denominator", 0xf62d }, { "zero.numerator", 0xf661 }, { "one.numerator", 0xf662 }, { "two.numerator", 0xf663 }, { "three.numerator", 0xf664 }, { "four.numerator", 0xf665 }, { "five.numerator", 0xf666 }, { "six.numerator", 0xf667 }, { "seven.numerator", 0xf668 }, { "eight.numerator", 0xf669 }, { "nine.numerator", 0xf66a }, { "comma.numerator", 0xf66b }, { "period.numerator", 0xf66c }, { "cent.numerator", 0xf62e }, { "dollar.numerator", 0xf62f }, { "hyphen.numerator", 0xf630 }, { "parenleft.numerator", 0xf631 }, { "parenright.numerator", 0xf632 }, { "Abreve.small", 0xf66d }, { "Amacron.small", 0xf66e }, { "Aogonek.small", 0xf66f }, { "AEacute.small", 0xf670 }, { "Cacute.small", 0xf671 }, { "Ccaron.small", 0xf672 }, { "Ccircumflex.small", 0xf673 }, { "Cdotaccent.small", 0xf674 }, { "Dcaron.small", 0xf675 }, { "Dcroat.small", 0xf676 }, { "Ebreve.small", 0xf677 }, { "Ecaron.small", 0xf678 }, { "Edotaccent.small", 0xf679 }, { "Emacron.small", 0xf67a }, { "Eng.small", 0xf67b }, { "Eogonek.small", 0xf67c }, { "Gbreve.small", 0xf67d }, { "Gcircumflex.small", 0xf67e }, { "Gcommaaccent.small", 0xf67f }, { "Gdotaccent.small", 0xf680 }, { "Hbar.small", 0xf681 }, { "Hcircumflex.small", 0xf682 }, { "Ibreve.small", 0xf683 }, { "IJ.small", 0xf684 }, { "Imacron.small", 0xf685 }, { "Iogonek.small", 0xf686 }, { "Itilde.small", 0xf687 }, { "Jcircumflex.small", 0xf688 }, { "Kcommaaccent.small", 0xf689 }, { "Lacute.small", 0xf68a }, { "Lcaron.small", 0xf68b }, { "Lcommaaccent.small", 0xf68c }, { "Ldot.small", 0xf68d }, { "Nacute.small", 0xf68e }, { "Ncaron.small", 0xf68f }, { "Ncommaaccent.small", 0xf690 }, { "Obreve.small", 0xf691 }, { "Ohungarumlaut.small", 0xf692 }, { "Omacron.small", 0xf693 }, { "Oslashacute.small", 0xf694 }, { "Racute.small", 0xf695 }, { "Rcaron.small", 0xf696 }, { "Rcommaaccent.small", 0xf697 }, { "Sacute.small", 0xf698 }, { "Scedilla.small", 0xf699 }, { "Scircumflex.small", 0xf69a }, { "Scommaaccent.small", 0xf69b }, { "Tbar.small", 0xf69c }, { "Tcaron.small", 0xf69d }, { "Tcommaaccent.small", 0xf69e }, { "Ubreve.small", 0xf69f }, { "Uhungarumlaut.small", 0xf6a0 }, { "Umacron.small", 0xf6a1 }, { "Uogonek.small", 0xf6a2 }, { "Uring.small", 0xf6a3 }, { "Utilde.small", 0xf6a4 }, { "Wacute.small", 0xf6a5 }, { "Wcircumflex.small", 0xf6a6 }, { "Wdieresis.small", 0xf6a7 }, { "Wgrave.small", 0xf6a8 }, { "Ycircumflex.small", 0xf6a9 }, { "Ygrave.small", 0xf6aa }, { "Zacute.small", 0xf6ab }, { "Zdotaccent.small", 0xf6ac }, { "Idotaccent.small", 0xf6ad }, { "parenleft.cap", 0xf6ae }, { "parenright.cap", 0xf6af }, { "bracketleft.cap", 0xf6b0 }, { "bracketright.cap", 0xf6b1 }, { "braceleft.cap", 0xf6b2 }, { "braceright.cap", 0xf6b3 }, { "exclamdown.cap", 0xf6b4 }, { "questiondown.cap", 0xf6b5 }, { "guillemotleft.cap", 0xf6b6 }, { "guillemotright.cap", 0xf6b7 }, { "guilsinglleft.cap", 0xf6b8 }, { "guilsinglright.cap", 0xf6b9 }, { "hyphen.cap", 0xf6ba }, { "endash.cap", 0xf6bb }, { "emdash.cap", 0xf6bc }, { "periodcentered.cap", 0xf6bd }, { "at.cap", 0xf633 }, { "s_t", 0xfb06 }, { "longs_t", 0xfb05 }, { "zero.slash", 0xf638 }, { "j.dotless", 0xf6be }, { "afii10066.ital", 0xf6c5 }, { "afii10068.ital", 0xf6c4 }, { "afii10069.ital", 0xf6c6 }, { "afii10081.ital", 0xf6c7 }, { "afii10084.ital", 0xf6c8 }, { "registered.serif", 0xf6da }, { "register.serif", 0xf6da }, { "registered.sans", 0xf8e8 }, { "register.sans", 0xf8e8 }, { "trademark.sans", 0xf8ea }, { "trademark.serif", 0xf6db }, { "copyright.sans", 0xf8e9 }, { "copyright.serif", 0xf6d9 }, { "afii57689_afii57804", 0xfb2a }, { "afii57689_afii57803", 0xfb2b }, { "afii57669_afii57806", 0xfb4b }, { "afii57718_afii57798", 0xfb1f }, { "afii57669_afii57807", 0xfb35 }, { ".null", 0x0000 }, { "dialytika_perispomeni", 0x1fc1 }, { "psili_varia", 0x1fcd }, { "psili_oxia", 0x1fce }, { "psili_perispomeni", 0x1fcf }, { "dasia_varia", 0x1fdd }, { "dasia_oxia", 0x1fde }, { "dasia_perispomeni", 0x1fdf }, { "dialytika_varia", 0x1fed }, { "dialytika_oxia", 0x1fee }, { "alpha.sc", 0xf500 }, { "beta.sc", 0xf501 }, { "gamma.sc", 0xf502 }, { "delta.sc", 0xf503 }, { "epsilon.sc", 0xf504 }, { "zeta.sc", 0xf505 }, { "eta.sc", 0xf506 }, { "theta.sc", 0xf507 }, { "iota.sc", 0xf508 }, { "kappa.sc", 0xf509 }, { "lambda.sc", 0xf50a }, { "mu.sc", 0xf50b }, { "nu.sc", 0xf50c }, { "xi.sc", 0xf50d }, { "omicron.sc", 0xf50e }, { "pi.sc", 0xf50f }, { "rho.sc", 0xf510 }, { "sigma.sc", 0xf512 }, { "tau.sc", 0xf513 }, { "upsilon.sc", 0xf514 }, { "phi.sc", 0xf515 }, { "chi.sc", 0xf516 }, { "psi.sc", 0xf517 }, { "omega.sc", 0xf518 }, { "iotadieresis.sc", 0xf519 }, { "upsilondieresis.sc", 0xf51a }, /* These names are from adobe's glyphlist (glyphlist.txt) */ /* http://partners.adobe.com/asn/tech/type/glyphlist.txt */ { "AEmacron", 0x01e2 }, { "AEsmall", 0xf7e6 }, { "Aacutesmall", 0xf7e1 }, { "Abreveacute", 0x1eae }, { "Abrevecyrillic", 0x04d0 }, { "Abrevedotbelow", 0x1eb6 }, { "Abrevegrave", 0x1eb0 }, { "Abrevehookabove", 0x1eb2 }, { "Abrevetilde", 0x1eb4 }, { "Acaron", 0x01cd }, { "Acircle", 0x24b6 }, { "Acircumflexacute", 0x1ea4 }, { "Acircumflexdotbelow", 0x1eac }, { "Acircumflexgrave", 0x1ea6 }, { "Acircumflexhookabove", 0x1ea8 }, { "Acircumflexsmall", 0xf7e2 }, { "Acircumflextilde", 0x1eaa }, { "Acute", 0xf6c9 }, { "Acutesmall", 0xf7b4 }, { "Acyrillic", 0x0410 }, { "Adblgrave", 0x0200 }, { "Adieresiscyrillic", 0x04d2 }, { "Adieresismacron", 0x01de }, { "Adieresissmall", 0xf7e4 }, { "Adotbelow", 0x1ea0 }, { "Adotmacron", 0x01e0 }, { "Agravesmall", 0xf7e0 }, { "Ahookabove", 0x1ea2 }, { "Aiecyrillic", 0x04d4 }, { "Ainvertedbreve", 0x0202 }, { "Amonospace", 0xff21 }, { "Aringbelow", 0x1e00 }, { "Aringsmall", 0xf7e5 }, { "Asmall", 0xf761 }, { "Atildesmall", 0xf7e3 }, { "Aybarmenian", 0x0531 }, { "Bcircle", 0x24b7 }, { "Bdotaccent", 0x1e02 }, { "Bdotbelow", 0x1e04 }, { "Becyrillic", 0x0411 }, { "Benarmenian", 0x0532 }, { "Bhook", 0x0181 }, { "Blinebelow", 0x1e06 }, { "Bmonospace", 0xff22 }, { "Brevesmall", 0xf6f4 }, { "Bsmall", 0xf762 }, { "Btopbar", 0x0182 }, { "Caarmenian", 0x053e }, { "Caron", 0xf6ca }, { "Caronsmall", 0xf6f5 }, { "Ccedillaacute", 0x1e08 }, { "Ccedillasmall", 0xf7e7 }, { "Ccircle", 0x24b8 }, { "Cdot", 0x010a }, { "Cedillasmall", 0xf7b8 }, { "Chaarmenian", 0x0549 }, { "Cheabkhasiancyrillic", 0x04bc }, { "Checyrillic", 0x0427 }, { "Chedescenderabkhasiancyrillic", 0x04be }, { "Chedescendercyrillic", 0x04b6 }, { "Chedieresiscyrillic", 0x04f4 }, { "Cheharmenian", 0x0543 }, { "Chekhakassiancyrillic", 0x04cb }, { "Cheverticalstrokecyrillic", 0x04b8 }, { "Chook", 0x0187 }, { "Circumflexsmall", 0xf6f6 }, { "Cmonospace", 0xff23 }, { "Coarmenian", 0x0551 }, { "Csmall", 0xf763 }, { "DZ", 0x01f1 }, { "DZcaron", 0x01c4 }, { "Daarmenian", 0x0534 }, { "Dafrican", 0x0189 }, { "Dcedilla", 0x1e10 }, { "Dcircle", 0x24b9 }, { "Dcircumflexbelow", 0x1e12 }, { "Ddotaccent", 0x1e0a }, { "Ddotbelow", 0x1e0c }, { "Decyrillic", 0x0414 }, { "Deicoptic", 0x03ee }, { "Deltagreek", 0x0394 }, { "Dhook", 0x018a }, { "Dieresis", 0xf6cb }, { "DieresisAcute", 0xf6cc }, { "DieresisGrave", 0xf6cd }, { "Dieresissmall", 0xf7a8 }, { "Digammagreek", 0x03dc }, { "Djecyrillic", 0x0402 }, { "Dlinebelow", 0x1e0e }, { "Dmonospace", 0xff24 }, { "Dotaccentsmall", 0xf6f7 }, { "Dslash", 0x0110 }, { "Dsmall", 0xf764 }, { "Dtopbar", 0x018b }, { "Dz", 0x01f2 }, { "Dzcaron", 0x01c5 }, { "Dzeabkhasiancyrillic", 0x04e0 }, { "Dzecyrillic", 0x0405 }, { "Dzhecyrillic", 0x040f }, { "Eacutesmall", 0xf7e9 }, { "Ecedillabreve", 0x1e1c }, { "Echarmenian", 0x0535 }, { "Ecircle", 0x24ba }, { "Ecircumflexacute", 0x1ebe }, { "Ecircumflexbelow", 0x1e18 }, { "Ecircumflexdotbelow", 0x1ec6 }, { "Ecircumflexgrave", 0x1ec0 }, { "Ecircumflexhookabove", 0x1ec2 }, { "Ecircumflexsmall", 0xf7ea }, { "Ecircumflextilde", 0x1ec4 }, { "Ecyrillic", 0x0404 }, { "Edblgrave", 0x0204 }, { "Edieresissmall", 0xf7eb }, { "Edot", 0x0116 }, { "Edotbelow", 0x1eb8 }, { "Efcyrillic", 0x0424 }, { "Egravesmall", 0xf7e8 }, { "Eharmenian", 0x0537 }, { "Ehookabove", 0x1eba }, { "Eightroman", 0x2167 }, { "Einvertedbreve", 0x0206 }, { "Eiotifiedcyrillic", 0x0464 }, { "Elcyrillic", 0x041b }, { "Elevenroman", 0x216a }, { "Emacronacute", 0x1e16 }, { "Emacrongrave", 0x1e14 }, { "Emcyrillic", 0x041c }, { "Emonospace", 0xff25 }, { "Encyrillic", 0x041d }, { "Endescendercyrillic", 0x04a2 }, { "Enghecyrillic", 0x04a4 }, { "Enhookcyrillic", 0x04c7 }, { "Eopen", 0x0190 }, { "Ercyrillic", 0x0420 }, { "Ereversed", 0x018e }, { "Ereversedcyrillic", 0x042d }, { "Escyrillic", 0x0421 }, { "Esdescendercyrillic", 0x04aa }, { "Esh", 0x01a9 }, { "Esmall", 0xf765 }, { "Etarmenian", 0x0538 }, { "Ethsmall", 0xf7f0 }, { "Etilde", 0x1ebc }, { "Etildebelow", 0x1e1a }, { "Ezh", 0x01b7 }, { "Ezhcaron", 0x01ee }, { "Ezhreversed", 0x01b8 }, { "Fcircle", 0x24bb }, { "Fdotaccent", 0x1e1e }, { "Feharmenian", 0x0556 }, { "Feicoptic", 0x03e4 }, { "Fhook", 0x0191 }, { "Fitacyrillic", 0x0472 }, { "Fiveroman", 0x2164 }, { "Fmonospace", 0xff26 }, { "Fourroman", 0x2163 }, { "Fsmall", 0xf766 }, { "GBsquare", 0x3387 }, { "Gacute", 0x01f4 }, { "Gammaafrican", 0x0194 }, { "Gangiacoptic", 0x03ea }, { "Gcedilla", 0x0122 }, { "Gcircle", 0x24bc }, { "Gdot", 0x0120 }, { "Gecyrillic", 0x0413 }, { "Ghadarmenian", 0x0542 }, { "Ghemiddlehookcyrillic", 0x0494 }, { "Ghestrokecyrillic", 0x0492 }, { "Gheupturncyrillic", 0x0490 }, { "Ghook", 0x0193 }, { "Gimarmenian", 0x0533 }, { "Gjecyrillic", 0x0403 }, { "Gmacron", 0x1e20 }, { "Gmonospace", 0xff27 }, { "Grave", 0xf6ce }, { "Gravesmall", 0xf760 }, { "Gsmall", 0xf767 }, { "Gsmallhook", 0x029b }, { "Gstroke", 0x01e4 }, { "HPsquare", 0x33cb }, { "Haabkhasiancyrillic", 0x04a8 }, { "Hadescendercyrillic", 0x04b2 }, { "Hardsigncyrillic", 0x042a }, { "Hbrevebelow", 0x1e2a }, { "Hcedilla", 0x1e28 }, { "Hcircle", 0x24bd }, { "Hdieresis", 0x1e26 }, { "Hdotaccent", 0x1e22 }, { "Hdotbelow", 0x1e24 }, { "Hmonospace", 0xff28 }, { "Hoarmenian", 0x0540 }, { "Horicoptic", 0x03e8 }, { "Hsmall", 0xf768 }, { "Hungarumlaut", 0xf6cf }, { "Hungarumlautsmall", 0xf6f8 }, { "Hzsquare", 0x3390 }, { "IAcyrillic", 0x042f }, { "IUcyrillic", 0x042e }, { "Iacutesmall", 0xf7ed }, { "Icaron", 0x01cf }, { "Icircle", 0x24be }, { "Icircumflexsmall", 0xf7ee }, { "Icyrillic", 0x0406 }, { "Idblgrave", 0x0208 }, { "Idieresisacute", 0x1e2e }, { "Idieresiscyrillic", 0x04e4 }, { "Idieresissmall", 0xf7ef }, { "Idot", 0x0130 }, { "Idotbelow", 0x1eca }, { "Iebrevecyrillic", 0x04d6 }, { "Iecyrillic", 0x0415 }, { "Igravesmall", 0xf7ec }, { "Ihookabove", 0x1ec8 }, { "Iicyrillic", 0x0418 }, { "Iinvertedbreve", 0x020a }, { "Iishortcyrillic", 0x0419 }, { "Imacroncyrillic", 0x04e2 }, { "Imonospace", 0xff29 }, { "Iniarmenian", 0x053b }, { "Iocyrillic", 0x0401 }, { "Iotaafrican", 0x0196 }, { "Ismall", 0xf769 }, { "Istroke", 0x0197 }, { "Itildebelow", 0x1e2c }, { "Izhitsacyrillic", 0x0474 }, { "Izhitsadblgravecyrillic", 0x0476 }, { "Jaarmenian", 0x0541 }, { "Jcircle", 0x24bf }, { "Jecyrillic", 0x0408 }, { "Jheharmenian", 0x054b }, { "Jmonospace", 0xff2a }, { "Jsmall", 0xf76a }, { "KBsquare", 0x3385 }, { "KKsquare", 0x33cd }, { "Kabashkircyrillic", 0x04a0 }, { "Kacute", 0x1e30 }, { "Kacyrillic", 0x041a }, { "Kadescendercyrillic", 0x049a }, { "Kahookcyrillic", 0x04c3 }, { "Kastrokecyrillic", 0x049e }, { "Kaverticalstrokecyrillic", 0x049c }, { "Kcaron", 0x01e8 }, { "Kcedilla", 0x0136 }, { "Kcircle", 0x24c0 }, { "Kdotbelow", 0x1e32 }, { "Keharmenian", 0x0554 }, { "Kenarmenian", 0x053f }, { "Khacyrillic", 0x0425 }, { "Kheicoptic", 0x03e6 }, { "Khook", 0x0198 }, { "Kjecyrillic", 0x040c }, { "Klinebelow", 0x1e34 }, { "Kmonospace", 0xff2b }, { "Koppacyrillic", 0x0480 }, { "Koppagreek", 0x03de }, { "Ksicyrillic", 0x046e }, { "Ksmall", 0xf76b }, { "LJ", 0x01c7 }, { "LL", 0xf6bf }, { "Lcedilla", 0x013b }, { "Lcircle", 0x24c1 }, { "Lcircumflexbelow", 0x1e3c }, { "Ldotaccent", 0x013f }, { "Ldotbelow", 0x1e36 }, { "Ldotbelowmacron", 0x1e38 }, { "Liwnarmenian", 0x053c }, { "Lj", 0x01c8 }, { "Ljecyrillic", 0x0409 }, { "Llinebelow", 0x1e3a }, { "Lmonospace", 0xff2c }, { "Lslashsmall", 0xf6f9 }, { "Lsmall", 0xf76c }, { "MBsquare", 0x3386 }, { "Macron", 0xf6d0 }, { "Macronsmall", 0xf7af }, { "Macute", 0x1e3e }, { "Mcircle", 0x24c2 }, { "Mdotaccent", 0x1e40 }, { "Mdotbelow", 0x1e42 }, { "Menarmenian", 0x0544 }, { "Mmonospace", 0xff2d }, { "Msmall", 0xf76d }, { "Mturned", 0x019c }, { "NJ", 0x01ca }, { "Ncedilla", 0x0145 }, { "Ncircle", 0x24c3 }, { "Ncircumflexbelow", 0x1e4a }, { "Ndotaccent", 0x1e44 }, { "Ndotbelow", 0x1e46 }, { "Nhookleft", 0x019d }, { "Nineroman", 0x2168 }, { "Nj", 0x01cb }, { "Njecyrillic", 0x040a }, { "Nlinebelow", 0x1e48 }, { "Nmonospace", 0xff2e }, { "Nowarmenian", 0x0546 }, { "Nsmall", 0xf76e }, { "Ntildesmall", 0xf7f1 }, { "OEsmall", 0xf6fa }, { "Oacutesmall", 0xf7f3 }, { "Obarredcyrillic", 0x04e8 }, { "Obarreddieresiscyrillic", 0x04ea }, { "Ocaron", 0x01d1 }, { "Ocenteredtilde", 0x019f }, { "Ocircle", 0x24c4 }, { "Ocircumflexacute", 0x1ed0 }, { "Ocircumflexdotbelow", 0x1ed8 }, { "Ocircumflexgrave", 0x1ed2 }, { "Ocircumflexhookabove", 0x1ed4 }, { "Ocircumflexsmall", 0xf7f4 }, { "Ocircumflextilde", 0x1ed6 }, { "Ocyrillic", 0x041e }, { "Odblacute", 0x0150 }, { "Odblgrave", 0x020c }, { "Odieresiscyrillic", 0x04e6 }, { "Odieresissmall", 0xf7f6 }, { "Odotbelow", 0x1ecc }, { "Ogoneksmall", 0xf6fb }, { "Ogravesmall", 0xf7f2 }, { "Oharmenian", 0x0555 }, { "Ohm", 0x2126 }, { "Ohookabove", 0x1ece }, { "Ohornacute", 0x1eda }, { "Ohorndotbelow", 0x1ee2 }, { "Ohorngrave", 0x1edc }, { "Ohornhookabove", 0x1ede }, { "Ohorntilde", 0x1ee0 }, { "Oi", 0x01a2 }, { "Oinvertedbreve", 0x020e }, { "Omacronacute", 0x1e52 }, { "Omacrongrave", 0x1e50 }, { "Omegacyrillic", 0x0460 }, { "Omegagreek", 0x03a9 }, { "Omegaroundcyrillic", 0x047a }, { "Omegatitlocyrillic", 0x047c }, { "Omonospace", 0xff2f }, { "Oneroman", 0x2160 }, { "Oogonek", 0x01ea }, { "Oogonekmacron", 0x01ec }, { "Oopen", 0x0186 }, { "Oslashsmall", 0xf7f8 }, { "Osmall", 0xf76f }, { "Ostrokeacute", 0x01fe }, { "Otcyrillic", 0x047e }, { "Otildeacute", 0x1e4c }, { "Otildedieresis", 0x1e4e }, { "Otildesmall", 0xf7f5 }, { "Pacute", 0x1e54 }, { "Pcircle", 0x24c5 }, { "Pdotaccent", 0x1e56 }, { "Pecyrillic", 0x041f }, { "Peharmenian", 0x054a }, { "Pemiddlehookcyrillic", 0x04a6 }, { "Phook", 0x01a4 }, { "Piwrarmenian", 0x0553 }, { "Pmonospace", 0xff30 }, { "Psicyrillic", 0x0470 }, { "Psmall", 0xf770 }, { "Qcircle", 0x24c6 }, { "Qmonospace", 0xff31 }, { "Qsmall", 0xf771 }, { "Raarmenian", 0x054c }, { "Rcedilla", 0x0156 }, { "Rcircle", 0x24c7 }, { "Rdblgrave", 0x0210 }, { "Rdotaccent", 0x1e58 }, { "Rdotbelow", 0x1e5a }, { "Rdotbelowmacron", 0x1e5c }, { "Reharmenian", 0x0550 }, { "Ringsmall", 0xf6fc }, { "Rinvertedbreve", 0x0212 }, { "Rlinebelow", 0x1e5e }, { "Rmonospace", 0xff32 }, { "Rsmall", 0xf772 }, { "Rsmallinverted", 0x0281 }, { "Rsmallinvertedsuperior", 0x02b6 }, { "Sacutedotaccent", 0x1e64 }, { "Sampigreek", 0x03e0 }, { "Scarondotaccent", 0x1e66 }, { "Scaronsmall", 0xf6fd }, { "Schwa", 0x018f }, { "Schwacyrillic", 0x04d8 }, { "Schwadieresiscyrillic", 0x04da }, { "Scircle", 0x24c8 }, { "Sdotaccent", 0x1e60 }, { "Sdotbelow", 0x1e62 }, { "Sdotbelowdotaccent", 0x1e68 }, { "Seharmenian", 0x054d }, { "Sevenroman", 0x2166 }, { "Shaarmenian", 0x0547 }, { "Shacyrillic", 0x0428 }, { "Shchacyrillic", 0x0429 }, { "Sheicoptic", 0x03e2 }, { "Shhacyrillic", 0x04ba }, { "Shimacoptic", 0x03ec }, { "Sixroman", 0x2165 }, { "Smonospace", 0xff33 }, { "Softsigncyrillic", 0x042c }, { "Ssmall", 0xf773 }, { "Stigmagreek", 0x03da }, { "Tcedilla", 0x0162 }, { "Tcircle", 0x24c9 }, { "Tcircumflexbelow", 0x1e70 }, { "Tdotaccent", 0x1e6a }, { "Tdotbelow", 0x1e6c }, { "Tecyrillic", 0x0422 }, { "Tedescendercyrillic", 0x04ac }, { "Tenroman", 0x2169 }, { "Tetsecyrillic", 0x04b4 }, { "Thook", 0x01ac }, { "Thornsmall", 0xf7fe }, { "Threeroman", 0x2162 }, { "Tildesmall", 0xf6fe }, { "Tiwnarmenian", 0x054f }, { "Tlinebelow", 0x1e6e }, { "Tmonospace", 0xff34 }, { "Toarmenian", 0x0539 }, { "Tonefive", 0x01bc }, { "Tonesix", 0x0184 }, { "Tonetwo", 0x01a7 }, { "Tretroflexhook", 0x01ae }, { "Tsecyrillic", 0x0426 }, { "Tshecyrillic", 0x040b }, { "Tsmall", 0xf774 }, { "Twelveroman", 0x216b }, { "Tworoman", 0x2161 }, { "Uacutesmall", 0xf7fa }, { "Ucaron", 0x01d3 }, { "Ucircle", 0x24ca }, { "Ucircumflexbelow", 0x1e76 }, { "Ucircumflexsmall", 0xf7fb }, { "Ucyrillic", 0x0423 }, { "Udblacute", 0x0170 }, { "Udblgrave", 0x0214 }, { "Udieresisacute", 0x01d7 }, { "Udieresisbelow", 0x1e72 }, { "Udieresiscaron", 0x01d9 }, { "Udieresiscyrillic", 0x04f0 }, { "Udieresisgrave", 0x01db }, { "Udieresismacron", 0x01d5 }, { "Udieresissmall", 0xf7fc }, { "Udotbelow", 0x1ee4 }, { "Ugravesmall", 0xf7f9 }, { "Uhookabove", 0x1ee6 }, { "Uhornacute", 0x1ee8 }, { "Uhorndotbelow", 0x1ef0 }, { "Uhorngrave", 0x1eea }, { "Uhornhookabove", 0x1eec }, { "Uhorntilde", 0x1eee }, { "Uhungarumlautcyrillic", 0x04f2 }, { "Uinvertedbreve", 0x0216 }, { "Ukcyrillic", 0x0478 }, { "Umacroncyrillic", 0x04ee }, { "Umacrondieresis", 0x1e7a }, { "Umonospace", 0xff35 }, { "Upsilonacutehooksymbolgreek", 0x03d3 }, { "Upsilonafrican", 0x01b1 }, { "Upsilondieresishooksymbolgreek", 0x03d4 }, { "Upsilonhooksymbol", 0x03d2 }, { "Ushortcyrillic", 0x040e }, { "Usmall", 0xf775 }, { "Ustraightcyrillic", 0x04ae }, { "Ustraightstrokecyrillic", 0x04b0 }, { "Utildeacute", 0x1e78 }, { "Utildebelow", 0x1e74 }, { "Vcircle", 0x24cb }, { "Vdotbelow", 0x1e7e }, { "Vecyrillic", 0x0412 }, { "Vewarmenian", 0x054e }, { "Vhook", 0x01b2 }, { "Vmonospace", 0xff36 }, { "Voarmenian", 0x0548 }, { "Vsmall", 0xf776 }, { "Vtilde", 0x1e7c }, { "Wcircle", 0x24cc }, { "Wdotaccent", 0x1e86 }, { "Wdotbelow", 0x1e88 }, { "Wmonospace", 0xff37 }, { "Wsmall", 0xf777 }, { "Xcircle", 0x24cd }, { "Xdieresis", 0x1e8c }, { "Xdotaccent", 0x1e8a }, { "Xeharmenian", 0x053d }, { "Xmonospace", 0xff38 }, { "Xsmall", 0xf778 }, { "Yacutesmall", 0xf7fd }, { "Yatcyrillic", 0x0462 }, { "Ycircle", 0x24ce }, { "Ydieresissmall", 0xf7ff }, { "Ydotaccent", 0x1e8e }, { "Ydotbelow", 0x1ef4 }, { "Yericyrillic", 0x042b }, { "Yerudieresiscyrillic", 0x04f8 }, { "Yhook", 0x01b3 }, { "Yhookabove", 0x1ef6 }, { "Yiarmenian", 0x0545 }, { "Yicyrillic", 0x0407 }, { "Yiwnarmenian", 0x0552 }, { "Ymonospace", 0xff39 }, { "Ysmall", 0xf779 }, { "Ytilde", 0x1ef8 }, { "Yusbigcyrillic", 0x046a }, { "Yusbigiotifiedcyrillic", 0x046c }, { "Yuslittlecyrillic", 0x0466 }, { "Yuslittleiotifiedcyrillic", 0x0468 }, { "Zaarmenian", 0x0536 }, { "Zcaronsmall", 0xf6ff }, { "Zcircle", 0x24cf }, { "Zcircumflex", 0x1e90 }, { "Zdot", 0x017b }, { "Zdotbelow", 0x1e92 }, { "Zecyrillic", 0x0417 }, { "Zedescendercyrillic", 0x0498 }, { "Zedieresiscyrillic", 0x04de }, { "Zhearmenian", 0x053a }, { "Zhebrevecyrillic", 0x04c1 }, { "Zhecyrillic", 0x0416 }, { "Zhedescendercyrillic", 0x0496 }, { "Zhedieresiscyrillic", 0x04dc }, { "Zlinebelow", 0x1e94 }, { "Zmonospace", 0xff3a }, { "Zsmall", 0xf77a }, { "Zstroke", 0x01b5 }, { "aabengali", 0x0986 }, { "aadeva", 0x0906 }, { "aagujarati", 0x0a86 }, { "aagurmukhi", 0x0a06 }, { "aamatragurmukhi", 0x0a3e }, { "aarusquare", 0x3303 }, { "aavowelsignbengali", 0x09be }, { "aavowelsigndeva", 0x093e }, { "aavowelsigngujarati", 0x0abe }, { "abbreviationmarkarmenian", 0x055f }, { "abbreviationsigndeva", 0x0970 }, { "abengali", 0x0985 }, { "abopomofo", 0x311a }, { "abreveacute", 0x1eaf }, { "abrevecyrillic", 0x04d1 }, { "abrevedotbelow", 0x1eb7 }, { "abrevegrave", 0x1eb1 }, { "abrevehookabove", 0x1eb3 }, { "abrevetilde", 0x1eb5 }, { "acaron", 0x01ce }, { "acircle", 0x24d0 }, { "acircumflexacute", 0x1ea5 }, { "acircumflexdotbelow", 0x1ead }, { "acircumflexgrave", 0x1ea7 }, { "acircumflexhookabove", 0x1ea9 }, { "acircumflextilde", 0x1eab }, { "acutebelowcmb", 0x0317 }, { "acutecmb", 0x0301 }, { "acutedeva", 0x0954 }, { "acutelowmod", 0x02cf }, { "acutetonecmb", 0x0341 }, { "acyrillic", 0x0430 }, { "adblgrave", 0x0201 }, { "addakgurmukhi", 0x0a71 }, { "adeva", 0x0905 }, { "adieresiscyrillic", 0x04d3 }, { "adieresismacron", 0x01df }, { "adotbelow", 0x1ea1 }, { "adotmacron", 0x01e1 }, { "aekorean", 0x3150 }, { "aemacron", 0x01e3 }, { "afii08941", 0x20a4 }, { "afii10063", 0xf6c4 }, { "afii10064", 0xf6c5 }, { "afii10192", 0xf6c6 }, { "afii10831", 0xf6c7 }, { "afii10832", 0xf6c8 }, { "afii57694", 0xfb2a }, { "afii57695", 0xfb2b }, { "afii57700", 0xfb4b }, { "afii57705", 0xfb1f }, { "afii57723", 0xfb35 }, { "agujarati", 0x0a85 }, { "agurmukhi", 0x0a05 }, { "ahiragana", 0x3042 }, { "ahookabove", 0x1ea3 }, { "aibengali", 0x0990 }, { "aibopomofo", 0x311e }, { "aideva", 0x0910 }, { "aiecyrillic", 0x04d5 }, { "aigujarati", 0x0a90 }, { "aigurmukhi", 0x0a10 }, { "aimatragurmukhi", 0x0a48 }, { "ainarabic", 0x0639 }, { "ainfinalarabic", 0xfeca }, { "aininitialarabic", 0xfecb }, { "ainmedialarabic", 0xfecc }, { "ainvertedbreve", 0x0203 }, { "aivowelsignbengali", 0x09c8 }, { "aivowelsigndeva", 0x0948 }, { "aivowelsigngujarati", 0x0ac8 }, { "akatakana", 0x30a2 }, { "akatakanahalfwidth", 0xff71 }, { "akorean", 0x314f }, { "alef", 0x05d0 }, { "alefarabic", 0x0627 }, { "alefdageshhebrew", 0xfb30 }, { "aleffinalarabic", 0xfe8e }, { "alefhamzaabovearabic", 0x0623 }, { "alefhamzaabovefinalarabic", 0xfe84 }, { "alefhamzabelowarabic", 0x0625 }, { "alefhamzabelowfinalarabic", 0xfe88 }, { "alefhebrew", 0x05d0 }, { "aleflamedhebrew", 0xfb4f }, { "alefmaddaabovearabic", 0x0622 }, { "alefmaddaabovefinalarabic", 0xfe82 }, { "alefmaksuraarabic", 0x0649 }, { "alefmaksurafinalarabic", 0xfef0 }, { "alefmaksurainitialarabic", 0xfef3 }, { "alefmaksuramedialarabic", 0xfef4 }, { "alefpatahhebrew", 0xfb2e }, { "alefqamatshebrew", 0xfb2f }, { "allequal", 0x224c }, { "amonospace", 0xff41 }, { "ampersandmonospace", 0xff06 }, { "ampersandsmall", 0xf726 }, { "amsquare", 0x33c2 }, { "anbopomofo", 0x3122 }, { "angbopomofo", 0x3124 }, { "angkhankhuthai", 0x0e5a }, { "anglebracketleft", 0x3008 }, { "anglebracketleftvertical", 0xfe3f }, { "anglebracketright", 0x3009 }, { "anglebracketrightvertical", 0xfe40 }, { "angstrom", 0x212b }, { "anudattadeva", 0x0952 }, { "anusvarabengali", 0x0982 }, { "anusvaradeva", 0x0902 }, { "anusvaragujarati", 0x0a82 }, { "apaatosquare", 0x3300 }, { "aparen", 0x249c }, { "apostrophearmenian", 0x055a }, { "apostrophemod", 0x02bc }, { "apple", 0xf8ff }, { "approaches", 0x2250 }, { "approxequalorimage", 0x2252 }, { "approximatelyequal", 0x2245 }, { "araeaekorean", 0x318e }, { "araeakorean", 0x318d }, { "arc", 0x2312 }, { "arighthalfring", 0x1e9a }, { "aringbelow", 0x1e01 }, { "arrowdashdown", 0x21e3 }, { "arrowdashleft", 0x21e0 }, { "arrowdashright", 0x21e2 }, { "arrowdashup", 0x21e1 }, { "arrowdownleft", 0x2199 }, { "arrowdownright", 0x2198 }, { "arrowdownwhite", 0x21e9 }, { "arrowheaddownmod", 0x02c5 }, { "arrowheadleftmod", 0x02c2 }, { "arrowheadrightmod", 0x02c3 }, { "arrowheadupmod", 0x02c4 }, { "arrowhorizex", 0xf8e7 }, { "arrowleftdbl", 0x21d0 }, { "arrowleftdblstroke", 0x21cd }, { "arrowleftoverright", 0x21c6 }, { "arrowleftwhite", 0x21e6 }, { "arrowrightdblstroke", 0x21cf }, { "arrowrightheavy", 0x279e }, { "arrowrightoverleft", 0x21c4 }, { "arrowrightwhite", 0x21e8 }, { "arrowtableft", 0x21e4 }, { "arrowtabright", 0x21e5 }, { "arrowupdownbase", 0x21a8 }, { "arrowupleft", 0x2196 }, { "arrowupleftofdown", 0x21c5 }, { "arrowupright", 0x2197 }, { "arrowupwhite", 0x21e7 }, { "arrowvertex", 0xf8e6 }, { "asciicircummonospace", 0xff3e }, { "asciitildemonospace", 0xff5e }, { "ascript", 0x0251 }, { "ascriptturned", 0x0252 }, { "asmallhiragana", 0x3041 }, { "asmallkatakana", 0x30a1 }, { "asmallkatakanahalfwidth", 0xff67 }, { "asteriskaltonearabic", 0x066d }, { "asteriskarabic", 0x066d }, { "asteriskmonospace", 0xff0a }, { "asterisksmall", 0xfe61 }, { "asterism", 0x2042 }, { "asuperior", 0xf6e9 }, { "asymptoticallyequal", 0x2243 }, { "atmonospace", 0xff20 }, { "atsmall", 0xfe6b }, { "aturned", 0x0250 }, { "aubengali", 0x0994 }, { "aubopomofo", 0x3120 }, { "audeva", 0x0914 }, { "augujarati", 0x0a94 }, { "augurmukhi", 0x0a14 }, { "aulengthmarkbengali", 0x09d7 }, { "aumatragurmukhi", 0x0a4c }, { "auvowelsignbengali", 0x09cc }, { "auvowelsigndeva", 0x094c }, { "auvowelsigngujarati", 0x0acc }, { "avagrahadeva", 0x093d }, { "aybarmenian", 0x0561 }, { "ayin", 0x05e2 }, { "ayinaltonehebrew", 0xfb20 }, { "ayinhebrew", 0x05e2 }, { "babengali", 0x09ac }, { "backslashmonospace", 0xff3c }, { "badeva", 0x092c }, { "bagujarati", 0x0aac }, { "bagurmukhi", 0x0a2c }, { "bahiragana", 0x3070 }, { "bahtthai", 0x0e3f }, { "bakatakana", 0x30d0 }, { "barmonospace", 0xff5c }, { "bbopomofo", 0x3105 }, { "bcircle", 0x24d1 }, { "bdotaccent", 0x1e03 }, { "bdotbelow", 0x1e05 }, { "beamedsixteenthnotes", 0x266c }, { "because", 0x2235 }, { "becyrillic", 0x0431 }, { "beharabic", 0x0628 }, { "behfinalarabic", 0xfe90 }, { "behinitialarabic", 0xfe91 }, { "behiragana", 0x3079 }, { "behmedialarabic", 0xfe92 }, { "behmeeminitialarabic", 0xfc9f }, { "behmeemisolatedarabic", 0xfc08 }, { "behnoonfinalarabic", 0xfc6d }, { "bekatakana", 0x30d9 }, { "benarmenian", 0x0562 }, { "bet", 0x05d1 }, { "betasymbolgreek", 0x03d0 }, { "betdagesh", 0xfb31 }, { "betdageshhebrew", 0xfb31 }, { "bethebrew", 0x05d1 }, { "betrafehebrew", 0xfb4c }, { "bhabengali", 0x09ad }, { "bhadeva", 0x092d }, { "bhagujarati", 0x0aad }, { "bhagurmukhi", 0x0a2d }, { "bhook", 0x0253 }, { "bihiragana", 0x3073 }, { "bikatakana", 0x30d3 }, { "bilabialclick", 0x0298 }, { "bindigurmukhi", 0x0a02 }, { "birusquare", 0x3331 }, { "blackcircle", 0x25cf }, { "blackdiamond", 0x25c6 }, { "blackdownpointingtriangle", 0x25bc }, { "blackleftpointingpointer", 0x25c4 }, { "blackleftpointingtriangle", 0x25c0 }, { "blacklenticularbracketleft", 0x3010 }, { "blacklenticularbracketleftvertical", 0xfe3b }, { "blacklenticularbracketright", 0x3011 }, { "blacklenticularbracketrightvertical", 0xfe3c }, { "blacklowerlefttriangle", 0x25e3 }, { "blacklowerrighttriangle", 0x25e2 }, { "blackrectangle", 0x25ac }, { "blackrightpointingpointer", 0x25ba }, { "blackrightpointingtriangle", 0x25b6 }, { "blacksmallsquare", 0x25aa }, { "blacksmilingface", 0x263b }, { "blacksquare", 0x25a0 }, { "blackstar", 0x2605 }, { "blackupperlefttriangle", 0x25e4 }, { "blackupperrighttriangle", 0x25e5 }, { "blackuppointingsmalltriangle", 0x25b4 }, { "blackuppointingtriangle", 0x25b2 }, { "blank", 0x2423 }, { "blinebelow", 0x1e07 }, { "bmonospace", 0xff42 }, { "bobaimaithai", 0x0e1a }, { "bohiragana", 0x307c }, { "bokatakana", 0x30dc }, { "bparen", 0x249d }, { "bqsquare", 0x33c3 }, { "braceex", 0xf8f4 }, { "braceleftbt", 0xf8f3 }, { "braceleftmid", 0xf8f2 }, { "braceleftmonospace", 0xff5b }, { "braceleftsmall", 0xfe5b }, { "bracelefttp", 0xf8f1 }, { "braceleftvertical", 0xfe37 }, { "bracerightbt", 0xf8fe }, { "bracerightmid", 0xf8fd }, { "bracerightmonospace", 0xff5d }, { "bracerightsmall", 0xfe5c }, { "bracerighttp", 0xf8fc }, { "bracerightvertical", 0xfe38 }, { "bracketleftbt", 0xf8f0 }, { "bracketleftex", 0xf8ef }, { "bracketleftmonospace", 0xff3b }, { "bracketlefttp", 0xf8ee }, { "bracketrightbt", 0xf8fb }, { "bracketrightex", 0xf8fa }, { "bracketrightmonospace", 0xff3d }, { "bracketrighttp", 0xf8f9 }, { "brevebelowcmb", 0x032e }, { "brevecmb", 0x0306 }, { "breveinvertedbelowcmb", 0x032f }, { "breveinvertedcmb", 0x0311 }, { "breveinverteddoublecmb", 0x0361 }, { "bridgebelowcmb", 0x032a }, { "bridgeinvertedbelowcmb", 0x033a }, { "bstroke", 0x0180 }, { "bsuperior", 0xf6ea }, { "btopbar", 0x0183 }, { "buhiragana", 0x3076 }, { "bukatakana", 0x30d6 }, { "bulletinverse", 0x25d8 }, { "bulletoperator", 0x2219 }, { "bullseye", 0x25ce }, { "caarmenian", 0x056e }, { "cabengali", 0x099a }, { "cadeva", 0x091a }, { "cagujarati", 0x0a9a }, { "cagurmukhi", 0x0a1a }, { "calsquare", 0x3388 }, { "candrabindubengali", 0x0981 }, { "candrabinducmb", 0x0310 }, { "candrabindudeva", 0x0901 }, { "candrabindugujarati", 0x0a81 }, { "capslock", 0x21ea }, { "careof", 0x2105 }, { "caronbelowcmb", 0x032c }, { "caroncmb", 0x030c }, { "cbopomofo", 0x3118 }, { "ccedillaacute", 0x1e09 }, { "ccircle", 0x24d2 }, { "ccurl", 0x0255 }, { "cdot", 0x010b }, { "cdsquare", 0x33c5 }, { "cedillacmb", 0x0327 }, { "centigrade", 0x2103 }, { "centinferior", 0xf6df }, { "centmonospace", 0xffe0 }, { "centoldstyle", 0xf7a2 }, { "centsuperior", 0xf6e0 }, { "chaarmenian", 0x0579 }, { "chabengali", 0x099b }, { "chadeva", 0x091b }, { "chagujarati", 0x0a9b }, { "chagurmukhi", 0x0a1b }, { "chbopomofo", 0x3114 }, { "cheabkhasiancyrillic", 0x04bd }, { "checkmark", 0x2713 }, { "checyrillic", 0x0447 }, { "chedescenderabkhasiancyrillic", 0x04bf }, { "chedescendercyrillic", 0x04b7 }, { "chedieresiscyrillic", 0x04f5 }, { "cheharmenian", 0x0573 }, { "chekhakassiancyrillic", 0x04cc }, { "cheverticalstrokecyrillic", 0x04b9 }, { "chieuchacirclekorean", 0x3277 }, { "chieuchaparenkorean", 0x3217 }, { "chieuchcirclekorean", 0x3269 }, { "chieuchkorean", 0x314a }, { "chieuchparenkorean", 0x3209 }, { "chochangthai", 0x0e0a }, { "chochanthai", 0x0e08 }, { "chochingthai", 0x0e09 }, { "chochoethai", 0x0e0c }, { "chook", 0x0188 }, { "cieucacirclekorean", 0x3276 }, { "cieucaparenkorean", 0x3216 }, { "cieuccirclekorean", 0x3268 }, { "cieuckorean", 0x3148 }, { "cieucparenkorean", 0x3208 }, { "cieucuparenkorean", 0x321c }, { "circleot", 0x2299 }, { "circlepostalmark", 0x3036 }, { "circlewithlefthalfblack", 0x25d0 }, { "circlewithrighthalfblack", 0x25d1 }, { "circumflexbelowcmb", 0x032d }, { "circumflexcmb", 0x0302 }, { "clear", 0x2327 }, { "clickalveolar", 0x01c2 }, { "clickdental", 0x01c0 }, { "clicklateral", 0x01c1 }, { "clickretroflex", 0x01c3 }, { "clubsuitblack", 0x2663 }, { "clubsuitwhite", 0x2667 }, { "cmcubedsquare", 0x33a4 }, { "cmonospace", 0xff43 }, { "cmsquaredsquare", 0x33a0 }, { "coarmenian", 0x0581 }, { "colonmonospace", 0xff1a }, { "colonsign", 0x20a1 }, { "colonsmall", 0xfe55 }, { "colontriangularhalfmod", 0x02d1 }, { "colontriangularmod", 0x02d0 }, { "commaabovecmb", 0x0313 }, { "commaaboverightcmb", 0x0315 }, { "commaaccent", 0xf6c3 }, { "commaarabic", 0x060c }, { "commaarmenian", 0x055d }, { "commainferior", 0xf6e1 }, { "commamonospace", 0xff0c }, { "commareversedabovecmb", 0x0314 }, { "commareversedmod", 0x02bd }, { "commasmall", 0xfe50 }, { "commasuperior", 0xf6e2 }, { "commaturnedabovecmb", 0x0312 }, { "commaturnedmod", 0x02bb }, { "compass", 0x263c }, { "contourintegral", 0x222e }, { "control", 0x2303 }, { "controlACK", 0x0006 }, { "controlBEL", 0x0007 }, { "controlBS", 0x0008 }, { "controlCAN", 0x0018 }, { "controlCR", 0x000d }, { "controlDC1", 0x0011 }, { "controlDC2", 0x0012 }, { "controlDC3", 0x0013 }, { "controlDC4", 0x0014 }, { "controlDEL", 0x007f }, { "controlDLE", 0x0010 }, { "controlEM", 0x0019 }, { "controlENQ", 0x0005 }, { "controlEOT", 0x0004 }, { "controlESC", 0x001b }, { "controlETB", 0x0017 }, { "controlETX", 0x0003 }, { "controlFF", 0x000c }, { "controlFS", 0x001c }, { "controlGS", 0x001d }, { "controlHT", 0x0009 }, { "controlLF", 0x000a }, { "controlNAK", 0x0015 }, { "controlRS", 0x001e }, { "controlSI", 0x000f }, { "controlSO", 0x000e }, { "controlSOT", 0x0002 }, { "controlSTX", 0x0001 }, { "controlSUB", 0x001a }, { "controlSYN", 0x0016 }, { "controlUS", 0x001f }, { "controlVT", 0x000b }, { "copyrightsans", 0xf8e9 }, { "copyrightserif", 0xf6d9 }, { "cornerbracketleft", 0x300c }, { "cornerbracketlefthalfwidth", 0xff62 }, { "cornerbracketleftvertical", 0xfe41 }, { "cornerbracketright", 0x300d }, { "cornerbracketrighthalfwidth", 0xff63 }, { "cornerbracketrightvertical", 0xfe42 }, { "corporationsquare", 0x337f }, { "cosquare", 0x33c7 }, { "coverkgsquare", 0x33c6 }, { "cparen", 0x249e }, { "cruzeiro", 0x20a2 }, { "cstretched", 0x0297 }, { "curlyand", 0x22cf }, { "curlyor", 0x22ce }, { "cyrBreve", 0xf6d1 }, { "cyrFlex", 0xf6d2 }, { "cyrbreve", 0xf6d4 }, { "cyrflex", 0xf6d5 }, { "daarmenian", 0x0564 }, { "dabengali", 0x09a6 }, { "dadarabic", 0x0636 }, { "dadeva", 0x0926 }, { "dadfinalarabic", 0xfebe }, { "dadinitialarabic", 0xfebf }, { "dadmedialarabic", 0xfec0 }, { "dagesh", 0x05bc }, { "dageshhebrew", 0x05bc }, { "dagujarati", 0x0aa6 }, { "dagurmukhi", 0x0a26 }, { "dahiragana", 0x3060 }, { "dakatakana", 0x30c0 }, { "dalarabic", 0x062f }, { "dalet", 0x05d3 }, { "daletdagesh", 0xfb33 }, { "daletdageshhebrew", 0xfb33 }, { "dalethatafpatah", 0x05d3 }, { "dalethatafpatahhebrew", 0x05d3 }, { "dalethatafsegol", 0x05d3 }, { "dalethatafsegolhebrew", 0x05d3 }, { "dalethebrew", 0x05d3 }, { "dalethiriq", 0x05d3 }, { "dalethiriqhebrew", 0x05d3 }, { "daletholam", 0x05d3 }, { "daletholamhebrew", 0x05d3 }, { "daletpatah", 0x05d3 }, { "daletpatahhebrew", 0x05d3 }, { "daletqamats", 0x05d3 }, { "daletqamatshebrew", 0x05d3 }, { "daletqubuts", 0x05d3 }, { "daletqubutshebrew", 0x05d3 }, { "daletsegol", 0x05d3 }, { "daletsegolhebrew", 0x05d3 }, { "daletsheva", 0x05d3 }, { "daletshevahebrew", 0x05d3 }, { "dalettsere", 0x05d3 }, { "dalettserehebrew", 0x05d3 }, { "dalfinalarabic", 0xfeaa }, { "dammaarabic", 0x064f }, { "dammalowarabic", 0x064f }, { "dammatanaltonearabic", 0x064c }, { "dammatanarabic", 0x064c }, { "danda", 0x0964 }, { "dargahebrew", 0x05a7 }, { "dargalefthebrew", 0x05a7 }, { "dasiapneumatacyrilliccmb", 0x0485 }, { "dblGrave", 0xf6d3 }, { "dblanglebracketleft", 0x300a }, { "dblanglebracketleftvertical", 0xfe3d }, { "dblanglebracketright", 0x300b }, { "dblanglebracketrightvertical", 0xfe3e }, { "dblarchinvertedbelowcmb", 0x032b }, { "dblarrowleft", 0x21d4 }, { "dblarrowright", 0x21d2 }, { "dbldanda", 0x0965 }, { "dblgrave", 0xf6d6 }, { "dblgravecmb", 0x030f }, { "dblintegral", 0x222c }, { "dbllowline", 0x2017 }, { "dbllowlinecmb", 0x0333 }, { "dbloverlinecmb", 0x033f }, { "dblprimemod", 0x02ba }, { "dblverticalbar", 0x2016 }, { "dblverticallineabovecmb", 0x030e }, { "dbopomofo", 0x3109 }, { "dbsquare", 0x33c8 }, { "dcedilla", 0x1e11 }, { "dcircle", 0x24d3 }, { "dcircumflexbelow", 0x1e13 }, { "ddabengali", 0x09a1 }, { "ddadeva", 0x0921 }, { "ddagujarati", 0x0aa1 }, { "ddagurmukhi", 0x0a21 }, { "ddalarabic", 0x0688 }, { "ddalfinalarabic", 0xfb89 }, { "dddhadeva", 0x095c }, { "ddhabengali", 0x09a2 }, { "ddhadeva", 0x0922 }, { "ddhagujarati", 0x0aa2 }, { "ddhagurmukhi", 0x0a22 }, { "ddotaccent", 0x1e0b }, { "ddotbelow", 0x1e0d }, { "decimalseparatorarabic", 0x066b }, { "decimalseparatorpersian", 0x066b }, { "decyrillic", 0x0434 }, { "dehihebrew", 0x05ad }, { "dehiragana", 0x3067 }, { "deicoptic", 0x03ef }, { "dekatakana", 0x30c7 }, { "deleteleft", 0x232b }, { "deleteright", 0x2326 }, { "deltaturned", 0x018d }, { "denominatorminusonenumeratorbengali", 0x09f8 }, { "dezh", 0x02a4 }, { "dhabengali", 0x09a7 }, { "dhadeva", 0x0927 }, { "dhagujarati", 0x0aa7 }, { "dhagurmukhi", 0x0a27 }, { "dhook", 0x0257 }, { "dialytikatonos", 0x0385 }, { "dialytikatonoscmb", 0x0344 }, { "diamondsuitwhite", 0x2662 }, { "dieresisacute", 0xf6d7 }, { "dieresisbelowcmb", 0x0324 }, { "dieresiscmb", 0x0308 }, { "dieresisgrave", 0xf6d8 }, { "dihiragana", 0x3062 }, { "dikatakana", 0x30c2 }, { "dittomark", 0x3003 }, { "divides", 0x2223 }, { "divisionslash", 0x2215 }, { "djecyrillic", 0x0452 }, { "dlinebelow", 0x1e0f }, { "dlsquare", 0x3397 }, { "dmacron", 0x0111 }, { "dmonospace", 0xff44 }, { "dochadathai", 0x0e0e }, { "dodekthai", 0x0e14 }, { "dohiragana", 0x3069 }, { "dokatakana", 0x30c9 }, { "dollarinferior", 0xf6e3 }, { "dollarmonospace", 0xff04 }, { "dollaroldstyle", 0xf724 }, { "dollarsmall", 0xfe69 }, { "dollarsuperior", 0xf6e4 }, { "dorusquare", 0x3326 }, { "dotaccentcmb", 0x0307 }, { "dotbelowcmb", 0x0323 }, { "dotkatakana", 0x30fb }, { "dotlessj", 0xf6be }, { "dotlessjstrokehook", 0x0284 }, { "dottedcircle", 0x25cc }, { "doubleyodpatah", 0xfb1f }, { "doubleyodpatahhebrew", 0xfb1f }, { "downtackbelowcmb", 0x031e }, { "downtackmod", 0x02d5 }, { "dparen", 0x249f }, { "dsuperior", 0xf6eb }, { "dtail", 0x0256 }, { "dtopbar", 0x018c }, { "duhiragana", 0x3065 }, { "dukatakana", 0x30c5 }, { "dz", 0x01f3 }, { "dzaltone", 0x02a3 }, { "dzcaron", 0x01c6 }, { "dzcurl", 0x02a5 }, { "dzeabkhasiancyrillic", 0x04e1 }, { "dzecyrillic", 0x0455 }, { "dzhecyrillic", 0x045f }, { "earth", 0x2641 }, { "ebengali", 0x098f }, { "ebopomofo", 0x311c }, { "ecandradeva", 0x090d }, { "ecandragujarati", 0x0a8d }, { "ecandravowelsigndeva", 0x0945 }, { "ecandravowelsigngujarati", 0x0ac5 }, { "ecedillabreve", 0x1e1d }, { "echarmenian", 0x0565 }, { "echyiwnarmenian", 0x0587 }, { "ecircle", 0x24d4 }, { "ecircumflexacute", 0x1ebf }, { "ecircumflexbelow", 0x1e19 }, { "ecircumflexdotbelow", 0x1ec7 }, { "ecircumflexgrave", 0x1ec1 }, { "ecircumflexhookabove", 0x1ec3 }, { "ecircumflextilde", 0x1ec5 }, { "ecyrillic", 0x0454 }, { "edblgrave", 0x0205 }, { "edeva", 0x090f }, { "edot", 0x0117 }, { "edotbelow", 0x1eb9 }, { "eegurmukhi", 0x0a0f }, { "eematragurmukhi", 0x0a47 }, { "efcyrillic", 0x0444 }, { "egujarati", 0x0a8f }, { "eharmenian", 0x0567 }, { "ehbopomofo", 0x311d }, { "ehiragana", 0x3048 }, { "ehookabove", 0x1ebb }, { "eibopomofo", 0x311f }, { "eightarabic", 0x0668 }, { "eightbengali", 0x09ee }, { "eightcircle", 0x2467 }, { "eightcircleinversesansserif", 0x2791 }, { "eightdeva", 0x096e }, { "eighteencircle", 0x2471 }, { "eighteenparen", 0x2485 }, { "eighteenperiod", 0x2499 }, { "eightgujarati", 0x0aee }, { "eightgurmukhi", 0x0a6e }, { "eighthackarabic", 0x0668 }, { "eighthangzhou", 0x3028 }, { "eighthnotebeamed", 0x266b }, { "eightideographicparen", 0x3227 }, { "eightinferior", 0x2088 }, { "eightmonospace", 0xff18 }, { "eightoldstyle", 0xf738 }, { "eightparen", 0x247b }, { "eightperiod", 0x248f }, { "eightpersian", 0x06f8 }, { "eightroman", 0x2177 }, { "eightsuperior", 0x2078 }, { "eightthai", 0x0e58 }, { "einvertedbreve", 0x0207 }, { "eiotifiedcyrillic", 0x0465 }, { "ekatakana", 0x30a8 }, { "ekatakanahalfwidth", 0xff74 }, { "ekonkargurmukhi", 0x0a74 }, { "ekorean", 0x3154 }, { "elcyrillic", 0x043b }, { "elevencircle", 0x246a }, { "elevenparen", 0x247e }, { "elevenperiod", 0x2492 }, { "elevenroman", 0x217a }, { "ellipsisvertical", 0x22ee }, { "emacronacute", 0x1e17 }, { "emacrongrave", 0x1e15 }, { "emcyrillic", 0x043c }, { "emdashvertical", 0xfe31 }, { "emonospace", 0xff45 }, { "emphasismarkarmenian", 0x055b }, { "enbopomofo", 0x3123 }, { "encyrillic", 0x043d }, { "endashvertical", 0xfe32 }, { "endescendercyrillic", 0x04a3 }, { "engbopomofo", 0x3125 }, { "enghecyrillic", 0x04a5 }, { "enhookcyrillic", 0x04c8 }, { "enspace", 0x2002 }, { "eokorean", 0x3153 }, { "eopen", 0x025b }, { "eopenclosed", 0x029a }, { "eopenreversed", 0x025c }, { "eopenreversedclosed", 0x025e }, { "eopenreversedhook", 0x025d }, { "eparen", 0x24a0 }, { "equalmonospace", 0xff1d }, { "equalsmall", 0xfe66 }, { "equalsuperior", 0x207c }, { "erbopomofo", 0x3126 }, { "ercyrillic", 0x0440 }, { "ereversed", 0x0258 }, { "ereversedcyrillic", 0x044d }, { "escyrillic", 0x0441 }, { "esdescendercyrillic", 0x04ab }, { "esh", 0x0283 }, { "eshcurl", 0x0286 }, { "eshortdeva", 0x090e }, { "eshortvowelsigndeva", 0x0946 }, { "eshreversedloop", 0x01aa }, { "eshsquatreversed", 0x0285 }, { "esmallhiragana", 0x3047 }, { "esmallkatakana", 0x30a7 }, { "esmallkatakanahalfwidth", 0xff6a }, { "esuperior", 0xf6ec }, { "etarmenian", 0x0568 }, { "etilde", 0x1ebd }, { "etildebelow", 0x1e1b }, { "etnahtafoukhhebrew", 0x0591 }, { "etnahtafoukhlefthebrew", 0x0591 }, { "etnahtahebrew", 0x0591 }, { "etnahtalefthebrew", 0x0591 }, { "eturned", 0x01dd }, { "eukorean", 0x3161 }, { "euro", 0x20ac }, { "evowelsignbengali", 0x09c7 }, { "evowelsigndeva", 0x0947 }, { "evowelsigngujarati", 0x0ac7 }, { "exclamarmenian", 0x055c }, { "exclamdownsmall", 0xf7a1 }, { "exclammonospace", 0xff01 }, { "exclamsmall", 0xf721 }, { "ezh", 0x0292 }, { "ezhcaron", 0x01ef }, { "ezhcurl", 0x0293 }, { "ezhreversed", 0x01b9 }, { "ezhtail", 0x01ba }, { "fadeva", 0x095e }, { "fagurmukhi", 0x0a5e }, { "fahrenheit", 0x2109 }, { "fathaarabic", 0x064e }, { "fathalowarabic", 0x064e }, { "fathatanarabic", 0x064b }, { "fbopomofo", 0x3108 }, { "fcircle", 0x24d5 }, { "fdotaccent", 0x1e1f }, { "feharabic", 0x0641 }, { "feharmenian", 0x0586 }, { "fehfinalarabic", 0xfed2 }, { "fehinitialarabic", 0xfed3 }, { "fehmedialarabic", 0xfed4 }, { "feicoptic", 0x03e5 }, { "ff", 0xfb00 }, { "ffi", 0xfb03 }, { "ffl", 0xfb04 }, { "fi", 0xfb01 }, { "fifteencircle", 0x246e }, { "fifteenparen", 0x2482 }, { "fifteenperiod", 0x2496 }, { "finalkaf", 0x05da }, { "finalkafdagesh", 0xfb3a }, { "finalkafdageshhebrew", 0xfb3a }, { "finalkafhebrew", 0x05da }, { "finalkafqamats", 0x05da }, { "finalkafqamatshebrew", 0x05da }, { "finalkafsheva", 0x05da }, { "finalkafshevahebrew", 0x05da }, { "finalmem", 0x05dd }, { "finalmemhebrew", 0x05dd }, { "finalnun", 0x05df }, { "finalnunhebrew", 0x05df }, { "finalpe", 0x05e3 }, { "finalpehebrew", 0x05e3 }, { "finaltsadi", 0x05e5 }, { "finaltsadihebrew", 0x05e5 }, { "firsttonechinese", 0x02c9 }, { "fisheye", 0x25c9 }, { "fitacyrillic", 0x0473 }, { "fivearabic", 0x0665 }, { "fivebengali", 0x09eb }, { "fivecircle", 0x2464 }, { "fivecircleinversesansserif", 0x278e }, { "fivedeva", 0x096b }, { "fivegujarati", 0x0aeb }, { "fivegurmukhi", 0x0a6b }, { "fivehackarabic", 0x0665 }, { "fivehangzhou", 0x3025 }, { "fiveideographicparen", 0x3224 }, { "fiveinferior", 0x2085 }, { "fivemonospace", 0xff15 }, { "fiveoldstyle", 0xf735 }, { "fiveparen", 0x2478 }, { "fiveperiod", 0x248c }, { "fivepersian", 0x06f5 }, { "fiveroman", 0x2174 }, { "fivesuperior", 0x2075 }, { "fivethai", 0x0e55 }, { "fl", 0xfb02 }, { "fmonospace", 0xff46 }, { "fmsquare", 0x3399 }, { "fofanthai", 0x0e1f }, { "fofathai", 0x0e1d }, { "fongmanthai", 0x0e4f }, { "forall", 0x2200 }, { "fourarabic", 0x0664 }, { "fourbengali", 0x09ea }, { "fourcircle", 0x2463 }, { "fourcircleinversesansserif", 0x278d }, { "fourdeva", 0x096a }, { "fourgujarati", 0x0aea }, { "fourgurmukhi", 0x0a6a }, { "fourhackarabic", 0x0664 }, { "fourhangzhou", 0x3024 }, { "fourideographicparen", 0x3223 }, { "fourinferior", 0x2084 }, { "fourmonospace", 0xff14 }, { "fournumeratorbengali", 0x09f7 }, { "fouroldstyle", 0xf734 }, { "fourparen", 0x2477 }, { "fourperiod", 0x248b }, { "fourpersian", 0x06f4 }, { "fourroman", 0x2173 }, { "foursuperior", 0x2074 }, { "fourteencircle", 0x246d }, { "fourteenparen", 0x2481 }, { "fourteenperiod", 0x2495 }, { "fourthai", 0x0e54 }, { "fourthtonechinese", 0x02cb }, { "fparen", 0x24a1 }, { "gabengali", 0x0997 }, { "gacute", 0x01f5 }, { "gadeva", 0x0917 }, { "gafarabic", 0x06af }, { "gaffinalarabic", 0xfb93 }, { "gafinitialarabic", 0xfb94 }, { "gafmedialarabic", 0xfb95 }, { "gagujarati", 0x0a97 }, { "gagurmukhi", 0x0a17 }, { "gahiragana", 0x304c }, { "gakatakana", 0x30ac }, { "gammalatinsmall", 0x0263 }, { "gammasuperior", 0x02e0 }, { "gangiacoptic", 0x03eb }, { "gbopomofo", 0x310d }, { "gcedilla", 0x0123 }, { "gcircle", 0x24d6 }, { "gdot", 0x0121 }, { "gecyrillic", 0x0433 }, { "gehiragana", 0x3052 }, { "gekatakana", 0x30b2 }, { "geometricallyequal", 0x2251 }, { "gereshaccenthebrew", 0x059c }, { "gereshhebrew", 0x05f3 }, { "gereshmuqdamhebrew", 0x059d }, { "gershayimaccenthebrew", 0x059e }, { "gershayimhebrew", 0x05f4 }, { "getamark", 0x3013 }, { "ghabengali", 0x0998 }, { "ghadarmenian", 0x0572 }, { "ghadeva", 0x0918 }, { "ghagujarati", 0x0a98 }, { "ghagurmukhi", 0x0a18 }, { "ghainarabic", 0x063a }, { "ghainfinalarabic", 0xfece }, { "ghaininitialarabic", 0xfecf }, { "ghainmedialarabic", 0xfed0 }, { "ghemiddlehookcyrillic", 0x0495 }, { "ghestrokecyrillic", 0x0493 }, { "gheupturncyrillic", 0x0491 }, { "ghhadeva", 0x095a }, { "ghhagurmukhi", 0x0a5a }, { "ghook", 0x0260 }, { "ghzsquare", 0x3393 }, { "gihiragana", 0x304e }, { "gikatakana", 0x30ae }, { "gimarmenian", 0x0563 }, { "gimel", 0x05d2 }, { "gimeldagesh", 0xfb32 }, { "gimeldageshhebrew", 0xfb32 }, { "gimelhebrew", 0x05d2 }, { "gjecyrillic", 0x0453 }, { "glottalinvertedstroke", 0x01be }, { "glottalstop", 0x0294 }, { "glottalstopinverted", 0x0296 }, { "glottalstopmod", 0x02c0 }, { "glottalstopreversed", 0x0295 }, { "glottalstopreversedmod", 0x02c1 }, { "glottalstopreversedsuperior", 0x02e4 }, { "glottalstopstroke", 0x02a1 }, { "glottalstopstrokereversed", 0x02a2 }, { "gmacron", 0x1e21 }, { "gmonospace", 0xff47 }, { "gohiragana", 0x3054 }, { "gokatakana", 0x30b4 }, { "gparen", 0x24a2 }, { "gpasquare", 0x33ac }, { "gravebelowcmb", 0x0316 }, { "gravecmb", 0x0300 }, { "gravedeva", 0x0953 }, { "gravelowmod", 0x02ce }, { "gravemonospace", 0xff40 }, { "gravetonecmb", 0x0340 }, { "greaterequalorless", 0x22db }, { "greatermonospace", 0xff1e }, { "greaterorequivalent", 0x2273 }, { "greaterorless", 0x2277 }, { "greateroverequal", 0x2267 }, { "greatersmall", 0xfe65 }, { "gscript", 0x0261 }, { "gstroke", 0x01e5 }, { "guhiragana", 0x3050 }, { "gukatakana", 0x30b0 }, { "guramusquare", 0x3318 }, { "gysquare", 0x33c9 }, { "haabkhasiancyrillic", 0x04a9 }, { "haaltonearabic", 0x06c1 }, { "habengali", 0x09b9 }, { "hadescendercyrillic", 0x04b3 }, { "hadeva", 0x0939 }, { "hagujarati", 0x0ab9 }, { "hagurmukhi", 0x0a39 }, { "haharabic", 0x062d }, { "hahfinalarabic", 0xfea2 }, { "hahinitialarabic", 0xfea3 }, { "hahiragana", 0x306f }, { "hahmedialarabic", 0xfea4 }, { "haitusquare", 0x332a }, { "hakatakana", 0x30cf }, { "hakatakanahalfwidth", 0xff8a }, { "halantgurmukhi", 0x0a4d }, { "hamzaarabic", 0x0621 }, { "hamzadammaarabic", 0x0621 }, { "hamzadammatanarabic", 0x0621 }, { "hamzafathaarabic", 0x0621 }, { "hamzafathatanarabic", 0x0621 }, { "hamzalowarabic", 0x0621 }, { "hamzalowkasraarabic", 0x0621 }, { "hamzalowkasratanarabic", 0x0621 }, { "hamzasukunarabic", 0x0621 }, { "hangulfiller", 0x3164 }, { "hardsigncyrillic", 0x044a }, { "harpoonleftbarbup", 0x21bc }, { "harpoonrightbarbup", 0x21c0 }, { "hasquare", 0x33ca }, { "hatafpatah", 0x05b2 }, { "hatafpatah16", 0x05b2 }, { "hatafpatah23", 0x05b2 }, { "hatafpatah2f", 0x05b2 }, { "hatafpatahhebrew", 0x05b2 }, { "hatafpatahnarrowhebrew", 0x05b2 }, { "hatafpatahquarterhebrew", 0x05b2 }, { "hatafpatahwidehebrew", 0x05b2 }, { "hatafqamats", 0x05b3 }, { "hatafqamats1b", 0x05b3 }, { "hatafqamats28", 0x05b3 }, { "hatafqamats34", 0x05b3 }, { "hatafqamatshebrew", 0x05b3 }, { "hatafqamatsnarrowhebrew", 0x05b3 }, { "hatafqamatsquarterhebrew", 0x05b3 }, { "hatafqamatswidehebrew", 0x05b3 }, { "hatafsegol", 0x05b1 }, { "hatafsegol17", 0x05b1 }, { "hatafsegol24", 0x05b1 }, { "hatafsegol30", 0x05b1 }, { "hatafsegolhebrew", 0x05b1 }, { "hatafsegolnarrowhebrew", 0x05b1 }, { "hatafsegolquarterhebrew", 0x05b1 }, { "hatafsegolwidehebrew", 0x05b1 }, { "hbopomofo", 0x310f }, { "hbrevebelow", 0x1e2b }, { "hcedilla", 0x1e29 }, { "hcircle", 0x24d7 }, { "hdieresis", 0x1e27 }, { "hdotaccent", 0x1e23 }, { "hdotbelow", 0x1e25 }, { "he", 0x05d4 }, { "heartsuitblack", 0x2665 }, { "heartsuitwhite", 0x2661 }, { "hedagesh", 0xfb34 }, { "hedageshhebrew", 0xfb34 }, { "hehaltonearabic", 0x06c1 }, { "heharabic", 0x0647 }, { "hehebrew", 0x05d4 }, { "hehfinalaltonearabic", 0xfba7 }, { "hehfinalalttwoarabic", 0xfeea }, { "hehfinalarabic", 0xfeea }, { "hehhamzaabovefinalarabic", 0xfba5 }, { "hehhamzaaboveisolatedarabic", 0xfba4 }, { "hehinitialaltonearabic", 0xfba8 }, { "hehinitialarabic", 0xfeeb }, { "hehiragana", 0x3078 }, { "hehmedialaltonearabic", 0xfba9 }, { "hehmedialarabic", 0xfeec }, { "heiseierasquare", 0x337b }, { "hekatakana", 0x30d8 }, { "hekatakanahalfwidth", 0xff8d }, { "hekutaarusquare", 0x3336 }, { "henghook", 0x0267 }, { "herutusquare", 0x3339 }, { "het", 0x05d7 }, { "hethebrew", 0x05d7 }, { "hhook", 0x0266 }, { "hhooksuperior", 0x02b1 }, { "hieuhacirclekorean", 0x327b }, { "hieuhaparenkorean", 0x321b }, { "hieuhcirclekorean", 0x326d }, { "hieuhkorean", 0x314e }, { "hieuhparenkorean", 0x320d }, { "hihiragana", 0x3072 }, { "hikatakana", 0x30d2 }, { "hikatakanahalfwidth", 0xff8b }, { "hiriq", 0x05b4 }, { "hiriq14", 0x05b4 }, { "hiriq21", 0x05b4 }, { "hiriq2d", 0x05b4 }, { "hiriqhebrew", 0x05b4 }, { "hiriqnarrowhebrew", 0x05b4 }, { "hiriqquarterhebrew", 0x05b4 }, { "hiriqwidehebrew", 0x05b4 }, { "hlinebelow", 0x1e96 }, { "hmonospace", 0xff48 }, { "hoarmenian", 0x0570 }, { "hohipthai", 0x0e2b }, { "hohiragana", 0x307b }, { "hokatakana", 0x30db }, { "hokatakanahalfwidth", 0xff8e }, { "holam", 0x05b9 }, { "holam19", 0x05b9 }, { "holam26", 0x05b9 }, { "holam32", 0x05b9 }, { "holamhebrew", 0x05b9 }, { "holamnarrowhebrew", 0x05b9 }, { "holamquarterhebrew", 0x05b9 }, { "holamwidehebrew", 0x05b9 }, { "honokhukthai", 0x0e2e }, { "hookcmb", 0x0309 }, { "hookpalatalizedbelowcmb", 0x0321 }, { "hookretroflexbelowcmb", 0x0322 }, { "hoonsquare", 0x3342 }, { "horicoptic", 0x03e9 }, { "horizontalbar", 0x2015 }, { "horncmb", 0x031b }, { "hotsprings", 0x2668 }, { "hparen", 0x24a3 }, { "hsuperior", 0x02b0 }, { "hturned", 0x0265 }, { "huhiragana", 0x3075 }, { "huiitosquare", 0x3333 }, { "hukatakana", 0x30d5 }, { "hukatakanahalfwidth", 0xff8c }, { "hungarumlautcmb", 0x030b }, { "hv", 0x0195 }, { "hypheninferior", 0xf6e5 }, { "hyphenmonospace", 0xff0d }, { "hyphensmall", 0xfe63 }, { "hyphensuperior", 0xf6e6 }, { "hyphentwo", 0x2010 }, { "iacyrillic", 0x044f }, { "ibengali", 0x0987 }, { "ibopomofo", 0x3127 }, { "icaron", 0x01d0 }, { "icircle", 0x24d8 }, { "icyrillic", 0x0456 }, { "idblgrave", 0x0209 }, { "ideographearthcircle", 0x328f }, { "ideographfirecircle", 0x328b }, { "ideographicallianceparen", 0x323f }, { "ideographiccallparen", 0x323a }, { "ideographiccentrecircle", 0x32a5 }, { "ideographicclose", 0x3006 }, { "ideographiccomma", 0x3001 }, { "ideographiccommaleft", 0xff64 }, { "ideographiccongratulationparen", 0x3237 }, { "ideographiccorrectcircle", 0x32a3 }, { "ideographicearthparen", 0x322f }, { "ideographicenterpriseparen", 0x323d }, { "ideographicexcellentcircle", 0x329d }, { "ideographicfestivalparen", 0x3240 }, { "ideographicfinancialcircle", 0x3296 }, { "ideographicfinancialparen", 0x3236 }, { "ideographicfireparen", 0x322b }, { "ideographichaveparen", 0x3232 }, { "ideographichighcircle", 0x32a4 }, { "ideographiciterationmark", 0x3005 }, { "ideographiclaborcircle", 0x3298 }, { "ideographiclaborparen", 0x3238 }, { "ideographicleftcircle", 0x32a7 }, { "ideographiclowcircle", 0x32a6 }, { "ideographicmedicinecircle", 0x32a9 }, { "ideographicmetalparen", 0x322e }, { "ideographicmoonparen", 0x322a }, { "ideographicnameparen", 0x3234 }, { "ideographicperiod", 0x3002 }, { "ideographicprintcircle", 0x329e }, { "ideographicreachparen", 0x3243 }, { "ideographicrepresentparen", 0x3239 }, { "ideographicresourceparen", 0x323e }, { "ideographicrightcircle", 0x32a8 }, { "ideographicsecretcircle", 0x3299 }, { "ideographicselfparen", 0x3242 }, { "ideographicsocietyparen", 0x3233 }, { "ideographicspace", 0x3000 }, { "ideographicspecialparen", 0x3235 }, { "ideographicstockparen", 0x3231 }, { "ideographicstudyparen", 0x323b }, { "ideographicsunparen", 0x3230 }, { "ideographicsuperviseparen", 0x323c }, { "ideographicwaterparen", 0x322c }, { "ideographicwoodparen", 0x322d }, { "ideographiczero", 0x3007 }, { "ideographmetalcircle", 0x328e }, { "ideographmooncircle", 0x328a }, { "ideographnamecircle", 0x3294 }, { "ideographsuncircle", 0x3290 }, { "ideographwatercircle", 0x328c }, { "ideographwoodcircle", 0x328d }, { "ideva", 0x0907 }, { "idieresisacute", 0x1e2f }, { "idieresiscyrillic", 0x04e5 }, { "idotbelow", 0x1ecb }, { "iebrevecyrillic", 0x04d7 }, { "iecyrillic", 0x0435 }, { "ieungacirclekorean", 0x3275 }, { "ieungaparenkorean", 0x3215 }, { "ieungcirclekorean", 0x3267 }, { "ieungkorean", 0x3147 }, { "ieungparenkorean", 0x3207 }, { "igujarati", 0x0a87 }, { "igurmukhi", 0x0a07 }, { "ihiragana", 0x3044 }, { "ihookabove", 0x1ec9 }, { "iibengali", 0x0988 }, { "iicyrillic", 0x0438 }, { "iideva", 0x0908 }, { "iigujarati", 0x0a88 }, { "iigurmukhi", 0x0a08 }, { "iimatragurmukhi", 0x0a40 }, { "iinvertedbreve", 0x020b }, { "iishortcyrillic", 0x0439 }, { "iivowelsignbengali", 0x09c0 }, { "iivowelsigndeva", 0x0940 }, { "iivowelsigngujarati", 0x0ac0 }, { "ikatakana", 0x30a4 }, { "ikatakanahalfwidth", 0xff72 }, { "ikorean", 0x3163 }, { "ilde", 0x02dc }, { "iluyhebrew", 0x05ac }, { "imacroncyrillic", 0x04e3 }, { "imageorapproximatelyequal", 0x2253 }, { "imatragurmukhi", 0x0a3f }, { "imonospace", 0xff49 }, { "increment", 0x2206 }, { "iniarmenian", 0x056b }, { "integralbottom", 0x2321 }, { "integralex", 0xf8f5 }, { "integraltop", 0x2320 }, { "intisquare", 0x3305 }, { "iocyrillic", 0x0451 }, { "iotalatin", 0x0269 }, { "iparen", 0x24a4 }, { "irigurmukhi", 0x0a72 }, { "ismallhiragana", 0x3043 }, { "ismallkatakana", 0x30a3 }, { "ismallkatakanahalfwidth", 0xff68 }, { "issharbengali", 0x09fa }, { "istroke", 0x0268 }, { "isuperior", 0xf6ed }, { "iterationhiragana", 0x309d }, { "iterationkatakana", 0x30fd }, { "itildebelow", 0x1e2d }, { "iubopomofo", 0x3129 }, { "iucyrillic", 0x044e }, { "ivowelsignbengali", 0x09bf }, { "ivowelsigndeva", 0x093f }, { "ivowelsigngujarati", 0x0abf }, { "izhitsacyrillic", 0x0475 }, { "izhitsadblgravecyrillic", 0x0477 }, { "jaarmenian", 0x0571 }, { "jabengali", 0x099c }, { "jadeva", 0x091c }, { "jagujarati", 0x0a9c }, { "jagurmukhi", 0x0a1c }, { "jbopomofo", 0x3110 }, { "jcaron", 0x01f0 }, { "jcircle", 0x24d9 }, { "jcrossedtail", 0x029d }, { "jdotlessstroke", 0x025f }, { "jecyrillic", 0x0458 }, { "jeemarabic", 0x062c }, { "jeemfinalarabic", 0xfe9e }, { "jeeminitialarabic", 0xfe9f }, { "jeemmedialarabic", 0xfea0 }, { "jeharabic", 0x0698 }, { "jehfinalarabic", 0xfb8b }, { "jhabengali", 0x099d }, { "jhadeva", 0x091d }, { "jhagujarati", 0x0a9d }, { "jhagurmukhi", 0x0a1d }, { "jheharmenian", 0x057b }, { "jis", 0x3004 }, { "jmonospace", 0xff4a }, { "jparen", 0x24a5 }, { "jsuperior", 0x02b2 }, { "kabashkircyrillic", 0x04a1 }, { "kabengali", 0x0995 }, { "kacute", 0x1e31 }, { "kacyrillic", 0x043a }, { "kadescendercyrillic", 0x049b }, { "kadeva", 0x0915 }, { "kaf", 0x05db }, { "kafarabic", 0x0643 }, { "kafdagesh", 0xfb3b }, { "kafdageshhebrew", 0xfb3b }, { "kaffinalarabic", 0xfeda }, { "kafhebrew", 0x05db }, { "kafinitialarabic", 0xfedb }, { "kafmedialarabic", 0xfedc }, { "kafrafehebrew", 0xfb4d }, { "kagujarati", 0x0a95 }, { "kagurmukhi", 0x0a15 }, { "kahiragana", 0x304b }, { "kahookcyrillic", 0x04c4 }, { "kakatakana", 0x30ab }, { "kakatakanahalfwidth", 0xff76 }, { "kappasymbolgreek", 0x03f0 }, { "kapyeounmieumkorean", 0x3171 }, { "kapyeounphieuphkorean", 0x3184 }, { "kapyeounpieupkorean", 0x3178 }, { "kapyeounssangpieupkorean", 0x3179 }, { "karoriisquare", 0x330d }, { "kashidaautoarabic", 0x0640 }, { "kashidaautonosidebearingarabic", 0x0640 }, { "kasmallkatakana", 0x30f5 }, { "kasquare", 0x3384 }, { "kasraarabic", 0x0650 }, { "kasratanarabic", 0x064d }, { "kastrokecyrillic", 0x049f }, { "katahiraprolongmarkhalfwidth", 0xff70 }, { "kaverticalstrokecyrillic", 0x049d }, { "kbopomofo", 0x310e }, { "kcalsquare", 0x3389 }, { "kcaron", 0x01e9 }, { "kcedilla", 0x0137 }, { "kcircle", 0x24da }, { "kdotbelow", 0x1e33 }, { "keharmenian", 0x0584 }, { "kehiragana", 0x3051 }, { "kekatakana", 0x30b1 }, { "kekatakanahalfwidth", 0xff79 }, { "kenarmenian", 0x056f }, { "kesmallkatakana", 0x30f6 }, { "khabengali", 0x0996 }, { "khacyrillic", 0x0445 }, { "khadeva", 0x0916 }, { "khagujarati", 0x0a96 }, { "khagurmukhi", 0x0a16 }, { "khaharabic", 0x062e }, { "khahfinalarabic", 0xfea6 }, { "khahinitialarabic", 0xfea7 }, { "khahmedialarabic", 0xfea8 }, { "kheicoptic", 0x03e7 }, { "khhadeva", 0x0959 }, { "khhagurmukhi", 0x0a59 }, { "khieukhacirclekorean", 0x3278 }, { "khieukhaparenkorean", 0x3218 }, { "khieukhcirclekorean", 0x326a }, { "khieukhkorean", 0x314b }, { "khieukhparenkorean", 0x320a }, { "khokhaithai", 0x0e02 }, { "khokhonthai", 0x0e05 }, { "khokhuatthai", 0x0e03 }, { "khokhwaithai", 0x0e04 }, { "khomutthai", 0x0e5b }, { "khook", 0x0199 }, { "khorakhangthai", 0x0e06 }, { "khzsquare", 0x3391 }, { "kihiragana", 0x304d }, { "kikatakana", 0x30ad }, { "kikatakanahalfwidth", 0xff77 }, { "kiroguramusquare", 0x3315 }, { "kiromeetorusquare", 0x3316 }, { "kirosquare", 0x3314 }, { "kiyeokacirclekorean", 0x326e }, { "kiyeokaparenkorean", 0x320e }, { "kiyeokcirclekorean", 0x3260 }, { "kiyeokkorean", 0x3131 }, { "kiyeokparenkorean", 0x3200 }, { "kiyeoksioskorean", 0x3133 }, { "kjecyrillic", 0x045c }, { "klinebelow", 0x1e35 }, { "klsquare", 0x3398 }, { "kmcubedsquare", 0x33a6 }, { "kmonospace", 0xff4b }, { "kmsquaredsquare", 0x33a2 }, { "kohiragana", 0x3053 }, { "kohmsquare", 0x33c0 }, { "kokaithai", 0x0e01 }, { "kokatakana", 0x30b3 }, { "kokatakanahalfwidth", 0xff7a }, { "kooposquare", 0x331e }, { "koppacyrillic", 0x0481 }, { "koreanstandardsymbol", 0x327f }, { "koroniscmb", 0x0343 }, { "kparen", 0x24a6 }, { "kpasquare", 0x33aa }, { "ksicyrillic", 0x046f }, { "ktsquare", 0x33cf }, { "kturned", 0x029e }, { "kuhiragana", 0x304f }, { "kukatakana", 0x30af }, { "kukatakanahalfwidth", 0xff78 }, { "kvsquare", 0x33b8 }, { "kwsquare", 0x33be }, { "labengali", 0x09b2 }, { "ladeva", 0x0932 }, { "lagujarati", 0x0ab2 }, { "lagurmukhi", 0x0a32 }, { "lakkhangyaothai", 0x0e45 }, { "lamaleffinalarabic", 0xfefc }, { "lamalefhamzaabovefinalarabic", 0xfef8 }, { "lamalefhamzaaboveisolatedarabic", 0xfef7 }, { "lamalefhamzabelowfinalarabic", 0xfefa }, { "lamalefhamzabelowisolatedarabic", 0xfef9 }, { "lamalefisolatedarabic", 0xfefb }, { "lamalefmaddaabovefinalarabic", 0xfef6 }, { "lamalefmaddaaboveisolatedarabic", 0xfef5 }, { "lamarabic", 0x0644 }, { "lambdastroke", 0x019b }, { "lamed", 0x05dc }, { "lameddagesh", 0xfb3c }, { "lameddageshhebrew", 0xfb3c }, { "lamedhebrew", 0x05dc }, { "lamedholam", 0x05dc }, { "lamedholamdagesh", 0x05dc }, { "lamedholamdageshhebrew", 0x05dc }, { "lamedholamhebrew", 0x05dc }, { "lamfinalarabic", 0xfede }, { "lamhahinitialarabic", 0xfcca }, { "laminitialarabic", 0xfedf }, { "lamjeeminitialarabic", 0xfcc9 }, { "lamkhahinitialarabic", 0xfccb }, { "lamlamhehisolatedarabic", 0xfdf2 }, { "lammedialarabic", 0xfee0 }, { "lammeemhahinitialarabic", 0xfd88 }, { "lammeeminitialarabic", 0xfccc }, { "lammeemjeeminitialarabic", 0xfedf }, { "lammeemkhahinitialarabic", 0xfedf }, { "largecircle", 0x25ef }, { "lbar", 0x019a }, { "lbelt", 0x026c }, { "lbopomofo", 0x310c }, { "lcedilla", 0x013c }, { "lcircle", 0x24db }, { "lcircumflexbelow", 0x1e3d }, { "ldotaccent", 0x0140 }, { "ldotbelow", 0x1e37 }, { "ldotbelowmacron", 0x1e39 }, { "leftangleabovecmb", 0x031a }, { "lefttackbelowcmb", 0x0318 }, { "lessequalorgreater", 0x22da }, { "lessmonospace", 0xff1c }, { "lessorequivalent", 0x2272 }, { "lessorgreater", 0x2276 }, { "lessoverequal", 0x2266 }, { "lesssmall", 0xfe64 }, { "lezh", 0x026e }, { "lhookretroflex", 0x026d }, { "liwnarmenian", 0x056c }, { "lj", 0x01c9 }, { "ljecyrillic", 0x0459 }, { "ll", 0xf6c0 }, { "lladeva", 0x0933 }, { "llagujarati", 0x0ab3 }, { "llinebelow", 0x1e3b }, { "llladeva", 0x0934 }, { "llvocalicbengali", 0x09e1 }, { "llvocalicdeva", 0x0961 }, { "llvocalicvowelsignbengali", 0x09e3 }, { "llvocalicvowelsigndeva", 0x0963 }, { "lmiddletilde", 0x026b }, { "lmonospace", 0xff4c }, { "lmsquare", 0x33d0 }, { "lochulathai", 0x0e2c }, { "logicalnotreversed", 0x2310 }, { "lolingthai", 0x0e25 }, { "lowlinecenterline", 0xfe4e }, { "lowlinecmb", 0x0332 }, { "lowlinedashed", 0xfe4d }, { "lparen", 0x24a7 }, { "lsquare", 0x2113 }, { "lsuperior", 0xf6ee }, { "luthai", 0x0e26 }, { "lvocalicbengali", 0x098c }, { "lvocalicdeva", 0x090c }, { "lvocalicvowelsignbengali", 0x09e2 }, { "lvocalicvowelsigndeva", 0x0962 }, { "lxsquare", 0x33d3 }, { "mabengali", 0x09ae }, { "macronbelowcmb", 0x0331 }, { "macroncmb", 0x0304 }, { "macronlowmod", 0x02cd }, { "macronmonospace", 0xffe3 }, { "macute", 0x1e3f }, { "madeva", 0x092e }, { "magujarati", 0x0aae }, { "magurmukhi", 0x0a2e }, { "mahapakhhebrew", 0x05a4 }, { "mahapakhlefthebrew", 0x05a4 }, { "mahiragana", 0x307e }, { "maichattawalowleftthai", 0xf895 }, { "maichattawalowrightthai", 0xf894 }, { "maichattawathai", 0x0e4b }, { "maichattawaupperleftthai", 0xf893 }, { "maieklowleftthai", 0xf88c }, { "maieklowrightthai", 0xf88b }, { "maiekthai", 0x0e48 }, { "maiekupperleftthai", 0xf88a }, { "maihanakatleftthai", 0xf884 }, { "maihanakatthai", 0x0e31 }, { "maitaikhuleftthai", 0xf889 }, { "maitaikhuthai", 0x0e47 }, { "maitholowleftthai", 0xf88f }, { "maitholowrightthai", 0xf88e }, { "maithothai", 0x0e49 }, { "maithoupperleftthai", 0xf88d }, { "maitrilowleftthai", 0xf892 }, { "maitrilowrightthai", 0xf891 }, { "maitrithai", 0x0e4a }, { "maitriupperleftthai", 0xf890 }, { "maiyamokthai", 0x0e46 }, { "makatakana", 0x30de }, { "makatakanahalfwidth", 0xff8f }, { "mansyonsquare", 0x3347 }, { "maqafhebrew", 0x05be }, { "mars", 0x2642 }, { "masoracirclehebrew", 0x05af }, { "masquare", 0x3383 }, { "mbopomofo", 0x3107 }, { "mbsquare", 0x33d4 }, { "mcircle", 0x24dc }, { "mcubedsquare", 0x33a5 }, { "mdotaccent", 0x1e41 }, { "mdotbelow", 0x1e43 }, { "meemarabic", 0x0645 }, { "meemfinalarabic", 0xfee2 }, { "meeminitialarabic", 0xfee3 }, { "meemmedialarabic", 0xfee4 }, { "meemmeeminitialarabic", 0xfcd1 }, { "meemmeemisolatedarabic", 0xfc48 }, { "meetorusquare", 0x334d }, { "mehiragana", 0x3081 }, { "meizierasquare", 0x337e }, { "mekatakana", 0x30e1 }, { "mekatakanahalfwidth", 0xff92 }, { "mem", 0x05de }, { "memdagesh", 0xfb3e }, { "memdageshhebrew", 0xfb3e }, { "memhebrew", 0x05de }, { "menarmenian", 0x0574 }, { "merkhahebrew", 0x05a5 }, { "merkhakefulahebrew", 0x05a6 }, { "merkhakefulalefthebrew", 0x05a6 }, { "merkhalefthebrew", 0x05a5 }, { "mhook", 0x0271 }, { "mhzsquare", 0x3392 }, { "middledotkatakanahalfwidth", 0xff65 }, { "middot", 0x00b7 }, { "mieumacirclekorean", 0x3272 }, { "mieumaparenkorean", 0x3212 }, { "mieumcirclekorean", 0x3264 }, { "mieumkorean", 0x3141 }, { "mieumpansioskorean", 0x3170 }, { "mieumparenkorean", 0x3204 }, { "mieumpieupkorean", 0x316e }, { "mieumsioskorean", 0x316f }, { "mihiragana", 0x307f }, { "mikatakana", 0x30df }, { "mikatakanahalfwidth", 0xff90 }, { "minusbelowcmb", 0x0320 }, { "minuscircle", 0x2296 }, { "minusmod", 0x02d7 }, { "minusplus", 0x2213 }, { "miribaarusquare", 0x334a }, { "mirisquare", 0x3349 }, { "mlonglegturned", 0x0270 }, { "mlsquare", 0x3396 }, { "mmcubedsquare", 0x33a3 }, { "mmonospace", 0xff4d }, { "mmsquaredsquare", 0x339f }, { "mohiragana", 0x3082 }, { "mohmsquare", 0x33c1 }, { "mokatakana", 0x30e2 }, { "mokatakanahalfwidth", 0xff93 }, { "molsquare", 0x33d6 }, { "momathai", 0x0e21 }, { "moverssquare", 0x33a7 }, { "moverssquaredsquare", 0x33a8 }, { "mparen", 0x24a8 }, { "mpasquare", 0x33ab }, { "mssquare", 0x33b3 }, { "msuperior", 0xf6ef }, { "mturned", 0x026f }, { "mu1", 0x00b5 }, { "muasquare", 0x3382 }, { "muchgreater", 0x226b }, { "muchless", 0x226a }, { "mufsquare", 0x338c }, { "mugreek", 0x03bc }, { "mugsquare", 0x338d }, { "muhiragana", 0x3080 }, { "mukatakana", 0x30e0 }, { "mukatakanahalfwidth", 0xff91 }, { "mulsquare", 0x3395 }, { "mumsquare", 0x339b }, { "munahhebrew", 0x05a3 }, { "munahlefthebrew", 0x05a3 }, { "musicflatsign", 0x266d }, { "musicsharpsign", 0x266f }, { "mussquare", 0x33b2 }, { "muvsquare", 0x33b6 }, { "muwsquare", 0x33bc }, { "mvmegasquare", 0x33b9 }, { "mvsquare", 0x33b7 }, { "mwmegasquare", 0x33bf }, { "mwsquare", 0x33bd }, { "nabengali", 0x09a8 }, { "nabla", 0x2207 }, { "nadeva", 0x0928 }, { "nagujarati", 0x0aa8 }, { "nagurmukhi", 0x0a28 }, { "nahiragana", 0x306a }, { "nakatakana", 0x30ca }, { "nakatakanahalfwidth", 0xff85 }, { "nasquare", 0x3381 }, { "nbopomofo", 0x310b }, { "nbspace", 0x00a0 }, { "ncedilla", 0x0146 }, { "ncircle", 0x24dd }, { "ncircumflexbelow", 0x1e4b }, { "ndotaccent", 0x1e45 }, { "ndotbelow", 0x1e47 }, { "nehiragana", 0x306d }, { "nekatakana", 0x30cd }, { "nekatakanahalfwidth", 0xff88 }, { "newsheqelsign", 0x20aa }, { "nfsquare", 0x338b }, { "ngabengali", 0x0999 }, { "ngadeva", 0x0919 }, { "ngagujarati", 0x0a99 }, { "ngagurmukhi", 0x0a19 }, { "ngonguthai", 0x0e07 }, { "nhiragana", 0x3093 }, { "nhookleft", 0x0272 }, { "nhookretroflex", 0x0273 }, { "nieunacirclekorean", 0x326f }, { "nieunaparenkorean", 0x320f }, { "nieuncieuckorean", 0x3135 }, { "nieuncirclekorean", 0x3261 }, { "nieunhieuhkorean", 0x3136 }, { "nieunkorean", 0x3134 }, { "nieunpansioskorean", 0x3168 }, { "nieunparenkorean", 0x3201 }, { "nieunsioskorean", 0x3167 }, { "nieuntikeutkorean", 0x3166 }, { "nihiragana", 0x306b }, { "nikatakana", 0x30cb }, { "nikatakanahalfwidth", 0xff86 }, { "nikhahitleftthai", 0xf899 }, { "nikhahitthai", 0x0e4d }, { "ninearabic", 0x0669 }, { "ninebengali", 0x09ef }, { "ninecircle", 0x2468 }, { "ninecircleinversesansserif", 0x2792 }, { "ninedeva", 0x096f }, { "ninegujarati", 0x0aef }, { "ninegurmukhi", 0x0a6f }, { "ninehackarabic", 0x0669 }, { "ninehangzhou", 0x3029 }, { "nineideographicparen", 0x3228 }, { "nineinferior", 0x2089 }, { "ninemonospace", 0xff19 }, { "nineoldstyle", 0xf739 }, { "nineparen", 0x247c }, { "nineperiod", 0x2490 }, { "ninepersian", 0x06f9 }, { "nineroman", 0x2178 }, { "ninesuperior", 0x2079 }, { "nineteencircle", 0x2472 }, { "nineteenparen", 0x2486 }, { "nineteenperiod", 0x249a }, { "ninethai", 0x0e59 }, { "nj", 0x01cc }, { "njecyrillic", 0x045a }, { "nkatakana", 0x30f3 }, { "nkatakanahalfwidth", 0xff9d }, { "nlegrightlong", 0x019e }, { "nlinebelow", 0x1e49 }, { "nmonospace", 0xff4e }, { "nmsquare", 0x339a }, { "nnabengali", 0x09a3 }, { "nnadeva", 0x0923 }, { "nnagujarati", 0x0aa3 }, { "nnagurmukhi", 0x0a23 }, { "nnnadeva", 0x0929 }, { "nohiragana", 0x306e }, { "nokatakana", 0x30ce }, { "nokatakanahalfwidth", 0xff89 }, { "nonbreakingspace", 0x00a0 }, { "nonenthai", 0x0e13 }, { "nonuthai", 0x0e19 }, { "noonarabic", 0x0646 }, { "noonfinalarabic", 0xfee6 }, { "noonghunnaarabic", 0x06ba }, { "noonghunnafinalarabic", 0xfb9f }, { "noonhehinitialarabic", 0xfee7 }, { "nooninitialarabic", 0xfee7 }, { "noonjeeminitialarabic", 0xfcd2 }, { "noonjeemisolatedarabic", 0xfc4b }, { "noonmedialarabic", 0xfee8 }, { "noonmeeminitialarabic", 0xfcd5 }, { "noonmeemisolatedarabic", 0xfc4e }, { "noonnoonfinalarabic", 0xfc8d }, { "notcontains", 0x220c }, { "notelementof", 0x2209 }, { "notgreater", 0x226f }, { "notgreaternorequal", 0x2271 }, { "notgreaternorless", 0x2279 }, { "notidentical", 0x2262 }, { "notless", 0x226e }, { "notlessnorequal", 0x2270 }, { "notparallel", 0x2226 }, { "notprecedes", 0x2280 }, { "notsucceeds", 0x2281 }, { "notsuperset", 0x2285 }, { "nowarmenian", 0x0576 }, { "nparen", 0x24a9 }, { "nssquare", 0x33b1 }, { "nsuperior", 0x207f }, { "nuhiragana", 0x306c }, { "nukatakana", 0x30cc }, { "nukatakanahalfwidth", 0xff87 }, { "nuktabengali", 0x09bc }, { "nuktadeva", 0x093c }, { "nuktagujarati", 0x0abc }, { "nuktagurmukhi", 0x0a3c }, { "numbersignmonospace", 0xff03 }, { "numbersignsmall", 0xfe5f }, { "numeralsigngreek", 0x0374 }, { "numeralsignlowergreek", 0x0375 }, { "numero", 0x2116 }, { "nun", 0x05e0 }, { "nundagesh", 0xfb40 }, { "nundageshhebrew", 0xfb40 }, { "nunhebrew", 0x05e0 }, { "nvsquare", 0x33b5 }, { "nwsquare", 0x33bb }, { "nyabengali", 0x099e }, { "nyadeva", 0x091e }, { "nyagujarati", 0x0a9e }, { "nyagurmukhi", 0x0a1e }, { "oangthai", 0x0e2d }, { "obarred", 0x0275 }, { "obarredcyrillic", 0x04e9 }, { "obarreddieresiscyrillic", 0x04eb }, { "obengali", 0x0993 }, { "obopomofo", 0x311b }, { "ocandradeva", 0x0911 }, { "ocandragujarati", 0x0a91 }, { "ocandravowelsigndeva", 0x0949 }, { "ocandravowelsigngujarati", 0x0ac9 }, { "ocaron", 0x01d2 }, { "ocircle", 0x24de }, { "ocircumflexacute", 0x1ed1 }, { "ocircumflexdotbelow", 0x1ed9 }, { "ocircumflexgrave", 0x1ed3 }, { "ocircumflexhookabove", 0x1ed5 }, { "ocircumflextilde", 0x1ed7 }, { "ocyrillic", 0x043e }, { "odblacute", 0x0151 }, { "odblgrave", 0x020d }, { "odeva", 0x0913 }, { "odieresiscyrillic", 0x04e7 }, { "odotbelow", 0x1ecd }, { "oekorean", 0x315a }, { "ogonekcmb", 0x0328 }, { "ogujarati", 0x0a93 }, { "oharmenian", 0x0585 }, { "ohiragana", 0x304a }, { "ohookabove", 0x1ecf }, { "ohornacute", 0x1edb }, { "ohorndotbelow", 0x1ee3 }, { "ohorngrave", 0x1edd }, { "ohornhookabove", 0x1edf }, { "ohorntilde", 0x1ee1 }, { "oi", 0x01a3 }, { "oinvertedbreve", 0x020f }, { "okatakana", 0x30aa }, { "okatakanahalfwidth", 0xff75 }, { "okorean", 0x3157 }, { "olehebrew", 0x05ab }, { "omacronacute", 0x1e53 }, { "omacrongrave", 0x1e51 }, { "omdeva", 0x0950 }, { "omegacyrillic", 0x0461 }, { "omegalatinclosed", 0x0277 }, { "omegaroundcyrillic", 0x047b }, { "omegatitlocyrillic", 0x047d }, { "omgujarati", 0x0ad0 }, { "omonospace", 0xff4f }, { "onearabic", 0x0661 }, { "onebengali", 0x09e7 }, { "onecircle", 0x2460 }, { "onecircleinversesansserif", 0x278a }, { "onedeva", 0x0967 }, { "onefitted", 0xf6dc }, { "onegujarati", 0x0ae7 }, { "onegurmukhi", 0x0a67 }, { "onehackarabic", 0x0661 }, { "onehangzhou", 0x3021 }, { "oneideographicparen", 0x3220 }, { "oneinferior", 0x2081 }, { "onemonospace", 0xff11 }, { "onenumeratorbengali", 0x09f4 }, { "oneoldstyle", 0xf731 }, { "oneparen", 0x2474 }, { "oneperiod", 0x2488 }, { "onepersian", 0x06f1 }, { "oneroman", 0x2170 }, { "onesuperior", 0x00b9 }, { "onethai", 0x0e51 }, { "oogonek", 0x01eb }, { "oogonekmacron", 0x01ed }, { "oogurmukhi", 0x0a13 }, { "oomatragurmukhi", 0x0a4b }, { "oopen", 0x0254 }, { "oparen", 0x24aa }, { "option", 0x2325 }, { "oshortdeva", 0x0912 }, { "oshortvowelsigndeva", 0x094a }, { "osmallhiragana", 0x3049 }, { "osmallkatakana", 0x30a9 }, { "osmallkatakanahalfwidth", 0xff6b }, { "ostrokeacute", 0x01ff }, { "osuperior", 0xf6f0 }, { "otcyrillic", 0x047f }, { "otildeacute", 0x1e4d }, { "otildedieresis", 0x1e4f }, { "oubopomofo", 0x3121 }, { "overline", 0x203e }, { "overlinecenterline", 0xfe4a }, { "overlinecmb", 0x0305 }, { "overlinedashed", 0xfe49 }, { "overlinedblwavy", 0xfe4c }, { "overlinewavy", 0xfe4b }, { "overscore", 0x00af }, { "ovowelsignbengali", 0x09cb }, { "ovowelsigndeva", 0x094b }, { "ovowelsigngujarati", 0x0acb }, { "paampssquare", 0x3380 }, { "paasentosquare", 0x332b }, { "pabengali", 0x09aa }, { "pacute", 0x1e55 }, { "padeva", 0x092a }, { "pagedown", 0x21df }, { "pageup", 0x21de }, { "pagujarati", 0x0aaa }, { "pagurmukhi", 0x0a2a }, { "pahiragana", 0x3071 }, { "paiyannoithai", 0x0e2f }, { "pakatakana", 0x30d1 }, { "palatalizationcyrilliccmb", 0x0484 }, { "palochkacyrillic", 0x04c0 }, { "pansioskorean", 0x317f }, { "parallel", 0x2225 }, { "parenleftaltonearabic", 0xfd3e }, { "parenleftbt", 0xf8ed }, { "parenleftex", 0xf8ec }, { "parenleftinferior", 0x208d }, { "parenleftmonospace", 0xff08 }, { "parenleftsmall", 0xfe59 }, { "parenleftsuperior", 0x207d }, { "parenlefttp", 0xf8eb }, { "parenleftvertical", 0xfe35 }, { "parenrightaltonearabic", 0xfd3f }, { "parenrightbt", 0xf8f8 }, { "parenrightex", 0xf8f7 }, { "parenrightinferior", 0x208e }, { "parenrightmonospace", 0xff09 }, { "parenrightsmall", 0xfe5a }, { "parenrightsuperior", 0x207e }, { "parenrighttp", 0xf8f6 }, { "parenrightvertical", 0xfe36 }, { "paseqhebrew", 0x05c0 }, { "pashtahebrew", 0x0599 }, { "pasquare", 0x33a9 }, { "patah", 0x05b7 }, { "patah11", 0x05b7 }, { "patah1d", 0x05b7 }, { "patah2a", 0x05b7 }, { "patahhebrew", 0x05b7 }, { "patahnarrowhebrew", 0x05b7 }, { "patahquarterhebrew", 0x05b7 }, { "patahwidehebrew", 0x05b7 }, { "pazerhebrew", 0x05a1 }, { "pbopomofo", 0x3106 }, { "pcircle", 0x24df }, { "pdotaccent", 0x1e57 }, { "pe", 0x05e4 }, { "pecyrillic", 0x043f }, { "pedagesh", 0xfb44 }, { "pedageshhebrew", 0xfb44 }, { "peezisquare", 0x333b }, { "pefinaldageshhebrew", 0xfb43 }, { "peharabic", 0x067e }, { "peharmenian", 0x057a }, { "pehebrew", 0x05e4 }, { "pehfinalarabic", 0xfb57 }, { "pehinitialarabic", 0xfb58 }, { "pehiragana", 0x307a }, { "pehmedialarabic", 0xfb59 }, { "pekatakana", 0x30da }, { "pemiddlehookcyrillic", 0x04a7 }, { "perafehebrew", 0xfb4e }, { "percentarabic", 0x066a }, { "percentmonospace", 0xff05 }, { "percentsmall", 0xfe6a }, { "periodarmenian", 0x0589 }, { "periodhalfwidth", 0xff61 }, { "periodinferior", 0xf6e7 }, { "periodmonospace", 0xff0e }, { "periodsmall", 0xfe52 }, { "periodsuperior", 0xf6e8 }, { "perispomenigreekcmb", 0x0342 }, { "pfsquare", 0x338a }, { "phabengali", 0x09ab }, { "phadeva", 0x092b }, { "phagujarati", 0x0aab }, { "phagurmukhi", 0x0a2b }, { "phieuphacirclekorean", 0x327a }, { "phieuphaparenkorean", 0x321a }, { "phieuphcirclekorean", 0x326c }, { "phieuphkorean", 0x314d }, { "phieuphparenkorean", 0x320c }, { "philatin", 0x0278 }, { "phinthuthai", 0x0e3a }, { "phisymbolgreek", 0x03d5 }, { "phook", 0x01a5 }, { "phophanthai", 0x0e1e }, { "phophungthai", 0x0e1c }, { "phosamphaothai", 0x0e20 }, { "pieupacirclekorean", 0x3273 }, { "pieupaparenkorean", 0x3213 }, { "pieupcieuckorean", 0x3176 }, { "pieupcirclekorean", 0x3265 }, { "pieupkiyeokkorean", 0x3172 }, { "pieupkorean", 0x3142 }, { "pieupparenkorean", 0x3205 }, { "pieupsioskiyeokkorean", 0x3174 }, { "pieupsioskorean", 0x3144 }, { "pieupsiostikeutkorean", 0x3175 }, { "pieupthieuthkorean", 0x3177 }, { "pieuptikeutkorean", 0x3173 }, { "pihiragana", 0x3074 }, { "pikatakana", 0x30d4 }, { "pisymbolgreek", 0x03d6 }, { "piwrarmenian", 0x0583 }, { "plusbelowcmb", 0x031f }, { "pluscircle", 0x2295 }, { "plusmod", 0x02d6 }, { "plusmonospace", 0xff0b }, { "plussmall", 0xfe62 }, { "plussuperior", 0x207a }, { "pmonospace", 0xff50 }, { "pmsquare", 0x33d8 }, { "pohiragana", 0x307d }, { "pointingindexdownwhite", 0x261f }, { "pointingindexleftwhite", 0x261c }, { "pointingindexrightwhite", 0x261e }, { "pointingindexupwhite", 0x261d }, { "pokatakana", 0x30dd }, { "poplathai", 0x0e1b }, { "postalmark", 0x3012 }, { "postalmarkface", 0x3020 }, { "pparen", 0x24ab }, { "precedes", 0x227a }, { "primemod", 0x02b9 }, { "primereversed", 0x2035 }, { "projective", 0x2305 }, { "prolongedkana", 0x30fc }, { "propellor", 0x2318 }, { "proportion", 0x2237 }, { "psicyrillic", 0x0471 }, { "psilipneumatacyrilliccmb", 0x0486 }, { "pssquare", 0x33b0 }, { "puhiragana", 0x3077 }, { "pukatakana", 0x30d7 }, { "pvsquare", 0x33b4 }, { "pwsquare", 0x33ba }, { "qadeva", 0x0958 }, { "qadmahebrew", 0x05a8 }, { "qafarabic", 0x0642 }, { "qaffinalarabic", 0xfed6 }, { "qafinitialarabic", 0xfed7 }, { "qafmedialarabic", 0xfed8 }, { "qamats", 0x05b8 }, { "qamats10", 0x05b8 }, { "qamats1a", 0x05b8 }, { "qamats1c", 0x05b8 }, { "qamats27", 0x05b8 }, { "qamats29", 0x05b8 }, { "qamats33", 0x05b8 }, { "qamatsde", 0x05b8 }, { "qamatshebrew", 0x05b8 }, { "qamatsnarrowhebrew", 0x05b8 }, { "qamatsqatanhebrew", 0x05b8 }, { "qamatsqatannarrowhebrew", 0x05b8 }, { "qamatsqatanquarterhebrew", 0x05b8 }, { "qamatsqatanwidehebrew", 0x05b8 }, { "qamatsquarterhebrew", 0x05b8 }, { "qamatswidehebrew", 0x05b8 }, { "qarneyparahebrew", 0x059f }, { "qbopomofo", 0x3111 }, { "qcircle", 0x24e0 }, { "qhook", 0x02a0 }, { "qmonospace", 0xff51 }, { "qof", 0x05e7 }, { "qofdagesh", 0xfb47 }, { "qofdageshhebrew", 0xfb47 }, { "qofhatafpatah", 0x05e7 }, { "qofhatafpatahhebrew", 0x05e7 }, { "qofhatafsegol", 0x05e7 }, { "qofhatafsegolhebrew", 0x05e7 }, { "qofhebrew", 0x05e7 }, { "qofhiriq", 0x05e7 }, { "qofhiriqhebrew", 0x05e7 }, { "qofholam", 0x05e7 }, { "qofholamhebrew", 0x05e7 }, { "qofpatah", 0x05e7 }, { "qofpatahhebrew", 0x05e7 }, { "qofqamats", 0x05e7 }, { "qofqamatshebrew", 0x05e7 }, { "qofqubuts", 0x05e7 }, { "qofqubutshebrew", 0x05e7 }, { "qofsegol", 0x05e7 }, { "qofsegolhebrew", 0x05e7 }, { "qofsheva", 0x05e7 }, { "qofshevahebrew", 0x05e7 }, { "qoftsere", 0x05e7 }, { "qoftserehebrew", 0x05e7 }, { "qparen", 0x24ac }, { "quarternote", 0x2669 }, { "qubuts", 0x05bb }, { "qubuts18", 0x05bb }, { "qubuts25", 0x05bb }, { "qubuts31", 0x05bb }, { "qubutshebrew", 0x05bb }, { "qubutsnarrowhebrew", 0x05bb }, { "qubutsquarterhebrew", 0x05bb }, { "qubutswidehebrew", 0x05bb }, { "questionarabic", 0x061f }, { "questionarmenian", 0x055e }, { "questiondownsmall", 0xf7bf }, { "questiongreek", 0x037e }, { "questionmonospace", 0xff1f }, { "questionsmall", 0xf73f }, { "quotedblmonospace", 0xff02 }, { "quotedblprime", 0x301e }, { "quotedblprimereversed", 0x301d }, { "quoteleftreversed", 0x201b }, { "quoterightn", 0x0149 }, { "quotesinglemonospace", 0xff07 }, { "raarmenian", 0x057c }, { "rabengali", 0x09b0 }, { "radeva", 0x0930 }, { "radicalex", 0xf8e5 }, { "radoverssquare", 0x33ae }, { "radoverssquaredsquare", 0x33af }, { "radsquare", 0x33ad }, { "rafe", 0x05bf }, { "rafehebrew", 0x05bf }, { "ragujarati", 0x0ab0 }, { "ragurmukhi", 0x0a30 }, { "rahiragana", 0x3089 }, { "rakatakana", 0x30e9 }, { "rakatakanahalfwidth", 0xff97 }, { "ralowerdiagonalbengali", 0x09f1 }, { "ramiddlediagonalbengali", 0x09f0 }, { "ramshorn", 0x0264 }, { "ratio", 0x2236 }, { "rbopomofo", 0x3116 }, { "rcedilla", 0x0157 }, { "rcircle", 0x24e1 }, { "rdblgrave", 0x0211 }, { "rdotaccent", 0x1e59 }, { "rdotbelow", 0x1e5b }, { "rdotbelowmacron", 0x1e5d }, { "referencemark", 0x203b }, { "registersans", 0xf8e8 }, { "registerserif", 0xf6da }, { "reharabic", 0x0631 }, { "reharmenian", 0x0580 }, { "rehfinalarabic", 0xfeae }, { "rehiragana", 0x308c }, { "rehyehaleflamarabic", 0x0631 }, { "rekatakana", 0x30ec }, { "rekatakanahalfwidth", 0xff9a }, { "resh", 0x05e8 }, { "reshdageshhebrew", 0xfb48 }, { "reshhatafpatah", 0x05e8 }, { "reshhatafpatahhebrew", 0x05e8 }, { "reshhatafsegol", 0x05e8 }, { "reshhatafsegolhebrew", 0x05e8 }, { "reshhebrew", 0x05e8 }, { "reshhiriq", 0x05e8 }, { "reshhiriqhebrew", 0x05e8 }, { "reshholam", 0x05e8 }, { "reshholamhebrew", 0x05e8 }, { "reshpatah", 0x05e8 }, { "reshpatahhebrew", 0x05e8 }, { "reshqamats", 0x05e8 }, { "reshqamatshebrew", 0x05e8 }, { "reshqubuts", 0x05e8 }, { "reshqubutshebrew", 0x05e8 }, { "reshsegol", 0x05e8 }, { "reshsegolhebrew", 0x05e8 }, { "reshsheva", 0x05e8 }, { "reshshevahebrew", 0x05e8 }, { "reshtsere", 0x05e8 }, { "reshtserehebrew", 0x05e8 }, { "reversedtilde", 0x223d }, { "reviahebrew", 0x0597 }, { "reviamugrashhebrew", 0x0597 }, { "rfishhook", 0x027e }, { "rfishhookreversed", 0x027f }, { "rhabengali", 0x09dd }, { "rhadeva", 0x095d }, { "rhook", 0x027d }, { "rhookturned", 0x027b }, { "rhookturnedsuperior", 0x02b5 }, { "rhosymbolgreek", 0x03f1 }, { "rhotichookmod", 0x02de }, { "rieulacirclekorean", 0x3271 }, { "rieulaparenkorean", 0x3211 }, { "rieulcirclekorean", 0x3263 }, { "rieulhieuhkorean", 0x3140 }, { "rieulkiyeokkorean", 0x313a }, { "rieulkiyeoksioskorean", 0x3169 }, { "rieulkorean", 0x3139 }, { "rieulmieumkorean", 0x313b }, { "rieulpansioskorean", 0x316c }, { "rieulparenkorean", 0x3203 }, { "rieulphieuphkorean", 0x313f }, { "rieulpieupkorean", 0x313c }, { "rieulpieupsioskorean", 0x316b }, { "rieulsioskorean", 0x313d }, { "rieulthieuthkorean", 0x313e }, { "rieultikeutkorean", 0x316a }, { "rieulyeorinhieuhkorean", 0x316d }, { "rightangle", 0x221f }, { "righttackbelowcmb", 0x0319 }, { "righttriangle", 0x22bf }, { "rihiragana", 0x308a }, { "rikatakana", 0x30ea }, { "rikatakanahalfwidth", 0xff98 }, { "ringbelowcmb", 0x0325 }, { "ringcmb", 0x030a }, { "ringhalfleft", 0x02bf }, { "ringhalfleftarmenian", 0x0559 }, { "ringhalfleftbelowcmb", 0x031c }, { "ringhalfleftcentered", 0x02d3 }, { "ringhalfright", 0x02be }, { "ringhalfrightbelowcmb", 0x0339 }, { "ringhalfrightcentered", 0x02d2 }, { "rinvertedbreve", 0x0213 }, { "rittorusquare", 0x3351 }, { "rlinebelow", 0x1e5f }, { "rlongleg", 0x027c }, { "rlonglegturned", 0x027a }, { "rmonospace", 0xff52 }, { "rohiragana", 0x308d }, { "rokatakana", 0x30ed }, { "rokatakanahalfwidth", 0xff9b }, { "roruathai", 0x0e23 }, { "rparen", 0x24ad }, { "rrabengali", 0x09dc }, { "rradeva", 0x0931 }, { "rragurmukhi", 0x0a5c }, { "rreharabic", 0x0691 }, { "rrehfinalarabic", 0xfb8d }, { "rrvocalicbengali", 0x09e0 }, { "rrvocalicdeva", 0x0960 }, { "rrvocalicgujarati", 0x0ae0 }, { "rrvocalicvowelsignbengali", 0x09c4 }, { "rrvocalicvowelsigndeva", 0x0944 }, { "rrvocalicvowelsigngujarati", 0x0ac4 }, { "rsuperior", 0xf6f1 }, { "rturned", 0x0279 }, { "rturnedsuperior", 0x02b4 }, { "ruhiragana", 0x308b }, { "rukatakana", 0x30eb }, { "rukatakanahalfwidth", 0xff99 }, { "rupeemarkbengali", 0x09f2 }, { "rupeesignbengali", 0x09f3 }, { "rupiah", 0xf6dd }, { "ruthai", 0x0e24 }, { "rvocalicbengali", 0x098b }, { "rvocalicdeva", 0x090b }, { "rvocalicgujarati", 0x0a8b }, { "rvocalicvowelsignbengali", 0x09c3 }, { "rvocalicvowelsigndeva", 0x0943 }, { "rvocalicvowelsigngujarati", 0x0ac3 }, { "sabengali", 0x09b8 }, { "sacutedotaccent", 0x1e65 }, { "sadarabic", 0x0635 }, { "sadeva", 0x0938 }, { "sadfinalarabic", 0xfeba }, { "sadinitialarabic", 0xfebb }, { "sadmedialarabic", 0xfebc }, { "sagujarati", 0x0ab8 }, { "sagurmukhi", 0x0a38 }, { "sahiragana", 0x3055 }, { "sakatakana", 0x30b5 }, { "sakatakanahalfwidth", 0xff7b }, { "sallallahoualayhewasallamarabic", 0xfdfa }, { "samekh", 0x05e1 }, { "samekhdagesh", 0xfb41 }, { "samekhdageshhebrew", 0xfb41 }, { "samekhhebrew", 0x05e1 }, { "saraaathai", 0x0e32 }, { "saraaethai", 0x0e41 }, { "saraaimaimalaithai", 0x0e44 }, { "saraaimaimuanthai", 0x0e43 }, { "saraamthai", 0x0e33 }, { "saraathai", 0x0e30 }, { "saraethai", 0x0e40 }, { "saraiileftthai", 0xf886 }, { "saraiithai", 0x0e35 }, { "saraileftthai", 0xf885 }, { "saraithai", 0x0e34 }, { "saraothai", 0x0e42 }, { "saraueeleftthai", 0xf888 }, { "saraueethai", 0x0e37 }, { "saraueleftthai", 0xf887 }, { "sarauethai", 0x0e36 }, { "sarauthai", 0x0e38 }, { "sarauuthai", 0x0e39 }, { "sbopomofo", 0x3119 }, { "scarondotaccent", 0x1e67 }, { "schwa", 0x0259 }, { "schwacyrillic", 0x04d9 }, { "schwadieresiscyrillic", 0x04db }, { "schwahook", 0x025a }, { "scircle", 0x24e2 }, { "sdotaccent", 0x1e61 }, { "sdotbelow", 0x1e63 }, { "sdotbelowdotaccent", 0x1e69 }, { "seagullbelowcmb", 0x033c }, { "secondtonechinese", 0x02ca }, { "seenarabic", 0x0633 }, { "seenfinalarabic", 0xfeb2 }, { "seeninitialarabic", 0xfeb3 }, { "seenmedialarabic", 0xfeb4 }, { "segol", 0x05b6 }, { "segol13", 0x05b6 }, { "segol1f", 0x05b6 }, { "segol2c", 0x05b6 }, { "segolhebrew", 0x05b6 }, { "segolnarrowhebrew", 0x05b6 }, { "segolquarterhebrew", 0x05b6 }, { "segoltahebrew", 0x0592 }, { "segolwidehebrew", 0x05b6 }, { "seharmenian", 0x057d }, { "sehiragana", 0x305b }, { "sekatakana", 0x30bb }, { "sekatakanahalfwidth", 0xff7e }, { "semicolonarabic", 0x061b }, { "semicolonmonospace", 0xff1b }, { "semicolonsmall", 0xfe54 }, { "semivoicedmarkkana", 0x309c }, { "semivoicedmarkkanahalfwidth", 0xff9f }, { "sentisquare", 0x3322 }, { "sentosquare", 0x3323 }, { "sevenarabic", 0x0667 }, { "sevenbengali", 0x09ed }, { "sevencircle", 0x2466 }, { "sevencircleinversesansserif", 0x2790 }, { "sevendeva", 0x096d }, { "sevengujarati", 0x0aed }, { "sevengurmukhi", 0x0a6d }, { "sevenhackarabic", 0x0667 }, { "sevenhangzhou", 0x3027 }, { "sevenideographicparen", 0x3226 }, { "seveninferior", 0x2087 }, { "sevenmonospace", 0xff17 }, { "sevenoldstyle", 0xf737 }, { "sevenparen", 0x247a }, { "sevenperiod", 0x248e }, { "sevenpersian", 0x06f7 }, { "sevenroman", 0x2176 }, { "sevensuperior", 0x2077 }, { "seventeencircle", 0x2470 }, { "seventeenparen", 0x2484 }, { "seventeenperiod", 0x2498 }, { "seventhai", 0x0e57 }, { "sfthyphen", 0x00ad }, { "shaarmenian", 0x0577 }, { "shabengali", 0x09b6 }, { "shacyrillic", 0x0448 }, { "shaddaarabic", 0x0651 }, { "shaddadammaarabic", 0xfc61 }, { "shaddadammatanarabic", 0xfc5e }, { "shaddafathaarabic", 0xfc60 }, { "shaddafathatanarabic", 0x0651 }, { "shaddakasraarabic", 0xfc62 }, { "shaddakasratanarabic", 0xfc5f }, { "shadedark", 0x2593 }, { "shadelight", 0x2591 }, { "shademedium", 0x2592 }, { "shadeva", 0x0936 }, { "shagujarati", 0x0ab6 }, { "shagurmukhi", 0x0a36 }, { "shalshelethebrew", 0x0593 }, { "shbopomofo", 0x3115 }, { "shchacyrillic", 0x0449 }, { "sheenarabic", 0x0634 }, { "sheenfinalarabic", 0xfeb6 }, { "sheeninitialarabic", 0xfeb7 }, { "sheenmedialarabic", 0xfeb8 }, { "sheicoptic", 0x03e3 }, { "sheqel", 0x20aa }, { "sheqelhebrew", 0x20aa }, { "sheva", 0x05b0 }, { "sheva115", 0x05b0 }, { "sheva15", 0x05b0 }, { "sheva22", 0x05b0 }, { "sheva2e", 0x05b0 }, { "shevahebrew", 0x05b0 }, { "shevanarrowhebrew", 0x05b0 }, { "shevaquarterhebrew", 0x05b0 }, { "shevawidehebrew", 0x05b0 }, { "shhacyrillic", 0x04bb }, { "shimacoptic", 0x03ed }, { "shin", 0x05e9 }, { "shindagesh", 0xfb49 }, { "shindageshhebrew", 0xfb49 }, { "shindageshshindot", 0xfb2c }, { "shindageshshindothebrew", 0xfb2c }, { "shindageshsindot", 0xfb2d }, { "shindageshsindothebrew", 0xfb2d }, { "shindothebrew", 0x05c1 }, { "shinhebrew", 0x05e9 }, { "shinshindot", 0xfb2a }, { "shinshindothebrew", 0xfb2a }, { "shinsindot", 0xfb2b }, { "shinsindothebrew", 0xfb2b }, { "shook", 0x0282 }, { "sigmafinal", 0x03c2 }, { "sigmalunatesymbolgreek", 0x03f2 }, { "sihiragana", 0x3057 }, { "sikatakana", 0x30b7 }, { "sikatakanahalfwidth", 0xff7c }, { "siluqhebrew", 0x05bd }, { "siluqlefthebrew", 0x05bd }, { "sindothebrew", 0x05c2 }, { "siosacirclekorean", 0x3274 }, { "siosaparenkorean", 0x3214 }, { "sioscieuckorean", 0x317e }, { "sioscirclekorean", 0x3266 }, { "sioskiyeokkorean", 0x317a }, { "sioskorean", 0x3145 }, { "siosnieunkorean", 0x317b }, { "siosparenkorean", 0x3206 }, { "siospieupkorean", 0x317d }, { "siostikeutkorean", 0x317c }, { "sixarabic", 0x0666 }, { "sixbengali", 0x09ec }, { "sixcircle", 0x2465 }, { "sixcircleinversesansserif", 0x278f }, { "sixdeva", 0x096c }, { "sixgujarati", 0x0aec }, { "sixgurmukhi", 0x0a6c }, { "sixhackarabic", 0x0666 }, { "sixhangzhou", 0x3026 }, { "sixideographicparen", 0x3225 }, { "sixinferior", 0x2086 }, { "sixmonospace", 0xff16 }, { "sixoldstyle", 0xf736 }, { "sixparen", 0x2479 }, { "sixperiod", 0x248d }, { "sixpersian", 0x06f6 }, { "sixroman", 0x2175 }, { "sixsuperior", 0x2076 }, { "sixteencircle", 0x246f }, { "sixteencurrencydenominatorbengali", 0x09f9 }, { "sixteenparen", 0x2483 }, { "sixteenperiod", 0x2497 }, { "sixthai", 0x0e56 }, { "slashmonospace", 0xff0f }, { "slong", 0x017f }, { "slongdotaccent", 0x1e9b }, { "smonospace", 0xff53 }, { "sofpasuqhebrew", 0x05c3 }, { "softhyphen", 0x00ad }, { "softsigncyrillic", 0x044c }, { "sohiragana", 0x305d }, { "sokatakana", 0x30bd }, { "sokatakanahalfwidth", 0xff7f }, { "soliduslongoverlaycmb", 0x0338 }, { "solidusshortoverlaycmb", 0x0337 }, { "sorusithai", 0x0e29 }, { "sosalathai", 0x0e28 }, { "sosothai", 0x0e0b }, { "sosuathai", 0x0e2a }, { "spacehackarabic", 0x0020 }, { "spadesuitblack", 0x2660 }, { "spadesuitwhite", 0x2664 }, { "sparen", 0x24ae }, { "squarebelowcmb", 0x033b }, { "squarecc", 0x33c4 }, { "squarecm", 0x339d }, { "squarediagonalcrosshatchfill", 0x25a9 }, { "squarehorizontalfill", 0x25a4 }, { "squarekg", 0x338f }, { "squarekm", 0x339e }, { "squarekmcapital", 0x33ce }, { "squareln", 0x33d1 }, { "squarelog", 0x33d2 }, { "squaremg", 0x338e }, { "squaremil", 0x33d5 }, { "squaremm", 0x339c }, { "squaremsquared", 0x33a1 }, { "squareorthogonalcrosshatchfill", 0x25a6 }, { "squareupperlefttolowerrightfill", 0x25a7 }, { "squareupperrighttolowerleftfill", 0x25a8 }, { "squareverticalfill", 0x25a5 }, { "squarewhitewithsmallblack", 0x25a3 }, { "srsquare", 0x33db }, { "ssabengali", 0x09b7 }, { "ssadeva", 0x0937 }, { "ssagujarati", 0x0ab7 }, { "ssangcieuckorean", 0x3149 }, { "ssanghieuhkorean", 0x3185 }, { "ssangieungkorean", 0x3180 }, { "ssangkiyeokkorean", 0x3132 }, { "ssangnieunkorean", 0x3165 }, { "ssangpieupkorean", 0x3143 }, { "ssangsioskorean", 0x3146 }, { "ssangtikeutkorean", 0x3138 }, { "ssuperior", 0xf6f2 }, { "sterlingmonospace", 0xffe1 }, { "strokelongoverlaycmb", 0x0336 }, { "strokeshortoverlaycmb", 0x0335 }, { "subset", 0x2282 }, { "subsetnotequal", 0x228a }, { "subsetorequal", 0x2286 }, { "succeeds", 0x227b }, { "suhiragana", 0x3059 }, { "sukatakana", 0x30b9 }, { "sukatakanahalfwidth", 0xff7d }, { "sukunarabic", 0x0652 }, { "superset", 0x2283 }, { "supersetnotequal", 0x228b }, { "supersetorequal", 0x2287 }, { "svsquare", 0x33dc }, { "syouwaerasquare", 0x337c }, { "tabengali", 0x09a4 }, { "tackdown", 0x22a4 }, { "tackleft", 0x22a3 }, { "tadeva", 0x0924 }, { "tagujarati", 0x0aa4 }, { "tagurmukhi", 0x0a24 }, { "taharabic", 0x0637 }, { "tahfinalarabic", 0xfec2 }, { "tahinitialarabic", 0xfec3 }, { "tahiragana", 0x305f }, { "tahmedialarabic", 0xfec4 }, { "taisyouerasquare", 0x337d }, { "takatakana", 0x30bf }, { "takatakanahalfwidth", 0xff80 }, { "tatweelarabic", 0x0640 }, { "tav", 0x05ea }, { "tavdages", 0xfb4a }, { "tavdagesh", 0xfb4a }, { "tavdageshhebrew", 0xfb4a }, { "tavhebrew", 0x05ea }, { "tbopomofo", 0x310a }, { "tccurl", 0x02a8 }, { "tcedilla", 0x0163 }, { "tcheharabic", 0x0686 }, { "tchehfinalarabic", 0xfb7b }, { "tchehinitialarabic", 0xfb7c }, { "tchehmedialarabic", 0xfb7d }, { "tchehmeeminitialarabic", 0xfb7c }, { "tcircle", 0x24e3 }, { "tcircumflexbelow", 0x1e71 }, { "tdieresis", 0x1e97 }, { "tdotaccent", 0x1e6b }, { "tdotbelow", 0x1e6d }, { "tecyrillic", 0x0442 }, { "tedescendercyrillic", 0x04ad }, { "teharabic", 0x062a }, { "tehfinalarabic", 0xfe96 }, { "tehhahinitialarabic", 0xfca2 }, { "tehhahisolatedarabic", 0xfc0c }, { "tehinitialarabic", 0xfe97 }, { "tehiragana", 0x3066 }, { "tehjeeminitialarabic", 0xfca1 }, { "tehjeemisolatedarabic", 0xfc0b }, { "tehmarbutaarabic", 0x0629 }, { "tehmarbutafinalarabic", 0xfe94 }, { "tehmedialarabic", 0xfe98 }, { "tehmeeminitialarabic", 0xfca4 }, { "tehmeemisolatedarabic", 0xfc0e }, { "tehnoonfinalarabic", 0xfc73 }, { "tekatakana", 0x30c6 }, { "tekatakanahalfwidth", 0xff83 }, { "telephone", 0x2121 }, { "telephoneblack", 0x260e }, { "telishagedolahebrew", 0x05a0 }, { "telishaqetanahebrew", 0x05a9 }, { "tencircle", 0x2469 }, { "tenideographicparen", 0x3229 }, { "tenparen", 0x247d }, { "tenperiod", 0x2491 }, { "tenroman", 0x2179 }, { "tesh", 0x02a7 }, { "tet", 0x05d8 }, { "tetdagesh", 0xfb38 }, { "tetdageshhebrew", 0xfb38 }, { "tethebrew", 0x05d8 }, { "tetsecyrillic", 0x04b5 }, { "tevirhebrew", 0x059b }, { "tevirlefthebrew", 0x059b }, { "thabengali", 0x09a5 }, { "thadeva", 0x0925 }, { "thagujarati", 0x0aa5 }, { "thagurmukhi", 0x0a25 }, { "thalarabic", 0x0630 }, { "thalfinalarabic", 0xfeac }, { "thanthakhatlowleftthai", 0xf898 }, { "thanthakhatlowrightthai", 0xf897 }, { "thanthakhatthai", 0x0e4c }, { "thanthakhatupperleftthai", 0xf896 }, { "theharabic", 0x062b }, { "thehfinalarabic", 0xfe9a }, { "thehinitialarabic", 0xfe9b }, { "thehmedialarabic", 0xfe9c }, { "thereexists", 0x2203 }, { "thetasymbolgreek", 0x03d1 }, { "thieuthacirclekorean", 0x3279 }, { "thieuthaparenkorean", 0x3219 }, { "thieuthcirclekorean", 0x326b }, { "thieuthkorean", 0x314c }, { "thieuthparenkorean", 0x320b }, { "thirteencircle", 0x246c }, { "thirteenparen", 0x2480 }, { "thirteenperiod", 0x2494 }, { "thonangmonthothai", 0x0e11 }, { "thook", 0x01ad }, { "thophuthaothai", 0x0e12 }, { "thothahanthai", 0x0e17 }, { "thothanthai", 0x0e10 }, { "thothongthai", 0x0e18 }, { "thothungthai", 0x0e16 }, { "thousandcyrillic", 0x0482 }, { "thousandsseparatorarabic", 0x066c }, { "thousandsseparatorpersian", 0x066c }, { "threearabic", 0x0663 }, { "threebengali", 0x09e9 }, { "threecircle", 0x2462 }, { "threecircleinversesansserif", 0x278c }, { "threedeva", 0x0969 }, { "threegujarati", 0x0ae9 }, { "threegurmukhi", 0x0a69 }, { "threehackarabic", 0x0663 }, { "threehangzhou", 0x3023 }, { "threeideographicparen", 0x3222 }, { "threeinferior", 0x2083 }, { "threemonospace", 0xff13 }, { "threenumeratorbengali", 0x09f6 }, { "threeoldstyle", 0xf733 }, { "threeparen", 0x2476 }, { "threeperiod", 0x248a }, { "threepersian", 0x06f3 }, { "threequartersemdash", 0xf6de }, { "threeroman", 0x2172 }, { "threesuperior", 0x00b3 }, { "threethai", 0x0e53 }, { "thzsquare", 0x3394 }, { "tihiragana", 0x3061 }, { "tikatakana", 0x30c1 }, { "tikatakanahalfwidth", 0xff81 }, { "tikeutacirclekorean", 0x3270 }, { "tikeutaparenkorean", 0x3210 }, { "tikeutcirclekorean", 0x3262 }, { "tikeutkorean", 0x3137 }, { "tikeutparenkorean", 0x3202 }, { "tildebelowcmb", 0x0330 }, { "tildecmb", 0x0303 }, { "tildedoublecmb", 0x0360 }, { "tildeoperator", 0x223c }, { "tildeoverlaycmb", 0x0334 }, { "tildeverticalcmb", 0x033e }, { "timescircle", 0x2297 }, { "tipehahebrew", 0x0596 }, { "tipehalefthebrew", 0x0596 }, { "tippigurmukhi", 0x0a70 }, { "titlocyrilliccmb", 0x0483 }, { "tiwnarmenian", 0x057f }, { "tlinebelow", 0x1e6f }, { "tmonospace", 0xff54 }, { "toarmenian", 0x0569 }, { "tohiragana", 0x3068 }, { "tokatakana", 0x30c8 }, { "tokatakanahalfwidth", 0xff84 }, { "tonebarextrahighmod", 0x02e5 }, { "tonebarextralowmod", 0x02e9 }, { "tonebarhighmod", 0x02e6 }, { "tonebarlowmod", 0x02e8 }, { "tonebarmidmod", 0x02e7 }, { "tonefive", 0x01bd }, { "tonesix", 0x0185 }, { "tonetwo", 0x01a8 }, { "tonsquare", 0x3327 }, { "topatakthai", 0x0e0f }, { "tortoiseshellbracketleft", 0x3014 }, { "tortoiseshellbracketleftsmall", 0xfe5d }, { "tortoiseshellbracketleftvertical", 0xfe39 }, { "tortoiseshellbracketright", 0x3015 }, { "tortoiseshellbracketrightsmall", 0xfe5e }, { "tortoiseshellbracketrightvertical", 0xfe3a }, { "totaothai", 0x0e15 }, { "tpalatalhook", 0x01ab }, { "tparen", 0x24af }, { "trademarksans", 0xf8ea }, { "trademarkserif", 0xf6db }, { "tretroflexhook", 0x0288 }, { "ts", 0x02a6 }, { "tsadi", 0x05e6 }, { "tsadidagesh", 0xfb46 }, { "tsadidageshhebrew", 0xfb46 }, { "tsadihebrew", 0x05e6 }, { "tsecyrillic", 0x0446 }, { "tsere", 0x05b5 }, { "tsere12", 0x05b5 }, { "tsere1e", 0x05b5 }, { "tsere2b", 0x05b5 }, { "tserehebrew", 0x05b5 }, { "tserenarrowhebrew", 0x05b5 }, { "tserequarterhebrew", 0x05b5 }, { "tserewidehebrew", 0x05b5 }, { "tshecyrillic", 0x045b }, { "tsuperior", 0xf6f3 }, { "ttabengali", 0x099f }, { "ttadeva", 0x091f }, { "ttagujarati", 0x0a9f }, { "ttagurmukhi", 0x0a1f }, { "tteharabic", 0x0679 }, { "ttehfinalarabic", 0xfb67 }, { "ttehinitialarabic", 0xfb68 }, { "ttehmedialarabic", 0xfb69 }, { "tthabengali", 0x09a0 }, { "tthadeva", 0x0920 }, { "tthagujarati", 0x0aa0 }, { "tthagurmukhi", 0x0a20 }, { "tturned", 0x0287 }, { "tuhiragana", 0x3064 }, { "tukatakana", 0x30c4 }, { "tukatakanahalfwidth", 0xff82 }, { "tusmallhiragana", 0x3063 }, { "tusmallkatakana", 0x30c3 }, { "tusmallkatakanahalfwidth", 0xff6f }, { "twelvecircle", 0x246b }, { "twelveparen", 0x247f }, { "twelveperiod", 0x2493 }, { "twelveroman", 0x217b }, { "twentycircle", 0x2473 }, { "twentyhangzhou", 0x5344 }, { "twentyparen", 0x2487 }, { "twentyperiod", 0x249b }, { "twoarabic", 0x0662 }, { "twobengali", 0x09e8 }, { "twocircle", 0x2461 }, { "twocircleinversesansserif", 0x278b }, { "twodeva", 0x0968 }, { "twodotleader", 0x2025 }, { "twodotleadervertical", 0xfe30 }, { "twogujarati", 0x0ae8 }, { "twogurmukhi", 0x0a68 }, { "twohackarabic", 0x0662 }, { "twohangzhou", 0x3022 }, { "twoideographicparen", 0x3221 }, { "twoinferior", 0x2082 }, { "twomonospace", 0xff12 }, { "twonumeratorbengali", 0x09f5 }, { "twooldstyle", 0xf732 }, { "twoparen", 0x2475 }, { "twoperiod", 0x2489 }, { "twopersian", 0x06f2 }, { "tworoman", 0x2171 }, { "twostroke", 0x01bb }, { "twosuperior", 0x00b2 }, { "twothai", 0x0e52 }, { "ubar", 0x0289 }, { "ubengali", 0x0989 }, { "ubopomofo", 0x3128 }, { "ucaron", 0x01d4 }, { "ucircle", 0x24e4 }, { "ucircumflexbelow", 0x1e77 }, { "ucyrillic", 0x0443 }, { "udattadeva", 0x0951 }, { "udblacute", 0x0171 }, { "udblgrave", 0x0215 }, { "udeva", 0x0909 }, { "udieresisacute", 0x01d8 }, { "udieresisbelow", 0x1e73 }, { "udieresiscaron", 0x01da }, { "udieresiscyrillic", 0x04f1 }, { "udieresisgrave", 0x01dc }, { "udieresismacron", 0x01d6 }, { "udotbelow", 0x1ee5 }, { "ugujarati", 0x0a89 }, { "ugurmukhi", 0x0a09 }, { "uhiragana", 0x3046 }, { "uhookabove", 0x1ee7 }, { "uhornacute", 0x1ee9 }, { "uhorndotbelow", 0x1ef1 }, { "uhorngrave", 0x1eeb }, { "uhornhookabove", 0x1eed }, { "uhorntilde", 0x1eef }, { "uhungarumlautcyrillic", 0x04f3 }, { "uinvertedbreve", 0x0217 }, { "ukatakana", 0x30a6 }, { "ukatakanahalfwidth", 0xff73 }, { "ukcyrillic", 0x0479 }, { "ukorean", 0x315c }, { "umacroncyrillic", 0x04ef }, { "umacrondieresis", 0x1e7b }, { "umatragurmukhi", 0x0a41 }, { "umonospace", 0xff55 }, { "underscoremonospace", 0xff3f }, { "underscorevertical", 0xfe33 }, { "underscorewavy", 0xfe4f }, { "uparen", 0x24b0 }, { "upperdothebrew", 0x05c4 }, { "upsilonlatin", 0x028a }, { "uptackbelowcmb", 0x031d }, { "uptackmod", 0x02d4 }, { "uragurmukhi", 0x0a73 }, { "ushortcyrillic", 0x045e }, { "usmallhiragana", 0x3045 }, { "usmallkatakana", 0x30a5 }, { "usmallkatakanahalfwidth", 0xff69 }, { "ustraightcyrillic", 0x04af }, { "ustraightstrokecyrillic", 0x04b1 }, { "utildeacute", 0x1e79 }, { "utildebelow", 0x1e75 }, { "uubengali", 0x098a }, { "uudeva", 0x090a }, { "uugujarati", 0x0a8a }, { "uugurmukhi", 0x0a0a }, { "uumatragurmukhi", 0x0a42 }, { "uuvowelsignbengali", 0x09c2 }, { "uuvowelsigndeva", 0x0942 }, { "uuvowelsigngujarati", 0x0ac2 }, { "uvowelsignbengali", 0x09c1 }, { "uvowelsigndeva", 0x0941 }, { "uvowelsigngujarati", 0x0ac1 }, { "vadeva", 0x0935 }, { "vagujarati", 0x0ab5 }, { "vagurmukhi", 0x0a35 }, { "vakatakana", 0x30f7 }, { "vav", 0x05d5 }, { "vavdagesh", 0xfb35 }, { "vavdagesh65", 0xfb35 }, { "vavdageshhebrew", 0xfb35 }, { "vavhebrew", 0x05d5 }, { "vavholam", 0xfb4b }, { "vavholamhebrew", 0xfb4b }, { "vavvavhebrew", 0x05f0 }, { "vavyodhebrew", 0x05f1 }, { "vcircle", 0x24e5 }, { "vdotbelow", 0x1e7f }, { "vecyrillic", 0x0432 }, { "veharabic", 0x06a4 }, { "vehfinalarabic", 0xfb6b }, { "vehinitialarabic", 0xfb6c }, { "vehmedialarabic", 0xfb6d }, { "vekatakana", 0x30f9 }, { "venus", 0x2640 }, { "verticalbar", 0x007c }, { "verticallineabovecmb", 0x030d }, { "verticallinebelowcmb", 0x0329 }, { "verticallinelowmod", 0x02cc }, { "verticallinemod", 0x02c8 }, { "vewarmenian", 0x057e }, { "vhook", 0x028b }, { "vikatakana", 0x30f8 }, { "viramabengali", 0x09cd }, { "viramadeva", 0x094d }, { "viramagujarati", 0x0acd }, { "visargabengali", 0x0983 }, { "visargadeva", 0x0903 }, { "visargagujarati", 0x0a83 }, { "vmonospace", 0xff56 }, { "voarmenian", 0x0578 }, { "voicediterationhiragana", 0x309e }, { "voicediterationkatakana", 0x30fe }, { "voicedmarkkana", 0x309b }, { "voicedmarkkanahalfwidth", 0xff9e }, { "vokatakana", 0x30fa }, { "vparen", 0x24b1 }, { "vtilde", 0x1e7d }, { "vturned", 0x028c }, { "vuhiragana", 0x3094 }, { "vukatakana", 0x30f4 }, { "waekorean", 0x3159 }, { "wahiragana", 0x308f }, { "wakatakana", 0x30ef }, { "wakatakanahalfwidth", 0xff9c }, { "wakorean", 0x3158 }, { "wasmallhiragana", 0x308e }, { "wasmallkatakana", 0x30ee }, { "wattosquare", 0x3357 }, { "wavedash", 0x301c }, { "wavyunderscorevertical", 0xfe34 }, { "wawarabic", 0x0648 }, { "wawfinalarabic", 0xfeee }, { "wawhamzaabovearabic", 0x0624 }, { "wawhamzaabovefinalarabic", 0xfe86 }, { "wbsquare", 0x33dd }, { "wcircle", 0x24e6 }, { "wdotaccent", 0x1e87 }, { "wdotbelow", 0x1e89 }, { "wehiragana", 0x3091 }, { "wekatakana", 0x30f1 }, { "wekorean", 0x315e }, { "weokorean", 0x315d }, { "whitebullet", 0x25e6 }, { "whitecircle", 0x25cb }, { "whitecircleinverse", 0x25d9 }, { "whitecornerbracketleft", 0x300e }, { "whitecornerbracketleftvertical", 0xfe43 }, { "whitecornerbracketright", 0x300f }, { "whitecornerbracketrightvertical", 0xfe44 }, { "whitediamond", 0x25c7 }, { "whitediamondcontainingblacksmalldiamond", 0x25c8 }, { "whitedownpointingsmalltriangle", 0x25bf }, { "whitedownpointingtriangle", 0x25bd }, { "whiteleftpointingsmalltriangle", 0x25c3 }, { "whiteleftpointingtriangle", 0x25c1 }, { "whitelenticularbracketleft", 0x3016 }, { "whitelenticularbracketright", 0x3017 }, { "whiterightpointingsmalltriangle", 0x25b9 }, { "whiterightpointingtriangle", 0x25b7 }, { "whitesmallsquare", 0x25ab }, { "whitesmilingface", 0x263a }, { "whitesquare", 0x25a1 }, { "whitestar", 0x2606 }, { "whitetelephone", 0x260f }, { "whitetortoiseshellbracketleft", 0x3018 }, { "whitetortoiseshellbracketright", 0x3019 }, { "whiteuppointingsmalltriangle", 0x25b5 }, { "whiteuppointingtriangle", 0x25b3 }, { "wihiragana", 0x3090 }, { "wikatakana", 0x30f0 }, { "wikorean", 0x315f }, { "wmonospace", 0xff57 }, { "wohiragana", 0x3092 }, { "wokatakana", 0x30f2 }, { "wokatakanahalfwidth", 0xff66 }, { "won", 0x20a9 }, { "wonmonospace", 0xffe6 }, { "wowaenthai", 0x0e27 }, { "wparen", 0x24b2 }, { "wring", 0x1e98 }, { "wsuperior", 0x02b7 }, { "wturned", 0x028d }, { "wynn", 0x01bf }, { "xabovecmb", 0x033d }, { "xbopomofo", 0x3112 }, { "xcircle", 0x24e7 }, { "xdieresis", 0x1e8d }, { "xdotaccent", 0x1e8b }, { "xeharmenian", 0x056d }, { "xmonospace", 0xff58 }, { "xparen", 0x24b3 }, { "xsuperior", 0x02e3 }, { "yaadosquare", 0x334e }, { "yabengali", 0x09af }, { "yadeva", 0x092f }, { "yaekorean", 0x3152 }, { "yagujarati", 0x0aaf }, { "yagurmukhi", 0x0a2f }, { "yahiragana", 0x3084 }, { "yakatakana", 0x30e4 }, { "yakatakanahalfwidth", 0xff94 }, { "yakorean", 0x3151 }, { "yamakkanthai", 0x0e4e }, { "yasmallhiragana", 0x3083 }, { "yasmallkatakana", 0x30e3 }, { "yasmallkatakanahalfwidth", 0xff6c }, { "yatcyrillic", 0x0463 }, { "ycircle", 0x24e8 }, { "ydotaccent", 0x1e8f }, { "ydotbelow", 0x1ef5 }, { "yeharabic", 0x064a }, { "yehbarreearabic", 0x06d2 }, { "yehbarreefinalarabic", 0xfbaf }, { "yehfinalarabic", 0xfef2 }, { "yehhamzaabovearabic", 0x0626 }, { "yehhamzaabovefinalarabic", 0xfe8a }, { "yehhamzaaboveinitialarabic", 0xfe8b }, { "yehhamzaabovemedialarabic", 0xfe8c }, { "yehinitialarabic", 0xfef3 }, { "yehmedialarabic", 0xfef4 }, { "yehmeeminitialarabic", 0xfcdd }, { "yehmeemisolatedarabic", 0xfc58 }, { "yehnoonfinalarabic", 0xfc94 }, { "yehthreedotsbelowarabic", 0x06d1 }, { "yekorean", 0x3156 }, { "yenmonospace", 0xffe5 }, { "yeokorean", 0x3155 }, { "yeorinhieuhkorean", 0x3186 }, { "yerahbenyomohebrew", 0x05aa }, { "yerahbenyomolefthebrew", 0x05aa }, { "yericyrillic", 0x044b }, { "yerudieresiscyrillic", 0x04f9 }, { "yesieungkorean", 0x3181 }, { "yesieungpansioskorean", 0x3183 }, { "yesieungsioskorean", 0x3182 }, { "yetivhebrew", 0x059a }, { "yhook", 0x01b4 }, { "yhookabove", 0x1ef7 }, { "yiarmenian", 0x0575 }, { "yicyrillic", 0x0457 }, { "yikorean", 0x3162 }, { "yinyang", 0x262f }, { "yiwnarmenian", 0x0582 }, { "ymonospace", 0xff59 }, { "yod", 0x05d9 }, { "yoddagesh", 0xfb39 }, { "yoddageshhebrew", 0xfb39 }, { "yodhebrew", 0x05d9 }, { "yodyodhebrew", 0x05f2 }, { "yodyodpatahhebrew", 0xfb1f }, { "yohiragana", 0x3088 }, { "yoikorean", 0x3189 }, { "yokatakana", 0x30e8 }, { "yokatakanahalfwidth", 0xff96 }, { "yokorean", 0x315b }, { "yosmallhiragana", 0x3087 }, { "yosmallkatakana", 0x30e7 }, { "yosmallkatakanahalfwidth", 0xff6e }, { "yotgreek", 0x03f3 }, { "yoyaekorean", 0x3188 }, { "yoyakorean", 0x3187 }, { "yoyakthai", 0x0e22 }, { "yoyingthai", 0x0e0d }, { "yparen", 0x24b4 }, { "ypogegrammeni", 0x037a }, { "ypogegrammenigreekcmb", 0x0345 }, { "yr", 0x01a6 }, { "yring", 0x1e99 }, { "ysuperior", 0x02b8 }, { "ytilde", 0x1ef9 }, { "yturned", 0x028e }, { "yuhiragana", 0x3086 }, { "yuikorean", 0x318c }, { "yukatakana", 0x30e6 }, { "yukatakanahalfwidth", 0xff95 }, { "yukorean", 0x3160 }, { "yusbigcyrillic", 0x046b }, { "yusbigiotifiedcyrillic", 0x046d }, { "yuslittlecyrillic", 0x0467 }, { "yuslittleiotifiedcyrillic", 0x0469 }, { "yusmallhiragana", 0x3085 }, { "yusmallkatakana", 0x30e5 }, { "yusmallkatakanahalfwidth", 0xff6d }, { "yuyekorean", 0x318b }, { "yuyeokorean", 0x318a }, { "yyabengali", 0x09df }, { "yyadeva", 0x095f }, { "zaarmenian", 0x0566 }, { "zadeva", 0x095b }, { "zagurmukhi", 0x0a5b }, { "zaharabic", 0x0638 }, { "zahfinalarabic", 0xfec6 }, { "zahinitialarabic", 0xfec7 }, { "zahiragana", 0x3056 }, { "zahmedialarabic", 0xfec8 }, { "zainarabic", 0x0632 }, { "zainfinalarabic", 0xfeb0 }, { "zakatakana", 0x30b6 }, { "zaqefgadolhebrew", 0x0595 }, { "zaqefqatanhebrew", 0x0594 }, { "zarqahebrew", 0x0598 }, { "zayin", 0x05d6 }, { "zayindagesh", 0xfb36 }, { "zayindageshhebrew", 0xfb36 }, { "zayinhebrew", 0x05d6 }, { "zbopomofo", 0x3117 }, { "zcircle", 0x24e9 }, { "zcircumflex", 0x1e91 }, { "zcurl", 0x0291 }, { "zdot", 0x017c }, { "zdotbelow", 0x1e93 }, { "zecyrillic", 0x0437 }, { "zedescendercyrillic", 0x0499 }, { "zedieresiscyrillic", 0x04df }, { "zehiragana", 0x305c }, { "zekatakana", 0x30bc }, { "zeroarabic", 0x0660 }, { "zerobengali", 0x09e6 }, { "zerodeva", 0x0966 }, { "zerogujarati", 0x0ae6 }, { "zerogurmukhi", 0x0a66 }, { "zerohackarabic", 0x0660 }, { "zeroinferior", 0x2080 }, { "zeromonospace", 0xff10 }, { "zerooldstyle", 0xf730 }, { "zeropersian", 0x06f0 }, { "zerosuperior", 0x2070 }, { "zerothai", 0x0e50 }, { "zerowidthjoiner", 0xfeff }, { "zerowidthnonjoiner", 0x200c }, { "zerowidthspace", 0x200b }, { "zhbopomofo", 0x3113 }, { "zhearmenian", 0x056a }, { "zhebrevecyrillic", 0x04c2 }, { "zhecyrillic", 0x0436 }, { "zhedescendercyrillic", 0x0497 }, { "zhedieresiscyrillic", 0x04dd }, { "zihiragana", 0x3058 }, { "zikatakana", 0x30b8 }, { "zinorhebrew", 0x05ae }, { "zlinebelow", 0x1e95 }, { "zmonospace", 0xff5a }, { "zohiragana", 0x305e }, { "zokatakana", 0x30be }, { "zparen", 0x24b5 }, { "zretroflexhook", 0x0290 }, { "zstroke", 0x01b6 }, { "zuhiragana", 0x305a }, { "zukatakana", 0x30ba }, /* These names are obsolete, but they might occur in old fonts */ /* so I still want to recognize them. I no longer track their */ /* original source */ { "Alphaacute", 0x1fbb }, { "Alphaasper", 0x1f09 }, { "Alphaasperacute", 0x1f0d }, { "Alphaaspergrave", 0x1f0b }, { "Alphaaspertilde", 0x1f0f }, { "Alphabreve", 0x1fb8 }, { "Alphagrave", 0x1fba }, { "Alphaiotasub", 0x1fbc }, { "Alphaiotasubasper", 0x1f89 }, { "Alphaiotasubasperacute", 0x1f8d }, { "Alphaiotasubaspergrave", 0x1f8b }, { "Alphaiotasubaspertilde", 0x1f8f }, { "Alphaiotasublenis", 0x1f88 }, { "Alphaiotasublenisacute", 0x1f8c }, { "Alphaiotasublenisgrave", 0x1f8a }, { "Alphaiotasublenistilde", 0x1f8e }, { "Alphalenis", 0x1f08 }, { "Alphalenisacute", 0x1f0c }, { "Alphalenisgrave", 0x1f0a }, { "Alphalenistilde", 0x1f0e }, { "Alphamacron", 0x1fb9 }, { "Epsilonacute", 0x1fc9 }, { "Epsilonasper", 0x1f19 }, { "Epsilonasperacute", 0x1f1d }, { "Epsilonaspergrave", 0x1f1b }, { "Epsilongrave", 0x1fc8 }, { "Epsilonlenis", 0x1f18 }, { "Epsilonlenisacute", 0x1f1c }, { "Epsilonlenisgrave", 0x1f1a }, { "Etaacute", 0x1fcb }, { "Etaasper", 0x1f29 }, { "Etaasperacute", 0x1f2d }, { "Etaaspergrave", 0x1f2b }, { "Etaaspertilde", 0x1f2f }, { "Etagrave", 0x1fca }, { "Etaiotasub", 0x1fcc }, { "Etaiotasubasper", 0x1f99 }, { "Etaiotasubasperacute", 0x1f9d }, { "Etaiotasubaspergrave", 0x1f9b }, { "Etaiotasubaspertilde", 0x1f9f }, { "Etaiotasublenis", 0x1f98 }, { "Etaiotasublenisacute", 0x1f9c }, { "Etaiotasublenisgrave", 0x1f9a }, { "Etaiotasublenistilde", 0x1f9e }, { "Etalenis", 0x1f28 }, { "Etalenisacute", 0x1f2c }, { "Etalenisgrave", 0x1f2a }, { "Etalenistilde", 0x1f2e }, { "Iotaacute", 0x1fdb }, { "Iotaasper", 0x1f39 }, { "Iotaasperacute", 0x1f3d }, { "Iotaaspergrave", 0x1f3b }, { "Iotaaspertilde", 0x1f3f }, { "Iotabreve", 0x1fd8 }, { "Iotagrave", 0x1fda }, { "Iotalenis", 0x1f38 }, { "Iotalenisacute", 0x1f3c }, { "Iotalenisgrave", 0x1f3a }, { "Iotalenistilde", 0x1f3e }, { "Iotamacron", 0x1fd9 }, { "Omegaacute", 0x1ffb }, { "Omegaasper", 0x1f69 }, { "Omegaasperacute", 0x1f6d }, { "Omegaaspergrave", 0x1f6b }, { "Omegaaspertilde", 0x1f6f }, { "Omegagrave", 0x1ffa }, { "Omegaiotasub", 0x1ffc }, { "Omegaiotasubasper", 0x1fa9 }, { "Omegaiotasubasperacute", 0x1fad }, { "Omegaiotasubaspergrave", 0x1fab }, { "Omegaiotasubaspertilde", 0x1faf }, { "Omegaiotasublenis", 0x1fa8 }, { "Omegaiotasublenisacute", 0x1fac }, { "Omegaiotasublenisgrave", 0x1faa }, { "Omegaiotasublenistilde", 0x1fae }, { "Omegalenis", 0x1f68 }, { "Omegalenisacute", 0x1f6c }, { "Omegalenisgrave", 0x1f6a }, { "Omegalenistilde", 0x1f6e }, { "Omicronacute", 0x1ff9 }, { "Omicronasper", 0x1f49 }, { "Omicronasperacute", 0x1f4d }, { "Omicronaspergrave", 0x1f4b }, { "Omicrongrave", 0x1ff8 }, { "Omicronlenis", 0x1f48 }, { "Omicronlenisacute", 0x1f4c }, { "Omicronlenisgrave", 0x1f4a }, { "Rhoasper", 0x1fec }, { "Upsilonacute", 0x1feb }, { "Upsilonasper", 0x1f59 }, { "Upsilonasperacute", 0x1f5d }, { "Upsilonaspergrave", 0x1f5b }, { "Upsilonaspertilde", 0x1f5f }, { "Upsilonbreve", 0x1fe8 }, { "Upsilongrave", 0x1fea }, { "Upsilonmacron", 0x1fe9 }, { "numeralsign", 0x0374 }, { "lownumeralsign", 0x0375 }, { "lowcomma", 0x037a }, { "stigma", 0x03da }, { "koppa", 0x03de }, { "sampi", 0x03e0 }, { "lenis", 0x1fbd }, { "iotasubscript", 0x1fbe }, { "dieresistilde", 0x1fc1 }, { "lenisgrave", 0x1fcd }, { "lenisacute", 0x1fce }, { "lenistilde", 0x1fcf }, { "aspergrave", 0x1fdd }, { "asperacute", 0x1fde }, { "aspertilde", 0x1fdf }, { "dialytikagrave", 0x1fed }, { "dialytikaacute", 0x1fee }, { "asper", 0x1ffe }, { "alphalenis", 0x1f00 }, { "alphaasper", 0x1f01 }, { "alphalenisgrave", 0x1f02 }, { "alphaaspergrave", 0x1f03 }, { "alphalenisacute", 0x1f04 }, { "alphaasperacute", 0x1f05 }, { "alphalenistilde", 0x1f06 }, { "alphaaspertilde", 0x1f07 }, { "epsilonlenis", 0x1f10 }, { "epsilonasper", 0x1f11 }, { "epsilonlenisgrave", 0x1f12 }, { "epsilonaspergrave", 0x1f13 }, { "epsilonlenisacute", 0x1f14 }, { "epsilonasperacute", 0x1f15 }, { "etalenis", 0x1f20 }, { "etaasper", 0x1f21 }, { "etalenisgrave", 0x1f22 }, { "etaaspergrave", 0x1f23 }, { "etalenisacute", 0x1f24 }, { "etaasperacute", 0x1f25 }, { "etalenistilde", 0x1f26 }, { "etaaspertilde", 0x1f27 }, { "iotalenis", 0x1f30 }, { "iotaasper", 0x1f31 }, { "iotalenisgrave", 0x1f32 }, { "iotaaspergrave", 0x1f33 }, { "iotalenisacute", 0x1f34 }, { "iotaasperacute", 0x1f35 }, { "iotalenistilde", 0x1f36 }, { "iotaaspertilde", 0x1f37 }, { "omicronlenis", 0x1f40 }, { "omicronasper", 0x1f41 }, { "omicronlenisgrave", 0x1f42 }, { "omicronaspergrave", 0x1f43 }, { "omicronlenisacute", 0x1f44 }, { "omicronasperacute", 0x1f45 }, { "upsilonlenis", 0x1f50 }, { "upsilonasper", 0x1f51 }, { "upsilonlenisgrave", 0x1f52 }, { "upsilonaspergrave", 0x1f53 }, { "upsilonlenisacute", 0x1f54 }, { "upsilonasperacute", 0x1f55 }, { "upsilonlenistilde", 0x1f56 }, { "upsilonaspertilde", 0x1f57 }, { "omegalenis", 0x1f60 }, { "omegaasper", 0x1f61 }, { "omegalenisgrave", 0x1f62 }, { "omegaaspergrave", 0x1f63 }, { "omegalenisacute", 0x1f64 }, { "omegaasperacute", 0x1f65 }, { "omegalenistilde", 0x1f66 }, { "omegaaspertilde", 0x1f67 }, { "alphagrave", 0x1f70 }, { "alphaacute", 0x1f71 }, { "epsilongrave", 0x1f72 }, { "epsilonacute", 0x1f73 }, { "etagrave", 0x1f74 }, { "etaacute", 0x1f75 }, { "iotagrave", 0x1f76 }, { "iotaacute", 0x1f77 }, { "omicrongrave", 0x1f78 }, { "omicronacute", 0x1f79 }, { "upsilongrave", 0x1f7a }, { "upsilonacute", 0x1f7b }, { "omegagrave", 0x1f7c }, { "omegaacute", 0x1f7d }, { "alphaiotasublenis", 0x1f80 }, { "alphaiotasubasper", 0x1f81 }, { "alphaiotasublenisgrave", 0x1f82 }, { "alphaiotasubaspergrave", 0x1f83 }, { "alphaiotasublenisacute", 0x1f84 }, { "alphaiotasubasperacute", 0x1f85 }, { "alphaiotasublenistilde", 0x1f86 }, { "alphaiotasubaspertilde", 0x1f87 }, { "etaiotasublenis", 0x1f90 }, { "etaiotasubasper", 0x1f91 }, { "etaiotasublenisgrave", 0x1f92 }, { "etaiotasubaspergrave", 0x1f93 }, { "etaiotasublenisacute", 0x1f94 }, { "etaiotasubasperacute", 0x1f95 }, { "etaiotasublenistilde", 0x1f96 }, { "etaiotasubaspertilde", 0x1f97 }, { "omegaiotasublenis", 0x1fa0 }, { "omegaiotasubasper", 0x1fa1 }, { "omegaiotasublenisgrave", 0x1fa2 }, { "omegaiotasubaspergrave", 0x1fa3 }, { "omegaiotasublenisacute", 0x1fa4 }, { "omegaiotasubasperacute", 0x1fa5 }, { "omegaiotasublenistilde", 0x1fa6 }, { "omegaiotasubaspertilde", 0x1fa7 }, { "alphabreve", 0x1fb0 }, { "alphamacron", 0x1fb1 }, { "alphaiotasubgrave", 0x1fb2 }, { "alphaiotasub", 0x1fb3 }, { "alphatilde", 0x1fb6 }, { "alphaiotasubtilde", 0x1fb7 }, { "etaiotasubgrave", 0x1fc2 }, { "etaiotasub", 0x1fc3 }, { "etaiotasubacute", 0x1fc4 }, { "etatilde", 0x1fc6 }, { "etaiotasubtilde", 0x1fc7 }, { "iotabreve", 0x1fd0 }, { "iotamacron", 0x1fd1 }, { "iotadieresisgrave", 0x1fd2 }, { "iotadieresisacute", 0x1fd3 }, { "iotatilde", 0x1fd6 }, { "iotadieresistilde", 0x1fd7 }, { "upsilonbreve", 0x1fe0 }, { "upsilonmacron", 0x1fe1 }, { "upsilondieresisgrave", 0x1fe2 }, { "upsilondieresisacute", 0x1fe3 }, { "rholenis", 0x1fe4 }, { "rhoasper", 0x1fe5 }, { "upsilontilde", 0x1fe6 }, { "omegaiotasubgrave", 0x1ff2 }, { "omegaiotasub", 0x1ff3 }, { "omegaiotasubacute", 0x1ff4 }, { "omegatilde", 0x1ff6 }, { "omegaiotasubtilde", 0x1ff7 }, { "alphaiotasubacute", 0x1fb4 }, { "upsilondieresistilde", 0x1fe7 }, { "digamma", 0xefd5 }, { "Be", 0x0411 }, { "Ve", 0x0412 }, { "Ghe", 0x0413 }, { "De", 0x0414 }, { "Ie", 0x0415 }, { "Zhe", 0x0416 }, { "Ze", 0x0417 }, { "Ka", 0x041a }, { "El", 0x041b }, { "Em", 0x041c }, { "En", 0x041d }, { "Pe", 0x041f }, { "Er", 0x0420 }, { "Es", 0x0421 }, { "Te", 0x0422 }, { "Ef", 0x0424 }, { "Ha", 0x0425 }, { "Tse", 0x0426 }, { "Che", 0x0427 }, { "Sha", 0x0428 }, { "Shcha", 0x0429 }, { "Hard", 0x042a }, { "Yeru", 0x042b }, { "Soft", 0x042c }, { "Yu", 0x042e }, { "Ya", 0x042f }, { "Io", 0x0401 }, { "Dje", 0x0402 }, { "Gje", 0x0403 }, { "Dze", 0x0405 }, { "Yi", 0x0407 }, { "Je", 0x0408 }, { "Lje", 0x0409 }, { "Nje", 0x040a }, { "Tshe", 0x040b }, { "Kje", 0x040c }, { "Dzhe", 0x040f }, { "Yat", 0x0462 }, { "Fita", 0x0472 }, { "Izhitsa", 0x0474 }, { "be", 0x0431 }, { "ve", 0x0432 }, { "ghe", 0x0433 }, { "de", 0x0434 }, { "ie", 0x0435 }, { "zhe", 0x0436 }, { "ze", 0x0437 }, { "ka", 0x043a }, { "el", 0x043b }, { "em", 0x043c }, { "en", 0x043d }, { "er", 0x0440 }, { "es", 0x0441 }, { "te", 0x0442 }, { "ef", 0x0444 }, { "ha", 0x0445 }, { "tse", 0x0446 }, { "che", 0x0447 }, { "sha", 0x0448 }, { "shcha", 0x0449 }, { "hard", 0x044a }, { "yeru", 0x044b }, { "soft", 0x044c }, { "yu", 0x044e }, { "ya", 0x044f }, { "io", 0x0451 }, { "dje", 0x0452 }, { "gje", 0x0453 }, { "dze", 0x0455 }, { "yi", 0x0457 }, { "je", 0x0458 }, { "lje", 0x0459 }, { "nje", 0x045a }, { "tshe", 0x045b }, { "kje", 0x045c }, { "dzhe", 0x045f }, { "yat", 0x0463 }, { "fita", 0x0473 }, { "izhitsa", 0x0475 }, { "litre", 0x2113 }, { "Dotaccent", 0xefed }, { "Breve", 0xefee }, { "Ogonek", 0xeff1 }, { "Cedilla", 0xeff2 }, { "Ring", 0xeff3 }, { "Tilde", 0xeff5 }, { "Circumflex", 0xeff7 }, { "dbar", 0x0111 }, { "st", 0xfb06 }, { "TeXtext32", 0x0337 }, { "DD070", 0x2014 }, { "monospacedash", 0x2014 }, { "Dash1cent", 0x2015 }, { "apostrophereverse", 0x201b }, { "Pts", 0x20a7 }, { "SM760000", 0x2195 }, { "SM770000", 0x21a8 }, { "SP320000", 0x2219 }, { "SD630000", 0x22c5 }, { "SM790000", 0x2302 }, { "caretinverted", 0x2304 }, { "SM680000", 0x2310 }, { "SA420000", 0x2319 }, { "BorderULCorner1", 0x231c }, { "DD010", 0x231c }, { "DD101", 0x231c }, { "BorderURCorner1", 0x231d }, { "DD012", 0x231d }, { "DD104", 0x231d }, { "BorderLLCorner1", 0x231e }, { "DD014", 0x231e }, { "DD109", 0x231e }, { "BorderLRCorner1", 0x231f }, { "DD015", 0x231f }, { "DD112", 0x231f }, { "SS260000", 0x2320 }, { "SS270000", 0x2321 }, { "hook", 0x2440 }, { "chair", 0x2441 }, { "fork", 0x2442 }, { "SF600000", 0x2580 }, { "BorderLower1", 0x2581 }, { "DD011", 0x2581 }, { "DD021", 0x2581 }, { "DD110", 0x2581 }, { "Flower1l", 0x2581 }, { "SF570000", 0x2584 }, { "SF610000", 0x2588 }, { "Tile", 0x2588 }, { "HalfTile", 0x258c }, { "SF580000", 0x258c }, { "BorderLeftVertical1", 0x258f }, { "DD013", 0x258f }, { "DD034", 0x258f }, { "DD105", 0x258f }, { "Flower1d", 0x258f }, { "SF590000", 0x2590 }, { "SF140000", 0x2591 }, { "SF150000", 0x2592 }, { "SF160000", 0x2593 }, { "BorderUpper1", 0x2594 }, { "DD024", 0x2594 }, { "DD102", 0x2594 }, { "BorderRightVertical1", 0x2595 }, { "DD031", 0x2595 }, { "DD106", 0x2595 }, { "Flower2dr", 0x2595 }, { "SM600000", 0x25b2 }, { "SM590000", 0x25b6 }, { "SV040000", 0x25bc }, { "SM630000", 0x25c0 }, { "SM750000", 0x25cb }, { "SM570001", 0x25d8 }, { "SM750002", 0x25d9 }, { "ShootingStar", 0x2604 }, { "DD130", 0x2605 }, { "StarDingbat1", 0x2605 }, { "TheSun", 0x2609 }, { "FleuronLeft", 0x2619 }, { "cross", 0x2629 }, { "SS000000", 0x263a }, { "SS010000", 0x263b }, { "SM690000", 0x263c }, { "TheMoon", 0x263d }, { "Moon", 0x263e }, { "Mercury", 0x263f }, { "Venus", 0x2640 }, { "Earth", 0x2641 }, { "Mars", 0x2642 }, { "Jupiter", 0x2643 }, { "Saturn", 0x2644 }, { "Uranus", 0x2645 }, { "Neptune", 0x2646 }, { "Pluto", 0x2647 }, { "Aries", 0x2648 }, { "Taurus", 0x2649 }, { "Gemini", 0x264a }, { "Cancer", 0x264b }, { "Leo", 0x264c }, { "Virgo", 0x264d }, { "Libra", 0x264e }, { "Scorpio", 0x264f }, { "Sagittarius", 0x2650 }, { "Capricorn", 0x2651 }, { "Aquarius", 0x2652 }, { "Pisces", 0x2653 }, { "diamondopen", 0x2662 }, { "FleuronCenter", 0x2766 }, { "FleuronRight", 0x2767 }, { "st1", 0xfb06 }, { "zeroslash", 0xf638 }, { "pi1", 0x03d6 }, { "hyphen-minus", 0x002d }, { "hyphenminus", 0x002d }, { "nonmarkingreturn", 0x000c }, { "micro", 0x00b5 }, { "Dmacron", 0x0110 }, { "kra", 0x0138 }, { "bbar", 0x0180 }, { "Dbar", 0x0189 }, { "deltaturn", 0x018d }, { "Eturn", 0x018e }, { "Epsilonlatin", 0x0190 }, { "Gammalatin", 0x0194 }, { "Iotalatin", 0x0196 }, { "Ibar", 0x0197 }, { "lambdabar", 0x019b }, { "mcapturn", 0x019c }, { "Nhook", 0x019d }, { "nleg", 0x019e }, { "Obar", 0x019f }, { "OI", 0x01a2 }, { "YR", 0x01a6 }, { "eshlooprev", 0x01aa }, { "Trthook", 0x01ae }, { "Upsilonlatin", 0x01b1 }, { "Vcursive", 0x01b2 }, { "Zbar", 0x01b5 }, { "zbar", 0x01b6 }, { "Yogh", 0x01b7 }, { "Yoghrev", 0x01b8 }, { "yoghrev", 0x01b9 }, { "yoghtail", 0x01ba }, { "twobar", 0x01bb }, { "glottalstopbarinv", 0x01be }, { "pipe", 0x01c0 }, { "pipedbl", 0x01c1 }, { "pipedblbar", 0x01c2 }, { "exclamlatin", 0x01c3 }, { "DZhacek", 0x01c4 }, { "Dzhacek", 0x01c5 }, { "dzhacek", 0x01c6 }, { "Ahacek", 0x01cd }, { "ahacek", 0x01ce }, { "Ihacek", 0x01cf }, { "ihacek", 0x01d0 }, { "Ohacek", 0x01d1 }, { "ohacek", 0x01d2 }, { "Uhacek", 0x01d3 }, { "uhacek", 0x01d4 }, { "Udieresishacek", 0x01d9 }, { "udieresishacek", 0x01da }, { "eturn", 0x01dd }, { "Gbar", 0x01e4 }, { "gbar", 0x01e5 }, { "Ghacek", 0x01e6 }, { "ghacek", 0x01e7 }, { "Khacek", 0x01e8 }, { "khacek", 0x01e9 }, { "Yoghhacek", 0x01ee }, { "yoghhacek", 0x01ef }, { "jhacek", 0x01f0 }, { "aturn", 0x0250 }, { "ascriptturn", 0x0252 }, { "cturn", 0x0254 }, { "drthook", 0x0256 }, { "erev", 0x0258 }, { "epsilonlatin", 0x025b }, { "epsilonlatinrev", 0x025c }, { "epsilonlatinrevhook", 0x025d }, { "epsilonlatinrevclosed", 0x025e }, { "jdotlessbar", 0x025f }, { "gcursive", 0x0261 }, { "Gsmallcap", 0x0262 }, { "gammalatin", 0x0263 }, { "babygamma", 0x0264 }, { "hturn", 0x0265 }, { "ibar", 0x0268 }, { "Ismallcap", 0x026a }, { "lmidtilde", 0x026b }, { "lrthook", 0x026d }, { "lyogh", 0x026e }, { "mturn", 0x026f }, { "mturndescend", 0x0270 }, { "nlftlfthook", 0x0272 }, { "nrthook", 0x0273 }, { "Nsmallcap", 0x0274 }, { "obar", 0x0275 }, { "OEsmallcap", 0x0276 }, { "omegaclosed", 0x0277 }, { "rturn", 0x0279 }, { "rturnascend", 0x027a }, { "rturnrthook", 0x027b }, { "rdescend", 0x027c }, { "rrthook", 0x027d }, { "rfishhookrev", 0x027f }, { "Rsmallcap", 0x0280 }, { "Rsmallcapinv", 0x0281 }, { "srthook", 0x0282 }, { "jhookdblbar", 0x0284 }, { "eshshortrev", 0x0285 }, { "tturn", 0x0287 }, { "trthook", 0x0288 }, { "vscript", 0x028b }, { "vturn", 0x028c }, { "wturn", 0x028d }, { "yturn", 0x028e }, { "Ysmallcap", 0x028f }, { "zrthook", 0x0290 }, { "yogh", 0x0292 }, { "yoghcurl", 0x0293 }, { "glottalstoprevinv", 0x0295 }, { "glottalstopinv", 0x0296 }, { "cstretch", 0x0297 }, { "kiss", 0x0298 }, { "Bsmallcap", 0x0299 }, { "epsilonclosed", 0x029a }, { "Gsmallcaphook", 0x029b }, { "Hsmallcap", 0x029c }, { "jcrosstail", 0x029d }, { "kturn", 0x029e }, { "Lsmallcap", 0x029f }, { "glottalstopbar", 0x02a1 }, { "glottalstopbarrev", 0x02a2 }, { "dyogh", 0x02a4 }, { "hsuper", 0x02b0 }, { "hhooksuper", 0x02b1 }, { "jsuper", 0x02b2 }, { "rsuper", 0x02b3 }, { "rturnsuper", 0x02b4 }, { "rturnrthooksuper", 0x02b5 }, { "Rturnsuper", 0x02b6 }, { "wsuper", 0x02b7 }, { "ysuper", 0x02b8 }, { "primedblmod", 0x02ba }, { "quoteleftmod", 0x02bb }, { "apostrophe", 0x02bc }, { "apostropherev", 0x02bd }, { "ringrighthalfsuper", 0x02be }, { "ringlefthalfsuper", 0x02bf }, { "glottal", 0x02c0 }, { "glottalrev", 0x02c1 }, { "fronted", 0x02c2 }, { "backed", 0x02c3 }, { "raised", 0x02c4 }, { "lowered", 0x02c5 }, { "linevert", 0x02c8 }, { "macronmodifier", 0x02c9 }, { "acutemodifier", 0x02ca }, { "gravemodifier", 0x02cb }, { "linevertsub", 0x02cc }, { "macronsub", 0x02cd }, { "gravesub", 0x02ce }, { "acutesub", 0x02cf }, { "length", 0x02d0 }, { "halflength", 0x02d1 }, { "ringrighthalfcenter", 0x02d2 }, { "ringlefthalfsup", 0x02d3 }, { "tackupmid", 0x02d4 }, { "tackdownmid", 0x02d5 }, { "rhotichook", 0x02de }, { "gammasuper", 0x02e0 }, { "lsuper", 0x02e1 }, { "ssuper", 0x02e2 }, { "xsuper", 0x02e3 }, { "glottalrevsuper", 0x02e4 }, { "toneextrahigh", 0x02e5 }, { "tonehigh", 0x02e6 }, { "tonemid", 0x02e7 }, { "tonelow", 0x02e8 }, { "toneextralow", 0x02e9 }, { "gravenosp", 0x0300 }, { "acutenosp", 0x0301 }, { "circumflexnosp", 0x0302 }, { "tildenosp", 0x0303 }, { "macronnosp", 0x0304 }, { "overscorenosp", 0x0305 }, { "brevenosp", 0x0306 }, { "dotnosp", 0x0307 }, { "dieresisnosp", 0x0308 }, { "hooksupnosp", 0x0309 }, { "ringnosp", 0x030a }, { "acutedblnosp", 0x030b }, { "haceknosp", 0x030c }, { "linevertnosp", 0x030d }, { "linevertdblnosp", 0x030e }, { "gravedblnosp", 0x030f }, { "candrabindunosp", 0x0310 }, { "breveinvnosp", 0x0311 }, { "commaturnsupnosp", 0x0312 }, { "apostrophesupnosp", 0x0313 }, { "commasuprevnosp", 0x0314 }, { "commasuprightnosp", 0x0315 }, { "gravesubnosp", 0x0316 }, { "acutesubnosp", 0x0317 }, { "tackleftsubnosp", 0x0318 }, { "tackrightsubnosp", 0x0319 }, { "anglesupnosp", 0x031a }, { "hornnosp", 0x031b }, { "ringlefthalfsubnosp", 0x031c }, { "tackupsubnosp", 0x031d }, { "tackdownsubnosp", 0x031e }, { "plussubnosp", 0x031f }, { "minussubnosp", 0x0320 }, { "hooksubpalatnosp", 0x0321 }, { "hooksubretronosp", 0x0322 }, { "dotsubnosp", 0x0323 }, { "dotdblsubnosp", 0x0324 }, { "ringsubnosp", 0x0325 }, { "commasubnosp", 0x0326 }, { "cedillanosp", 0x0327 }, { "ogoneknosp", 0x0328 }, { "linevertsubnosp", 0x0329 }, { "bridgesubnosp", 0x032a }, { "archdblsubnosp", 0x032b }, { "haceksubnosp", 0x032c }, { "circumflexsubnosp", 0x032d }, { "brevesubnosp", 0x032e }, { "breveinvsubnosp", 0x032f }, { "tildesubnosp", 0x0330 }, { "macronsubnosp", 0x0331 }, { "underscorenosp", 0x0332 }, { "underscoredblnosp", 0x0333 }, { "tildemidnosp", 0x0334 }, { "barmidshortnosp", 0x0335 }, { "barmidlongnosp", 0x0336 }, { "slashshortnosp", 0x0337 }, { "slashlongnosp", 0x0338 }, { "ringrighthalfsubnosp", 0x0339 }, { "bridgeinvsubnosp", 0x033a }, { "squaresubnosp", 0x033b }, { "seagullsubnosp", 0x033c }, { "xsupnosp", 0x033d }, { "tildevertsupnosp", 0x033e }, { "overscoredblnosp", 0x033f }, { "graveleftnosp", 0x0340 }, { "acuterightnosp", 0x0341 }, { "wavyoverscorenosp", 0x0342 }, { "zigzagoverscorenosp", 0x0343 }, { "diaeresistonosnosp", 0x0344 }, { "iotasubnosp", 0x0345 }, { "iotasub", 0x037a }, { "diaeresistonos", 0x0385 }, { "iotadiaeresistonos", 0x0390 }, { "Iotadiaeresis", 0x03aa }, { "Upsilondiaeresis", 0x03ab }, { "upsilondiaeresistonos", 0x03b0 }, { "iotadiaeresis", 0x03ca }, { "upsilondiaeresis", 0x03cb }, { "betacurled", 0x03d0 }, { "thetascript", 0x03d1 }, { "Upsilonhook", 0x03d2 }, { "Upsilonhooktonos", 0x03d3 }, { "Upsilonhookdiaeresis", 0x03d4 }, { "phiscript", 0x03d5 }, { "omegapi", 0x03d6 }, { "Stigma", 0x03da }, { "stigma", 0x03db }, { "Digamma", 0x03dc }, { "digamma", 0x03dd }, { "Koppa", 0x03de }, { "koppa", 0x03df }, { "Sampi", 0x03e0 }, { "sampi", 0x03e1 }, { "Shei", 0x03e2 }, { "shei", 0x03e3 }, { "Fei", 0x03e4 }, { "fei", 0x03e5 }, { "Khei", 0x03e6 }, { "khei", 0x03e7 }, { "Hori", 0x03e8 }, { "hori", 0x03e9 }, { "Gangia", 0x03ea }, { "gangia", 0x03eb }, { "Shima", 0x03ec }, { "shima", 0x03ed }, { "Dei", 0x03ee }, { "dei", 0x03ef }, { "kappascript", 0x03f0 }, { "sigmalunate", 0x03f2 }, { "Io", 0x0401 }, { "Dje", 0x0402 }, { "Gje", 0x0403 }, { "Ecyril", 0x0404 }, { "Dze", 0x0405 }, { "Icyril", 0x0406 }, { "Yi", 0x0407 }, { "Je", 0x0408 }, { "Lje", 0x0409 }, { "Nje", 0x040a }, { "Tshe", 0x040b }, { "Kje", 0x040c }, { "Ucyrilbreve", 0x040e }, { "Dzhe", 0x040f }, { "Acyril", 0x0410 }, { "Be", 0x0411 }, { "Ve", 0x0412 }, { "Ge", 0x0413 }, { "De", 0x0414 }, { "Ie", 0x0415 }, { "Zhe", 0x0416 }, { "Ze", 0x0417 }, { "Ii", 0x0418 }, { "Iibreve", 0x0419 }, { "Ka", 0x041a }, { "El", 0x041b }, { "Em", 0x041c }, { "En", 0x041d }, { "Ocyril", 0x041e }, { "Pecyril", 0x041f }, { "Er", 0x0420 }, { "Es", 0x0421 }, { "Te", 0x0422 }, { "Ucyril", 0x0423 }, { "Ef", 0x0424 }, { "Kha", 0x0425 }, { "Tse", 0x0426 }, { "Che", 0x0427 }, { "Sha", 0x0428 }, { "Shcha", 0x0429 }, { "Hard", 0x042a }, { "Yeri", 0x042b }, { "Soft", 0x042c }, { "Ecyrilrev", 0x042d }, { "Iu", 0x042e }, { "Ia", 0x042f }, { "acyril", 0x0430 }, { "be", 0x0431 }, { "ve", 0x0432 }, { "ge", 0x0433 }, { "de", 0x0434 }, { "ie", 0x0435 }, { "zhe", 0x0436 }, { "ze", 0x0437 }, { "ii", 0x0438 }, { "iibreve", 0x0439 }, { "ka", 0x043a }, { "el", 0x043b }, { "em", 0x043c }, { "en", 0x043d }, { "ocyril", 0x043e }, { "pecyril", 0x043f }, { "er", 0x0440 }, { "es", 0x0441 }, { "te", 0x0442 }, { "ucyril", 0x0443 }, { "ef", 0x0444 }, { "kha", 0x0445 }, { "tse", 0x0446 }, { "che", 0x0447 }, { "sha", 0x0448 }, { "shcha", 0x0449 }, { "hard", 0x044a }, { "yeri", 0x044b }, { "soft", 0x044c }, { "ecyrilrev", 0x044d }, { "iu", 0x044e }, { "ia", 0x044f }, { "io", 0x0451 }, { "dje", 0x0452 }, { "gje", 0x0453 }, { "ecyril", 0x0454 }, { "dze", 0x0455 }, { "icyril", 0x0456 }, { "yi", 0x0457 }, { "je", 0x0458 }, { "lje", 0x0459 }, { "nje", 0x045a }, { "tshe", 0x045b }, { "kje", 0x045c }, { "ucyrilbreve", 0x045e }, { "dzhe", 0x045f }, { "Yat", 0x0462 }, { "yat", 0x0463 }, { "Yusbig", 0x046a }, { "yusbig", 0x046b }, { "Psicyril", 0x0470 }, { "psicyril", 0x0471 }, { "Fita", 0x0472 }, { "fita", 0x0473 }, { "Izhitsa", 0x0474 }, { "izhitsa", 0x0475 }, { "Izhitsagravedbl", 0x0476 }, { "izhitsagravedbl", 0x0477 }, { "Digraphuk", 0x0478 }, { "digraphuk", 0x0479 }, { "Omegaround", 0x047a }, { "omegaround", 0x047b }, { "Omegatitlo", 0x047c }, { "omegatitlo", 0x047d }, { "OT", 0x047e }, { "ot", 0x047f }, { "Geupturn", 0x0490 }, { "geupturn", 0x0491 }, { "Gebar", 0x0492 }, { "gebar", 0x0493 }, { "Gehook", 0x0494 }, { "gehook", 0x0495 }, { "Zhertdes", 0x0496 }, { "zhertdes", 0x0497 }, { "Zecedilla", 0x0498 }, { "zecedilla", 0x0499 }, { "Kartdes", 0x049a }, { "kartdes", 0x049b }, { "Kavertbar", 0x049c }, { "kavertbar", 0x049d }, { "Kabar", 0x049e }, { "kabar", 0x049f }, { "GeKarev", 0x04a0 }, { "gekarev", 0x04a1 }, { "Enrtdes", 0x04a2 }, { "enrtdes", 0x04a3 }, { "EnGe", 0x04a4 }, { "enge", 0x04a5 }, { "Pehook", 0x04a6 }, { "pehook", 0x04a7 }, { "Ohook", 0x04a8 }, { "ohook", 0x04a9 }, { "Escedilla", 0x04aa }, { "escedilla", 0x04ab }, { "Tertdes", 0x04ac }, { "tertdes", 0x04ad }, { "Ustrt", 0x04ae }, { "ustrt", 0x04af }, { "Ustrtbar", 0x04b0 }, { "ustrtbar", 0x04b1 }, { "Khartdes", 0x04b2 }, { "khartdes", 0x04b3 }, { "TeTse", 0x04b4 }, { "tetse", 0x04b5 }, { "Chertdes", 0x04b6 }, { "chertdes", 0x04b7 }, { "Chevertbar", 0x04b8 }, { "chevertbar", 0x04b9 }, { "Hcyril", 0x04ba }, { "hcyril", 0x04bb }, { "Iehook", 0x04bc }, { "iehook", 0x04bd }, { "Iehookogonek", 0x04be }, { "iehookogonek", 0x04bf }, { "Icyril1", 0x04c0 }, { "Zhebreve", 0x04c1 }, { "zhebreve", 0x04c2 }, { "Kahook", 0x04c3 }, { "kahook", 0x04c4 }, { "Enhook", 0x04c7 }, { "enhook", 0x04c8 }, { "Cheleftdes", 0x04cb }, { "cheleftdes", 0x04cc }, { "qibuts", 0x05bb }, { "meteg", 0x05bd }, { "maqaf", 0x05be }, { "paseq", 0x05c0 }, { "shindot", 0x05c1 }, { "sindot", 0x05c2 }, { "sofpasuq", 0x05c3 }, { "kaffinal", 0x05da }, { "memfinal", 0x05dd }, { "nunfinal", 0x05df }, { "pefinal", 0x05e3 }, { "tsadifinal", 0x05e5 }, { "vavdbl", 0x05f0 }, { "vavyod", 0x05f1 }, { "yoddbl", 0x05f2 }, { "geresh", 0x05f3 }, { "gershayim", 0x05f4 }, { "varika", 0x05f5 }, { "enquad", 0x2000 }, { "emquad", 0x2001 }, { "emspace", 0x2003 }, { "threeperemspace", 0x2004 }, { "fourperemspace", 0x2005 }, { "sixperemspace", 0x2006 }, { "figurespace", 0x2007 }, { "punctuationspace", 0x2008 }, { "thinspace", 0x2009 }, { "hairspace", 0x200a }, { "zerospace", 0x200b }, { "zeronojoin", 0x200c }, { "zerojoin", 0x200d }, { "hyphennobreak", 0x2011 }, { "quotedash", 0x2015 }, { "dashdbl", 0x2016 }, { "quotesinglrev", 0x201b }, { "quotedblrev", 0x201f }, { "trianglebullet", 0x2023 }, { "onedotlead", 0x2024 }, { "twodotlead", 0x2025 }, { "hyphendot", 0x2027 }, { "lineseparator", 0x2028 }, { "paragraphseparator", 0x2029 }, { "lre", 0x202a }, { "rle", 0x202b }, { "pdf", 0x202c }, { "lro", 0x202d }, { "rlo", 0x202e }, { "pertenthousand", 0x2031 }, { "prime", 0x2032 }, { "primedbl", 0x2033 }, { "primetriple", 0x2034 }, { "primerev", 0x2035 }, { "primedblrev", 0x2036 }, { "primetriplerev", 0x2037 }, { "caret", 0x2038 }, { "refmark", 0x203b }, { "interrobang", 0x203d }, { "tie", 0x2040 }, { "caretinsert", 0x2041 }, { "hyphenbullet", 0x2043 }, { "minussuperior", 0x207b }, { "plusinferior", 0x208a }, { "equalinferior", 0x208c }, { "eurocurrency", 0x20a0 }, { "coloncurrency", 0x20a1 }, { "mill", 0x20a5 }, { "naira", 0x20a6 }, { "pesetas", 0x20a7 }, { "rupee", 0x20a8 }, { "newsheqel", 0x20aa }, { "accountof", 0x2100 }, { "addresssubject", 0x2101 }, { "Cbb", 0x2102 }, { "degreecentigrade", 0x2103 }, { "CL", 0x2104 }, { "cadauna", 0x2106 }, { "Euler", 0x2107 }, { "scruple", 0x2108 }, { "degreefarenheit", 0x2109 }, { "Hscript", 0x210b }, { "Hblackletter", 0x210c }, { "Hbb", 0x210d }, { "planck", 0x210e }, { "planckover2pi", 0x210f }, { "Iscript", 0x2110 }, { "Lscript", 0x2112 }, { "lscript", 0x2113 }, { "lbbar", 0x2114 }, { "Nbb", 0x2115 }, { "recordright", 0x2117 }, { "Pbb", 0x2119 }, { "Qbb", 0x211a }, { "Rscript", 0x211b }, { "Rfractur", 0x211c }, { "Rbb", 0x211d }, { "Rx", 0x211e }, { "response", 0x211f }, { "servicemark", 0x2120 }, { "tel", 0x2121 }, { "versicle", 0x2123 }, { "Zbb", 0x2124 }, { "ounce", 0x2125 }, { "ohm", 0x2126 }, { "mho", 0x2127 }, { "Zblackletter", 0x2128 }, { "iotaturn", 0x2129 }, { "degreekelvin", 0x212a }, { "Bscript", 0x212c }, { "Cblackletter", 0x212d }, { "escript", 0x212f }, { "Escript", 0x2130 }, { "Fscript", 0x2131 }, { "Fturn", 0x2132 }, { "Mscript", 0x2133 }, { "u0scrip", 0x2134 }, { "alephmath", 0x2135 }, { "gimelmath", 0x2137 }, { "dalethmath", 0x2138 }, { "twothird", 0x2154 }, { "onefifth", 0x2155 }, { "twofifths", 0x2156 }, { "threefifths", 0x2157 }, { "fourfifths", 0x2158 }, { "onesixth", 0x2159 }, { "fivesixths", 0x215a }, { "onenumerator", 0x215f }, { "arrowlongboth", 0x2194 }, { "arrowlongbothv", 0x2195 }, { "arrownorthwest", 0x2196 }, { "arrownortheast", 0x2197 }, { "arrowsoutheast", 0x2198 }, { "arrowsouthwest", 0x2199 }, { "arrowleftnot", 0x219a }, { "arrowrightnot", 0x219b }, { "arrowwaveleft", 0x219c }, { "arrowwaveright", 0x219d }, { "dblarrowheadleft", 0x219e }, { "dblarrowheadup", 0x219f }, { "dblarrowheadright", 0x21a0 }, { "dblarrowheaddown", 0x21a1 }, { "arrowtailleft", 0x21a2 }, { "arrowtailright", 0x21a3 }, { "arrowbarleft", 0x21a4 }, { "arrowbarup", 0x21a5 }, { "arrowbarright", 0x21a6 }, { "arrowbardown", 0x21a7 }, { "arrowbothvbase", 0x21a8 }, { "arrowhookleft", 0x21a9 }, { "arrowhookright", 0x21aa }, { "arrowloopleft", 0x21ab }, { "arrowloopright", 0x21ac }, { "arrowwaveboth", 0x21ad }, { "arrowlongbothnot", 0x21ae }, { "arrowzigzag", 0x21af }, { "arrowrightdown", 0x21b4 }, { "carriagerreturn", 0x21b5 }, { "arrowsemanticlockw", 0x21b6 }, { "arrowsemclockw", 0x21b7 }, { "home", 0x21b8 }, { "tableftright", 0x21b9 }, { "arrowanticlockw", 0x21ba }, { "arrowclockw", 0x21bb }, { "arrowlefttophalf", 0x21bc }, { "arrowleftbothalf", 0x21bd }, { "harpoonupright", 0x21be }, { "harpoonupleft", 0x21bf }, { "arrowrighttophalf", 0x21c0 }, { "arrowrightbothalf", 0x21c1 }, { "harpoondownright", 0x21c2 }, { "harpoondownleft", 0x21c3 }, { "arrowparrrightleft", 0x21c4 }, { "dblarrowupdown", 0x21c5 }, { "arrowparrleftright", 0x21c6 }, { "dblarrowup", 0x21c8 }, { "dblarrowdown", 0x21ca }, { "harpoonleftright", 0x21cb }, { "harpoonrightleft", 0x21cc }, { "arrowdblleftnot", 0x21cd }, { "arrowdbllongbothnot", 0x21ce }, { "arrowdblrightnot", 0x21cf }, { "arrowdbllongboth", 0x21d4 }, { "arrowdbllongbothv", 0x21d5 }, { "arrowdblnw", 0x21d6 }, { "arrowdblne", 0x21d7 }, { "arrowdblse", 0x21d8 }, { "arrowdblsw", 0x21d9 }, { "arrowtripleleft", 0x21da }, { "arrowtripleright", 0x21db }, { "arrowsquiggleleft", 0x21dc }, { "arrowsquiggleright", 0x21dd }, { "arrowopenleft", 0x21e6 }, { "arrowopenup", 0x21e7 }, { "arrowopenright", 0x21e8 }, { "arrowopendown", 0x21e9 }, { "complement", 0x2201 }, { "notexistential", 0x2204 }, { "elementsmall", 0x220a }, { "owner", 0x220b }, { "notowner", 0x220c }, { "ownersmall", 0x220d }, { "eop", 0x220e }, { "coproduct", 0x2210 }, { "dotplus", 0x2214 }, { "slashmath", 0x2215 }, { "backslashmath", 0x2216 }, { "ringoperator", 0x2218 }, { "bulletmath", 0x2219 }, { "cuberoot", 0x221b }, { "fourthroot", 0x221c }, { "measuredangle", 0x2221 }, { "sphericalangle", 0x2222 }, { "notbar", 0x2224 }, { "parallelto", 0x2225 }, { "notbardbl", 0x2226 }, { "integraldbl", 0x222c }, { "integraltrpl", 0x222d }, { "contintegral", 0x222e }, { "surfintegral", 0x222f }, { "volintegral", 0x2230 }, { "clwintegral", 0x2231 }, { "clwcontintegral", 0x2232 }, { "cclwcontintegral", 0x2233 }, { "dotminus", 0x2238 }, { "excess", 0x2239 }, { "geomproportion", 0x223a }, { "homothetic", 0x223b }, { "revsimilar", 0x223d }, { "lazysinv", 0x223e }, { "sine", 0x223f }, { "wreathproduct", 0x2240 }, { "notsimilar", 0x2241 }, { "minustilde", 0x2242 }, { "asymptequal", 0x2243 }, { "notasymptequal", 0x2244 }, { "approxorequal", 0x2245 }, { "approxnotequal", 0x2246 }, { "notapproxequal", 0x2247 }, { "almostequal", 0x2248 }, { "notalmostequal", 0x2249 }, { "almostorequal", 0x224a }, { "tildetrpl", 0x224b }, { "equivasymptotic", 0x224d }, { "geomequivalent", 0x224e }, { "difference", 0x224f }, { "approachlimit", 0x2250 }, { "geomequal", 0x2251 }, { "imageorapproxequal", 0x2253 }, { "colonequal", 0x2254 }, { "equalcolon", 0x2255 }, { "ringinequal", 0x2256 }, { "ringequal", 0x2257 }, { "corresponds", 0x2258 }, { "estimates", 0x2259 }, { "equiangular", 0x225a }, { "starequal", 0x225b }, { "deltaequal", 0x225c }, { "definequal", 0x225d }, { "measurequal", 0x225e }, { "questionequal", 0x225f }, { "notequivalence", 0x2262 }, { "strictequivalence", 0x2263 }, { "lessdblequal", 0x2266 }, { "greaterdblequal", 0x2267 }, { "lessnotdblequal", 0x2268 }, { "greaternotdblequal", 0x2269 }, { "lessmuch", 0x226a }, { "greatermuch", 0x226b }, { "between", 0x226c }, { "notequivasymptotic", 0x226d }, { "notlessequal", 0x2270 }, { "notgreaterequal", 0x2271 }, { "lessequivlnt", 0x2272 }, { "greaterequivlnt", 0x2273 }, { "notlessequivlnt", 0x2274 }, { "notgreaterequivlnt", 0x2275 }, { "notlessgreater", 0x2278 }, { "notgreaterless", 0x2279 }, { "follows", 0x227b }, { "precedesequal", 0x227c }, { "followsequal", 0x227d }, { "precedequivlnt", 0x227e }, { "followsequivlnt", 0x227f }, { "notpreceeds", 0x2280 }, { "notfollows", 0x2281 }, { "notpropersubset", 0x2284 }, { "notpropersuperset", 0x2285 }, { "notreflexsubset", 0x2288 }, { "notreflexsuperset", 0x2289 }, { "multiset", 0x228c }, { "multiplymultiset", 0x228d }, { "unionmulti", 0x228e }, { "squareimage", 0x228f }, { "squareoriginal", 0x2290 }, { "subsetsqequal", 0x2291 }, { "supersetsqequal", 0x2292 }, { "intersectionsq", 0x2293 }, { "unionsq", 0x2294 }, { "circleminus", 0x2296 }, { "circledivide", 0x2298 }, { "circledot", 0x2299 }, { "circlering", 0x229a }, { "circleasterisk", 0x229b }, { "circleequal", 0x229c }, { "circlevertbar", 0x229d }, { "squareplus", 0x229e }, { "squareminus", 0x229f }, { "squaremultiply", 0x22a0 }, { "squaredot", 0x22a1 }, { "turnstileleft", 0x22a2 }, { "turnstileright", 0x22a3 }, { "latticetop", 0x22a4 }, { "assertion", 0x22a6 }, { "truestate", 0x22a7 }, { "satisfy", 0x22a8 }, { "force", 0x22a9 }, { "tacktrpl", 0x22aa }, { "forceextr", 0x22ab }, { "notturnstileleft", 0x22ac }, { "notsatisfy", 0x22ad }, { "notforce", 0x22ae }, { "notforceextr", 0x22af }, { "lowerrank", 0x22b0 }, { "higherrank", 0x22b1 }, { "triangleright", 0x22b2 }, { "triangleleft", 0x22b3 }, { "triangleftequal", 0x22b4 }, { "triangrightequal", 0x22b5 }, { "original", 0x22b6 }, { "image", 0x22b7 }, { "multimap", 0x22b8 }, { "hermitconjmatrix", 0x22b9 }, { "intercal", 0x22ba }, { "xor", 0x22bb }, { "nand", 0x22bc }, { "nor", 0x22bd }, { "rightanglearc", 0x22be }, { "narylogicaland", 0x22c0 }, { "narylogicalor", 0x22c1 }, { "naryintersection", 0x22c2 }, { "naryunion", 0x22c3 }, { "diamondmath", 0x22c4 }, { "divideonmultiply", 0x22c7 }, { "bowtie", 0x22c8 }, { "multicloseleft", 0x22c9 }, { "multicloseright", 0x22ca }, { "multiopenleft", 0x22cb }, { "multiopenright", 0x22cc }, { "revasymptequal", 0x22cd }, { "curlor", 0x22ce }, { "curland", 0x22cf }, { "subsetdbl", 0x22d0 }, { "supersetdbl", 0x22d1 }, { "uniondbl", 0x22d2 }, { "intersectiondbl", 0x22d3 }, { "fork", 0x22d4 }, { "equalparallel", 0x22d5 }, { "lessdot", 0x22d6 }, { "greaterdot", 0x22d7 }, { "verymuchless", 0x22d8 }, { "verymuchgreater", 0x22d9 }, { "lessequalgreater", 0x22da }, { "greaterequalless", 0x22db }, { "equalless", 0x22dc }, { "equalgreater", 0x22dd }, { "equalprecedes", 0x22de }, { "equalfollows", 0x22df }, { "preceedsnotequal", 0x22e0 }, { "followsnotequal", 0x22e1 }, { "notsubsetsqequal", 0x22e2 }, { "notsupersetsqequal", 0x22e3 }, { "sqimageornotequal", 0x22e4 }, { "sqoriginornotequal", 0x22e5 }, { "lessnotequivlnt", 0x22e6 }, { "greaternotequivlnt", 0x22e7 }, { "preceedsnotsimilar", 0x22e8 }, { "followsnotequivlnt", 0x22e9 }, { "nottriangleleft", 0x22ea }, { "nottriangleright", 0x22eb }, { "nottriangleleftequal", 0x22ec }, { "nottrianglerightequal", 0x22ed }, { "vertellipsis", 0x22ee }, { "midhorizellipsis", 0x22ef }, { "upslopeellipsis", 0x22f0 }, { "downslopeellipsis", 0x22f1 }, { "perspcorrespond", 0x2306 }, { "ceilingleft", 0x2308 }, { "ceilingright", 0x2309 }, { "floorleft", 0x230a }, { "floorright", 0x230b }, { "slurabove", 0x2322 }, { "slurbelow", 0x2323 }, { "null", 0x2400 }, { "startofhead", 0x2401 }, { "starttext", 0x2402 }, { "endtext", 0x2403 }, { "endtrans", 0x2404 }, { "enquiry", 0x2405 }, { "acknowledge", 0x2406 }, { "bell", 0x2407 }, { "backspace", 0x2408 }, { "horiztab", 0x2409 }, { "linefeed", 0x240a }, { "verttab", 0x240b }, { "formfeed", 0x240c }, { "shiftout", 0x240e }, { "shiftin", 0x240f }, { "datalinkescape", 0x2410 }, { "devcon1", 0x2411 }, { "devcon2", 0x2412 }, { "devcon3", 0x2413 }, { "devcon4", 0x2414 }, { "negacknowledge", 0x2415 }, { "synch", 0x2416 }, { "endtransblock", 0x2417 }, { "cancel", 0x2418 }, { "endmedium", 0x2419 }, { "substitute", 0x241a }, { "escape", 0x241b }, { "fileseparator", 0x241c }, { "groupseparator", 0x241d }, { "recordseparator", 0x241e }, { "unitseparator", 0x241f }, { "spaceliteral", 0x2420 }, { "delete", 0x2421 }, { "blankb", 0x2422 }, { "spaceopenbox", 0x2423 }, { "newline", 0x2424 }, { "lthorizform", 0x2500 }, { "hvhorizform", 0x2501 }, { "ltvertform", 0x2502 }, { "hvvertform", 0x2503 }, { "ltdashtriphorizform", 0x2504 }, { "hvdashtriphorizform", 0x2505 }, { "ltdashtripvertform", 0x2506 }, { "hvdashtripvertform", 0x2507 }, { "ltdashquadhorizform", 0x2508 }, { "hvdashquadhorizform", 0x2509 }, { "ltdashquadvertform", 0x250a }, { "hvdashquadvertform", 0x250b }, { "ltdnrtform", 0x250c }, { "dnltrthvform", 0x250d }, { "dnhvrtltform", 0x250e }, { "hvdnrtform", 0x250f }, { "ltdnleftform", 0x2510 }, { "dnltlefthvform", 0x2511 }, { "dnhvleftltform", 0x2512 }, { "hvdnleftform", 0x2513 }, { "ltuprtform", 0x2514 }, { "upltrthvform", 0x2515 }, { "uphvrtltform", 0x2516 }, { "hvuprtform", 0x2517 }, { "ltupleftform", 0x2518 }, { "upltlefthvform", 0x2519 }, { "uphvleftltform", 0x251a }, { "hvupleftform", 0x251b }, { "ltvertrightform", 0x251c }, { "vertltrthvform", 0x251d }, { "uphvrtdnltform", 0x251e }, { "dnhvrtupltform", 0x251f }, { "verthvrtltform", 0x2520 }, { "dnltrtuphvform", 0x2521 }, { "upltrtdnhvform", 0x2522 }, { "hvvertrtform", 0x2523 }, { "ltvertleftform", 0x2524 }, { "vtltlefthvform", 0x2525 }, { "uphvleftdnltform", 0x2526 }, { "dnhvleftupltform", 0x2527 }, { "verthvleftltform", 0x2528 }, { "dnltleftuphvform", 0x2529 }, { "upltleftdnhvform", 0x252a }, { "hvvertleftform", 0x252b }, { "ltdnhorizform", 0x252c }, { "lefthvrtdnltform", 0x252d }, { "rthvleftdnltform", 0x252e }, { "dnlthorizhvform", 0x252f }, { "dnhvhorizltform", 0x2530 }, { "rtltrtdnhvform", 0x2531 }, { "leftltrtdnhvform", 0x2532 }, { "hvdnhorizform", 0x2533 }, { "ltuphorizform", 0x2534 }, { "lefthvrtupltform", 0x2535 }, { "rthvleftupltform", 0x2536 }, { "uplthorizhvform", 0x2537 }, { "uphvhorizltform", 0x2538 }, { "rtltleftuphvform", 0x2539 }, { "leftltrtuphvform", 0x253a }, { "hvuphorizform", 0x253b }, { "ltverthorizform", 0x253c }, { "lefthvrtvertltform", 0x253d }, { "rthvleftvertltform", 0x253e }, { "vertlthorizhvform", 0x253f }, { "uphvdnhorizltform", 0x2540 }, { "dnhvuphorizltform", 0x2541 }, { "verthvhorizltform", 0x2542 }, { "leftuphvrtdnltform", 0x2543 }, { "rtuphvleftdnltform", 0x2544 }, { "leftdnhvrtupltform", 0x2545 }, { "rtdnhvleftupltform", 0x2546 }, { "dnltuphorizhvform", 0x2547 }, { "upltdnhorizhvform", 0x2548 }, { "rtltleftverthvform", 0x2549 }, { "leftltrtverthvform", 0x254a }, { "hvverthorizform", 0x254b }, { "ltdashdblhorizform", 0x254c }, { "hvdashdblhorizform", 0x254d }, { "ltdashdblvertform", 0x254e }, { "hvdashdblvertform", 0x254f }, { "horizdblbar", 0x2550 }, { "vertdblbar", 0x2551 }, { "dnrtdblform", 0x2552 }, { "dndblrtform", 0x2553 }, { "dbldnrtform", 0x2554 }, { "dnleftdblform", 0x2555 }, { "dndblleftform", 0x2556 }, { "dbldnleftform", 0x2557 }, { "uprtdblform", 0x2558 }, { "updblrtform", 0x2559 }, { "dbluprtform", 0x255a }, { "upleftdblform", 0x255b }, { "updblleftform", 0x255c }, { "dblupleftform", 0x255d }, { "vertrtdblform", 0x255e }, { "vertdblrtform", 0x255f }, { "dblvertrtform", 0x2560 }, { "vertleftdblform", 0x2561 }, { "vertdblleftform", 0x2562 }, { "dblvertleftform", 0x2563 }, { "dnhorizdblform", 0x2564 }, { "dndblhorizform", 0x2565 }, { "dbldnhorizform", 0x2566 }, { "uphorizdblform", 0x2567 }, { "updblhorizform", 0x2568 }, { "dbluphorizform", 0x2569 }, { "verthorizdblform", 0x256a }, { "vertdblhorizform", 0x256b }, { "dblverthorizform", 0x256c }, { "ltarcdnrtform", 0x256d }, { "ltarcdnleftform", 0x256e }, { "ltarcupleftform", 0x256f }, { "ltarcuprtform", 0x2570 }, { "forwarddiagonal", 0x2571 }, { "backwarddiagonal", 0x2572 }, { "ltdiagonalcross", 0x2573 }, { "dneighthblock", 0x2581 }, { "dnquarterblock", 0x2582 }, { "dnthreeeighthblock", 0x2583 }, { "dnfiveeighthblock", 0x2585 }, { "dnthreequarterblock", 0x2586 }, { "dnseveneighthblock", 0x2587 }, { "lfseveneighthblock", 0x2589 }, { "lfthreequarterblock", 0x258a }, { "lffiveeighthblock", 0x258b }, { "lfthreeeighthblock", 0x258d }, { "lfquarterblock", 0x258e }, { "lfeighthblock", 0x258f }, { "upeighthblock", 0x2594 }, { "rteighthblock", 0x2595 }, { "box", 0x25a1 }, { "boxrounded", 0x25a2 }, { "boxnested", 0x25a3 }, { "boxhorizhatch", 0x25a4 }, { "boxverthatch", 0x25a5 }, { "boxcrosshatch", 0x25a6 }, { "boxleftdiaghatch", 0x25a7 }, { "boxrtdiaghatch", 0x25a8 }, { "boxcrossdiaghatch", 0x25a9 }, { "smallboxfilled", 0x25aa }, { "smallbox", 0x25ab }, { "rectangle", 0x25ad }, { "filledvertrect", 0x25ae }, { "vertrectangle", 0x25af }, { "filledparallelogram", 0x25b0 }, { "parallelogram", 0x25b1 }, { "triangle", 0x25b3 }, { "smalltrianglesld", 0x25b4 }, { "smalltriangle", 0x25b5 }, { "trianglerightsld1", 0x25b6 }, { "triangleright1", 0x25b7 }, { "smalltrianglerightsld", 0x25b8 }, { "smalltriangleright", 0x25b9 }, { "triagrtopen", 0x25bb }, { "triangleinv", 0x25bd }, { "smalltriangleinvsld", 0x25be }, { "smalltriangleinv", 0x25bf }, { "triangleleftsld1", 0x25c0 }, { "triangleleft1", 0x25c1 }, { "smalltriangleleftsld", 0x25c2 }, { "smalltriangleleft", 0x25c3 }, { "triaglfopen", 0x25c5 }, { "diamondrhombsolid", 0x25c6 }, { "diamondrhomb", 0x25c7 }, { "diamondrhombnested", 0x25c8 }, { "circledash", 0x25cc }, { "circleverthatch", 0x25cd }, { "circlesolid", 0x25cf }, { "circleleftsld", 0x25d0 }, { "circlerightsld", 0x25d1 }, { "circlebottomsld", 0x25d2 }, { "circletopsld", 0x25d3 }, { "circlenesld", 0x25d4 }, { "circlenwopen", 0x25d5 }, { "semicircleleftsld", 0x25d6 }, { "semicirclelertsld", 0x25d7 }, { "invsemicircleup", 0x25da }, { "invsemicircledn", 0x25db }, { "nwquadarc", 0x25dc }, { "nequadarc", 0x25dd }, { "sequadarc", 0x25de }, { "swquadarc", 0x25df }, { "toparc", 0x25e0 }, { "bottomarc", 0x25e1 }, { "trianglesesld", 0x25e2 }, { "triangleswsld", 0x25e3 }, { "tranglenwsld", 0x25e4 }, { "trianglenesld", 0x25e5 }, { "squareleftsld", 0x25e7 }, { "squarerightsld", 0x25e8 }, { "squarenwsld", 0x25e9 }, { "squaresesld", 0x25ea }, { "squarevertbisect", 0x25eb }, { "triangledot", 0x25ec }, { "triangleleftsld", 0x25ed }, { "trianglerightsld", 0x25ee }, { "heartopen", 0x2661 }, { "diamondopen", 0x2662 }, { "spadeopen", 0x2664 }, { "Omegaiotasubleniscircumflex", 0x1fae }, { "Omegaleniscircumflex", 0x1f6e }, { "Upsilonaspercircumflex", 0x1f5f }, { "dieresiscircumflex", 0x1fc1 }, { "leniscircumflex", 0x1fcf }, { "aspercircumflex", 0x1fdf }, { "alphaleniscircumflex", 0x1f06 }, { "alphaaspercircumflex", 0x1f07 }, { "etaleniscircumflex", 0x1f26 }, { "etaaspercircumflex", 0x1f27 }, { "iotaleniscircumflex", 0x1f36 }, { "iotaaspercircumflex", 0x1f37 }, { "upsilonleniscircumflex", 0x1f56 }, { "upsilonaspercircumflex", 0x1f57 }, { "omegaleniscircumflex", 0x1f66 }, { "omegaaspercircumflex", 0x1f67 }, { "alphaiotasubleniscircumflex", 0x1f86 }, { "alphaiotasubaspercircumflex", 0x1f87 }, { "etaiotasubleniscircumflex", 0x1f96 }, { "etaiotasubaspercircumflex", 0x1f97 }, { "omegaiotasubleniscircumflex", 0x1fa6 }, { "omegaiotasubaspercircumflex", 0x1fa7 }, { "alphacircumflex", 0x1fb6 }, { "alphaiotasubcircumflex", 0x1fb7 }, { "etacircumflex", 0x1fc6 }, { "etaiotasubcircumflex", 0x1fc7 }, { "iotacircumflex", 0x1fd6 }, { "iotadieresiscircumflex", 0x1fd7 }, { "upsiloncircumflex", 0x1fe6 }, { "omegacircumflex", 0x1ff6 }, { "omegaiotasubcircumflex", 0x1ff7 }, { "upsilondieresiscircumflex", 0x1fe7 }, { "dialytika", 0x0308 }, { "koronis", 0x1fbd }, { "prosgegrammeni", 0x1fbe }, { "psili", 0x1fbf }, { "perispomeni", 0x1fc0 }, { "varia", 0x1fef }, { "oxia", 0x1ffd }, { "dasia", 0x1ffe }, { "Alphasmall", 0xf500 }, { "Betasmall", 0xf501 }, { "Gammasmall", 0xf502 }, { "Deltasmall", 0xf503 }, { "Epsilonsmall", 0xf504 }, { "Zetasmall", 0xf505 }, { "Etasmall", 0xf506 }, { "Thetasmall", 0xf507 }, { "Iotasmall", 0xf508 }, { "Kappasmall", 0xf509 }, { "Lambdasmall", 0xf50a }, { "Musmall", 0xf50b }, { "Nusmall", 0xf50c }, { "Xismall", 0xf50d }, { "Omicronsmall", 0xf50e }, { "Pismall", 0xf50f }, { "Rhosmall", 0xf510 }, { "Sigmasmall", 0xf512 }, { "Tausmall", 0xf513 }, { "Upsilonsmall", 0xf514 }, { "Phismall", 0xf515 }, { "Chismall", 0xf516 }, { "Psismall", 0xf517 }, { "Omegasmall", 0xf518 }, { "Iotadieresissmall", 0xf519 }, { "Upsilondieresissmall", 0xf51a }, /* Archaic or Rare Latin Ligatures */ { "c_t", 0xf520 }, { "longs_i", 0xf521 }, { "longs_l", 0xf522 }, { "longs_longs", 0xf523 }, { "longs_longs_i", 0xf524 }, { "longs_longs_l", 0xf525 }, NULL }; const int psaltuninames_cnt = sizeof(psaltuninames)/sizeof(psaltuninames[0])-1; mensis-080507/README0100664000076500007650000000075607742401532012220 0ustar gwwgww BUILDING First you must download and build pfaedit (or at least libg{draw,unicode}) http://pfaedit.sourceforge.net/ Then you should download, build and install libfreetype http://freetype.sourceforge.net/ Then download the mensis_src package and put it in the 'pfaedit' subdir gunzip it, then: $ cd mensis $ configure $ make INSTALLING make install Please report any bugs to mensis-devel@lists.sourceforge.net Documentation is at: http://mensis.sourceforge.net/ mensis-080507/regen0100775000076500007650000000045607743353446012376 0ustar gwwgww#!/bin/csh set nonomatch rm -f *.{c,h,1,ui} *~ *.gz *.tgz outs config.log foreach file ( ~/myfonts/mensis/*.[ch1] ) if ( $file:t == "psunicodenames.c" ) then ln ~/myfonts/pfaedit/psunicodenames.c else ln $file endif end rm -f showttf.c _nom*.c *-en.old* mensis-ui.c nomen.h threaddummy.c mensis-080507/scripting.c0100664000076500007650000023264511010405260013473 0ustar gwwgww/* Copyright (C) 2002-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Yet another interpreter */ #include "mensisui.h" #include #include #include #include #include #include #include #include #include static int verbose = -1; struct dictentry { char *name; Val val; }; struct dictionary { struct dictentry *entries; int cnt, max; }; static struct dictionary globals; typedef struct array { int argc; Val *vals; } Array; #define TOK_MAX 100 enum token_type { tt_name, tt_string, tt_tag, tt_number, tt_unicode, tt_lparen, tt_rparen, tt_comma, tt_eos, /* eos is end of statement, semicolon, newline */ tt_lbracket, tt_rbracket, tt_dot, tt_minus, tt_plus, tt_not, tt_bitnot, tt_colon, tt_mul, tt_div, tt_mod, tt_and, tt_or, tt_bitand, tt_bitor, tt_xor, tt_eq, tt_ne, tt_gt, tt_lt, tt_ge, tt_le, tt_assign, tt_pluseq, tt_minuseq, tt_muleq, tt_diveq, tt_modeq, tt_incr, tt_decr, tt_if, tt_else, tt_elseif, tt_endif, tt_while, tt_foreach, tt_endloop, tt_shift, tt_return, tt_eof, tt_error = -1 }; static struct tabnames { char *name; int offset; enum val_type type; } maxp_names[] = { { "version", 0, v_ttf32pt }, { "numGlyphs", 4, v_ttf16pt }, { "maxPoints", 6, v_ttf16pt }, { "maxContours", 8, v_ttf16pt }, { "maxCompositePoints", 10, v_ttf16pt }, { "maxCompositeContours", 12, v_ttf16pt }, { "maxZones", 14, v_ttf16pt }, { "maxTwilightPoints", 16, v_ttf16pt }, { "maxStorage", 18, v_ttf16pt }, { "maxFunctionDefs", 20, v_ttf16pt }, { "maxInstructionDefs", 22, v_ttf16pt }, { "maxStackElements", 24, v_ttf16pt }, { "maxSizeOfInstructions", 26, v_ttf16pt }, { "maxComponentElements", 28, v_ttf16pt }, { "maxComponentDepth", 30, v_ttf16pt }, { NULL } }; static struct tabnames os2_names[] = { { "version", 0, v_ttf16pt }, { "xAvgCharWidth", 2, v_ttf16pt }, { "usWeightClass", 4, v_ttf16pt }, { "usWidthClass", 6, v_ttf16pt }, { "fsType", 8, v_ttf16pt }, { "ySubscriptXSize", 10, v_ttf16pt }, { "ySubscriptYSize", 12, v_ttf16pt }, { "ySubscriptXOffset", 14, v_ttf16pt }, { "ySubscriptYOffset", 16, v_ttf16pt }, { "ySuperscriptXSize", 18, v_ttf16pt }, { "ySuperscriptYSize", 20, v_ttf16pt }, { "ySuperscriptXOffset", 22, v_ttf16pt }, { "ySuperscriptYOffset", 24, v_ttf16pt }, { "yStrikeoutSize", 26, v_ttf16pt }, { "yStrikeoutPosition", 28, v_ttf16pt }, { "sFamilyClass", 30, v_ttf16pt }, { "panose1", 32, v_ttf8pt }, { "panose2", 33, v_ttf8pt }, { "panose3", 34, v_ttf8pt }, { "panose4", 35, v_ttf8pt }, { "panose5", 36, v_ttf8pt }, { "panose6", 37, v_ttf8pt }, { "panose7", 38, v_ttf8pt }, { "panose8", 39, v_ttf8pt }, { "panose9", 40, v_ttf8pt }, { "panose10", 41, v_ttf8pt }, { "ulUnicodeRange1", 42, v_ttf32pt }, { "ulUnicodeRange2", 46, v_ttf32pt }, { "ulUnicodeRange3", 50, v_ttf32pt }, { "ulUnicodeRange4", 54, v_ttf32pt }, { "achVendID", 58, v_ttf32pt }, { "achVendID1", 58, v_ttf8pt }, { "achVendID2", 59, v_ttf8pt }, { "achVendID3", 60, v_ttf8pt }, { "achVendID4", 61, v_ttf8pt }, { "fsSelection", 62, v_ttf16pt }, { "usFirstCharIndex", 64, v_ttf16pt }, { "usLastCharIndex", 66, v_ttf16pt }, { "sTypoAscender", 68, v_ttf16pt }, { "sTypoDescender", 70, v_ttf16pt }, { "sTypoLineGap", 72, v_ttf16pt }, { "usWinAscent", 74, v_ttf16pt }, { "usWinDescent", 76, v_ttf16pt }, { "ulCodePageRange1", 78, v_ttf32pt }, { "ulCodePageRange2", 82, v_ttf32pt }, { "sxHeight", 86, v_ttf16pt }, { "sCapHeight", 88, v_ttf16pt }, { "usDefaultChar", 90, v_ttf16pt }, { "usBreakChar", 92, v_ttf16pt }, { "usMaxContext", 94, v_ttf16pt }, { NULL } }; static struct tabnames _hea_names[] = { { "version", 0, v_ttf32pt }, { "ascender", 4, v_ttf16pt }, { "vertTypoAscender", 4, v_ttf16pt }, { "Ascender", 4, v_ttf16pt }, { "descender", 6, v_ttf16pt }, { "vertTypoDescender", 6, v_ttf16pt }, { "Descender", 6, v_ttf16pt }, { "lineGap", 8, v_ttf16pt }, { "vertTypoLineGap", 8, v_ttf16pt }, { "LineGap", 8, v_ttf16pt }, { "advanceHeightMax", 10, v_ttf16pt }, { "advanceWidthMax", 10, v_ttf16pt }, { "minTopSideBearing", 12, v_ttf16pt }, { "minLeftSideBearing", 12, v_ttf16pt }, { "minBottomSideBearing", 14, v_ttf16pt }, { "minRightSideBearing", 14, v_ttf16pt }, { "yMaxExtent", 16, v_ttf16pt }, { "xMaxExtent", 16, v_ttf16pt }, { "caretSlopeRise", 18, v_ttf16pt }, { "caretSlopeRun", 20, v_ttf16pt }, { "caretOffset", 22, v_ttf16pt }, { "metricDataFormat", 32, v_ttf16pt }, { "numberOfHMetrics", 34, v_ttf16pt }, { "numberOfLongVerMetrics", 34, v_ttf16pt }, { NULL } }; static struct tabnames head_names[] = { { "version", 0, v_ttf32pt }, { "fontRevision", 4, v_ttf32pt }, { "checkSumAdjustment", 8, v_ttf32pt }, { "magicNumber", 12, v_ttf32pt }, { "flags", 16, v_ttf16pt }, { "unitsPerEm", 18, v_ttf16pt }, { "created1", 20, v_ttf32pt }, { "created2", 24, v_ttf32pt }, { "modified1", 28, v_ttf32pt }, { "modified2", 32, v_ttf32pt }, { "xMin", 36, v_ttf16pt }, { "yMin", 38, v_ttf16pt }, { "xMax", 40, v_ttf16pt }, { "yMax", 42, v_ttf16pt }, { "macStyle", 44, v_ttf16pt }, { "lowestRecPPEM", 46, v_ttf16pt }, { "fontDirectionHit", 48, v_ttf16pt }, { "indexToLocFormat", 50, v_ttf16pt }, { "glyphDataFormal", 52, v_ttf16pt }, { NULL } }; static struct tabnames post_names[] = { { "version", 0, v_ttf32pt }, { "italicAngle", 4, v_ttf32pt }, { "underlinePosition", 8, v_ttf16pt }, { "underlineThickness", 10, v_ttf16pt }, { "isFixedPitch", 12, v_ttf32pt }, { "minMemType42", 16, v_ttf32pt }, { "maxMemType42", 20, v_ttf32pt }, { "minMemType1", 24, v_ttf32pt }, { "maxMemType1", 28, v_ttf32pt }, { NULL } }; static struct tabnamelist { uint32 tag; struct tabnames *tabnames; } tabnamelist[] = { { CHR('O','S','/','2'), os2_names }, { CHR('h','e','a','d'), head_names }, { CHR('h','h','e','a'), _hea_names }, { CHR('m','a','x','p'), maxp_names }, { CHR('p','o','s','t'), post_names }, { CHR('v','h','e','a'), _hea_names }, { 0 , NULL } }; typedef struct context { struct context *caller; Array a; /* args */ Array **dontfree; struct dictionary locals; FILE *script; unsigned int backedup: 1; unsigned int donteval: 1; unsigned int returned: 1; char tok_text[TOK_MAX+1]; enum token_type tok; Val tok_val; Val return_val; Val trace; Val argsval; char *filename; int lineno; int ungotch; TtfView *curtfv; jmp_buf *err_env; } Context; struct keywords { enum token_type tok; char *name; } keywords[] = { { tt_if, "if" }, { tt_else, "else" }, { tt_elseif, "elseif" }, { tt_endif, "endif" }, { tt_while, "while" }, { tt_foreach, "foreach" }, { tt_endloop, "endloop" }, { tt_shift, "shift" }, { tt_return, "return" }, { 0, NULL } }; static const char *toknames[] = { "name", "string", "number", "unicode id", "lparen", "rparen", "comma", "end of statement", "lbracket", "rbracket", "dot", "minus", "plus", "logical not", "bitwise not", "colon", "multiply", "divide", "mod", "logical and", "logical or", "bitwise and", "bitwise or", "bitwise xor", "equal to", "not equal to", "greater than", "less than", "greater than or equal to", "less than or equal to", "assignment", "plus equals", "minus equals", "mul equals", "div equals", "mod equals", "increment", "decrement", "if", "else", "elseif", "endif", "while", "foreach", "endloop", "shift", "return", "End Of File", NULL }; static void arrayfree(Array *a) { int i; for ( i=0; iargc; ++i ) { if ( a->vals[i].type==v_str ) free(a->vals[i].u.sval); else if ( a->vals[i].type==v_arr ) arrayfree(a->vals[i].u.aval); } free(a->vals); free(a); } static Array *arraycopy(Array *a) { int i; Array *c; c = galloc(sizeof(Array)); c->argc = a->argc; c->vals = galloc(c->argc*sizeof(Val)); memcpy(c->vals,a->vals,c->argc*sizeof(Val)); for ( i=0; iargc; ++i ) { if ( a->vals[i].type==v_str ) c->vals[i].u.sval = copy(a->vals[i].u.sval); else if ( a->vals[i].type==v_arr ) c->vals[i].u.aval = arraycopy(a->vals[i].u.aval); } return( c ); } void DictionaryFree(struct dictionary *dica) { int i; if ( dica==NULL ) return; for ( i=0; icnt; ++i ) { free(dica->entries[i].name ); if ( dica->entries[i].val.type == v_str ) free( dica->entries[i].val.u.sval ); if ( dica->entries[i].val.type == v_arr ) arrayfree( dica->entries[i].val.u.aval ); } free( dica->entries ); } static int DicaLookup(struct dictionary *dica,char *name,Val *val) { int i; if ( dica!=NULL && dica->entries!=NULL ) { for ( i=0; icnt; ++i ) if ( strcmp(dica->entries[i].name,name)==0 ) { val->type = v_lval; val->u.lval = &dica->entries[i].val; return( true ); } } return( false ); } static void DicaNewEntry(struct dictionary *dica,char *name,Val *val) { if ( dica->entries==NULL ) { dica->max = 10; dica->entries = galloc(dica->max*sizeof(struct dictentry)); } else if ( dica->cnt>=dica->max ) { dica->max += 10; dica->entries = grealloc(dica->entries,dica->max*sizeof(struct dictentry)); } dica->entries[dica->cnt].name = copy(name); dica->entries[dica->cnt].val.type = v_void; val->type = v_lval; val->u.lval = &dica->entries[dica->cnt].val; ++dica->cnt; } static void calldatafree(Context *c) { int i; for ( i=1; ia.argc; ++i ) { /* child may have freed some args itself by shifting, but argc will reflect the proper values none the less */ if ( c->a.vals[i].type == v_str ) free( c->a.vals[i].u.sval ); if ( c->a.vals[i].type == v_arrfree || (c->a.vals[i].type == v_arr && c->dontfree[i]!=c->a.vals[i].u.aval )) arrayfree( c->a.vals[i].u.aval ); } DictionaryFree(&c->locals); if ( c->script!=NULL ) fclose(c->script); } static void traceback(Context *c) { int cnt = 0; while ( c!=NULL ) { if ( cnt==1 ) printf( "Called from...\n" ); if ( cnt>0 ) fprintf( stderr, " %s: %d\n", c->filename, c->lineno ); calldatafree(c); if ( c->err_env!=NULL ) longjmp(*c->err_env,1); c = c->caller; ++cnt; } exit(1); } static void showtoken(Context *c,enum token_type got) { if ( got==tt_name || got==tt_string ) fprintf( stderr, " \"%s\"\n", c->tok_text ); else if ( got==tt_number ) fprintf( stderr, " %d (0x%x)\n", c->tok_val.u.ival, c->tok_val.u.ival ); else if ( got==tt_unicode ) fprintf( stderr, " 0u%x\n", c->tok_val.u.ival ); else fprintf( stderr, "\n" ); traceback(c); } static void expect(Context *c,enum token_type expected, enum token_type got) { if ( got!=expected ) { fprintf( stderr, "%s: %d Expected %s, got %s", c->filename, c->lineno, toknames[expected], toknames[got] ); if ( screen_display!=NULL ) { static unichar_t umsg[] = { '%','h','s',':',' ','%','d',' ','E','x','p','e','c','t','e','d',' ','%','h','s',',',' ','g','o','t',' ','%','h','s', 0 }; GWidgetError(NULL,umsg,c->filename, c->lineno, toknames[expected], toknames[got] ); } showtoken(c,got); } } static void unexpected(Context *c,enum token_type got) { fprintf( stderr, "%s: %d Unexpected %s found", c->filename, c->lineno, toknames[got] ); if ( screen_display!=NULL ) { static unichar_t umsg[] = { '%','h','s',':',' ','%','d',' ','U','n','e','x','p','e','c','t','e','d',' ','%','h','s', 0 }; GWidgetError(NULL,umsg,c->filename, c->lineno, toknames[got] ); } showtoken(c,got); } static void error( Context *c, char *msg ) { fprintf( stderr, "%s: %d %s\n", c->filename, c->lineno, msg ); if ( screen_display!=NULL ) { static unichar_t umsg[] = { '%','h','s',':',' ','%','d',' ','%','h','s', 0 }; GWidgetError(NULL,umsg,c->filename, c->lineno, msg ); } traceback(c); } static void errors( Context *c, char *msg, char *name) { fprintf( stderr, "%s: %d %s: %s\n", c->filename, c->lineno, msg, name ); if ( screen_display!=NULL ) { static unichar_t umsg[] = { '%','h','s',':',' ','%','d',' ','%','h','s',':',' ','%','h','s', 0 }; GWidgetError(NULL,umsg,c->filename, c->lineno, msg, name ); } traceback(c); } static int32 derefttfpt(Context *c,Val *val) { uint8 *ipt = val->u.ttfptval; /* data in truetype tables might be misaligned and will be bigendian */ /* Bounds checking should already have been done */ if ( val->type==v_ttf8pt ) return( (int8) ipt[0] ); else if ( val->type==v_ttf16pt ) return( (int16) ((ipt[0]<<8)|ipt[1]) ); else if ( val->type==v_ttf32pt ) return( (int32) ((ipt[0]<<24)|(ipt[1]<<16)|(ipt[2]<<8)|ipt[3]) ); else error( c,"Internal error attempt to derefence something not dereferenceable" ); return( 0 ); } static void setttfpt(Context *c,Val *val,int32 ival) { uint8 *ipt = val->u.ttfptval; /* data in truetype tables might be misaligned and will be bigendian */ /* Bounds checking should already have been done */ if ( val->type==v_ttf8pt ) ipt[0] = ival; else if ( val->type==v_ttf16pt ) { ipt[0] = ival>>8; ipt[1] = ival; } else if ( val->type==v_ttf32pt ) { ipt[0] = ival>>24; ipt[1] = ival>>16; ipt[2] = ival>>8; ipt[3] = ival; } else error( c,"Internal error attempt to derefence something not dereferenceable" ); } static void dereflvalif(Context *c,Val *val) { if ( val->type == v_lval ) { *val = *val->u.lval; if ( val->type==v_str ) val->u.sval = copy(val->u.sval); } else if ( val->type == v_ttf32pt || val->type == v_ttf16pt || val->type == v_ttf8pt ) { val->u.ival = derefttfpt(c,val); val->type = v_int; } } /* *************************** Built in Functions *************************** */ static void PrintVal(Val *val) { int j; if ( val->type==v_str ) printf( "%s", val->u.sval ); else if ( val->type==v_arr ) { putchar( '[' ); if ( val->u.aval->argc>0 ) { PrintVal(&val->u.aval->vals[0]); for ( j=1; ju.aval->argc; ++j ) { putchar(','); PrintVal(&val->u.aval->vals[j]); } } putchar( ']' ); } else if ( val->type==v_tag ) { printf( "'%c%c%c%c'", val->u.ival>>24, (val->u.ival>>16)&0xff, (val->u.ival>>8)&0xff, val->u.ival&0xff ); } else if ( val->type==v_int ) printf( "%d", val->u.ival ); else if ( val->type==v_unicode ) printf( "0u%x", val->u.ival ); else if ( val->type==v_void ) printf( ""); else printf( ""); } static void bPrint(Context *c) { int i; for ( i=1; ia.argc; ++i ) PrintVal(&c->a.vals[i] ); printf( "\n" ); } static void bError(Context *c) { if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str ) error( c, "Expected string argument" ); error( c, c->a.vals[1].u.sval ); } static void bPostNotice(Context *c) { static const unichar_t format[] = { '%','.','2','0','0','h','s', '\0' }; static const unichar_t notice[] = { 'A','t','t','e','n','t','i','o','n', '\0' }; if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str ) error( c, "Expected string argument" ); if ( screen_display==NULL ) fprintf(stderr,"%s\n", c->a.vals[1].u.sval ); else GWidgetPostNotice( notice, format, c->a.vals[1].u.sval ); } static void bAskUser(Context *c) { char *quest, *def=""; if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || ( c->a.argc==3 && c->a.vals[2].type!=v_str) ) error( c, "Expected string argument" ); quest = c->a.vals[1].u.sval; if ( c->a.argc==3 ) def = c->a.vals[2].u.sval; if ( screen_display==NULL ) { char buffer[300]; printf( "%s", quest ); buffer[0] = '\0'; c->return_val.type = v_str; if ( fgets(buffer,sizeof(buffer),stdin)==NULL ) { clearerr(stdin); c->return_val.u.sval = copy(""); } else if ( buffer[0]=='\0' ) c->return_val.u.sval = copy(def); else c->return_val.u.sval = copy(buffer); } else { unichar_t *t1, *t2, *ret; static unichar_t format[] = { '%','s', 0 }; t1 = uc_copy(quest); ret = GWidgetAskString(t1,t2=uc_copy(def),format, t1); free(t1); free(t2); c->return_val.type = v_str; c->return_val.u.sval = cu_copy(ret); if ( ret==NULL ) c->return_val.u.sval = copy(""); else free(ret); } } static void bArray(Context *c) { int i; if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_int ) error( c, "Expected integer argument" ); else if ( c->a.vals[1].u.ival<=0 ) error( c, "Argument must be positive" ); c->return_val.type = v_arrfree; c->return_val.u.aval = galloc(sizeof(Array)); c->return_val.u.aval->argc = c->a.vals[1].u.ival; c->return_val.u.aval->vals = galloc(c->a.vals[1].u.ival*sizeof(Val)); for ( i=0; ia.vals[1].u.ival; ++i ) c->return_val.u.aval->vals[i].type = v_void; } static void bSizeOf(Context *c) { if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); if ( c->a.vals[1].type!=v_arr && c->a.vals[1].type!=v_arrfree ) error( c, "Expected array argument" ); c->return_val.type = v_int; c->return_val.u.ival = c->a.vals[1].u.aval->argc; } static void bStrlen(Context *c) { if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; c->return_val.u.ival = strlen( c->a.vals[1].u.sval ); } static void bStrstr(Context *c) { char *pt; if ( c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || c->a.vals[2].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; pt = strstr(c->a.vals[1].u.sval,c->a.vals[2].u.sval); c->return_val.u.ival = pt==NULL ? -1 : pt-c->a.vals[1].u.sval; } static void bStrcasestr(Context *c) { char *pt; if ( c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || c->a.vals[2].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; pt = strstrmatch(c->a.vals[1].u.sval,c->a.vals[2].u.sval); c->return_val.u.ival = pt==NULL ? -1 : pt-c->a.vals[1].u.sval; } static void bStrrstr(Context *c) { char *pt; char *haystack, *needle; int nlen; if ( c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || c->a.vals[2].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; haystack = c->a.vals[1].u.sval; needle = c->a.vals[2].u.sval; nlen = strlen( needle ); for ( pt=haystack+strlen(haystack)-nlen; pt>=haystack; --pt ) if ( strncmp(pt,needle,nlen)==0 ) break; c->return_val.u.ival = pt-haystack; } static void bStrsub(Context *c) { int start, end; char *str; if ( c->a.argc!=3 && c->a.argc!=4 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || c->a.vals[2].type!=v_int || (c->a.argc==4 && c->a.vals[3].type!=v_int)) error( c, "Bad type for argument" ); str = c->a.vals[1].u.sval; start = c->a.vals[2].u.ival; end = c->a.argc==4? c->a.vals[3].u.ival : strlen(str); if ( start<0 || start>strlen(str) || endstrlen(str) ) error( c, "Arguments out of bounds" ); c->return_val.type = v_str; c->return_val.u.sval = copyn(str+start,end-start); } static void bStrcasecmp(Context *c) { if ( c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || c->a.vals[2].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; c->return_val.u.ival = strmatch(c->a.vals[1].u.sval,c->a.vals[2].u.sval); } static void bStrtol(Context *c) { int base = 10; if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || (c->a.argc==3 && c->a.vals[2].type!=v_int) ) error( c, "Bad type for argument" ); else if ( c->a.argc==3 ) { base = c->a.vals[2].u.ival; if ( base<0 || base==1 || base>36 ) error( c, "Argument out of bounds" ); } c->return_val.type = v_int; c->return_val.u.ival = strtol(c->a.vals[1].u.sval,NULL,base); } static void bStrskipint(Context *c) { int base = 10; char *end; if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || (c->a.argc==3 && c->a.vals[2].type!=v_int) ) error( c, "Bad type for argument" ); else if ( c->a.argc==3 ) { base = c->a.vals[2].u.ival; if ( base<0 || base==1 || base>36 ) error( c, "Argument out of bounds" ); } c->return_val.type = v_int; strtol(c->a.vals[1].u.sval,&end,base); c->return_val.u.ival = end-c->a.vals[1].u.sval; } #if 0 static void bGetPrefs(Context *c) { if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str ) error( c, "Bad type for argument" ); if ( !GetPrefs(c->a.vals[1].u.sval,&c->return_val) ) errors( c, "Unknown Preference variable", c->a.vals[1].u.sval ); } static void bSetPrefs(Context *c) { int ret; if ( c->a.argc!=3 && c->a.argc!=4 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || (c->a.argc==4 && c->a.vals[3].type!=v_int) ) error( c, "Bad type for argument" ); if ( (ret=SetPrefs(c->a.vals[1].u.sval,&c->a.vals[2],c->a.argc==4?&c->a.vals[3]:NULL))==0 ) errors( c, "Unknown Preference variable", c->a.vals[1].u.sval ); else if ( ret==-1 ) errors( c, "Bad type for preference variable", c->a.vals[1].u.sval); } #endif #if 0 static void bUnicodeFromName(Context *c) { if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str ) error( c, "Bad type for argument" ); c->return_val.type = v_int; c->return_val.u.ival = UniFromName(c->a.vals[1].u.sval); } #endif static void bChr(Context *c) { char buf[2]; char *temp; int i; if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type==v_int ) { if ( c->a.vals[1].u.ival<-128 || c->a.vals[1].u.ival>255 ) error( c, "Bad value for argument" ); buf[0] = c->a.vals[1].u.ival; buf[1] = 0; c->return_val.type = v_str; c->return_val.u.sval = copy(buf); } else if ( c->a.vals[1].type==v_arr || c->a.vals[1].type==v_arrfree ) { Array *arr = c->a.vals[1].u.aval; temp = galloc((arr->argc+1)*sizeof(char)); for ( i=0; iargc; ++i ) { if ( arr->vals[i].type!=v_int ) error( c, "Bad type for argument" ); else if ( c->a.vals[1].u.ival<-128 || c->a.vals[1].u.ival>255 ) error( c, "Bad value for argument" ); temp[i] = arr->vals[i].u.ival; } temp[i] = 0; c->return_val.type = v_str; c->return_val.u.sval = temp; } else error( c, "Bad type for argument" ); } static void bUtf8(Context *c) { int i; #ifdef UNICHAR_16 int32 buf[2]; int32 *temp; #else uint32 buf[2]; uint32 *temp; #endif if ( c->a.argc!=2 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type==v_int ) { if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>0x10ffff ) error( c, "Bad value for argument" ); buf[0] = c->a.vals[1].u.ival; buf[1] = 0; c->return_val.type = v_str; #ifdef UNICHAR_16 c->return_val.u.sval = u322utf8_copy(buf); #else c->return_val.u.sval = u2utf8_copy(buf); #endif } else if ( c->a.vals[1].type==v_arr || c->a.vals[1].type==v_arrfree ) { Array *arr = c->a.vals[1].u.aval; temp = galloc((arr->argc+1)*sizeof(uint32)); for ( i=0; iargc; ++i ) { if ( arr->vals[i].type!=v_int ) error( c, "Bad type for argument" ); else if ( arr->vals[i].u.ival<0 || arr->vals[i].u.ival>0x10ffff ) error( c, "Bad value for argument" ); temp[i] = arr->vals[i].u.ival; } temp[i] = 0; c->return_val.type = v_str; #ifdef UNICHAR_16 c->return_val.u.sval = u322utf8_copy(temp); #else c->return_val.u.sval = u2utf8_copy(temp); #endif free(temp); } else error( c, "Bad type for argument" ); } static void bOrd(Context *c) { if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments" ); else if ( c->a.vals[1].type!=v_str || ( c->a.argc==3 && c->a.vals[1].type!=v_int )) error( c, "Bad type for argument" ); if ( c->a.argc==3 ) { if ( c->a.vals[2].u.ival<0 || c->a.vals[2].u.ival>strlen( c->a.vals[1].u.sval )) error( c, "Bad value for argument" ); c->return_val.type = v_int; c->return_val.u.ival = (uint8) c->a.vals[1].u.sval[c->a.vals[2].u.ival]; } else { int i, len = strlen(c->a.vals[1].u.sval); c->return_val.type = v_arrfree; c->return_val.u.aval = galloc(sizeof(Array)); c->return_val.u.aval->argc = len; c->return_val.u.aval->vals = galloc(len*sizeof(Val)); for ( i=0; ireturn_val.u.aval->vals[i].type = v_int; c->return_val.u.aval->vals[i].u.ival = (uint8) c->a.vals[1].u.sval[i]; } } } /* **** File menu **** */ static void bQuit(Context *c) { if ( verbose>0 ) putchar('\n'); if ( c->a.argc==1 ) exit(0); if ( c->a.argc>2 ) error( c, "Too many arguments" ); else if ( c->a.vals[1].type!=v_int ) error( c, "Expected integer argument" ); else exit(c->a.vals[1].u.ival ); exit(1); } static TtfView *TFVAppend(TtfView *tfv) { /* Normally ttfviews get added to the tfv list when their windows are */ /* created. but we don't create any windows here, so... */ TtfView *test; if ( tfv_list==NULL ) tfv_list = tfv; else { for ( test = tfv_list; test->next!=NULL; test=test->next ); test->next = tfv; } return( tfv ); } static void bOpen(Context *c) { TtfFile *ttf; if ( c->a.argc!=2 ) error( c, "Wrong number of arguments"); else if ( c->a.vals[1].type!=v_str ) error( c, "Open expects a filename" ); ttf = LoadTtfFont(c->a.vals[1].u.sval); if ( ttf==NULL ) errors(c, "Failed to open", c->a.vals[1].u.sval); if ( ttf->tfv!=NULL ) /* All done */; else if ( screen_display!=NULL ) TtfViewCreate(ttf); else TFVAppend(_TtfViewCreate(ttf)); c->curtfv = ttf->tfv; } static void bClose(Context *c) { if ( c->a.argc!=1 ) error( c, "Wrong number of arguments"); if ( c->curtfv->gw!=NULL ) GDrawDestroyWindow(c->curtfv->gw); else { if ( tfv_list==c->curtfv ) tfv_list = c->curtfv->next; else { TtfView *n; for ( n=tfv_list; n->next!=c->curtfv; n=n->next ); n->next = c->curtfv->next; } TtfViewFree(c->curtfv); } c->curtfv = NULL; } static void bSave(Context *c) { TtfFile *ttf = c->curtfv->ttf; if ( c->a.argc>2 ) error( c, "Wrong number of arguments"); if ( c->a.argc==2 ) { if ( c->a.vals[1].type!=v_str ) error(c,"If an argument is given to Save it must be a filename"); if ( !TtfSave(ttf,c->a.vals[1].u.sval)) error(c,"Save As failed" ); } else { if ( !TtfSave(ttf,ttf->filename) ) error(c,"Save failed" ); } } static void bFontCount(Context *c) { if ( c->a.argc>1 ) error( c, "Wrong number of arguments"); c->return_val.type = v_int; c->return_val.u.ival = c->curtfv->ttf->font_cnt; } static void bFontName(Context *c) { TtfFile *ttf = c->curtfv->ttf; if ( c->a.argc>2 ) error( c, "Wrong number of arguments"); c->return_val.type = v_str; if ( c->a.argc==2 ) { if ( c->a.vals[1].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); c->return_val.u.sval = cu_copy(ttf->fonts[c->a.vals[1].u.ival]->fontname); } else c->return_val.u.sval = cu_copy(ttf->fonts[c->curtfv->active_font]->fontname); } static void bGetCurrentFont(Context *c) { if ( c->a.argc>1 ) error( c, "Wrong number of arguments"); c->return_val.type = v_int; c->return_val.u.ival = c->curtfv->active_font; } static void bSetCurrentFont(Context *c) { TtfFile *ttf = c->curtfv->ttf; if ( c->a.argc!=2 ) error( c, "Wrong number of arguments"); if ( c->a.vals[1].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); c->curtfv->active_font = c->a.vals[1].u.ival; } static void bTableCount(Context *c) { TtfFile *ttf = c->curtfv->ttf; if ( c->a.argc>2 ) error( c, "Wrong number of arguments"); c->return_val.type = v_int; if ( c->a.argc==2 ) { if ( c->a.vals[1].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); c->return_val.u.ival = ttf->fonts[c->a.vals[1].u.ival]->tbl_cnt; } else c->return_val.u.ival = ttf->fonts[c->curtfv->active_font]->tbl_cnt; } static void bTableTag(Context *c) { TtfFile *ttf = c->curtfv->ttf; int fi; if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments"); if ( c->a.argc==3 ) { if ( c->a.vals[2].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[2].u.ival<0 || c->a.vals[2].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); fi = c->a.vals[2].u.ival; } else fi = c->curtfv->active_font; if ( c->a.vals[1].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>=ttf->fonts[fi]->tbl_cnt ) error( c, "Table index out of range" ); c->return_val.type = v_tag; c->return_val.u.ival = ttf->fonts[fi]->tbls[c->a.vals[1].u.ival]->name; } static void bTableIndex(Context *c) { TtfFile *ttf = c->curtfv->ttf; int fi, i; if ( c->a.argc!=2 && c->a.argc!=3 ) error( c, "Wrong number of arguments"); if ( c->a.argc==3 ) { if ( c->a.vals[2].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[2].u.ival<0 || c->a.vals[2].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); fi = c->a.vals[2].u.ival; } else fi = c->curtfv->active_font; if ( c->a.vals[1].type!=v_int && c->a.vals[1].type!=v_tag ) error( c, "Bad type for argument" ); for ( i=ttf->fonts[fi]->tbl_cnt-1; i>=0; --i ) if ( ttf->fonts[fi]->tbls[i]->name==c->a.vals[1].u.ival ) break; c->return_val.type = v_tag; c->return_val.u.ival = i; } static Table *findtable(Context *c,int base) { TtfFile *ttf = c->curtfv->ttf; int fi,i; fi = c->curtfv->active_font; if ( c->a.argc==base+1 ) { if ( c->a.vals[base].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[base].u.ival<0 || c->a.vals[base].u.ival>=ttf->font_cnt ) error( c, "Font index out of range" ); fi = c->a.vals[base].u.ival; } if ( c->a.vals[base-1].type==v_int ) { if ( c->a.vals[base-1].u.ival<0 || c->a.vals[base-1].u.ival>=ttf->fonts[fi]->tbl_cnt ) error( c, "Table index out of range" ); return( ttf->fonts[fi]->tbls[c->a.vals[base-1].u.ival] ); } else if ( c->a.vals[base-1].type==v_tag ) { for ( i=ttf->fonts[fi]->tbl_cnt-1; i>=0; --i ) if ( ttf->fonts[fi]->tbls[i]->name==c->a.vals[base-1].u.ival ) break; if ( i<0 ) error( c,"Table not found in font" ); return( ttf->fonts[fi]->tbls[i] ); } else error( c, "Bad type for argument" ); return( NULL ); } static void namesearch(Context *c,char *str,Table *tbl, Val *ret) { int i; struct tabnames *names; for ( i=0 ; tabnamelist[i].tag!=0 && tabnamelist[i].tag!=tbl->name; ++i ); if ( tabnamelist[i].tag==0 ) error( c,"mensis does not support names in this table" ); names = tabnamelist[i].tabnames; for ( i=0; names[i].name!=NULL && strcmp(names[i].name,str)!=0; ++i ); if ( names[i].name==NULL ) errors( c,"This table does not contain the following name", str ); if ( names[i].offset+(names[i].type == v_ttf32pt ? 3 : names[i].type == v_ttf16pt ? 1 : 0)>= tbl->newlen ) errors( c,"This version of the table is too small to contain", str ); ret->type = names[i].type; TableFillup(tbl); ret->u.ttfptval = tbl->data + names[i].offset; } static void bGetTableField(Context *c) { Table *tbl; Val temp; if ( c->a.argc!=3 && c->a.argc!=4 ) error( c, "Wrong number of arguments"); tbl = findtable(c,3); if ( c->a.vals[1].type!=v_str ) error( c, "Bad type for argument" ); namesearch(c,c->a.vals[1].u.sval,tbl,&temp); c->return_val.type = v_int; c->return_val.u.ival = derefttfpt(c,&temp); } static void bSetTableField(Context *c) { Table *tbl; Val temp; if ( c->a.argc!=4 && c->a.argc!=5 ) error( c, "Wrong number of arguments"); tbl = findtable(c,4); if ( c->a.vals[1].type!=v_str || ( c->a.vals[2].type!=v_int && c->a.vals[2].type!=v_tag )) error( c, "Bad type for argument" ); namesearch(c,c->a.vals[1].u.sval,tbl,&temp); setttfpt(c,&temp,c->a.vals[2].u.ival); } static void bGetTableOffset(Context *c) { Table *tbl; Val temp; if ( c->a.argc!=4 && c->a.argc!=5 ) error( c, "Wrong number of arguments"); tbl = findtable(c,4); if ( c->a.vals[1].type!=v_int || c->a.vals[2].type!=v_int ) error( c, "Bad type for argument" ); if ( c->a.vals[2].u.ival!=1 && c->a.vals[2].u.ival!=2 && c->a.vals[2].u.ival!=4 ) error( c, "Bad value for size, must be 1, 2, or 4" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival+c->a.vals[2].u.ival-1>=tbl->newlen ) error( c,"Offset points outside of table" ); TableFillup(tbl); temp.u.ttfptval = tbl->data+c->a.vals[1].u.ival; temp.type = c->a.vals[2].u.ival==1 ? v_ttf8pt : c->a.vals[2].u.ival==2 ? v_ttf16pt : v_ttf32pt; c->return_val.type = v_int; c->return_val.u.ival = derefttfpt(c,&temp); } static void bSetTableOffset(Context *c) { Table *tbl; Val temp; if ( c->a.argc!=5 && c->a.argc!=6 ) error( c, "Wrong number of arguments"); tbl = findtable(c,5); if ( c->a.vals[1].type!=v_int || c->a.vals[2].type!=v_int || ( c->a.vals[3].type!=v_int && c->a.vals[3].type!=v_tag )) error( c, "Bad type for argument" ); if ( c->a.vals[2].u.ival!=1 && c->a.vals[2].u.ival!=2 && c->a.vals[2].u.ival!=4 ) error( c, "Bad value for size, must be 1, 2, or 4" ); if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival+c->a.vals[2].u.ival-1>=tbl->newlen ) error( c,"Offset points outside of table" ); TableFillup(tbl); temp.u.ttfptval = tbl->data+c->a.vals[1].u.ival; temp.type = c->a.vals[2].u.ival==1 ? v_ttf8pt : c->a.vals[2].u.ival==2 ? v_ttf16pt : v_ttf32pt; setttfpt(c,&temp,c->a.vals[3].u.ival); } static struct builtins { char *name; void (*func)(Context *); int nofontok; } builtins[] = { /* Generic utilities */ { "Print", bPrint, 1 }, { "Error", bError, 1 }, { "AskUser", bAskUser, 1 }, { "PostNotice", bPostNotice, 1 }, { "Array", bArray, 1 }, { "SizeOf", bSizeOf, 1 }, { "Strsub", bStrsub, 1 }, { "Strlen", bStrlen, 1 }, { "Strstr", bStrstr, 1 }, { "Strrstr", bStrrstr, 1 }, { "Strcasestr", bStrcasestr, 1 }, { "Strcasecmp", bStrcasecmp, 1 }, { "Strtol", bStrtol, 1 }, { "Strskipint", bStrskipint, 1 }, #if 0 { "GetPref", bGetPrefs, 1 }, { "SetPref", bSetPrefs, 1 }, { "UnicodeFromName", bUnicodeFromName, 1 }, #endif { "Chr", bChr, 1 }, { "Ord", bOrd, 1 }, { "Utf8", bUtf8, 1 }, /* File menu */ { "Quit", bQuit, 1 }, { "Open", bOpen, 1 }, { "Close", bClose }, { "Save", bSave }, /* Useful stuff */ { "FontCount", bFontCount }, { "FontName", bFontName }, { "SetCurrentFont", bSetCurrentFont }, { "GetCurrentFont", bGetCurrentFont }, { "TableCount", bTableCount }, { "TableTag", bTableTag }, { "TableIndex", bTableIndex }, { "SetTableField", bSetTableField }, { "GetTableField", bGetTableField }, { "SetTableOffset", bSetTableOffset }, { "GetTableOffset", bGetTableOffset }, { NULL } }; /* ******************************* Interpreter ****************************** */ static void expr(Context*,Val *val); static void statement(Context*); static int cgetc(Context *c) { int ch; if ( c->ungotch ) { ch = c->ungotch; c->ungotch = 0; return( ch ); } ch = getc(c->script); if ( verbose>0 ) putchar(ch); if ( ch=='\r' ) { int nch = getc(c->script); if ( nch!='\n' ) ungetc(nch,c->script); else if ( verbose>0 ) putchar('\n'); ++c->lineno; } else if ( ch=='\n' ) ++c->lineno; return( ch ); } static void cungetc(int ch,Context *c) { if ( c->ungotch ) fprintf( stderr, "Internal error: Attempt to unget two characters\n" ); c->ungotch = ch; } static long ctell(Context *c) { long pos = ftell(c->script); if ( c->ungotch ) --pos; return( pos ); } static void cseek(Context *c,long pos) { fseek(c->script,pos,SEEK_SET); c->ungotch = 0; c->backedup = false; } static enum token_type NextToken(Context *c) { int ch, peek; enum token_type tok = tt_error; if ( c->backedup ) { c->backedup = false; return( c->tok ); } do { ch = cgetc(c); if ( ch=='.' ) {peek = cgetc(c); cungetc(peek,c); } if ( isalpha(ch) || ch=='$' || ch=='_' || ch=='@' ) { char *pt = c->tok_text, *end = c->tok_text+TOK_MAX; int toolong = false; while ( (isalnum(ch) || ch=='$' || ch=='_' || ch=='.' || ch=='@' ) && pttok_text)==0 ) { tok = keywords[i].tok; break; } } } else if ( isdigit(ch) || (ch=='.' && isdigit(peek)) ) { int val=0; tok = tt_number; if ( ch!='0' ) { while ( isdigit(ch)) { val = 10*val+(ch-'0'); ch = cgetc(c); } } else if ( isdigit(ch=cgetc(c)) ) { while ( isdigit(ch) && ch<'8' ) { val = 8*val+(ch-'0'); ch = cgetc(c); } } else if ( ch=='X' || ch=='x' || ch=='u' || ch=='U' ) { if ( ch=='u' || ch=='U' ) tok = tt_unicode; ch = cgetc(c); while ( isdigit(ch) || (ch>='a' && ch<='f') || (ch>='A'&&ch<='F')) { if ( isdigit(ch)) ch -= '0'; else if ( ch>='a' && ch<='f' ) ch += 10-'a'; else ch += 10-'A'; val = 16*val+ch; ch = cgetc(c); } } cungetc(ch,c); c->tok_val.u.ival = val; c->tok_val.type = tok==tt_number ? v_int : v_unicode; } else if ( ch=='\'' || ch=='"' ) { int quote = ch; char *pt = c->tok_text, *end = c->tok_text+TOK_MAX; int toolong = false; ch = cgetc(c); while ( ch!=EOF && ch!='\r' && ch!='\n' && ch!=quote ) { if ( ch=='\\' ) { ch=cgetc(c); if ( ch=='\n' || ch=='\r' ) { cungetc(ch,c); ch = '\\'; } else if ( ch==EOF ) ch = '\\'; } if ( pttok_text != 4 ) error( c, "Tags must be 4 characters long" ); tok = tt_tag; pt = c->tok_text; c->tok_val.u.ival = (pt[0]<<24)|(pt[1]<<16)|(pt[2]<<8)|pt[3]; c->tok_val.type = v_tag; } else { tok = tt_string; if ( toolong ) error( c, "String too long" ); } } else switch( ch ) { case EOF: tok = tt_eof; break; case ' ': case '\t': /* Ignore spaces */ break; case '#': /* Ignore comments */ while ( (ch=cgetc(c))!=EOF && ch!='\r' && ch!='\n' ); if ( ch=='\r' || ch=='\n' ) cungetc(ch,c); break; case '.': tok = tt_dot; break; case '(': tok = tt_lparen; break; case ')': tok = tt_rparen; break; case '[': tok = tt_lbracket; break; case ']': tok = tt_rbracket; break; case ',': tok = tt_comma; break; case ':': tok = tt_colon; break; case ';': case '\n': case '\r': tok = tt_eos; break; case '-': tok = tt_minus; ch=cgetc(c); if ( ch=='=' ) tok = tt_minuseq; else if ( ch=='-' ) tok = tt_decr; else cungetc(ch,c); break; case '+': tok = tt_plus; ch=cgetc(c); if ( ch=='=' ) tok = tt_pluseq; else if ( ch=='+' ) tok = tt_incr; else cungetc(ch,c); break; case '!': tok = tt_not; ch=cgetc(c); if ( ch=='=' ) tok = tt_ne; else cungetc(ch,c); break; case '~': tok = tt_bitnot; break; case '*': tok = tt_mul; ch=cgetc(c); if ( ch=='=' ) tok = tt_muleq; else cungetc(ch,c); break; case '%': tok = tt_mod; ch=cgetc(c); if ( ch=='=' ) tok = tt_modeq; else cungetc(ch,c); break; case '/': ch=cgetc(c); if ( ch=='/' ) { /* another comment to eol */; while ( (ch=cgetc(c))!=EOF && ch!='\r' && ch!='\n' ); if ( ch=='\r' || ch=='\n' ) cungetc(ch,c); } else if ( ch=='*' ) { int found=false; ch = cgetc(c); while ( !found || ch!='/' ) { if ( ch==EOF ) break; if ( ch=='*' ) found = true; else found = false; ch = cgetc(c); } } else if ( ch=='=' ) { tok = tt_diveq; } else { tok = tt_div; cungetc(ch,c); } break; case '&': tok = tt_bitand; ch=cgetc(c); if ( ch=='&' ) tok = tt_and; else cungetc(ch,c); break; case '|': tok = tt_bitor; ch=cgetc(c); if ( ch=='|' ) tok = tt_or; else cungetc(ch,c); break; case '^': tok = tt_xor; break; case '=': tok = tt_assign; ch=cgetc(c); if ( ch=='=' ) tok = tt_eq; else cungetc(ch,c); break; case '>': tok = tt_gt; ch=cgetc(c); if ( ch=='=' ) tok = tt_ge; else cungetc(ch,c); break; case '<': tok = tt_lt; ch=cgetc(c); if ( ch=='=' ) tok = tt_le; else cungetc(ch,c); break; default: fprintf( stderr, "%s:%d Unexpected character %c (%d)\n", c->filename, c->lineno, ch, ch); traceback(c); } } while ( tok==tt_error ); c->tok = tok; return( tok ); } static void backuptok(Context *c) { if ( c->backedup ) fprintf( stderr, "%s:%d Internal Error: Attempt to back token twice\n", c->filename, c->lineno ); c->backedup = true; } #define PE_ARG_MAX 25 static void docall(Context *c,char *name,Val *val) { /* Be prepared for c->donteval */ Val args[PE_ARG_MAX]; Array *dontfree[PE_ARG_MAX]; int i; enum token_type tok; Context sub; tok = NextToken(c); dontfree[0] = NULL; if ( tok==tt_rparen ) i = 1; else { backuptok(c); for ( i=1; tok!=tt_rparen; ++i ) { if ( i>=PE_ARG_MAX ) error(c,"Too many arguments"); expr(c,&args[i]); tok = NextToken(c); if ( tok!=tt_comma ) expect(c,tt_rparen,tok); dontfree[i]=NULL; } } if ( !c->donteval ) { args[0].type = v_str; args[0].u.sval = name; memset( &sub,0,sizeof(sub)); sub.caller = c; sub.a.vals = args; sub.a.argc = i; sub.return_val.type = v_void; sub.filename = name; sub.curtfv = c->curtfv; sub.trace = c->trace; sub.dontfree = dontfree; for ( i=0; itrace.u.ival ) { printf( "%s:%d Calling %s(", GFileNameTail(c->filename), c->lineno, name ); for ( i=1; i"); else printf( ""); } printf(")\n"); } for ( i=0; builtins[i].name!=NULL; ++i ) if ( strcmp(builtins[i].name,name)==0 ) break; if ( builtins[i].name!=NULL ) { if ( sub.curtfv==NULL && !builtins[i].nofontok ) error(&sub,"This command requires an active font"); (builtins[i].func)(&sub); } else { if ( strchr(name,'/')==NULL && strchr(c->filename,'/')!=NULL ) { char *pt; sub.filename = galloc(strlen(c->filename)+strlen(name)+1); strcpy(sub.filename,c->filename); pt = strrchr(sub.filename,'/'); strcpy(pt+1,name); } sub.script = fopen(sub.filename,"r"); if ( sub.script==NULL ) error(&sub, "No such script-file or buildin function"); else { sub.lineno = 1; while ( !sub.returned && (tok = NextToken(&sub))!=tt_eof ) { backuptok(&sub); statement(&sub); } fclose(sub.script); sub.script = NULL; } if ( sub.filename!=name ) free( sub.filename ); } c->curtfv = sub.curtfv; } calldatafree(&sub); if ( val->type==v_str ) free(val->u.sval); *val = sub.return_val; } static void handlename(Context *c,Val *val) { char name[TOK_MAX+1]; enum token_type tok; int temp; char *pt; TtfFile *ttf; strcpy(name,c->tok_text); val->type = v_void; tok = NextToken(c); if ( tok==tt_lparen ) { docall(c,name,val); } else if ( c->donteval ) { backuptok(c); } else { if ( *name=='$' ) { if ( isdigit(name[1])) { temp = 0; for ( pt = name+1; isdigit(*pt); ++pt ) temp = 10*temp+*pt-'0'; if ( *pt=='\0' && tempa.argc ) { val->type = v_lval; val->u.lval = &c->a.vals[temp]; } } else if ( strcmp(name,"$argc")==0 || strcmp(name,"$#")==0 ) { val->type = v_int; val->u.ival = c->a.argc; } else if ( strcmp(name,"$argv")==0 ) { val->type = v_arr; val->u.aval = &c->a; } else if ( strcmp(name,"$curfont")==0 || strcmp(name,"$nextfont")==0 || strcmp(name,"$firstfont")==0 ) { if ( strcmp(name,"$firstfont")==0 ) { if ( tfv_list==NULL ) ttf=NULL; else ttf = tfv_list->ttf; } else { if ( c->curtfv==NULL ) error(c,"No current font"); if ( strcmp(name,"$curfont")==0 ) ttf = c->curtfv->ttf; else { if ( c->curtfv->next==NULL ) ttf = NULL; else ttf = c->curtfv->next->ttf; } } val->type = v_str; val->u.sval = copy(ttf==NULL?"":ttf->filename); } else if ( strcmp(name,"$fontname")==0 ) { if ( c->curtfv==NULL ) error(c,"No current font"); val->type = v_str; val->u.sval = cu_copy(c->curtfv->ttf->fonts[c->curtfv->active_font]->fontname); } else if ( strcmp(name,"$fontchanged")==0 ) { int i; if ( c->curtfv==NULL ) error(c,"No current font"); val->type = v_int; val->u.ival = 0; for ( i=0; icurtfv->ttf->fonts[c->curtfv->active_font]->tbl_cnt; ++i ) if ( c->curtfv->ttf->fonts[c->curtfv->active_font]->tbls[i]->changed ) { val->u.ival = 1; break; } } else if ( strcmp(name,"$trace")==0 ) { val->type = v_lval; val->u.lval = &c->trace; } else if ( strcmp(name,"$version")==0 ) { extern const char *source_version_str; val->type = v_str; val->u.sval = copy(source_version_str); #if 0 } else if ( GetPrefs(name+1,val)) { /* Done */ #endif } } else if ( *name=='@' ) { if ( c->curtfv==NULL ) error(c,"No current font"); DicaLookup(c->curtfv->fontvars,name,val); } else if ( *name=='_' ) { DicaLookup(&globals,name,val); } else { DicaLookup(&c->locals,name,val); } if ( tok==tt_assign && val->type==v_void && *name!='$' ) { /* It's ok to create this as a new variable, we're going to assign to it */ if ( *name=='@' ) { if ( c->curtfv->fontvars==NULL ) c->curtfv->fontvars = gcalloc(1,sizeof(struct dictionary)); DicaNewEntry(c->curtfv->fontvars,name,val); } else if ( *name=='_' ) { DicaNewEntry(&globals,name,val); } else { DicaNewEntry(&c->locals,name,val); } } if ( val->type==v_void ) errors(c, "Undefined variable", name); backuptok(c); } } static void IndexTable(Context *c,Val *val) { int i, size; TtfFile *ttf; TtfFont *t; Val temp; enum token_type tok; if ( c->curtfv==NULL ) error(c,"No current font"); ttf = c->curtfv->ttf; t = ttf->fonts[c->curtfv->active_font]; for ( i=t->tbl_cnt-1; i>=0 ; --i ) if ( t->tbls[i]->name==val->u.ival ) break; #if 0 if ( i<0 ) { for ( j=0; jfont_cnt; ++j ) { t = ttf->fonts[j]; for ( i=t->tbl_cnt-1; i>=0 ; --i ) if ( t->tbls[i]->name==val->u.ival ) break; if ( i>=0 ) break; } } #endif if ( i<0 ) error(c,"Requested table not in file"); expr(c,&temp); tok=NextToken(c); size = 1; if ( tok==tt_colon ) { tok=NextToken(c); expect(c,tt_name,tok); if ( strcmp(c->tok_text,"s")==0 ) size = 2; else if ( strcmp(c->tok_text,"i")==0 ) size = 4; else if ( strcmp(c->tok_text,"c")==0 ) size = 1; else error( c,"Illegal size modifier in table index (must be :s, :i or :c)" ); tok=NextToken(c); } expect(c,tt_rbracket,tok); if ( !c->donteval ) { if ( temp.type!=v_int ) error( c,"Attempt to index a table with an expression of the wrong type" ); if ( temp.u.ival+size-1>=t->tbls[i]->newlen || temp.u.ival<0 ) error( c,"Index into a table out of bounds" ); val->type = size==1 ? v_ttf8pt : size==2 ? v_ttf16pt : v_ttf32pt; TableFillup(t->tbls[i]); val->u.ttfptval = t->tbls[i]->data + temp.u.ival; } } static void DotTable(Context *c,Val *val) { int i; TtfFile *ttf; TtfFont *t; enum token_type tok; if ( c->curtfv==NULL ) error(c,"No current font"); tok = NextToken(c); expect(c,tt_name,tok); ttf = c->curtfv->ttf; t = ttf->fonts[c->curtfv->active_font]; for ( i=t->tbl_cnt-1; i>=0 ; --i ) if ( t->tbls[i]->name==val->u.ival ) break; #if 0 if ( i<0 ) { for ( j=0; jfont_cnt; ++j ) { t = ttf->fonts[j]; for ( i=t->tbl_cnt-1; i>=0 ; --i ) if ( t->tbls[i]->name==val->u.ival ) break; if ( i>=0 ) break; } } #endif if ( i<0 ) error(c,"Requested table not in file"); namesearch(c,c->tok_text,t->tbls[i],val); } static void IncrDecr(Context *c,Val *val, enum token_type tok) { if ( !c->donteval ) { if ( val->type==v_lval ) { if ( val->u.lval->type!=v_int && val->u.lval->type!=v_unicode ) error( c, "Invalid type in integer expression" ); if ( tok == tt_incr ) ++val->u.lval->u.ival; else --val->u.lval->u.ival; dereflvalif(c,val); } else if ( val->type==v_ttf8pt || val->type==v_ttf16pt || val->type==v_ttf32pt ) { int temp = derefttfpt(c,val); if ( tok == tt_incr ) ++temp; else --temp; setttfpt(c,val,temp); val->type = v_int; val->u.ival = temp; } else error( c, "Expected lvalue" ); } } static void term(Context *c,Val *val) { enum token_type tok = NextToken(c); Val temp; if ( tok==tt_lparen ) { expr(c,val); tok = NextToken(c); expect(c,tt_rparen,tok); } else if ( tok==tt_number || tok==tt_unicode ) { *val = c->tok_val; } else if ( tok==tt_tag ) { *val = c->tok_val; tok = NextToken(c); if ( tok==tt_dot ) DotTable(c,val); else if ( tok==tt_lbracket ) IndexTable(c,val); else backuptok(c); } else if ( tok==tt_string ) { val->type = v_str; val->u.sval = copy( c->tok_text ); } else if ( tok==tt_name ) { handlename(c,val); } else if ( tok==tt_minus || tok==tt_plus || tok==tt_not || tok==tt_bitnot ) { term(c,val); if ( !c->donteval ) { dereflvalif(c,val); if ( val->type!=v_int ) error( c, "Invalid type in integer expression" ); if ( tok==tt_minus ) val->u.ival = -val->u.ival; else if ( tok==tt_not ) val->u.ival = !val->u.ival; else if ( tok==tt_bitnot ) val->u.ival = ~val->u.ival; } } else if ( tok==tt_incr || tok==tt_decr ) { term(c,val); IncrDecr(c,val,tok); } else expect(c,tt_name,tok); tok = NextToken(c); while ( tok==tt_incr || tok==tt_decr || tok==tt_colon || tok==tt_lparen || tok==tt_lbracket ) { if ( tok==tt_colon ) { if ( c->donteval ) { tok = NextToken(c); expect(c,tt_name,tok); } else { dereflvalif(c,val); if ( val->type!=v_str ) error( c, "Invalid type in string expression" ); else { char *pt, *ept; tok = NextToken(c); expect(c,tt_name,tok); if ( strcmp(c->tok_text,"h")==0 ) { pt = strrchr(val->u.sval,'/'); if ( pt!=NULL ) *pt = '\0'; } else if ( strcmp(c->tok_text,"t")==0 ) { pt = strrchr(val->u.sval,'/'); if ( pt!=NULL ) { char *ret = copy(pt+1); free(val->u.sval); val->u.sval = ret; } } else if ( strcmp(c->tok_text,"r")==0 ) { pt = strrchr(val->u.sval,'/'); if ( pt==NULL ) pt=val->u.sval; ept = strrchr(pt,'.'); if ( ept!=NULL ) *ept = '\0'; } else if ( strcmp(c->tok_text,"e")==0 ) { pt = strrchr(val->u.sval,'/'); if ( pt==NULL ) pt=val->u.sval; ept = strrchr(pt,'.'); if ( ept!=NULL ) { char *ret = copy(ept+1); free(val->u.sval); val->u.sval = ret; } } else errors(c,"Unknown colon substitution", c->tok_text ); } } } else if ( tok==tt_lparen ) { if ( c->donteval ) { docall(c,NULL,val); } else { dereflvalif(c,val); if ( val->type!=v_str ) { error(c,"Expected string to hold filename in procedure call"); } else docall(c,val->u.sval,val); } } else if ( tok==tt_lbracket ) { expr(c,&temp); tok = NextToken(c); expect(c,tt_rbracket,tok); if ( !c->donteval ) { dereflvalif(c,&temp); if ( val->type==v_lval && (val->u.lval->type==v_arr ||val->u.lval->type==v_arrfree)) *val = *val->u.lval; if ( val->type!=v_arr && val->type!=v_arrfree ) error(c,"Array required"); if (temp.type!=v_int ) error(c,"Integer expression required in array"); else if ( temp.u.ival<0 || temp.u.ival>=val->u.aval->argc ) error(c,"Integer expression out of bounds in array"); else if ( val->type==v_arrfree ) { temp = val->u.aval->vals[temp.u.ival]; arrayfree(val->u.aval); *val = temp; } else { val->type = v_lval; val->u.lval = &val->u.aval->vals[temp.u.ival]; } } } else if ( !c->donteval ) { IncrDecr(c,val,tok); } tok = NextToken(c); } backuptok(c); } static void mul(Context *c,Val *val) { Val other; enum token_type tok; term(c,val); tok = NextToken(c); while ( tok==tt_mul || tok==tt_div || tok==tt_mod ) { other.type = v_void; term(c,&other); if ( !c->donteval ) { dereflvalif(c,val); dereflvalif(c,&other); if ( val->type!=v_int || other.type!=v_int ) error( c, "Invalid type in integer expression" ); else if ( (tok==tt_div || tok==tt_mod ) && other.u.ival==0 ) error( c, "Division by zero" ); else if ( tok==tt_mul ) val->u.ival *= other.u.ival; else if ( tok==tt_mod ) val->u.ival %= other.u.ival; else val->u.ival /= other.u.ival; } tok = NextToken(c); } backuptok(c); } static void add(Context *c,Val *val) { Val other; enum token_type tok; mul(c,val); tok = NextToken(c); while ( tok==tt_plus || tok==tt_minus ) { other.type = v_void; mul(c,&other); if ( !c->donteval ) { dereflvalif(c,val); dereflvalif(c,&other); if ( val->type==v_str && (other.type==v_str || other.type==v_int) && tok==tt_plus ) { char *ret, *temp; char buffer[10]; if ( other.type == v_int ) { sprintf(buffer,"%d", other.u.ival); temp = buffer; } else temp = other.u.sval; ret = galloc(strlen(val->u.sval)+strlen(temp)+1); strcpy(ret,val->u.sval); strcat(ret,temp); if ( other.type==v_str ) free(other.u.sval); free(val->u.sval); val->u.sval = ret; } else if ( (val->type!=v_int && val->type!=v_unicode) || (other.type!=v_int&&other.type!=v_unicode) ) error( c, "Invalid type in integer expression" ); else if ( tok==tt_plus ) val->u.ival += other.u.ival; else val->u.ival -= other.u.ival; } tok = NextToken(c); } backuptok(c); } static void comp(Context *c,Val *val) { Val other; int cmp; enum token_type tok; add(c,val); tok = NextToken(c); while ( tok==tt_eq || tok==tt_ne || tok==tt_gt || tok==tt_lt || tok==tt_ge || tok==tt_le ) { other.type = v_void; add(c,&other); if ( !c->donteval ) { dereflvalif(c,val); dereflvalif(c,&other); if ( val->type==v_str && other.type==v_str ) { cmp = strcmp(val->u.sval,other.u.sval); free(val->u.sval); free(other.u.sval); } else if (( val->type==v_int || val->type==v_unicode || val->type==v_tag) && (other.type==v_int || other.type==v_unicode || other.type==v_tag)) { cmp = val->u.ival - other.u.ival; } else error( c, "Invalid type in integer expression" ); val->type = v_int; if ( tok==tt_eq ) val->u.ival = (cmp==0); else if ( tok==tt_ne ) val->u.ival = (cmp!=0); else if ( tok==tt_gt ) val->u.ival = (cmp>0); else if ( tok==tt_lt ) val->u.ival = (cmp<0); else if ( tok==tt_ge ) val->u.ival = (cmp>=0); else if ( tok==tt_le ) val->u.ival = (cmp<=0); } tok = NextToken(c); } backuptok(c); } static void _and(Context *c,Val *val) { Val other; int old = c->donteval; enum token_type tok; comp(c,val); tok = NextToken(c); while ( tok==tt_and || tok==tt_bitand ) { other.type = v_void; if ( !c->donteval ) dereflvalif(c,val); if ( tok==tt_and && val->u.ival==0 ) c->donteval = true; comp(c,&other); c->donteval = old; if ( !old ) { dereflvalif(c,&other); if ( tok==tt_and && val->type==v_int && val->u.ival==0 ) val->u.ival = 0; else if ( val->type!=v_int || other.type!=v_int ) error( c, "Invalid type in integer expression" ); else if ( tok==tt_and ) val->u.ival = val->u.ival && other.u.ival; else val->u.ival &= other.u.ival; } tok = NextToken(c); } backuptok(c); } static void _or(Context *c,Val *val) { Val other; int old = c->donteval; enum token_type tok; _and(c,val); tok = NextToken(c); while ( tok==tt_or || tok==tt_bitor || tok==tt_xor ) { other.type = v_void; if ( !c->donteval ) dereflvalif(c,val); if ( tok==tt_or && val->u.ival!=0 ) c->donteval = true; _and(c,&other); c->donteval = old; if ( !c->donteval ) { dereflvalif(c,&other); if ( tok==tt_or && val->type==v_int && val->u.ival!=0 ) val->u.ival = 1; else if ( val->type!=v_int || other.type!=v_int ) error( c, "Invalid type in integer expression" ); else if ( tok==tt_or ) val->u.ival = val->u.ival || other.u.ival; else if ( tok==tt_bitor ) val->u.ival |= other.u.ival; else val->u.ival ^= other.u.ival; } tok = NextToken(c); } backuptok(c); } static void assign(Context *c,Val *val) { Val other; enum token_type tok; _or(c,val); tok = NextToken(c); if ( tok==tt_assign || tok==tt_pluseq || tok==tt_minuseq || tok==tt_muleq || tok==tt_diveq || tok==tt_modeq ) { other.type = v_void; assign(c,&other); /* that's the evaluation order here */ if ( !c->donteval ) { dereflvalif(c,&other); if (( val->type == v_ttf32pt || val->type == v_ttf16pt || val->type == v_ttf8pt) && other.type == v_int ) { int32 temp = other.u.ival; if ( tok == tt_assign ) setttfpt(c,val,other.u.ival); else { temp = derefttfpt(c,val); if ( tok==tt_pluseq ) temp += other.u.ival; else if ( tok==tt_minuseq ) temp -= other.u.ival; else if ( tok==tt_muleq ) temp *= other.u.ival; else if ( other.u.ival==0 ) error(c,"Divide by zero"); else if ( tok==tt_modeq ) temp %= other.u.ival; else temp /= other.u.ival; setttfpt(c,val,temp); } val->u.ival = temp; val->type = v_int; } else if ( val->type!=v_lval ) error( c, "Expected lvalue" ); else if ( other.type == v_void ) error( c, "Void found on right side of assignment" ); else if ( tok==tt_assign ) { Val temp; int argi; temp = *val->u.lval; *val->u.lval = other; if ( other.type==v_arr ) val->u.lval->u.aval = arraycopy(other.u.aval); else if ( other.type==v_arrfree ) val->u.lval->type = v_arr; argi = val->u.lval-c->a.vals; /* Have to free things after we copy them */ if ( argi>=0 && argia.argc && temp.type==v_arr && temp.u.aval==c->dontfree[argi] ) c->dontfree[argi] = NULL; /* Don't free it */ else if ( temp.type == v_arr ) arrayfree(temp.u.aval); else if ( temp.type == v_str ) free( temp.u.sval); } else if (( val->u.lval->type==v_int || val->u.lval->type==v_unicode ) && (other.type==v_int || other.type==v_unicode)) { if ( tok==tt_pluseq ) val->u.lval->u.ival += other.u.ival; else if ( tok==tt_minuseq ) val->u.lval->u.ival -= other.u.ival; else if ( tok==tt_muleq ) val->u.lval->u.ival *= other.u.ival; else if ( other.u.ival==0 ) error(c,"Divide by zero"); else if ( tok==tt_modeq ) val->u.lval->u.ival %= other.u.ival; else val->u.lval->u.ival /= other.u.ival; } else if ( tok==tt_pluseq && val->u.lval->type==v_str && (other.type==v_str || other.type==v_int)) { char *ret, *temp; char buffer[10]; if ( other.type == v_int ) { sprintf(buffer,"%d", other.u.ival); temp = buffer; } else temp = other.u.sval; ret = galloc(strlen(val->u.lval->u.sval)+strlen(temp)+1); strcpy(ret,val->u.lval->u.sval); strcat(ret,temp); if ( other.type==v_str ) free(other.u.sval); free(val->u.lval->u.sval); val->u.sval = ret; } else error( c, "Invalid types in assignment"); } } else backuptok(c); } static void expr(Context *c,Val *val) { val->type = v_void; assign(c,val); } static void doforeach(Context *c) { #if 0 long here = ctell(c); int lineno = c->lineno; enum token_type tok; int i, selsize; char *sel; int nest; if ( c->curtfv==NULL ) error(c,"foreach requires an active font"); selsize = c->curtfv->ttf->charcnt; sel = galloc(selsize); memcpy(sel,c->curtfv->selected,selsize); memset(c->curtfv->selected,0,selsize); i = 0; while ( 1 ) { while ( icurtfv->ttf->charcnt && !sel[i]) ++i; if ( i>=selsize || i>=c->curtfv->ttf->charcnt ) break; c->curtfv->selected[i] = true; while ( (tok=NextToken(c))!=tt_endloop && tok!=tt_eof && !c->returned ) { backuptok(c); statement(c); } c->curtfv->selected[i] = false; if ( tok==tt_eof ) error(c,"End of file found in foreach loop" ); cseek(c,here); c->lineno = lineno; ++i; } nest = 0; while ( (tok=NextToken(c))!=tt_endloop || nest>0 ) { if ( tok==tt_eof ) error(c,"End of file found in foreach loop" ); else if ( tok==tt_while ) ++nest; else if ( tok==tt_foreach ) ++nest; else if ( tok==tt_endloop ) --nest; } if ( selsize==c->curtfv->ttf->charcnt ) memcpy(c->curtfv->selected,sel,selsize); free(sel); #endif } static void dowhile(Context *c) { long here = ctell(c); int lineno = c->lineno; enum token_type tok; Val val; int nest; while ( 1 ) { tok=NextToken(c); expect(c,tt_lparen,tok); val.type = v_void; expr(c,&val); tok=NextToken(c); expect(c,tt_rparen,tok); dereflvalif(c,&val); if ( val.type!=v_int ) error( c, "Expected integer expression in while condition"); if ( val.u.ival==0 ) break; while ( (tok=NextToken(c))!=tt_endloop && tok!=tt_eof && !c->returned ) { backuptok(c); statement(c); } if ( tok==tt_eof ) error(c,"End of file found in while loop" ); cseek(c,here); c->lineno = lineno; } nest = 0; while ( (tok=NextToken(c))!=tt_endloop || nest>0 ) { if ( tok==tt_eof ) error(c,"End of file found in while loop" ); else if ( tok==tt_while ) ++nest; else if ( tok==tt_foreach ) ++nest; else if ( tok==tt_endloop ) --nest; } } static void doif(Context *c) { enum token_type tok; Val val; int nest; while ( 1 ) { tok=NextToken(c); expect(c,tt_lparen,tok); val.type = v_void; expr(c,&val); tok=NextToken(c); expect(c,tt_rparen,tok); dereflvalif(c,&val); if ( val.type!=v_int ) error( c, "Expected integer expression in if condition"); if ( val.u.ival!=0 ) { while ( (tok=NextToken(c))!=tt_endif && tok!=tt_eof && tok!=tt_else && tok!=tt_elseif && !c->returned ) { backuptok(c); statement(c); } if ( tok==tt_eof ) error(c,"End of file found in if statement" ); break; } else { nest = 0; while ( ((tok=NextToken(c))!=tt_endif && tok!=tt_else && tok!=tt_elseif ) || nest>0 ) { if ( tok==tt_eof ) error(c,"End of file found in if statement" ); else if ( tok==tt_if ) ++nest; else if ( tok==tt_endif ) --nest; } if ( tok==tt_else ) { while ( (tok=NextToken(c))!=tt_endif && tok!=tt_eof && !c->returned ) { backuptok(c); statement(c); } break; } else if ( tok==tt_endif ) break; } } if ( c->returned ) return; if ( tok!=tt_endif && tok!=tt_eof ) { nest = 0; while ( (tok=NextToken(c))!=tt_endif || nest>0 ) { if ( tok==tt_eof ) return; else if ( tok==tt_if ) ++nest; else if ( tok==tt_endif ) --nest; } } } static void doshift(Context *c) { int i; if ( c->a.argc==1 ) error(c,"Attempt to shift when there are no arguments left"); if ( c->a.vals[1].type==v_str ) free(c->a.vals[1].u.sval ); if ( c->a.vals[1].type==v_arr && c->a.vals[1].u.aval != c->dontfree[1] ) arrayfree(c->a.vals[1].u.aval ); --c->a.argc; for ( i=1; ia.argc ; ++i ) { c->a.vals[i] = c->a.vals[i+1]; c->dontfree[i] = c->dontfree[i+1]; } } static void statement(Context *c) { enum token_type tok = NextToken(c); Val val; if ( tok==tt_while ) dowhile(c); else if ( tok==tt_foreach ) doforeach(c); else if ( tok==tt_if ) doif(c); else if ( tok==tt_shift ) doshift(c); else if ( tok==tt_else || tok==tt_elseif || tok==tt_endif || tok==tt_endloop ) { unexpected(c,tok); } else if ( tok==tt_return ) { tok = NextToken(c); backuptok(c); c->returned = true; c->return_val.type = v_void; if ( tok!=tt_eos ) { expr(c,&c->return_val); dereflvalif(c,&c->return_val); if ( c->return_val.type==v_arr ) { c->return_val.type = v_arrfree; c->return_val.u.aval = arraycopy(c->return_val.u.aval); } } } else if ( tok==tt_eos ) { backuptok(c); } else { backuptok(c); expr(c,&val); if ( val.type == v_str ) free( val.u.sval ); } tok = NextToken(c); if ( tok!=tt_eos && tok!=tt_eof && !c->returned ) error( c, "Unterminated statement" ); } static FILE *CopyNonSeekableFile(FILE *former) { int ch = '\n'; FILE *temp = tmpfile(); int istty = isatty(fileno(former)) && former==stdin; if ( temp==NULL ) return( former ); if ( istty ) printf( "Type in your script file. Processing will not begin until all the script\n" ); printf( " has been input (ie. until you have pressed ^D)\n" ); while ( 1 ) { if ( ch=='\n' && istty ) printf( "> " ); ch = getc(former); if ( ch==EOF ) break; putc(ch,temp); } if ( istty ) printf( "\n" ); rewind(temp); return( temp ); } static void VerboseCheck(void) { if ( verbose==-1 ) verbose = getenv("MENSIS_VERBOSE")!=NULL; } static void ProcessScript(int argc, char *argv[], FILE *script) { int i,j; Context c; enum token_type tok; VerboseCheck(); i=1; if ( script!=NULL ) { if ( argc<2 || strcmp(argv[1],"-")!=0 ) i = 0; } else if ( strcmp(argv[1],"-nosplash")==0 || strcmp(argv[1],"--nosplash")==0 ) { ++i; if ( strcmp(argv[2],"-script")==0 || strcmp(argv[2],"--script")==0 ) ++i; } else if ( strcmp(argv[1],"-script")==0 || strcmp(argv[1],"--script")==0 ) ++i; memset( &c,0,sizeof(c)); c.a.argc = argc-i; c.a.vals = galloc(c.a.argc*sizeof(Val)); c.dontfree = gcalloc(c.a.argc,sizeof(Array*)); for ( j=i; j=3 && ( strcmp(argv[2],"-script")==0 || strcmp(argv[2],"--script")==0 )) ProcessScript(argc, argv,NULL); if ( access(argv[1],X_OK|R_OK)==0 ) { FILE *temp = fopen(argv[1],"r"); char buffer[200]; if ( temp==NULL ) return; buffer[0] = '\0'; fgets(buffer,sizeof(buffer),temp); fclose(temp); if ( buffer[0]=='#' && buffer[1]=='!' && strstr(buffer,"mensis")!=NULL ) ProcessScript(argc, argv,NULL); } if ( strcmp(argv[1],"-")==0 ) /* Someone thought that, of course, "-" meant read from a script. I guess it makes no sense with anything else... */ ProcessScript(argc, argv,stdin); } #ifdef X_DISPLAY_MISSING static void _doscriptusage(void) { printf( "mensis [options]\n" ); printf( "\t-usage\t\t\t (displays this message, and exits)\n" ); printf( "\t-help\t\t\t (displays this message, invokes a browser)\n\t\t\t\t (Using the BROWSER environment variable)\n" ); printf( "\t-version\t\t (prints the version of mensis and exits)\n" ); printf( "\t-script scriptfile\t (executes scriptfile)\n" ); printf( "\n" ); printf( "If no scriptfile is given (or if it's \"-\") Mensis will read stdin\n" ); printf( "Any arguments after the script file will be passed to it.\n"); printf( "If the first argument is an executable filename, and that file's first\n" ); printf( "\tline contains \"mensis\" then it will be treated as a scriptfile.\n\n" ); printf( "For more information see:\n\thttp://mensis.sourceforge.net/\n" ); printf( "Send bug reports to:\tmensis-devel@lists.sourceforge.net\n" ); } static void doscriptusage(void) { _doscriptusage(); exit(0); } static void doscripthelp(void) { _doscriptusage(); help("overview.html"); exit(0); } #endif void CheckIsScript(int argc, char *argv[]) { _CheckIsScript(argc, argv); #ifdef X_DISPLAY_MISSING if ( argc==2 ) { char *pt = argv[1]; if ( *pt=='-' && pt[1]=='-' ) ++pt; if ( strcmp(pt,"-usage")==0 ) doscriptusage(); else if ( strcmp(pt,"-help")==0 ) doscripthelp(); else if ( strcmp(pt,"-version")==0 ) doversion(); } ProcessScript(argc, argv,stdin); #endif } #if 0 void ExecuteScriptFile(TtfView *tfv, char *filename) { Context c; Val argv[1]; Array *dontfree[1]; enum token_type tok; jmp_buf env; VerboseCheck(); memset( &c,0,sizeof(c)); c.a.argc = 1; c.a.vals = argv; c.dontfree = dontfree; argv[0].type = v_str; argv[0].u.sval = filename; c.filename = filename; c.return_val.type = v_void; c.err_env = &env; c.curtfv = tfv; if ( setjmp(env)!=0 ) return; /* Error return */ c.script = fopen(c.filename,"r"); if ( c.script==NULL ) error(&c, "No such file"); else { c.lineno = 1; while ( !c.returned && (tok = NextToken(&c))!=tt_eof ) { backuptok(&c); statement(&c); } fclose(c.script); } } struct sd_data { int done; FontView *fv; GWindow gw; }; #define SD_Width 250 #define SD_Height 270 #define CID_Script 1001 static int SD_Call(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { static unichar_t filter[] = { '*',/*'.','p','e',*/ 0 }; unichar_t *fn; unichar_t *insert; fn = GWidgetOpenFile(GStringGetResource(_STR_CallScript,NULL), NULL, filter, NULL, NULL); if ( fn==NULL ) return(true); insert = galloc((u_strlen(fn)+10)*sizeof(unichar_t)); *insert = '"'; u_strcpy(insert+1,fn); uc_strcat(insert,"\"()"); GTextFieldReplace(GWidgetGetControl(GGadgetGetWindow(g),CID_Script),insert); free(insert); free(fn); } return( true ); } static int SD_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct sd_data *sd = GDrawGetUserData(GGadgetGetWindow(g)); Context c; Val args[1]; Array *dontfree[1]; jmp_buf env; enum token_type tok; memset( &c,0,sizeof(c)); memset( args,0,sizeof(args)); memset( dontfree,0,sizeof(dontfree)); c.a.argc = 1; c.a.vals = args; c.dontfree = dontfree; c.filename = args[0].u.sval = "ScriptDlg"; args[0].type = v_str; c.return_val.type = v_void; c.err_env = &env; c.curtfv = sd->fv; if ( setjmp(env)!=0 ) return( true ); /* Error return */ c.script = tmpfile(); if ( c.script==NULL ) error(&c, "Can't create temporary file"); else { const unichar_t *ret = _GGadgetGetTitle(GWidgetGetControl(sd->gw,CID_Script)); while ( *ret ) { /* There's a bug here. Filenames need to be converted to the local charset !!!! */ putc(*ret,c.script); ++ret; } rewind(c.script); VerboseCheck(); c.lineno = 1; while ( !c.returned && (tok = NextToken(&c))!=tt_eof ) { backuptok(&c); statement(&c); } fclose(c.script); sd->done = true; } } return( true ); } static void SD_DoCancel(struct sd_data *sd) { sd->done = true; } static int SD_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { SD_DoCancel( GDrawGetUserData(GGadgetGetWindow(g))); } return( true ); } static int sd_e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { SD_DoCancel( GDrawGetUserData(gw)); } else if ( event->type==et_char ) { if ( event->u.chr.keysym == GK_F1 || event->u.chr.keysym == GK_Help ) { help("scripting.html"); return( true ); } return( false ); } else if ( event->type == et_map ) { /* Above palettes */ GDrawRaise(gw); } return( true ); } void ScriptDlg(FontView *fv) { GRect pos; static GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[10]; GTextInfo label[10]; struct sd_data sd; TtfView *list; memset(&sd,0,sizeof(sd)); sd.fv = fv; if ( gw==NULL ) { memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_undercursor|wam_restrict|wam_isdlg; wattrs.event_masks = ~(1<next ) GDrawRequestExpose(list->v,NULL,false); } #endif mensis-080507/shorts.c0100664000076500007650000004320511010406101012776 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * dersved from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include extern int _GScrollBar_Width; #define ADDR_SPACER 4 #define EDGE_SPACER 2 typedef struct shortview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* shorts specials */ GGadget *mb, *vsb, *tf; int lpos, lheight; int16 as, fh; int16 vheight, vwidth; int16 mbh, sbw; GFont *gfont; int16 chrlen, addrend, hexend; int16 active; unsigned int changed: 1; int16 *edits; } ShortView; #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static int sfinishup(ShortView *sv,int showerr) { const unichar_t *ret = _GGadgetGetTitle(sv->tf); unichar_t *end; int val, oldval, i; Table *table = sv->table; if ( sv->active==-1 ) return( true ); val = u_strtol(ret,&end,10); if ( *ret=='\0' || *end!='\0' || val<-32768 || val>32767 ) { if ( showerr ) GWidgetErrorR(_STR_BadNumber,_STR_BadNumber); return( false ); } oldval = sv->edits!=NULL?sv->edits[sv->active] :(short) tgetushort(table,2*sv->active); if ( val != oldval ) { sv->changed = true; if ( sv->edits==NULL ) { sv->edits = galloc(table->len); for ( i = 0; ilen/2; ++i ) sv->edits[i] = tgetushort(table,2*i); } sv->edits[sv->active] = val; } sv->active = -1; GGadgetMove(sv->tf,sv->addrend,-100); return( true ); } static int short_processdata(TableView *tv) { ShortView *sv = (ShortView *) tv; int ret = sfinishup(sv,true); if ( ret && !tv->table->changed ) { tv->table->changed = true; tv->table->td_changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( ret ); } static int short_close(TableView *tv) { static int yesnocancel[] = { _STR_Yes, _STR_No, _STR_Cancel, 0 }; static int closecancel[] = { _STR_Close, _STR_Cancel, 0 }; int ret = sfinishup((ShortView *) tv,false); int copyover = true; int16 *edits; if ( ret ) { if ( ((ShortView *) tv)->changed ) { ret = GWidgetAskR(_STR_RetainChanges,yesnocancel,0,2,_STR_RetainChanges); if ( ret==2 ) return( false ); if ( ret==1 ) copyover = false; } } else { ret = GWidgetAskR(_STR_BadNumber,closecancel,0,1,_STR_BadNumberCloseAnyway); if ( ret==1 ) return( false ); } if ( copyover && (edits=((ShortView *) tv)->edits)!=NULL ) { int i; for ( i=0; itable->len/2; ++i ) ptputushort(tv->table->data+2*i,edits[i]); if ( !tv->table->changed ) { tv->table->changed = true; tv->table->td_changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } } tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } static struct tableviewfuncs shortfuncs = { short_close, short_processdata }; static void short_resize(ShortView *sv,GEvent *event) { GRect pos; int lh, width; /* height must be a multiple of the line height */ if ( (event->u.resize.size.height-sv->mbh-2*EDGE_SPACER)%sv->fh!=0 || (event->u.resize.size.height-sv->mbh-2*EDGE_SPACER-sv->fh)<0 ) { int lc = (event->u.resize.size.height-sv->mbh+sv->fh/2-EDGE_SPACER)/sv->fh; if ( lc<=0 ) lc = 1; GDrawResize(sv->gw, event->u.resize.size.width, lc*sv->fh+sv->mbh+2*EDGE_SPACER); return; } pos.width = GDrawPointsToPixels(sv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-sv->mbh; pos.x = event->u.resize.size.width-pos.width; pos.y = sv->mbh; GGadgetResize(sv->vsb,pos.width,pos.height); GGadgetMove(sv->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(sv->v,pos.width,pos.height); sv->vheight = pos.height; sv->vwidth = pos.width; sv->lheight = lh = sv->table->newlen/2; GScrollBarSetBounds(sv->vsb,0,lh,sv->vheight/sv->fh); if ( sv->lpos + sv->vheight/sv->fh > lh ) { int lpos = lh-sv->vheight/sv->fh; if ( lpos<0 ) lpos = 0; if ( sv->lpos!=lpos && sv->active!=-1 ) GGadgetMove(sv->tf,sv->addrend,(sv->active-lpos)*sv->fh); sv->lpos = lpos; } GScrollBarSetPos(sv->vsb,sv->lpos); width = pos.width-sv->addrend; if ( width < 5 ) width = 5; GGadgetResize(sv->tf,width,sv->fh); GDrawRequestExpose(sv->gw,NULL,false); GDrawRequestExpose(sv->v,NULL,false); } static void short_expose(ShortView *sv,GWindow pixmap,GRect *rect) { int low, high; int x,y; Table *table = sv->table; char cval[8], caddr[8]; unichar_t uval[8], uaddr[8]; int index; GDrawSetFont(pixmap,sv->gfont); low = ( (rect->y-EDGE_SPACER)/sv->fh ) * sv->fh + EDGE_SPACER; high = ( (rect->y+rect->height+sv->fh-1-EDGE_SPACER)/sv->fh ) * sv->fh +EDGE_SPACER; if ( high>sv->vheight-EDGE_SPACER ) high = sv->vheight-EDGE_SPACER; GDrawDrawLine(pixmap,sv->addrend-ADDR_SPACER/2,rect->y,sv->addrend-ADDR_SPACER/2,rect->y+rect->height,0x000000); index = (sv->lpos+(low-EDGE_SPACER)/sv->fh); y = low; for ( ; y<=high && indexnewlen/2; ++index ) { sprintf( caddr, "%d", index ); uc_strcpy(uaddr,caddr); x = sv->addrend - ADDR_SPACER - GDrawGetTextWidth(pixmap,uaddr,-1,NULL); GDrawDrawText(pixmap,x,y+sv->as,uaddr,-1,NULL,0x000000); sprintf( cval, "%d", sv->edits!=NULL?sv->edits[index] :(short) tgetushort(table,2*index) ); uc_strcpy(uval,cval); GDrawDrawText(pixmap,sv->addrend,y+sv->as,uval,-1,NULL,0x000000); y += sv->fh; } } static void short_mousemove(ShortView *sv,int pos) { /*GGadgetPreparePopup(sv->gw,msg);*/ } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; } } } static void short_scroll(ShortView *sv,struct sbevent *sb) { int newpos = sv->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= sv->vheight/sv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += sv->vheight/sv->fh; break; case et_sb_bottom: newpos = sv->lheight-sv->vheight/sv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>sv->lheight-sv->vheight/sv->fh ) newpos = sv->lheight-sv->vheight/sv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=sv->lpos ) { int diff = newpos-sv->lpos; sv->lpos = newpos; GScrollBarSetPos(sv->vsb,sv->lpos); if ( sv->active!=-1 ) { GRect pos; GGadgetGetSize(sv->tf,&pos); GGadgetMove(sv->tf,sv->addrend,pos.y+diff*sv->fh); } GDrawScroll(sv->v,NULL,0,diff*sv->fh); } } static void ShortViewFree(ShortView *sv) { sv->table->tv = NULL; free(sv->edits); free(sv); } static int sv_v_e_h(GWindow gw, GEvent *event) { ShortView *sv = (ShortView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: short_expose(sv,gw,&event->u.expose.rect); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(sv->table->name); break; case et_mousemove: case et_mousedown: case et_mouseup: GGadgetEndPopup(); if ( event->type==et_mousemove ) short_mousemove(sv,event->u.mouse.y); else if ( event->type == et_mousedown ) { int l = (event->u.mouse.y-EDGE_SPACER)/sv->fh + sv->lpos; unichar_t ubuf[20]; char buf[20]; if ( sfinishup(sv,true) && event->u.mouse.x>sv->addrend && ltable->newlen/2 && l!=sv->active ) { sv->active = l; GGadgetMove(sv->tf, sv->addrend, (l-sv->lpos)*sv->fh+EDGE_SPACER+1); sprintf( buf, "%d", sv->edits!=NULL?sv->edits[sv->active] :(short) tgetushort(sv->table,2*sv->active) ); uc_strcpy(ubuf,buf); GGadgetSetTitle(sv->tf,ubuf); GDrawPostEvent(event); /* And we hope the tf catches it this time */ } } break; case et_timer: break; case et_focus: break; } return( true ); } static int sv_e_h(GWindow gw, GEvent *event) { ShortView *sv = (ShortView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: break; case et_resize: short_resize(sv,event); break; case et_char: if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) TableHelp(sv->table->name); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: short_scroll(sv,&event->u.control.u.sb); break; } break; case et_close: short_close((TableView *) sv); break; case et_destroy: ShortViewFree(sv); break; } return( true ); } static void IVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { ShortView *sv = (ShortView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) short_close, sv); } static void IVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((ShortView *) GDrawGetUserData(gw))->owner; _TFVMenuSaveAs(tfv); } static void IVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((ShortView *) GDrawGetUserData(gw))->owner; _TFVMenuSave(tfv); } static void IVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = ((ShortView *) GDrawGetUserData(gw))->owner; DelayEvent((void (*)(void *)) _TFVMenuRevert, tfv); } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, IVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, IVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, IVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, IVMenuRevert, MID_Revert }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs },*/ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }},*/ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, NULL, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, NULL, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, NULL, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; extern GMenuItem helplist[]; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; /* cvt table */ void shortCreateEditor(Table *tab,TtfView *tfv) { ShortView *sv = gcalloc(1,sizeof(ShortView)); unichar_t title[60]; GRect pos, gsize; GWindow gw; GWindowAttrs wattrs; FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld, lh; GGadgetData gd; GTextInfo lab; GGadget *sb; static unichar_t num[] = { '0', '\0' }; int numlen; static GBox tfbox; sv->table = tab; sv->virtuals = &shortfuncs; sv->owner = tfv; sv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) sv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, sv->font->fontname, sizeof(title)/sizeof(title[0])-6); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,sv_e_h,sv,&wattrs); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; sv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(sv->mb,&gsize); sv->mbh = gsize.height; gd.pos.y = sv->mbh; gd.pos.height = pos.height-sv->mbh; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; sv->vsb = sb = GScrollBarCreate(gw,&gd,sv); GGadgetGetSize(sv->vsb,&gsize); sv->sbw = gsize.width; wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = sv->mbh; pos.width = gd.pos.x; pos.height -= sv->mbh; sv->v = GWidgetCreateSubWindow(gw,&pos,sv_v_e_h,sv,&wattrs); GDrawSetVisible(sv->v,true); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 400; sv->gfont = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(sv->v,sv->gfont); GDrawFontMetrics(sv->gfont,&as,&ds,&ld); sv->as = as+1; sv->fh = sv->as+ds; sv->chrlen = numlen = GDrawGetTextWidth(sv->v,num,1,NULL); sv->addrend = 6*numlen + ADDR_SPACER + EDGE_SPACER; tfbox.main_background = tfbox.main_foreground = COLOR_DEFAULT; gd.pos.y = -100; gd.pos.height = sv->fh; gd.pos.x = sv->addrend; memset(&lab,'\0',sizeof(lab)); lab.text = num+1; lab.font = sv->gfont; gd.label = &lab; gd.box = &tfbox; gd.flags = gg_visible|gg_enabled|gg_sb_vert|gg_dontcopybox; sv->tf = GTextFieldCreate(sv->v,&gd,NULL); sv->active = -1; lh = sv->table->newlen/2; if ( lh>40 ) lh = 40; if ( lh<4 ) lh = 4; GDrawResize(sv->gw,sv->addrend+6*numlen+EDGE_SPACER+sv->sbw,sv->mbh+lh*sv->fh+2*EDGE_SPACER); GDrawSetVisible(gw,true); } mensis-080507/splashimage.c0100664000076500007650000247173111010404440013770 0ustar gwwgww/* Copyright (C) 2001-2002 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include static uint8 splashimage0_data[] = { 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x16, 0x18, 0x16, 0x14, 0x18, 0x14, 0x16, 0x13, 0x0, 0x14, 0x13, 0x11, 0x18, 0xf, 0x16, 0x12, 0x12, 0x15, 0x12, 0x18, 0x13, 0x16, 0x15, 0x16, 0x18, 0x14, 0x17, 0x15, 0x16, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x13, 0x17, 0x16, 0x18, 0x18, 0x18, 0x16, 0x16, 0x0, 0x18, 0x16, 0x13, 0x0, 0x0, 0x0, 0x14, 0x16, 0x11, 0x14, 0x10, 0x15, 0x15, 0x0, 0x13, 0x16, 0x14, 0x17, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x10, 0x10, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x16, 0x0, 0x17, 0x16, 0x17, 0x18, 0x18, 0x16, 0x15, 0x18, 0x0, 0x12, 0x15, 0x18, 0x0, 0x17, 0x13, 0x16, 0x12, 0x17, 0x16, 0x0, 0x16, 0x18, 0x17, 0x0, 0x14, 0x0, 0x14, 0x16, 0x0, 0x0, 0x17, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x16, 0x17, 0x15, 0x16, 0x17, 0x15, 0x18, 0x15, 0x15, 0x14, 0x17, 0x15, 0x14, 0xd, 0x12, 0xe, 0x11, 0x18, 0x16, 0x16, 0x17, 0x14, 0x17, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x16, 0x18, 0x16, 0x0, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x17, 0x12, 0x18, 0x16, 0x0, 0x13, 0x17, 0x11, 0x17, 0x15, 0x17, 0x14, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x11, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x15, 0x18, 0x18, 0x14, 0x17, 0x14, 0x16, 0x16, 0x15, 0x16, 0x13, 0x0, 0x16, 0x18, 0x14, 0x16, 0x15, 0x15, 0x15, 0x0, 0x16, 0x18, 0x0, 0x17, 0x13, 0x0, 0x17, 0x18, 0x14, 0x15, 0x12, 0x16, 0x18, 0x16, 0x17, 0x16, 0x16, 0x14, 0x17, 0x16, 0x0, 0x15, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x16, 0x0, 0x16, 0x18, 0x16, 0x17, 0x15, 0x17, 0x16, 0x13, 0x17, 0x13, 0x17, 0x12, 0x18, 0x14, 0x15, 0x10, 0x17, 0x14, 0x18, 0x13, 0x14, 0x17, 0x17, 0x0, 0x12, 0x12, 0x10, 0x10, 0x0, 0x15, 0x17, 0x13, 0x15, 0x0, 0x16, 0x0, 0x0, 0x0, 0x13, 0x17, 0x13, 0x17, 0x13, 0x16, 0x14, 0x18, 0x17, 0x18, 0x14, 0x14, 0x0, 0x17, 0x0, 0x18, 0x18, 0x14, 0x16, 0x13, 0x18, 0x17, 0x16, 0x16, 0x17, 0x15, 0x18, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x16, 0x18, 0x15, 0x18, 0x13, 0x15, 0x13, 0x18, 0x14, 0x17, 0x11, 0x12, 0x13, 0x14, 0x11, 0x14, 0x18, 0x16, 0x18, 0x14, 0x16, 0x14, 0x14, 0x15, 0x16, 0x16, 0x15, 0x18, 0x16, 0x17, 0x17, 0x16, 0x18, 0x15, 0x18, 0x0, 0x16, 0x18, 0x18, 0x17, 0x16, 0x17, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x0, 0x17, 0x14, 0x18, 0x16, 0x0, 0x15, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x18, 0x15, 0x0, 0x15, 0x16, 0x17, 0x18, 0x17, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x17, 0x18, 0x16, 0x17, 0x17, 0x18, 0x15, 0x17, 0x16, 0x16, 0x15, 0x14, 0x17, 0x13, 0x11, 0x12, 0x11, 0x12, 0x15, 0x11, 0x16, 0x16, 0x18, 0x17, 0x16, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x16, 0x16, 0x17, 0x17, 0x16, 0x14, 0x18, 0x16, 0x18, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x13, 0x15, 0x14, 0x0, 0x12, 0x17, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x17, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x17, 0x13, 0x15, 0x0, 0x18, 0x17, 0x16, 0x15, 0x14, 0x15, 0x14, 0x15, 0x16, 0x16, 0x14, 0x16, 0x13, 0x14, 0x13, 0x15, 0x11, 0x17, 0x11, 0x10, 0x13, 0x17, 0x15, 0x15, 0x18, 0x18, 0x15, 0x14, 0x13, 0x12, 0x15, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x14, 0x18, 0x18, 0x16, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x15, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x18, 0x15, 0x16, 0x13, 0x0, 0x0, 0x16, 0x11, 0x18, 0x17, 0x18, 0x13, 0x14, 0x13, 0x15, 0x17, 0x17, 0x16, 0x12, 0x17, 0x16, 0x18, 0x15, 0x18, 0x15, 0x18, 0x11, 0x13, 0x16, 0x12, 0x14, 0x17, 0x16, 0xd, 0x17, 0x14, 0x16, 0x14, 0x13, 0x17, 0x13, 0x16, 0x14, 0x17, 0x12, 0x17, 0x13, 0x17, 0x14, 0x18, 0x16, 0x18, 0x16, 0x17, 0x18, 0x15, 0x17, 0x13, 0x16, 0x18, 0x17, 0x0, 0x17, 0x18, 0x14, 0x16, 0x18, 0x0, 0x0, 0x18, 0x16, 0xc, 0x13, 0x11, 0x0, 0x0, 0x0, 0x18, 0x0, 0x15, 0x15, 0x15, 0x10, 0x17, 0x15, 0x0, 0x0, 0x0, 0x11, 0x15, 0x14, 0x0, 0x17, 0x16, 0x14, 0x17, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x16, 0x17, 0x15, 0x18, 0x16, 0x17, 0x18, 0x18, 0xf, 0x13, 0xf, 0x14, 0x16, 0x16, 0x16, 0x17, 0x16, 0x15, 0x18, 0x15, 0x17, 0x16, 0x18, 0x18, 0x18, 0x16, 0x15, 0x17, 0x18, 0x18, 0x17, 0x14, 0x14, 0x15, 0x18, 0x16, 0x16, 0x17, 0x13, 0x17, 0x13, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x0, 0x16, 0x18, 0x16, 0x17, 0x13, 0x16, 0x13, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x18, 0x18, 0x15, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x12, 0x17, 0x14, 0x17, 0x17, 0x0, 0x15, 0x17, 0x16, 0x17, 0x16, 0x14, 0x15, 0x10, 0x13, 0x14, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x15, 0x18, 0x16, 0x18, 0x16, 0x18, 0x15, 0x17, 0x17, 0x0, 0x15, 0x18, 0xe, 0x16, 0x18, 0x0, 0x16, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x18, 0x14, 0x18, 0x14, 0x0, 0x15, 0x17, 0x18, 0x16, 0x13, 0x18, 0x15, 0x17, 0x14, 0x18, 0x17, 0x18, 0x16, 0x17, 0x14, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x17, 0x13, 0x16, 0xe, 0x13, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x16, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x14, 0x17, 0x15, 0x14, 0x17, 0x14, 0x16, 0x17, 0x17, 0x18, 0x15, 0x18, 0x16, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x18, 0x11, 0x18, 0x0, 0x17, 0x12, 0x17, 0x16, 0x13, 0x17, 0x16, 0x16, 0x12, 0x15, 0x16, 0x14, 0xe, 0x18, 0x16, 0x16, 0x15, 0x18, 0x16, 0x18, 0x17, 0x16, 0x17, 0x13, 0x17, 0x14, 0x17, 0x15, 0x0, 0x17, 0x18, 0x16, 0x15, 0x16, 0x15, 0x18, 0x15, 0x18, 0x10, 0x12, 0x13, 0x17, 0x17, 0x0, 0x15, 0x17, 0x17, 0x18, 0x17, 0xd, 0x15, 0x15, 0x17, 0x18, 0x16, 0x0, 0x15, 0x17, 0x13, 0x16, 0x16, 0x14, 0x11, 0xc, 0x17, 0x15, 0x18, 0x14, 0x18, 0x14, 0x18, 0x15, 0x17, 0x15, 0x12, 0x11, 0x10, 0x17, 0x13, 0x16, 0x11, 0x11, 0x13, 0x0, 0x16, 0x0, 0x18, 0x16, 0x12, 0x14, 0x14, 0x18, 0x14, 0x0, 0x0, 0x18, 0x15, 0x17, 0x14, 0x16, 0x15, 0x17, 0x16, 0x15, 0xf, 0x12, 0xe, 0x18, 0x15, 0x17, 0x18, 0x13, 0x15, 0x16, 0x14, 0x14, 0x17, 0x15, 0x15, 0x14, 0x18, 0x18, 0x17, 0x15, 0x12, 0x15, 0x16, 0x17, 0x17, 0x16, 0x18, 0x18, 0x0, 0x18, 0x16, 0x16, 0x10, 0x17, 0x14, 0x16, 0x18, 0x18, 0x15, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x15, 0x17, 0x17, 0x18, 0x12, 0x17, 0x17, 0x0, 0x14, 0x18, 0x17, 0x18, 0x17, 0x18, 0x11, 0x16, 0x10, 0x15, 0x12, 0x18, 0x17, 0x0, 0x15, 0x18, 0x15, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x0, 0x16, 0x18, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x14, 0x15, 0x13, 0x12, 0x14, 0x11, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x18, 0x17, 0x18, 0x15, 0x18, 0x16, 0x0, 0x18, 0x16, 0x16, 0x16, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x15, 0x17, 0x17, 0x17, 0xf, 0x16, 0x12, 0x18, 0x10, 0x18, 0x15, 0x17, 0x15, 0x18, 0x13, 0x17, 0x14, 0x0, 0x16, 0x0, 0x17, 0x12, 0x17, 0x17, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x17, 0x0, 0x16, 0x0, 0x18, 0x0, 0x0, 0x18, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0x17, 0x18, 0x18, 0x18, 0x16, 0x15, 0x17, 0x17, 0x15, 0x14, 0x16, 0x15, 0x18, 0x17, 0x18, 0x16, 0x18, 0x18, 0x18, 0x13, 0x14, 0xd, 0x11, 0xc, 0x13, 0x12, 0x16, 0x17, 0x14, 0x13, 0x15, 0x0, 0x0, 0x16, 0x15, 0x17, 0x18, 0x16, 0x16, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x17, 0x17, 0x17, 0x18, 0x15, 0x15, 0x18, 0x15, 0x17, 0x15, 0x18, 0x14, 0x18, 0x15, 0x15, 0x13, 0x18, 0x14, 0x17, 0x13, 0x18, 0x15, 0x18, 0x16, 0x0, 0x16, 0x16, 0x17, 0x16, 0x18, 0x18, 0x18, 0x15, 0x18, 0x18, 0x0, 0x16, 0x17, 0x12, 0x16, 0xf, 0x14, 0x17, 0xf, 0x14, 0x15, 0x17, 0xd, 0x14, 0x11, 0x18, 0x15, 0x15, 0x15, 0x14, 0x16, 0x16, 0x18, 0x16, 0x18, 0x11, 0x16, 0x15, 0x17, 0x15, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x11, 0x17, 0x17, 0x17, 0x14, 0x13, 0x0, 0x16, 0x0, 0x18, 0x18, 0x17, 0x11, 0x11, 0x10, 0x0, 0x15, 0x15, 0x12, 0x17, 0x11, 0x16, 0x16, 0x18, 0x16, 0x14, 0x13, 0x15, 0x17, 0x14, 0x18, 0x16, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x17, 0x17, 0x16, 0x17, 0x17, 0x0, 0x18, 0x0, 0x0, 0x17, 0x13, 0x14, 0x10, 0x17, 0x16, 0x18, 0x14, 0x18, 0x16, 0x18, 0x18, 0x16, 0x17, 0x16, 0x17, 0x14, 0x17, 0x15, 0x14, 0x14, 0x14, 0x14, 0xf, 0xf, 0x11, 0x14, 0x15, 0x15, 0x18, 0x13, 0x10, 0xf, 0xf, 0x14, 0x12, 0x14, 0x17, 0x18, 0x16, 0x17, 0x15, 0x17, 0x16, 0x14, 0x17, 0x16, 0x17, 0x15, 0x15, 0x16, 0x17, 0x11, 0x17, 0x14, 0x18, 0x10, 0x17, 0x17, 0x15, 0x13, 0x15, 0x13, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x17, 0x18, 0x15, 0x18, 0x12, 0x17, 0x17, 0x0, 0x16, 0x16, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x16, 0x16, 0x16, 0x14, 0x18, 0x0, 0x17, 0x15, 0x16, 0x13, 0x16, 0x16, 0x18, 0x17, 0x16, 0x16, 0x17, 0x17, 0x17, 0x14, 0x0, 0x18, 0x18, 0x16, 0x17, 0x12, 0x18, 0x17, 0x0, 0x17, 0x17, 0x12, 0x17, 0x16, 0x17, 0x14, 0x18, 0x16, 0x17, 0x16, 0x0, 0x16, 0x18, 0x13, 0x17, 0x13, 0x17, 0x12, 0x16, 0x13, 0x17, 0x14, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x0, 0x13, 0x18, 0x14, 0x18, 0x16, 0x18, 0x13, 0x18, 0x18, 0x0, 0x0, 0x18, 0x16, 0x17, 0x15, 0x18, 0x15, 0x18, 0x16, 0x18, 0x17, 0x18, 0x16, 0x14, 0x17, 0x17, 0x16, 0x16, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x16, 0x13, 0x8, 0x13, 0x12, 0x18, 0x14, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x0, 0x16, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x0, 0x15, 0x14, 0x17, 0x16, 0x0, 0x17, 0x15, 0x14, 0x16, 0x16, 0x16, 0x15, 0x18, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x16, 0x18, 0x15, 0x17, 0x17, 0x0, 0x15, 0x17, 0x15, 0x15, 0x17, 0x18, 0x17, 0x11, 0x16, 0x17, 0x18, 0x16, 0x18, 0x14, 0x17, 0x14, 0x17, 0x16, 0x16, 0x0, 0x15, 0x18, 0x18, 0x0, 0x17, 0x18, 0x17, 0x15, 0x15, 0x0, 0x16, 0x15, 0x0, 0x14, 0x17, 0x13, 0x17, 0x15, 0x17, 0x14, 0x18, 0x18, 0x0, 0x16, 0x13, 0x16, 0x10, 0x17, 0x14, 0x14, 0x15, 0x12, 0x0, 0x18, 0x0, 0x16, 0x10, 0xd, 0x13, 0x18, 0x14, 0x18, 0x14, 0x18, 0x13, 0x18, 0x12, 0x17, 0x14, 0x17, 0x17, 0x18, 0x18, 0x0, 0x15, 0x12, 0x16, 0x15, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x16, 0x14, 0x15, 0x13, 0x16, 0x16, 0x16, 0x13, 0x12, 0x10, 0x15, 0x14, 0x0, 0x15, 0x17, 0x14, 0x18, 0x17, 0x18, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x16, 0x15, 0x16, 0x17, 0x15, 0x18, 0x15, 0x11, 0x14, 0x16, 0x18, 0x17, 0x16, 0x16, 0x17, 0x16, 0x17, 0x16, 0x16, 0x17, 0x16, 0x17, 0x17, 0x18, 0x16, 0x16, 0x17, 0x17, 0x15, 0x17, 0x14, 0x0, 0x14, 0x18, 0x16, 0x15, 0x15, 0x15, 0x13, 0x17, 0x15, 0x0, 0x16, 0x17, 0x16, 0x17, 0x14, 0x18, 0x16, 0x0, 0x15, 0x17, 0x16, 0x18, 0x16, 0x0, 0x16, 0x18, 0x15, 0x16, 0x11, 0x16, 0x13, 0x16, 0x12, 0x17, 0x14, 0x17, 0x13, 0x15, 0x18, 0x18, 0x16, 0x14, 0x15, 0x14, 0x18, 0x0, 0x16, 0x16, 0x16, 0x15, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x16, 0xe, 0x17, 0x15, 0x18, 0x15, 0x17, 0x15, 0x16, 0x15, 0x18, 0x14, 0x17, 0x14, 0x16, 0x13, 0x18, 0x16, 0x18, 0x15, 0x18, 0x17, 0x18, 0x11, 0x15, 0x13, 0x16, 0x12, 0x18, 0x14, 0x18, 0x16, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x17, 0x18, 0x15, 0x16, 0x14, 0x0, 0x16, 0x17, 0x17, 0x16, 0x13, 0x17, 0x14, 0x18, 0x12, 0x15, 0x12, 0x16, 0x11, 0x14, 0x12, 0x13, 0x17, 0x13, 0x13, 0x14, 0x17, 0x15, 0x15, 0x13, 0x14, 0xf, 0x10, 0x11, 0x15, 0x10, 0x16, 0x16, 0x0, 0x15, 0x18, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x0, 0x16, 0x0, 0x15, 0x18, 0x15, 0x17, 0x14, 0x18, 0x17, 0x18, 0x17, 0x17, 0x13, 0x18, 0x14, 0x17, 0x14, 0x15, 0x17, 0x15, 0x16, 0x14, 0x16, 0x11, 0x0, 0x10, 0x13, 0x16, 0x16, 0xf, 0x14, 0x15, 0x17, 0x15, 0x17, 0x0, 0xe, 0x17, 0x0, 0x0, 0x17, 0x16, 0x16, 0x13, 0x15, 0x18, 0x16, 0x12, 0x17, 0x13, 0x18, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0xf, 0x13, 0x11, 0xd, 0x15, 0xf, 0x14, 0xf, 0x12, 0x16, 0xf, 0x17, 0xf, 0x14, 0x10, 0x12, 0x13, 0x16, 0x16, 0x12, 0x18, 0x15, 0x18, 0x16, 0x18, 0x16, 0x18, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x0, 0x0, 0x17, 0x17, 0x0, 0x16, 0x18, 0x17, 0x0, 0x16, 0x18, 0x17, 0x16, 0x15, 0x18, 0x16, 0x17, 0x15, 0x16, 0x18, 0x12, 0xc, 0xf, 0xd, 0x13, 0x12, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x16, 0x15, 0x18, 0x18, 0x16, 0x16, 0x17, 0x17, 0x15, 0x17, 0x14, 0x13, 0x13, 0x14, 0x15, 0x10, 0x14, 0xd, 0xc, 0xc, 0xb, 0x14, 0x15, 0x0, 0x0, 0x16, 0x17, 0x16, 0x17, 0x13, 0x14, 0x15, 0x18, 0x14, 0x15, 0x14, 0x16, 0x13, 0x13, 0x15, 0x14, 0x15, 0x16, 0x16, 0x14, 0x15, 0x12, 0x18, 0x10, 0x16, 0x17, 0x0, 0x17, 0x0, 0x15, 0x17, 0x13, 0x17, 0x14, 0x18, 0x12, 0x18, 0x11, 0x13, 0x12, 0x0, 0x13, 0x16, 0x15, 0x18, 0x16, 0x0, 0x18, 0x0, 0x16, 0x18, 0x15, 0x17, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x17, 0x17, 0x12, 0x13, 0x12, 0x14, 0x17, 0x17, 0x18, 0x14, 0x15, 0x15, 0x16, 0x13, 0x16, 0x13, 0x16, 0x14, 0x16, 0x15, 0x16, 0x16, 0x16, 0x15, 0x17, 0x13, 0x17, 0x14, 0x17, 0x12, 0x16, 0x13, 0x17, 0x14, 0x17, 0x13, 0x15, 0x12, 0x17, 0x12, 0x16, 0x10, 0x13, 0xe, 0x15, 0x14, 0x16, 0x10, 0x14, 0xe, 0x15, 0x14, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x15, 0x17, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x15, 0x18, 0x17, 0x16, 0x0, 0x18, 0x0, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x13, 0x18, 0x17, 0x17, 0x13, 0x16, 0x14, 0x0, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x15, 0x11, 0xf, 0x13, 0x10, 0x14, 0x14, 0x17, 0x18, 0x18, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x15, 0x17, 0x16, 0x17, 0x10, 0x18, 0x14, 0x12, 0x16, 0x15, 0x17, 0x11, 0x16, 0x16, 0x17, 0x11, 0x18, 0x13, 0x14, 0x13, 0x14, 0x17, 0x0, 0x0, 0x18, 0x18, 0x15, 0x0, 0x15, 0x16, 0x14, 0x14, 0x17, 0x18, 0x16, 0x15, 0x18, 0x11, 0x15, 0x14, 0x18, 0x14, 0x15, 0x12, 0x16, 0x14, 0x17, 0x13, 0x14, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x15, 0x11, 0x16, 0xf, 0x14, 0xf, 0x17, 0x17, 0x14, 0x13, 0x13, 0x18, 0x17, 0x18, 0x16, 0x0, 0x15, 0x17, 0x13, 0x14, 0x17, 0x0, 0x16, 0x16, 0x0, 0x0, 0x15, 0x15, 0x18, 0x14, 0x17, 0x16, 0x18, 0x15, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x15, 0x15, 0x15, 0x12, 0x10, 0x13, 0x14, 0x17, 0x13, 0x18, 0x14, 0x17, 0x15, 0x17, 0x14, 0x14, 0x14, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x15, 0x15, 0x12, 0x15, 0x15, 0x16, 0x18, 0x14, 0x17, 0x18, 0x11, 0x11, 0x13, 0x16, 0x17, 0x18, 0x17, 0x16, 0x18, 0x15, 0x17, 0x15, 0x16, 0x15, 0x17, 0x17, 0x17, 0x16, 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x18, 0x16, 0x16, 0x17, 0x13, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x16, 0x0, 0x16, 0x18, 0x14, 0x18, 0x14, 0x18, 0x15, 0x18, 0x15, 0x17, 0x14, 0x18, 0x17, 0x18, 0x16, 0x0, 0x17, 0x18, 0x14, 0x17, 0x15, 0x0, 0x16, 0x0, 0x16, 0x18, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x18, 0x15, 0x16, 0x16, 0x17, 0x15, 0x17, 0x15, 0x18, 0x17, 0x17, 0x15, 0x16, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0x14, 0x17, 0x15, 0x17, 0x16, 0x18, 0x14, 0x16, 0x14, 0x14, 0x12, 0x17, 0x15, 0x18, 0x15, 0x15, 0x11, 0x17, 0x14, 0x15, 0xf, 0x14, 0x12, 0x15, 0x12, 0x16, 0x13, 0x17, 0x14, 0x18, 0x15, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x17, 0x15, 0x0, 0x0, 0x18, 0x17, 0x18, 0x16, 0x17, 0x15, 0x18, 0x15, 0x18, 0x15, 0x17, 0x15, 0x18, 0x14, 0x17, 0x16, 0x16, 0x13, 0x13, 0x12, 0x15, 0x12, 0x18, 0x14, 0x18, 0x15, 0x14, 0x10, 0x15, 0x14, 0x14, 0x15, 0x10, 0x11, 0x11, 0x12, 0xd, 0x13, 0x13, 0x17, 0x15, 0x17, 0x16, 0x18, 0x16, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x18, 0x18, 0x17, 0x18, 0x0, 0x17, 0x16, 0x15, 0x15, 0x16, 0x16, 0x15, 0x18, 0x17, 0x15, 0x17, 0x13, 0x15, 0x11, 0x16, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x0, 0x15, 0x16, 0x15, 0x17, 0x16, 0x0, 0x18, 0x18, 0x18, 0x18, 0x10, 0x17, 0x0, 0x15, 0x11, 0x0, 0x16, 0x13, 0x16, 0x15, 0x17, 0xf, 0x18, 0x17, 0x18, 0x17, 0x0, 0xe, 0x11, 0x14, 0x17, 0x13, 0x16, 0x16, 0x12, 0x17, 0x10, 0x0, 0x16, 0x16, 0x17, 0x18, 0x18, 0x18, 0x16, 0x15, 0x18, 0x16, 0x0, 0x16, 0x17, 0xf, 0x12, 0xd, 0x11, 0xc, 0x14, 0x11, 0x15, 0x0, 0x14, 0x18, 0x18, 0x17, 0x10, 0x12, 0x15, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x15, 0x16, 0x15, 0x0, 0x17, 0x0, 0x16, 0x18, 0x13, 0x16, 0x14, 0x15, 0x15, 0x17, 0x16, 0x14, 0x18, 0x18, 0x14, 0x13, 0x14, 0x11, 0x15, 0x10, 0x14, 0x13, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x16, 0x12, 0x13, 0x13, 0x16, 0x13, 0x14, 0x15, 0x17, 0x14, 0x16, 0x15, 0x16, 0x13, 0x15, 0x14, 0x15, 0x11, 0x13, 0x14, 0x12, 0x10, 0x13, 0x15, 0x11, 0x13, 0xf, 0x13, 0x11, 0x14, 0x15, 0xe, 0x14, 0x17, 0x14, 0x15, 0x13, 0x16, 0x17, 0x17, 0x15, 0x15, 0x18, 0x14, 0x17, 0x11, 0x15, 0x14, 0x15, 0x18, 0x18, 0x15, 0x16, 0x15, 0x14, 0x15, 0x13, 0x17, 0x0, 0x13, 0x13, 0x16, 0x12, 0x18, 0x11, 0x17, 0x13, 0x16, 0x14, 0x18, 0x16, 0x18, 0x16, 0x18, 0x14, 0x17, 0x12, 0x17, 0x13, 0x0, 0x14, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x14, 0x15, 0x10, 0x13, 0xe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x16, 0x13, 0x14, 0x16, 0x15, 0x11, 0x14, 0x14, 0x17, 0x16, 0x17, 0x10, 0x12, 0x15, 0x18, 0x15, 0x18, 0x14, 0x17, 0x13, 0x16, 0x15, 0x16, 0x16, 0x17, 0x14, 0x17, 0x15, 0x15, 0x13, 0x17, 0x16, 0x0, 0x18, 0x16, 0xe, 0x14, 0xc, 0x12, 0x10, 0x16, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x16, 0x17, 0x13, 0x18, 0x15, 0x18, 0x17, 0x18, 0x16, 0x13, 0x18, 0x18, 0x17, 0x16, 0x17, 0x13, 0x14, 0x13, 0x0, 0x13, 0x17, 0x13, 0x17, 0x16, 0x18, 0x13, 0x17, 0x17, 0x17, 0x14, 0x14, 0x16, 0x17, 0x16, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x0, 0x0, 0x0, 0x14, 0xc, 0xe, 0xf, 0x11, 0x12, 0x18, 0x18, 0x17, 0x17, 0x16, 0x14, 0x18, 0x15, 0x18, 0x0, 0x18, 0x12, 0x17, 0x17, 0x16, 0x17, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x17, 0x15, 0x18, 0x17, 0x17, 0x12, 0x18, 0x14, 0x17, 0x15, 0x15, 0x0, 0x0, 0x11, 0xf, 0x18, 0x18, 0x18, 0x14, 0x17, 0xf, 0x15, 0x12, 0x15, 0x13, 0x14, 0x16, 0x12, 0x18, 0x14, 0x18, 0x14, 0x18, 0x16, 0x16, 0x16, 0x16, 0x13, 0x13, 0x18, 0x15, 0x18, 0x17, 0x18, 0x13, 0x15, 0x11, 0x16, 0x15, 0x17, 0x12, 0x15, 0x17, 0x12, 0x16, 0x12, 0x15, 0x16, 0x16, 0x16, 0x16, 0x18, 0x15, 0x18, 0x16, 0x16, 0x16, 0x14, 0x17, 0x14, 0x18, 0x16, 0x17, 0x14, 0x17, 0x11, 0x17, 0x15, 0x17, 0x16, 0x18, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, 0x17, 0x15, 0x14, 0x16, 0x15, 0x15, 0x15, 0x13, 0x12, 0xe, 0x11, 0x13, 0x17, 0x13, 0x13, 0x15, 0x15, 0x12, 0x14, 0x13, 0x16, 0x14, 0x16, 0x15, 0x17, 0x14, 0x15, 0x16, 0x15, 0x14, 0x14, 0x16, 0x13, 0x15, 0x16, 0x13, 0x15, 0x14, 0x13, 0xe, 0x15, 0x16, 0x17, 0x16, 0x15, 0x17, 0x15, 0x16, 0x17, 0x14, 0x16, 0x14, 0x14, 0x13, 0x16, 0x16, 0x0, 0x17, 0x18, 0x16, 0x15, 0x15, 0x15, 0x14, 0x13, 0x15, 0x16, 0x16, 0x17, 0x18, 0x15, 0x18, 0x16, 0x0, 0x17, 0x17, 0x16, 0x18, 0x16, 0x0, 0x18, 0x0, 0x17, 0x0, 0x16, 0x0, 0x15, 0x16, 0x15, 0x17, 0x16, 0x16, 0x14, 0x18, 0x14, 0x18, 0x15, 0x18, 0x13, 0x15, 0x11, 0x17, 0x13, 0x17, 0x16, 0x16, 0x16, 0x18, 0x16, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x15, 0x17, 0x16, 0x0, 0x0, 0x18, 0x17, 0x18, 0x14, 0x16, 0x11, 0x12, 0x16, 0x16, 0x15, 0x17, 0x15, 0x18, 0x15, 0x18, 0x18, 0x0, 0x16, 0x15, 0x13, 0x15, 0x12, 0x16, 0x15, 0x15, 0x13, 0x13, 0xe, 0x15, 0x14, 0x12, 0xd, 0x12, 0x11, 0x17, 0x14, 0x17, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x18, 0x16, 0x17, 0x16, 0x18, 0x16, 0x15, 0x17, 0x16, 0x17, 0x14, 0x0, 0x16, 0x16, 0x13, 0x18, 0x15, 0x18, 0x14, 0x16, 0x14, 0x16, 0x13, 0x0, 0x14, 0x15, 0x14, 0x16, 0x14, 0x14, 0x11, 0x15, 0x13, 0x18, 0x12, 0x15, 0xf, 0x13, 0x12, 0x12, 0x11, 0xe, 0x16, 0x0, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x15, 0x17, 0x14, 0x17, 0x14, 0x18, 0x13, 0x15, 0x15, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x17, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x16, 0x17, 0x15, 0x16, 0x15, 0x17, 0x16, 0x18, 0x17, 0x0, 0x16, 0x18, 0x16, 0x18, 0x14, 0x0, 0x16, 0x18, 0x16, 0x17, 0x16, 0x18, 0x0, 0x16, 0x12, 0x18, 0x15, 0x18, 0x16, 0x15, 0x0, 0x18, 0x18, 0x16, 0x0, 0x14, 0x14, 0xf, 0x16, 0x17, 0x16, 0x12, 0x0, 0x14, 0x14, 0x17, 0x14, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x16, 0x16, 0x16, 0x18, 0x15, 0x18, 0x13, 0x17, 0x15, 0x15, 0xe, 0x14, 0x10, 0x15, 0x15, 0x16, 0x13, 0x16, 0x14, 0xb, 0x12, 0xf, 0x14, 0x11, 0x10, 0x14, 0x10, 0x16, 0x14, 0x18, 0x13, 0x14, 0x14, 0x12, 0x15, 0x13, 0x18, 0x13, 0x13, 0x11, 0x13, 0xb, 0x12, 0x10, 0x15, 0x13, 0x15, 0x12, 0x13, 0x14, 0x12, 0x12, 0x12, 0x14, 0x13, 0x16, 0x13, 0x17, 0x13, 0x12, 0x16, 0x14, 0x16, 0x14, 0x13, 0x12, 0xf, 0x10, 0x12, 0x13, 0x15, 0x15, 0x15, 0x11, 0x13, 0x12, 0x11, 0x18, 0x14, 0x17, 0x15, 0x0, 0x16, 0x16, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x18, 0x14, 0x17, 0x13, 0x14, 0x10, 0x12, 0x16, 0x17, 0x17, 0x18, 0x18, 0x16, 0x18, 0x18, 0x17, 0x18, 0x16, 0x15, 0x15, 0x18, 0x17, 0x0, 0x17, 0x18, 0x15, 0x15, 0x15, 0x16, 0x15, 0x15, 0x16, 0x15, 0x17, 0x16, 0x17, 0x14, 0x17, 0x15, 0x0, 0x17, 0x17, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x16, 0x18, 0x15, 0x18, 0x16, 0x17, 0x16, 0x18, 0x15, 0x17, 0x15, 0x16, 0x18, 0x0, 0x10, 0x12, 0xe, 0x15, 0xf, 0x12, 0x14, 0x18, 0x12, 0x16, 0x16, 0x15, 0x15, 0x15, 0x16, 0x14, 0x17, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x16, 0x14, 0x14, 0x17, 0x18, 0x17, 0x18, 0x16, 0x0, 0x16, 0x17, 0x16, 0x18, 0x17, 0x18, 0x15, 0x17, 0x15, 0x16, 0x16, 0x16, 0x18, 0x15, 0x9, 0xd, 0xa, 0xf, 0xb, 0x15, 0x13, 0x16, 0x17, 0x0, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x16, 0x17, 0x13, 0x0, 0x16, 0x15, 0x13, 0x17, 0x14, 0x16, 0x11, 0x16, 0x11, 0x17, 0x11, 0x13, 0xd, 0x10, 0xe, 0x11, 0x12, 0x14, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x18, 0x16, 0x17, 0x16, 0x17, 0x18, 0x18, 0x18, 0x0, 0x17, 0x15, 0x17, 0x18, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x16, 0x0, 0x15, 0x17, 0x17, 0x0, 0x0, 0x18, 0x15, 0x16, 0x14, 0x18, 0x13, 0x18, 0x12, 0x15, 0x12, 0x15, 0x11, 0x15, 0x14, 0x18, 0x15, 0x17, 0x14, 0x18, 0x16, 0x18, 0x17, 0x17, 0x14, 0x14, 0x0, 0x17, 0x18, 0x11, 0x16, 0x13, 0x17, 0x16, 0x13, 0xe, 0x15, 0x12, 0x15, 0x0, 0x14, 0x18, 0x15, 0x0, 0x13, 0x16, 0x16, 0x18, 0x18, 0x17, 0x18, 0x15, 0x17, 0x14, 0x15, 0x12, 0x15, 0x14, 0x16, 0x11, 0x13, 0x12, 0x15, 0xf, 0x13, 0x15, 0x14, 0x18, 0x15, 0x18, 0x15, 0x16, 0x17, 0x14, 0x17, 0x14, 0x16, 0x13, 0x15, 0x15, 0x15, 0x17, 0x15, 0x16, 0x15, 0x17, 0x15, 0x16, 0x14, 0x17, 0x13, 0x17, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x17, 0x17, 0x15, 0x16, 0x16, 0x17, 0x15, 0x15, 0x16, 0x15, 0x0, 0x13, 0x12, 0x15, 0x14, 0x14, 0x13, 0x15, 0x16, 0x16, 0x16, 0x14, 0x16, 0x16, 0x15, 0x17, 0x15, 0x16, 0x14, 0x15, 0x15, 0x17, 0x17, 0x15, 0x16, 0x15, 0x16, 0x12, 0x14, 0x15, 0x17, 0x18, 0x16, 0x16, 0x14, 0x17, 0x16, 0x14, 0x14, 0x13, 0x14, 0x16, 0x15, 0x14, 0x14, 0x17, 0x15, 0x17, 0x15, 0x16, 0x17, 0x0, 0x18, 0x17, 0x16, 0x14, 0x11, 0x14, 0x14, 0x13, 0x0, 0x18, 0x18, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x15, 0x17, 0x16, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x16, 0x17, 0x14, 0x18, 0x12, 0x16, 0x10, 0x16, 0x15, 0x17, 0x16, 0x17, 0x15, 0x15, 0x10, 0x17, 0x10, 0x16, 0x15, 0x18, 0x15, 0x16, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x17, 0x13, 0x16, 0x14, 0x15, 0x13, 0x14, 0x11, 0x16, 0x12, 0x13, 0x11, 0x18, 0x15, 0x16, 0x11, 0x17, 0x15, 0x18, 0x14, 0x17, 0x13, 0x15, 0x10, 0x13, 0x11, 0x13, 0xe, 0x14, 0x15, 0x17, 0x13, 0x17, 0x16, 0x17, 0x17, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x18, 0x15, 0x17, 0x15, 0x17, 0x16, 0x15, 0x15, 0x17, 0x14, 0x17, 0x17, 0x18, 0x16, 0x16, 0x15, 0x13, 0x18, 0x18, 0x18, 0x14, 0x16, 0x16, 0x16, 0x15, 0x0, 0x17, 0x18, 0x16, 0x18, 0x15, 0x17, 0x12, 0x18, 0x14, 0x14, 0x13, 0x17, 0x16, 0x17, 0x12, 0x15, 0x9, 0x12, 0xd, 0x11, 0xf, 0x12, 0x10, 0x16, 0x13, 0x12, 0x15, 0x15, 0x15, 0x15, 0x15, 0x13, 0x16, 0x14, 0x16, 0x15, 0x18, 0x16, 0x0, 0x16, 0x17, 0x13, 0x15, 0x13, 0x16, 0x17, 0x16, 0x18, 0x18, 0x16, 0x14, 0x15, 0x16, 0x18, 0x14, 0x16, 0x14, 0x18, 0x15, 0x17, 0x14, 0x18, 0x15, 0x17, 0x17, 0x0, 0x0, 0x18, 0x14, 0x17, 0x14, 0x18, 0x15, 0x18, 0x15, 0x17, 0x15, 0x17, 0x16, 0x17, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x15, 0x11, 0x0, 0x14, 0x10, 0x11, 0x18, 0x13, 0x17, 0x14, 0x15, 0x11, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x18, 0x17, 0x17, 0x17, 0x15, 0x16, 0x13, 0x16, 0xc, 0x12, 0x13, 0x16, 0x14, 0x16, 0x15, 0x17, 0x17, 0x18, 0xf, 0x14, 0x17, 0x17, 0x18, 0x15, 0x16, 0x16, 0x17, 0x18, 0x14, 0x17, 0x14, 0x16, 0x13, 0x16, 0x15, 0x17, 0x11, 0xe, 0x14, 0x11, 0x16, 0x11, 0x16, 0x14, 0x15, 0xf, 0x14, 0x12, 0x16, 0x16, 0x16, 0x15, 0x16, 0x15, 0x15, 0x15, 0x13, 0x14, 0x14, 0x16, 0x13, 0x12, 0x11, 0xe, 0x11, 0x11, 0x12, 0x14, 0x15, 0x12, 0x13, 0x12, 0x15, 0x14, 0x16, 0x12, 0x14, 0x15, 0x13, 0x16, 0x13, 0x15, 0x13, 0x16, 0x15, 0x17, 0x17, 0x17, 0x15, 0x10, 0x13, 0xf, 0x14, 0x16, 0x17, 0x18, 0x14, 0x14, 0x13, 0x18, 0x16, 0x14, 0x15, 0x14, 0x14, 0x17, 0x17, 0x16, 0x16, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x0, 0x18, 0x0, 0x16, 0x17, 0x18, 0x0, 0x18, 0x18, 0x15, 0x18, 0x15, 0x18, 0x15, 0x17, 0x13, 0x17, 0x17, 0x18, 0x15, 0x18, 0x14, 0x18, 0x17, 0x18, 0x17, 0x17, 0x14, 0x18, 0x14, 0x15, 0x14, 0x17, 0x17, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x16, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x17, 0x16, 0x17, 0x15, 0x18, 0x15, 0x18, 0x18, 0x18, 0x15, 0x18, 0x16, 0x17, 0x16, 0x16, 0xf, 0x11, 0x11, 0x16, 0xe, 0x17, 0x18, 0x18, 0x16, 0x16, 0x15, 0x14, 0x14, 0x15, 0x15, 0x16, 0x14, 0x17, 0x16, 0x18, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x16, 0x18, 0x16, 0x17, 0x14, 0x15, 0x11, 0x18, 0x14, 0x15, 0x11, 0x12, 0x13, 0x14, 0x10, 0x13, 0x7, 0xf, 0x14, 0x18, 0x10, 0x12, 0x10, 0x13, 0x15, 0x12, 0x15, 0x12, 0x13, 0x11, 0x13, 0x10, 0x14, 0x11, 0x13, 0x12, 0x18, 0x15, 0x18, 0x15, 0x17, 0x16, 0x16, 0x0, 0x0, 0x18, 0x0, 0x16, 0x16, 0x18, 0x15, 0x15, 0x17, 0x18, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x14, 0x16, 0x17, 0x17, 0x12, 0x16, 0x15, 0x0, 0x15, 0x0, 0x16, 0x16, 0x16, 0x18, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x13, 0x14, 0x17, 0x15, 0x17, 0xf, 0x13, 0x15, 0x0, 0x15, 0x18, 0x14, 0x0, 0x15, 0x16, 0x13, 0x15, 0x18, 0xd, 0x10, 0xe, 0x15, 0x0, 0x0, 0x16, 0x13, 0x16, 0x16, 0x16, 0xf, 0x15, 0xf, 0x15, 0x16, 0x13, 0x12, 0x14, 0x11, 0x13, 0x11, 0x15, 0x15, 0x17, 0x17, 0x12, 0x15, 0x12, 0x16, 0x15, 0x13, 0x17, 0x15, 0x17, 0x11, 0x13, 0x12, 0x12, 0x10, 0x12, 0x14, 0x11, 0x17, 0x15, 0x18, 0x14, 0x18, 0x15, 0x17, 0x15, 0x17, 0x16, 0x18, 0x18, 0x0, 0x16, 0x16, 0x17, 0x15, 0x18, 0x14, 0x14, 0xf, 0x10, 0x11, 0x14, 0x13, 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x15, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x11, 0x13, 0x12, 0x17, 0x15, 0x17, 0x15, 0x14, 0x15, 0x14, 0x14, 0x14, 0x15, 0x13, 0x13, 0x13, 0x14, 0x18, 0x16, 0x15, 0x15, 0x14, 0x16, 0x15, 0x17, 0x18, 0x0, 0xf, 0xf, 0x10, 0x11, 0x16, 0x17, 0x18, 0x18, 0x16, 0x15, 0x15, 0x17, 0x17, 0x15, 0x17, 0x16, 0x18, 0x16, 0x18, 0x16, 0x16, 0x18, 0x0, 0x18, 0x18, 0x15, 0x18, 0x15, 0x17, 0x14, 0x17, 0x15, 0x18, 0x16, 0x0, 0x17, 0x0, 0x13, 0x11, 0xb, 0x13, 0x10, 0x16, 0x15, 0x18, 0x16, 0x17, 0x14, 0x16, 0x15, 0x17, 0x15, 0x17, 0x16, 0x18, 0x16, 0x17, 0x17, 0x16, 0x0, 0x16, 0x18, 0x18, 0x18, 0x13, 0x14, 0x11, 0x14, 0x12, 0x15, 0x17, 0x18, 0x13, 0x16, 0x15, 0x17, 0x14, 0x18, 0x14, 0x17, 0x16, 0x16, 0x14, 0x17, 0x12, 0x12, 0x9, 0x11, 0x14, 0x0, 0x0, 0x18, 0x16, 0x18, 0x16, 0x17, 0x16, 0x18, 0x16, 0x18, 0x18, 0x16, 0x15, 0x17, 0x17, 0x16, 0x16, 0x15, 0x15, 0x0, 0x18, 0x17, 0x15, 0x16, 0x17, 0x17, 0x14, 0x16, 0x15, 0x18, 0x18, 0x0, 0x17, 0x0, 0x17, 0x17, 0x17, 0x14, 0x16, 0x14, 0x17, 0x15, 0x18, 0x16, 0x0, 0x15, 0x18, 0x15, 0x18, 0x17, 0x16, 0x11, 0x18, 0x17, 0x16, 0x14, 0x13, 0xd, 0x14, 0x12, 0x15, 0xd, 0x14, 0x15, 0x17, 0x13, 0x13, 0x12, 0x15, 0x16, 0x14, 0x16, 0x14, 0x16, 0x14, 0x17, 0x15, 0x17, 0x16, 0x16, 0x14, 0x18, 0x17, 0x18, 0x17, 0x18, 0x15, 0x17, 0x15, 0x16, 0x15, 0x16, 0x16, 0x16, 0x17, 0x16, 0x14, 0x16, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x16, 0x18, 0x16, 0x16, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x15, 0x18, 0x15, 0x18, 0x15, 0x17, 0x14, 0x16, 0x14, 0x17, 0x15, 0x16, 0x11, 0x17, 0x14, 0x18, 0x14, 0x16, 0x10, 0x12, 0x17, 0x17, 0x17, 0x14, 0x16, 0x14, 0x17, 0x14, 0x18, 0x17, 0x0, 0x18, 0x18, 0x16, 0x16, 0x18, 0x13, 0x12, 0x14, 0x0, 0x0, 0x0, 0x17, 0x15, 0x17, 0x16, 0x17, 0xf, 0x16, 0x15, 0x18, 0x16, 0x15, 0x15, 0x17, 0x11, 0x13, 0x13, 0x17, 0x15, 0x17, 0x18, 0x14, 0x16, 0x14, 0x17, 0x17, 0x15, 0x18, 0x16, 0x18, 0x13, 0x15, 0x14, 0x14, 0x12, 0x14, 0x16, 0x14, 0x17, 0x14, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x17, 0x18, 0x0, 0x0, 0x16, 0x17, 0x18, 0x16, 0x18, 0x13, 0x11, 0xf, 0x15, 0x13, 0x11, 0x14, 0x13, 0x17, 0x18, 0x0, 0x17, 0x18, 0x15, 0x16, 0x15, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x18, 0x17, 0x18, 0x17, 0x16, 0x15, 0x12, 0x15, 0x12, 0x14, 0x14, 0x17, 0x17, 0x18, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x17, 0x18, 0x17, 0x16, 0x16, 0x17, 0x18, 0x14, 0x16, 0x17, 0x18, 0x11, 0x13, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x18, 0x15, 0x15, 0x0, 0x18, 0x18, 0x12, 0x18, 0x18, 0x18, 0x15, 0x18, 0x15, 0x18, 0x14, 0x18, 0x14, 0x18, 0x16, 0x0, 0x16, 0x13, 0xd, 0x16, 0x14, 0x15, 0x12, 0x17, 0x18, 0x18, 0x16, 0x17, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x0, 0x15, 0x16, 0x15, 0x16, 0x14, 0x17, 0x12, 0x15, 0x13, 0x15, 0x11, 0x15, 0x15, 0x0, 0x14, 0x18, 0x12, 0x16, 0x12, 0x13, 0x14, 0x17, 0x11, 0x14, 0x12, 0x16, 0x13, 0x18, 0x18, 0x18, 0x16, 0x16, 0x13, 0x16, 0x15, 0x18, 0x17, 0x18, 0x17, 0x16, 0x15, 0x18, 0x17, 0x15, 0x15, 0x14, 0x17, 0x18, 0x17, 0x18, 0x15, 0x15, 0x16, 0x17, 0x14, 0x16, 0x13, 0x17, 0x18, 0x18, 0x18, 0x0, 0x17, 0x16, 0x18, 0x18, 0x18, 0x14, 0x18, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x18, 0xc, 0x13, 0xc, 0x11, 0x16, 0x17, 0x12, 0x16, 0x16, 0x18, 0x13, 0x17, 0x13, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x0, 0x16, 0x18, 0x15, 0x17, 0x15, 0x16, 0x14, 0x16, 0x17, 0x18, 0x18, 0x17, 0x16, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x17, 0x16, 0x15, 0x17, 0x17, 0x16, 0x18, 0x17, 0x17, 0x13, 0x18, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x16, 0x18, 0x15, 0x18, 0x0, 0x17, 0x14, 0x14, 0x17, 0x14, 0x16, 0x14, 0x18, 0x14, 0x18, 0x12, 0x16, 0x0, 0x17, 0x14, 0x18, 0x12, 0xc, 0x14, 0x12, 0x18, 0x14, 0x16, 0x13, 0x13, 0x17, 0x12, 0x15, 0x11, 0x13, 0x11, 0x18, 0x13, 0x15, 0x13, 0x17, 0x12, 0x13, 0x13, 0x15, 0x15, 0x17, 0x14, 0x13, 0x15, 0x12, 0x16, 0x13, 0x12, 0x12, 0x13, 0x18, 0x12, 0x14, 0x13, 0x15, 0xe, 0x15, 0x14, 0x13, 0x16, 0x15, 0x0, 0x17, 0x17, 0x16, 0x18, 0x15, 0x15, 0x12, 0x16, 0x13, 0x16, 0x14, 0x18, 0x16, 0x16, 0x16, 0x14, 0x0, 0x15, 0x16, 0x16, 0x0, 0x17, 0x15, 0x16, 0x15, 0x18, 0x16, 0x17, 0x15, 0x16, 0x14, 0x15, 0x15, 0x17, 0x13, 0x14, 0x12, 0x14, 0x14, 0x16, 0x17, 0x14, 0x13, 0x10, 0x11, 0xe, 0x10, 0x15, 0x13, 0x17, 0x10, 0x13, 0x14, 0x14, 0x13, 0x13, 0x15, 0x15, 0x14, 0x13, 0x16, 0x14, 0x14, 0x14, 0x12, 0x13, 0x14, 0x14, 0x14, 0x15, 0x18, 0xf, 0x15, 0x13, 0x14, 0xf, 0x12, 0x15, 0x16, 0x13, 0x14, 0x14, 0x17, 0x15, 0x15, 0x16, 0x16, 0x13, 0x14, 0x18, 0x17, 0x18, 0x15, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x13, 0xc, 0x12, 0xd, 0x12, 0xf, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x18, 0x15, 0x15, 0x16, 0x17, 0x16, 0x18, 0x17, 0x17, 0x17, 0x15, 0x15, 0x15, 0x0, 0x14, 0x12, 0x13, 0x17, 0x14, 0x16, 0x13, 0x15, 0x13, 0x16, 0x14, 0x17, 0x17, 0x0, 0x16, 0x18, 0x16, 0x17, 0x14, 0x13, 0xd, 0xe, 0xd, 0x16, 0x16, 0x0, 0x18, 0x18, 0x15, 0x17, 0x15, 0x17, 0x15, 0x15, 0x14, 0x16, 0x15, 0x16, 0x15, 0x14, 0x17, 0x18, 0x14, 0x15, 0x13, 0x16, 0x17, 0x16, 0x15, 0x18, 0x14, 0x15, 0x15, 0x15, 0x16, 0x18, 0x15, 0x17, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x14, 0x14, 0xd, 0x13, 0xd, 0x13, 0x18, 0x18, 0x17, 0x17, 0x14, 0x18, 0x16, 0x0, 0x15, 0x15, 0x15, 0x16, 0x16, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x15, 0x16, 0x16, 0x18, 0x14, 0x16, 0x15, 0x16, 0x13, 0x15, 0x14, 0x16, 0x15, 0x13, 0x16, 0x14, 0x14, 0x16, 0x17, 0x16, 0x15, 0x15, 0x18, 0x16, 0x17, 0x17, 0x0, 0x15, 0x17, 0x14, 0x16, 0x17, 0x18, 0x17, 0x17, 0x14, 0x17, 0x15, 0x0, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x14, 0x14, 0x14, 0x14, 0x18, 0x18, 0x15, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x15, 0x18, 0x16, 0x18, 0x17, 0x0, 0x17, 0x18, 0x0, 0x17, 0x18, 0x18, 0x15, 0x16, 0x0, 0x15, 0x17, 0x17, 0x18, 0x15, 0x16, 0x13, 0x15, 0x16, 0x17, 0x17, 0x16, 0x16, 0x15, 0x0, 0x16, 0x15, 0x16, 0x15, 0x18, 0x15, 0x17, 0xe, 0x13, 0x17, 0x18, 0x15, 0x14, 0x16, 0x15, 0x17, 0x13, 0x15, 0x12, 0x14, 0x10, 0x14, 0x13, 0x16, 0x11, 0x14, 0x14, 0x15, 0x10, 0x11, 0x14, 0x10, 0x12, 0x12, 0x13, 0x14, 0x14, 0x12, 0xf, 0x13, 0x11, 0x14, 0x13, 0x12, 0x13, 0x15, 0x14, 0x15, 0x16, 0x18, 0x16, 0x15, 0x14, 0x17, 0x17, 0x17, 0x15, 0x13, 0x12, 0x12, 0x15, 0x15, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x14, 0x13, 0x16, 0x17, 0x17, 0x15, 0x16, 0x16, 0x16, 0x14, 0x15, 0x17, 0x18, 0x16, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x0, 0x17, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x14, 0x18, 0x15, 0x18, 0x18, 0x0, 0x13, 0x14, 0xf, 0x15, 0xe, 0x15, 0x18, 0x18, 0x16, 0x17, 0x16, 0x18, 0x17, 0x18, 0x15, 0x17, 0x13, 0x15, 0x14, 0x17, 0x11, 0x14, 0x15, 0x15, 0x15, 0x17, 0x14, 0x13, 0x17, 0x17, 0x16, 0x14, 0x16, 0x14, 0x17, 0x11, 0x14, 0x11, 0x15, 0x11, 0x14, 0x11, 0x15, 0x14, 0x15, 0x17, 0x18, 0x16, 0x0, 0x16, 0x0, 0x16, 0x0, 0x17, 0x16, 0x14, 0x15, 0x12, 0x16, 0x16, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x16, 0x16, 0x17, 0x16, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x16, 0x15, 0x15, 0x14, 0x14, 0x12, 0x14, 0x13, 0x17, 0x12, 0x16, 0x15, 0x10, 0x16, 0x14, 0x16, 0x13, 0x16, 0x12, 0x15, 0xd, 0x12, 0xd, 0x14, 0x10, 0x13, 0xc, 0x14, 0x15, 0x18, 0x14, 0x17, 0x18, 0x17, 0x16, 0x15, 0x12, 0x18, 0x16, 0x18, 0x14, 0x15, 0x15, 0x16, 0x13, 0x14, 0x16, 0x14, 0x17, 0x14, 0x17, 0x18, 0x18, 0x17, 0x17, 0x14, 0x16, 0x16, 0x18, 0x15, 0x17, 0x15, 0x17, 0x14, 0x15, 0x15, 0x17, 0x16, 0x13, 0x15, 0x14, 0x15, 0x16, 0x17, 0x15, 0x16, 0x15, 0x17, 0x13, 0x17, 0x17, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x18, 0x18, 0x0, 0x16, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x18, 0x0, 0x0, 0x11, 0x11, 0x13, 0x15, 0x14, 0x16, 0x15, 0x0, 0x18, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0x18, 0x17, 0x17, 0x15, 0x14, 0x17, 0x18, 0x0, 0x16, 0x0, 0x18, 0x0, 0x16, 0x16, 0x0, 0x15, 0x17, 0x16, 0x17, 0x13, 0x18, 0x14, 0x18, 0x15, 0x16, 0x16, 0x14, 0x11, 0x16, 0x16, 0x15, 0x17, 0x16, 0x17, 0x15, 0x0, 0x14, 0x17, 0x16, 0x12, 0x17, 0x14, 0x15, 0x11, 0x14, 0x12, 0x15, 0x13, 0x13, 0x12, 0x13, 0x15, 0x12, 0x14, 0x11, 0x13, 0x11, 0x16, 0x15, 0x17, 0x14, 0x16, 0x14, 0x12, 0x12, 0x13, 0x11, 0x10, 0x12, 0x13, 0x14, 0x15, 0x15, 0x15, 0x13, 0x15, 0x16, 0x18, 0x16, 0x17, 0x14, 0x15, 0x15, 0x18, 0x15, 0x17, 0x15, 0x16, 0x15, 0x16, 0x10, 0xf, 0x11, 0x11, 0x16, 0x16, 0x16, 0x15, 0x17, 0x17, 0x14, 0x17, 0x13, 0x16, 0x15, 0x14, 0x16, 0x16, 0x17, 0x14, 0x12, 0xf, 0x12, 0x15, 0x16, 0x13, 0x15, 0x12, 0x13, 0x13, 0x15, 0x12, 0x15, 0x11, 0x15, 0x15, 0x15, 0x12, 0x16, 0x14, 0x12, 0x15, 0x15, 0x14, 0x13, 0x15, 0x18, 0x17, 0x17, 0x16, 0x16, 0x0, 0x18, 0x0, 0x16, 0x18, 0x15, 0x17, 0x17, 0x0, 0x16, 0x17, 0x17, 0x18, 0x16, 0x16, 0x10, 0x12, 0x10, 0x18, 0x15, 0x17, 0x13, 0x13, 0x11, 0x16, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x15, 0x18, 0x15, 0x17, 0x16, 0x17, 0x17, 0x17, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x0, 0x16, 0x16, 0x14, 0x17, 0x13, 0x17, 0x15, 0x16, 0x14, 0x15, 0x12, 0x16, 0x12, 0x14, 0x11, 0x15, 0x10, 0x12, 0x13, 0x17, 0x17, 0x17, 0x16, 0x16, 0x12, 0x17, 0x15, 0x15, 0x15, 0x15, 0x12, 0x15, 0x14, 0x13, 0x14, 0x16, 0x16, 0x14, 0x18, 0x18, 0x13, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x17, 0x15, 0x17, 0x16, 0x16, 0x15, 0x15, 0x15, 0x15, 0x14, 0x15, 0x16, 0x18, 0x16, 0x17, 0x17, 0x14, 0x18, 0x17, 0x0, 0x16, 0x17, 0x16, 0x18, 0x14, 0x15, 0xc, 0x14, 0x13, 0x16, 0x12, 0x16, 0x15, 0x18, 0x14, 0x15, 0x14, 0x10, 0x12, 0x15, 0x11, 0x16, 0x12, 0x15, 0x11, 0x15, 0x14, 0x17, 0x12, 0x13, 0x14, 0x11, 0x14, 0x13, 0x17, 0x18, 0x17, 0x12, 0x15, 0x13, 0x16, 0x15, 0x17, 0x15, 0x16, 0x15, 0x16, 0x12, 0x13, 0x14, 0x14, 0x14, 0x11, 0x12, 0x10, 0x12, 0x13, 0x15, 0x14, 0x15, 0x13, 0x16, 0x11, 0x16, 0x15, 0x18, 0x13, 0x17, 0x16, 0x18, 0x13, 0x15, 0x18, 0x0, 0x16, 0x17, 0x14, 0x16, 0x12, 0x14, 0x10, 0x10, 0x10, 0x16, 0xf, 0xf, 0x13, 0x15, 0x14, 0x17, 0x12, 0x16, 0x16, 0x15, 0x17, 0x15, 0x0, 0x15, 0x15, 0x14, 0x0, 0x17, 0x17, 0x16, 0x17, 0x0, 0x0, 0x15, 0x14, 0x18, 0x17, 0x18, 0x14, 0x17, 0x16, 0x18, 0x16, 0x13, 0x17, 0x17, 0x0, 0x15, 0x17, 0x13, 0x17, 0x11, 0x11, 0x11, 0x12, 0x10, 0x13, 0x10, 0x12, 0x13, 0x15, 0x14, 0x12, 0x13, 0xe, 0x13, 0x12, 0x14, 0x14, 0x12, 0x17, 0x13, 0x16, 0x13, 0x18, 0x11, 0x14, 0x16, 0x14, 0x15, 0x14, 0x14, 0x13, 0x18, 0x15, 0x16, 0x11, 0x16, 0x13, 0x15, 0x13, 0x15, 0xf, 0x12, 0x10, 0x13, 0x15, 0x14, 0x14, 0x13, 0x12, 0x14, 0x14, 0x13, 0x11, 0x10, 0x13, 0x17, 0x17, 0x16, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x12, 0x13, 0xf, 0x12, 0xe, 0x12, 0x13, 0x14, 0x15, 0x15, 0x15, 0x13, 0x14, 0x15, 0x16, 0x0, 0x16, 0x17, 0x18, 0x16, 0x12, 0x13, 0x16, 0x15, 0x17, 0x17, 0x13, 0x10, 0x12, 0xf, 0x12, 0x11, 0x13, 0x14, 0x17, 0x14, 0x17, 0x13, 0x16, 0x14, 0x18, 0x13, 0x14, 0x15, 0x11, 0x12, 0x15, 0x14, 0x16, 0x14, 0x14, 0x14, 0x15, 0x14, 0x15, 0x17, 0x16, 0x18, 0x12, 0x16, 0x14, 0x16, 0x17, 0x0, 0x17, 0x18, 0xf, 0x13, 0x16, 0x0, 0x0, 0x18, 0x15, 0x17, 0x12, 0x17, 0x15, 0x15, 0x13, 0x17, 0x15, 0x17, 0x15, 0x17, 0x14, 0x17, 0x16, 0x18, 0x15, 0x17, 0x14, 0x16, 0x15, 0x15, 0x15, 0x16, 0x17, 0x15, 0x15, 0x16, 0x16, 0x15, 0x18, 0x15, 0x17, 0x14, 0x16, 0x14, 0x17, 0x15, 0x15, 0x15, 0x15, 0x14, 0x15, 0xc, 0x10, 0xc, 0x15, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x15, 0x16, 0x13, 0x16, 0x17, 0x17, 0x17, 0x18, 0x14, 0x16, 0x16, 0x16, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x16, 0x15, 0x17, 0x18, 0x16, 0x17, 0x15, 0x15, 0x15, 0x15, 0x17, 0x13, 0x16, 0x16, 0x17, 0x18, 0x17, 0x16, 0x16, 0x0, 0x15, 0x17, 0x16, 0x14, 0x17, 0x16, 0x18, 0x13, 0x14, 0xa, 0xc, 0xe, 0x16, 0x10, 0x14, 0x16, 0x0, 0x16, 0x15, 0x15, 0x18, 0x17, 0x18, 0x16, 0x15, 0x15, 0x16, 0x14, 0x17, 0x16, 0x0, 0x16, 0x18, 0x18, 0x17, 0x0, 0x17, 0x14, 0x15, 0x16, 0x13, 0x14, 0x14, 0x17, 0x14, 0x17, 0x14, 0x16, 0x17, 0x0, 0x13, 0x14, 0x13, 0x16, 0x11, 0x15, 0x16, 0x15, 0x17, 0x14, 0x16, 0x14, 0x13, 0x14, 0x17, 0x16, 0x15, 0x14, 0x17, 0x15, 0x17, 0x15, 0x17, 0x12, 0x17, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x15, 0x16, 0x0, 0x0, 0x12, 0x14, 0x12, 0x13, 0x16, 0x17, 0x15, 0x16, 0x18, 0x18, 0x12, 0x16, 0x14, 0x16, 0x17, 0x17, 0x18, 0x17, 0x0, 0x15, 0x16, 0x16, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x16, 0x0, 0x15, 0x18, 0x16, 0x18, 0x18, 0x18, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x14, 0x12, 0x13, 0x14, 0x12, 0x16, 0x15, 0x15, 0x17, 0x17, 0x17, 0x16, 0x16, 0x13, 0x16, 0x15, 0x17, 0x18, 0x16, 0x18, 0x15, 0x17, 0x15, 0x18, 0x15, 0x16, 0x17, 0x15, 0x16, 0x16, 0x15, 0x15, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x17, 0x17, 0x18, 0x18, 0x17, 0x17, 0x15, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x11, 0x10, 0x13, 0x13, 0x17, 0x14, 0x15, 0x16, 0x17, 0x17, 0x15, 0x15, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x15, 0x16, 0x17, 0x16, 0x17, 0x17, 0x15, 0xe, 0x13, 0x12, 0x13, 0x11, 0x14, 0x15, 0x16, 0x15, 0x17, 0x12, 0x17, 0x14, 0x17, 0x14, 0x14, 0x16, 0x12, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x16, 0x18, 0x15, 0x18, 0x15, 0x0, 0x16, 0x17, 0x15, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x16, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x17, 0x15, 0x15, 0x12, 0x16, 0x0, 0x18, 0xc, 0xf, 0xa, 0xd, 0x14, 0x18, 0x15, 0x14, 0x12, 0x10, 0x10, 0x13, 0x10, 0x14, 0x13, 0x13, 0x16, 0x18, 0x13, 0x14, 0x14, 0x14, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x16, 0xc, 0x10, 0x18, 0x0, 0x16, 0x17, 0x17, 0x18, 0x16, 0x15, 0x15, 0x18, 0x16, 0x17, 0x16, 0x15, 0x14, 0x17, 0x15, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x17, 0x18, 0x15, 0x15, 0x17, 0x17, 0x14, 0x16, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x18, 0x0, 0x17, 0x17, 0x15, 0x16, 0x11, 0x14, 0x15, 0x13, 0x13, 0x12, 0x15, 0x14, 0x15, 0x12, 0x16, 0x13, 0x15, 0x13, 0x15, 0x15, 0x18, 0x15, 0x16, 0x11, 0x15, 0x14, 0x15, 0x12, 0x15, 0x0, 0x0, 0x15, 0x15, 0x12, 0x13, 0xf, 0x11, 0x11, 0x14, 0x13, 0x11, 0x16, 0x15, 0x15, 0x17, 0x12, 0x17, 0x15, 0x16, 0x0, 0x18, 0x17, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x14, 0x18, 0x17, 0x16, 0x16, 0x16, 0x15, 0x14, 0x17, 0x15, 0x0, 0x14, 0x17, 0x17, 0x18, 0x17, 0x16, 0x16, 0x11, 0x15, 0x10, 0x16, 0x14, 0x17, 0x12, 0x10, 0x13, 0x13, 0x14, 0x17, 0x13, 0x11, 0x15, 0x15, 0x15, 0x13, 0x16, 0x11, 0x16, 0x14, 0x17, 0x17, 0x11, 0x16, 0x12, 0x16, 0x13, 0x17, 0x11, 0x14, 0x13, 0x13, 0x15, 0x15, 0x11, 0x10, 0x14, 0x12, 0x15, 0x13, 0x17, 0x13, 0x16, 0x13, 0x18, 0x15, 0x17, 0x16, 0x16, 0x14, 0x14, 0x15, 0x13, 0x13, 0x15, 0x16, 0x15, 0x13, 0x14, 0x13, 0x14, 0x13, 0x15, 0x12, 0x14, 0xf, 0x12, 0xe, 0x13, 0x10, 0x16, 0x14, 0x14, 0x14, 0x16, 0x12, 0x12, 0x14, 0x12, 0x14, 0x13, 0x13, 0x14, 0x11, 0x15, 0xf, 0x12, 0x12, 0x12, 0x15, 0x14, 0x14, 0x10, 0xf, 0xd, 0xe, 0xe, 0x13, 0x13, 0x11, 0x11, 0x16, 0x15, 0x15, 0x15, 0x18, 0x16, 0x18, 0x15, 0x15, 0x12, 0x14, 0x17, 0x18, 0x15, 0x16, 0x14, 0x14, 0x14, 0x15, 0x15, 0x16, 0x14, 0x14, 0x17, 0x15, 0x17, 0x16, 0x0, 0x17, 0x0, 0x13, 0x15, 0x10, 0x17, 0x17, 0x18, 0x16, 0x17, 0x12, 0x14, 0x11, 0x17, 0x13, 0x16, 0x15, 0x18, 0x15, 0x16, 0x13, 0x15, 0x15, 0x18, 0x15, 0x17, 0x16, 0x17, 0x13, 0x17, 0x14, 0x15, 0x16, 0x14, 0x16, 0x14, 0x15, 0x10, 0x10, 0x13, 0x15, 0x13, 0x17, 0x14, 0x16, 0x17, 0x0, 0x17, 0x18, 0x18, 0x17, 0xf, 0xe, 0xf, 0x15, 0x16, 0x17, 0x15, 0x15, 0x15, 0x18, 0x16, 0x16, 0x15, 0x14, 0x16, 0x17, 0x17, 0x18, 0x18, 0x16, 0x16, 0x16, 0x14, 0x13, 0x14, 0x14, 0x16, 0x15, 0x16, 0x16, 0x18, 0x17, 0x15, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x14, 0x16, 0x14, 0x16, 0x16, 0x15, 0x15, 0x16, 0x18, 0x15, 0x17, 0x18, 0x16, 0x16, 0xd, 0x10, 0x10, 0x18, 0x10, 0x14, 0x0, 0x0, 0x17, 0x17, 0x14, 0x17, 0x15, 0x15, 0x14, 0x0, 0x14, 0x13, 0x11, 0x13, 0x11, 0x14, 0x13, 0x17, 0x12, 0x15, 0x11, 0x15, 0x14, 0x15, 0x12, 0x11, 0x14, 0x14, 0x16, 0x13, 0x17, 0x15, 0x16, 0x12, 0x16, 0x14, 0x15, 0x16, 0x0, 0x14, 0x17, 0x15, 0x14, 0x11, 0x13, 0x13, 0x13, 0x12, 0x11, 0x15, 0x14, 0x14, 0x11, 0x14, 0x13, 0x15, 0x11, 0x14, 0x12, 0x15, 0x13, 0x16, 0x10, 0x14, 0x12, 0x15, 0x11, 0x11, 0x14, 0x17, 0x12, 0x15, 0x15, 0x14, 0x12, 0x14, 0x18, 0x18, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x15, 0x17, 0x16, 0x18, 0x18, 0x17, 0x18, 0x17, 0x0, 0x16, 0x0, 0x17, 0x18, 0x15, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x15, 0x18, 0x15, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x17, 0x13, 0x16, 0x14, 0x18, 0x16, 0x18, 0x13, 0x12, 0x15, 0x13, 0x15, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18, 0x17, 0x18, 0x14, 0x17, 0x14, 0x17, 0x17, 0x15, 0x17, 0x14, 0x16, 0x15, 0x17, 0x15, 0x17, 0x17, 0x17, 0x17, 0x17, 0x13, 0x14, 0x14, 0x10, 0x13, 0x12, 0x16, 0x14, 0x17, 0x14, 0x16, 0x13, 0x15, 0x14, 0x17, 0x16, 0x14, 0x14, 0x15, 0x16, 0x14, 0x14, 0x14, 0x16, 0x17, 0x16, 0x18, 0x16, 0x0, 0x14, 0x13, 0xd, 0x12, 0x12, 0x16, 0x15, 0x18, 0x16, 0x16, 0x15, 0x16, 0x13, 0x13, 0x15, 0x14, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x14, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x14, 0x17, 0x16, 0x14, 0x16, 0x18, 0x18, 0x14, 0x16, 0x17, 0x18, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x17, 0x15, 0x17, 0x17, 0x16, 0x17, 0x18, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x15, 0x17, 0x18, 0x12, 0x15, 0x11, 0x17, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x18, 0x15, 0x16, 0x15, 0x17, 0x15, 0x17, 0x14, 0x16, 0x13, 0x17, 0x17, 0x16, 0x15, 0x16, 0x12, 0x13, 0x10, 0x13, 0x13, 0x15, 0x12, 0x14, 0x15, 0x0, 0x15, 0x17, 0x16, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x17, 0x17, 0x15, 0x15, 0x14, 0x15, 0x17, 0x16, 0x17, 0x17, 0x0, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x17, 0x17, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x16, 0x13, 0x14, 0xb, 0x14, 0x14, 0x18, 0x13, 0x14, 0x14, 0x18, 0x17, 0x18, 0x15, 0x18, 0x16, 0x16, 0x14, 0x18, 0x16, 0x17, 0x15, 0x14, 0x14, 0x16, 0x14, 0x17, 0x14, 0x17, 0x16, 0x15, 0x15, 0x16, 0x16, 0x12, 0x13, 0x15, 0x16, 0x14, 0x17, 0x15, 0x15, 0x14, 0x16, 0x15, 0x17, 0x14, 0x17, 0x16, 0x17, 0x16, 0x18, 0x14, 0x14, 0x16, 0x17, 0x14, 0x10, 0x12, 0x12, 0x11, 0xd, 0x12, 0x10, 0x16, 0x12, 0x15, 0xf, 0x12, 0x12, 0x16, 0x11, 0x14, 0xb, 0x10, 0xc, 0xd, 0xd, 0x13, 0xf, 0x17, 0x11, 0xd, 0x11, 0x13, 0x14, 0x16, 0x13, 0x10, 0x15, 0x13, 0x16, 0x17, 0x16, 0x17, 0x12, 0x18, 0x16, 0x16, 0x17, 0x15, 0x18, 0x16, 0x0, 0x16, 0x18, 0x13, 0x16, 0x18, 0x15, 0x17, 0x16, 0x17, 0x13, 0x17, 0x14, 0x18, 0x15, 0x16, 0x13, 0x14, 0x16, 0x13, 0x16, 0x12, 0x16, 0x12, 0x16, 0x13, 0x16, 0x13, 0x14, 0x15, 0x13, 0x13, 0x12, 0x15, 0x17, 0x17, 0x17, 0x17, 0x14, 0x17, 0x12, 0x16, 0x13, 0x16, 0x18, 0x15, 0x18, 0x14, 0x16, 0x13, 0x16, 0x13, 0x16, 0x16, 0x16, 0x18, 0x18, 0x16, 0x17, 0x16, 0x12, 0x15, 0x13, 0x16, 0x16, 0x18, 0x15, 0x18, 0x16, 0x17, 0x17, 0x0, 0x17, 0x16, 0x16, 0x16, 0x16, 0x15, 0x15, 0x15, 0x17, 0x15, 0xc, 0xe, 0x10, 0x17, 0x16, 0x17, 0x13, 0x18, 0x17, 0x17, 0x17, 0x16, 0x16, 0x18, 0x14, 0x18, 0x14, 0x14, 0x15, 0x16, 0x17, 0x18, 0x15, 0x17, 0x14, 0x14, 0x12, 0x17, 0x12, 0x12, 0xe, 0xd, 0x12, 0x12, 0x16, 0x15, 0x13, 0x12, 0x17, 0x17, 0x18, 0x17, 0x16, 0x14, 0x15, 0x15, 0x18, 0x16, 0x0, 0x16, 0x17, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x16, 0x17, 0x17, 0x16, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x18, 0x12, 0x13, 0x13, 0x17, 0x15, 0x0, 0x16, 0x18, 0x16, 0x18, 0x16, 0x0, 0x15, 0x18, 0x16, 0x17, 0x16, 0x18, 0x0, 0x0, 0x18, 0x16, 0x14, 0x18, 0x17, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x16, 0x16, 0x18, 0x17, 0x16, 0x17, 0x17, 0x0, 0x15, 0x16, 0x15, 0x17, 0x13, 0x16, 0x12, 0x16, 0x15, 0x18, 0xf, 0x11, 0xd, 0x11, 0x11, 0x15, 0x16, 0x18, 0x0, 0x0, 0x16, 0x15, 0x17, 0x15, 0x15, 0x15, 0x13, 0x15, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x17, 0x18, 0x0, 0x0, 0x18, 0x16, 0x18, 0x17, 0x18, 0x14, 0x18, 0x0, 0x16, 0x16, 0x17, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x13, 0x14, 0x14, 0x17, 0x14, 0x15, 0x16, 0x18, 0x18, 0x14, 0x17, 0x11, 0x12, 0x13, 0x13, 0x18, 0x14, 0x0, 0x16, 0x16, 0x13, 0x16, 0x14, 0x17, 0x17, 0x18, 0x15, 0x17, 0x15, 0x17, 0x15, 0x17, 0x13, 0x14, 0x15, 0x13, 0x13, 0x14, 0x11, 0x16, 0x13, 0x17, 0x14, 0x14, 0x14, 0x15, 0x15, 0x10, 0x10, 0x12, 0x14, 0x13, 0x16, 0x13, 0x13, 0x12, 0x16, 0x15, 0x17, 0x13, 0x15, 0x12, 0x14, 0x14, 0x15, 0x15, 0x13, 0x15, 0x17, 0x16, 0x12, 0x12, 0x14, 0x15, 0x11, 0x10, 0xf, 0x13, 0x11, 0x16, 0x18, 0x0, 0x13, 0x18, 0x14, 0x14, 0xd, 0x11, 0x10, 0xf, 0x10, 0x16, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x16, 0x18, 0x16, 0x18, 0x0, 0x13, 0x13, 0xf, 0x14, 0x17, 0x15, 0x16, 0x12, 0x18, 0x12, 0x18, 0x10, 0x14, 0x13, 0x18, 0x16, 0x13, 0x16, 0x14, 0x18, 0x12, 0x17, 0x13, 0x17, 0x11, 0x13, 0x14, 0x15, 0x18, 0x16, 0x18, 0x11, 0x16, 0x11, 0x15, 0x17, 0x17, 0x16, 0x13, 0x15, 0x13, 0x12, 0x13, 0x16, 0x16, 0x17, 0x13, 0x15, 0x10, 0x16, 0x11, 0x15, 0x14, 0x14, 0x18, 0x14, 0x16, 0x11, 0x17, 0x15, 0x0, 0x14, 0x16, 0x17, 0x15, 0x13, 0x11, 0xf, 0x10, 0x12, 0x12, 0x17, 0x11, 0x14, 0x11, 0x14, 0xf, 0x12, 0x12, 0x15, 0x12, 0x16, 0x15, 0x16, 0x15, 0x15, 0x18, 0x0, 0x16, 0x17, 0x13, 0x15, 0x10, 0x16, 0x18, 0x0, 0x0, 0x0, 0x16, 0x18, 0x16, 0x18, 0x16, 0x15, 0x15, 0x18, 0x16, 0x16, 0x14, 0x15, 0x17, 0x17, 0x15, 0x15, 0x15, 0x17, 0x18, 0x18, 0x15, 0x16, 0x13, 0x12, 0x13, 0x15, 0x18, 0x18, 0x17, 0x15, 0x16, 0x15, 0x17, 0x15, 0x17, 0x16, 0x16, 0x14, 0x16, 0x16, 0x17, 0x16, 0x18, 0x15, 0x14, 0x12, 0x16, 0x17, 0x13, 0x13, 0x15, 0x15, 0x15, 0x15, 0x17, 0x17, 0x17, 0x13, 0x13, 0x11, 0xf, 0x17, 0x15, 0x0, 0x17, 0x0, 0x18, 0x0, 0x16, 0x18, 0x18, 0x18, 0x18, 0x16, 0x14, 0x16, 0x16, 0x17, 0x15, 0x18, 0x16, 0x16, 0x15, 0x17, 0x14, 0x17, 0x15, 0x18, 0x17, 0x18, 0x18, 0x0, 0x16, 0x17, 0x17, 0x16, 0x18, 0x17, 0x16, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x10, 0x14, 0xb, 0x11, 0x12, 0x14, 0x13, 0x17, 0x18, 0x18, 0x15, 0x16, 0x16, 0x16, 0x17, 0x18, 0x17, 0x16, 0x18, 0x16, 0x16, 0x16, 0x15, 0x16, 0x17, 0x17, 0x17, 0x18, 0x17, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x18, 0x17, 0x16, 0x16, 0x12, 0x17, 0x16, 0x13, 0x13, 0x17, 0x0, 0x14, 0x17, 0x13, 0x15, 0x13, 0x0, 0x14, 0x16, 0x17, 0x18, 0x13, 0x14, 0x13, 0x16, 0x12, 0x16, 0x10, 0x10, 0x13, 0x17, 0x11, 0x14, 0xf, 0x15, 0x11, 0x12, 0xf, 0x11, 0x11, 0x12, 0x13, 0xe, 0x12, 0xf, 0x12, 0xf, 0x11, 0xf, 0x17, 0x15, 0x17, 0x15, 0x15, 0x14, 0x18, 0x14, 0x15, 0x13, 0x14, 0x13, 0x12, 0x13, 0x15, 0x16, 0x12, 0x14, 0x14, 0x16, 0x12, 0x10, 0x13, 0x16, 0x15, 0x18, 0x0, 0x18, 0x10, 0x16, 0xd, 0xe, 0x10, 0x14, 0x13, 0x14, 0x12, 0x14, 0x10, 0x15, 0x13, 0x14, 0x16, 0x17, 0x16, 0x17, 0x16, 0x12, 0x13, 0x12, 0x18, 0x18, 0x15, 0x16, 0x16, 0x17, 0x18, 0x17, 0x18, 0x15, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x15, 0x18, 0x13, 0x13, 0x15, 0x15, 0x17, 0x13, 0x16, 0x12, 0x16, 0x11, 0x14, 0x18, 0x16, 0x13, 0x10, 0x10, 0x10, 0x14, 0x15, 0x16, 0x15, 0x17, 0x14, 0x16, 0x14, 0x18, 0x16, 0x18, 0x17, 0x17, 0x18, 0x15, 0x18, 0x14, 0x17, 0x16, 0x18, 0x14, 0x17, 0x16, 0x16, 0x15, 0x15, 0x13, 0x14, 0x16, 0x14, 0x17, 0x14, 0x17, 0x15, 0x17, 0x17, 0x16, 0x14, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x0, 0x16, 0x16, 0x11, 0x13, 0x13, 0x16, 0x17, 0x0, 0x0, 0x18, 0x14, 0x16, 0x14, 0x17, 0x14, 0x10, 0x13, 0x18, 0x13, 0x12, 0x13, 0x15, 0x15, 0x16, 0x14, 0x14, 0x13, 0x16, 0x18, 0x16, 0xd, 0xf, 0x11, 0x11, 0x14, 0x15, 0x16, 0x15, 0x14, 0x13, 0x15, 0x12, 0x14, 0xf, 0x13, 0x13, 0x13, 0x12, 0x14, 0x14, 0x17, 0x15, 0x18, 0x16, 0x15, 0x14, 0x18, 0x18, 0x15, 0x15, 0x17, 0x17, 0x17, 0x18, 0x0, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x17, 0x17, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x18, 0x17, 0x15, 0x16, 0x15, 0x18, 0x16, 0x18, 0x16, 0x17, 0x15, 0x17, 0x15, 0x17, 0x15, 0x18, 0x17, 0x18, 0x0, 0x18, 0x16, 0x15, 0x15, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x14, 0x16, 0x16, 0x18, 0x17, 0x17, 0xf, 0x12, 0x14, 0x16, 0x12, 0x13, 0x17, 0x17, 0x16, 0x15, 0x14, 0x13, 0x13, 0x15, 0x16, 0x14, 0x16, 0x15, 0x15, 0x14, 0x16, 0x16, 0x17, 0x15, 0x15, 0x16, 0x17, 0x16, 0x18, 0x17, 0x0, 0x0, 0x18, 0x14, 0x17, 0x18, 0x0, 0x17, 0x17, 0x17, 0x15, 0x16, 0x18, 0x15, 0x18, 0x18, 0x17, 0x17, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x14, 0x12, 0x11, 0x13, 0x15, 0x18, 0x17, 0x17, 0x18, 0x15, 0x17, 0x14, 0x17, 0x15, 0x18, 0x14, 0x15, 0x11, 0x14, 0x13, 0x16, 0x14, 0x16, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x16, 0x0, 0x18, 0x17, 0x12, 0x16, 0x15, 0x16, 0x12, 0x14, 0x16, 0x16, 0x16, 0x13, 0x15, 0x14, 0x16, 0x15, 0x15, 0x14, 0x17, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x14, 0x13, 0x15, 0x14, 0x17, 0x16, 0x16, 0x12, 0x14, 0x11, 0x15, 0x12, 0x14, 0x11, 0x17, 0xe, 0x14, 0x13, 0x16, 0x13, 0x15, 0x16, 0x16, 0x16, 0x14, 0x17, 0x0, 0x15, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x16, 0x17, 0x17, 0x0, 0x0, 0x11, 0x16, 0x16, 0x13, 0x15, 0x14, 0x16, 0x12, 0x18, 0x10, 0x17, 0x14, 0x17, 0x12, 0x13, 0x16, 0x17, 0x16, 0x12, 0x15, 0x13, 0x18, 0x13, 0x16, 0x10, 0x11, 0x14, 0x13, 0x17, 0xf, 0x13, 0x13, 0x17, 0x10, 0x13, 0x17, 0x13, 0x10, 0xf, 0x12, 0x11, 0x14, 0x14, 0x14, 0x12, 0x14, 0x10, 0x14, 0xf, 0x16, 0x14, 0x17, 0x16, 0x15, 0x16, 0x12, 0x16, 0x11, 0x16, 0x13, 0x16, 0x12, 0x15, 0x10, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x10, 0x14, 0x10, 0x16, 0x15, 0x17, 0x11, 0x13, 0x11, 0x16, 0x13, 0x16, 0x14, 0x18, 0x14, 0x13, 0x12, 0x12, 0x15, 0x0, 0x18, 0x18, 0x15, 0x16, 0x13, 0x16, 0x13, 0x17, 0x12, 0x16, 0x13, 0x13, 0x14, 0x18, 0x16, 0x17, 0x18, 0x0, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x0, 0x17, 0x16, 0x15, 0x14, 0x15, 0x14, 0x17, 0x17, 0x16, 0x18, 0x15, 0x16, 0x14, 0x0, 0x15, 0x16, 0x14, 0x17, 0x15, 0x17, 0x14, 0x17, 0x18, 0x18, 0x14, 0x15, 0x14, 0x12, 0x11, 0x14, 0x12, 0x16, 0x15, 0x13, 0xf, 0x13, 0x15, 0x16, 0x16, 0x17, 0x18, 0x14, 0x17, 0x14, 0x15, 0x16, 0x18, 0x12, 0x16, 0x15, 0x16, 0x15, 0x16, 0x10, 0x16, 0x13, 0x17, 0x12, 0x15, 0x13, 0x11, 0xf, 0x12, 0xf, 0x15, 0x14, 0x18, 0x16, 0x16, 0x17, 0x16, 0x11, 0xe, 0xd, 0x11, 0x14, 0x12, 0x13, 0x14, 0x17, 0x14, 0x15, 0x15, 0x15, 0x12, 0x0, 0x15, 0x17, 0x17, 0x0, 0x16, 0x18, 0x16, 0x16, 0x15, 0x18, 0x16, 0x17, 0x16, 0x16, 0x17, 0x0, 0x17, 0x16, 0x18, 0x0, 0x18, 0x16, 0x15, 0x15, 0x18, 0x16, 0x18, 0x14, 0x15, 0x15, 0x16, 0x16, 0x0, 0x16, 0x17, 0x17, 0x18, 0x16, 0x18, 0x0, 0x18, 0x14, 0x16, 0x14, 0x18, 0x16, 0x16, 0x14, 0x15, 0x12, 0x18, 0x0, 0x0, 0x0, 0x14, 0x15, 0x17, 0x17, 0x17, 0x0, 0x16, 0x16, 0x17, 0x13, 0x17, 0x12, 0x16, 0x14, 0x16, 0x13, 0x13, 0xf, 0x13, 0x14, 0x16, 0x16, 0x17, 0x15, 0x18, 0x16, 0x0, 0x16, 0x18, 0x17, 0x18, 0x18, 0x16, 0x12, 0x16, 0x14, 0x16, 0x12, 0x14, 0x16, 0x16, 0x15, 0x12, 0x15, 0x12, 0x15, 0x12, 0x13, 0x11, 0x14, 0xf, 0x14, 0x10, 0x17, 0x12, 0x15, 0x14, 0x17, 0x15, 0x14, 0x14, 0x14, 0x17, 0x15, 0x18, 0x18, 0x0, 0x17, 0x17, 0x12, 0x14, 0xf, 0x15, 0x16, 0x17, 0x12, 0x16, 0x15, 0x17, 0x17, 0x18, 0x17, 0x16, 0x15, 0x14, 0x17, 0x18, 0x15, 0x0, 0x17, 0x16, 0x14, 0x16, 0x14, 0x12, 0x12, 0x10, 0x12, 0x13, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x14, 0x12, 0x16, 0x11, 0x17, 0x14, 0x17, 0x14, 0x18, 0x15, 0x15, 0x0, 0x17, 0x17, 0x14, 0x17, 0x14, 0x18, 0x15, 0x16, 0x14, 0x14, 0x16, 0x11, 0x13, 0x11, 0x14, 0x12, 0x16, 0x14, 0x18, 0x0, 0x17, 0x14, 0x12, 0x16, 0x14, 0x15, 0x14, 0x14, 0x13, 0x17, 0x16, 0x0, 0x15, 0x17, 0x13, 0x16, 0x15, 0x14, 0x18, 0x17, 0x0, 0x16, 0x16, 0x11, 0x14, 0x12, 0x15, 0x11, 0x14, 0x15, 0x14, 0x13, 0x16, 0x14, 0x14, 0x16, 0x12, 0x17, 0x14, 0x18, 0x14, 0x15, 0x14, 0x15, 0x13, 0x14, 0x13, 0x17, 0x14, 0x14, 0x13, 0x15, 0x13, 0x14, 0x15, 0x18, 0x17, 0x18, 0x16, 0x17, 0x13, 0x18, 0x16, 0x17, 0x14, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x0, 0x0, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x17, 0x18, 0x18, 0x18, 0x17, 0x16, 0x15, 0x0, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x17, 0x17, 0x18, 0x14, 0x15, 0x17, 0x18, 0x15, 0x14, 0x16, 0x17, 0x0, 0x15, 0x17, 0x17, 0x17, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x0, 0x17, 0x17, 0x16, 0x16, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x16, 0x15, 0x16, 0x18, 0x17, 0x15, 0x16, 0x18, 0x18, 0x17, 0x13, 0x14, 0x12, 0x18, 0x14, 0x16, 0x15, 0x18, 0x16, 0x18, 0x17, 0x17, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x17, 0x17, 0x17, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x18, 0x18, 0x17, 0x13, 0x15, 0x11, 0x15, 0x12, 0x16, 0x13, 0x16, 0x15, 0x17, 0x18, 0x15, 0x15, 0x17, 0x14, 0x16, 0x12, 0x16, 0x13, 0x16, 0x17, 0x0, 0x10, 0x13, 0x14, 0x17, 0x14, 0x18, 0x16, 0x17, 0x15, 0x0, 0x15, 0x16, 0x15, 0x15, 0x12, 0x13, 0x13, 0x17, 0x13, 0x17, 0x15, 0x16, 0x17, 0x14, 0x12, 0x14, 0x16, 0x15, 0x15, 0x13, 0x14, 0x12, 0x16, 0x12, 0x16, 0x14, 0x14, 0x11, 0x16, 0x13, 0x15, 0x14, 0x14, 0x15, 0x16, 0x17, 0x15, 0x15, 0xf, 0x13, 0x10, 0x16, 0xd, 0xe, 0x11, 0x14, 0x11, 0x14, 0x15, 0x18, 0x13, 0x14, 0x12, 0x12, 0x13, 0x13, 0x14, 0x11, 0x14, 0x17, 0x15, 0x14, 0x16, 0x13, 0x15, 0x15, 0x16, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x18, 0x13, 0x11, 0x11, 0x12, 0x15, 0x14, 0x17, 0x14, 0x18, 0x16, 0x0, 0x16, 0x18, 0x17, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x0, 0x15, 0x17, 0x16, 0x17, 0x18, 0x14, 0x17, 0x16, 0x17, 0x15, 0x16, 0x18, 0x18, 0x18, 0x18, 0x15, 0x14, 0x16, 0x14, 0x15, 0x13, 0x15, 0x15, 0x18, 0x16, 0x18, 0x16, 0x17, 0x15, 0x17, 0x17, 0x17, 0x0, 0x17, 0x0, 0x17, 0x17, 0x13, 0x15, 0x12, 0x15, 0x15, 0x16, 0x16, 0x15, 0x13, 0x16, 0x17, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x16, 0x16, 0x16, 0x13, 0x15, 0x15, 0x18, 0x15, 0x15, 0x15, 0x17, 0x15, 0x15, 0x15, 0x17, 0x18, 0x0, 0x17, 0x18, 0x14, 0x18, 0x16, 0x17, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x16, 0x11, 0x15, 0x11, 0x13, 0x13, 0x14, 0x11, 0x13, 0x12, 0x15, 0x11, 0x13, 0x14, 0x14, 0x18, 0x13, 0x14, 0x13, 0x16, 0x17, 0x17, 0x13, 0x18, 0x18, 0x0, 0x16, 0x15, 0x13, 0x14, 0x13, 0x17, 0x15, 0x18, 0x18, 0x18, 0x14, 0x16, 0x16, 0x15, 0x12, 0x14, 0x17, 0x18, 0xf, 0x13, 0x16, 0x0, 0x15, 0x16, 0x16, 0x13, 0x0, 0x0, 0x0, 0x15, 0x17, 0x16, 0x18, 0x15, 0x13, 0x14, 0x17, 0x16, 0x18, 0x12, 0x18, 0x14, 0x15, 0x14, 0x17, 0x13, 0x15, 0x13, 0x15, 0x12, 0x10, 0xf, 0x13, 0x13, 0x15, 0x12, 0x15, 0x12, 0x14, 0x13, 0x12, 0x12, 0x15, 0x16, 0x12, 0x16, 0x15, 0x17, 0x16, 0x17, 0x17, 0x0, 0x17, 0x16, 0x14, 0x16, 0x15, 0x17, 0x13, 0x15, 0x15, 0x15, 0x16, 0x13, 0x15, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x16, 0x17, 0x17, 0x17, 0x15, 0x16, 0x14, 0x18, 0x16, 0x18, 0x15, 0x18, 0x15, 0x15, 0x17, 0x16, 0x12, 0x17, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x14, 0x18, 0x18, 0x15, 0xe, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x17, 0x17, 0x16, 0x16, 0x17, 0x16, 0x18, 0x13, 0x16, 0x16, 0x16, 0x16, 0x14, 0x12, 0x12, 0x15, 0x14, 0x15, 0x13, 0x16, 0x12, 0x14, 0x11, 0x16, 0x14, 0x15, 0x14, 0x18, 0x16, 0x17, 0x15, 0x15, 0x0, 0x17, 0x14, 0x11, 0x12, 0xc, 0x13, 0x11, 0x16, 0x13, 0x15, 0x16, 0x16, 0x14, 0x17, 0x16, 0x18, 0x17, 0x17, 0x15, 0x16, 0x15, 0x16, 0x15, 0x10, 0x13, 0x18, 0x16, 0x15, 0x15, 0x11, 0x14, 0x13, 0x15, 0x16, 0x0, 0x17, 0x0, 0x18, 0x18, 0x17, 0x15, 0x13, 0x14, 0x18, 0x17, 0x15, 0x17, 0x14, 0x17, 0x16, 0x17, 0x13, 0x16, 0x12, 0x16, 0x16, 0x13, 0x17, 0x16, 0x18, 0x14, 0x17, 0x13, 0x15, 0x13, 0x14, 0x17, 0x15, 0x0, 0x15, 0x17, 0x12, 0x13, 0x15, 0x18, 0x14, 0x16, 0x13, 0x13, 0x16, 0x15, 0x15, 0x14, 0x15, 0x14, 0x18, 0x14, 0x16, 0x14, 0x17, 0x17, 0x0, 0x18, 0x16, 0x18, 0x15, 0x16, 0x13, 0x15, 0x15, 0x16, 0x10, 0x14, 0x14, 0x17, 0x15, 0x15, 0x12, 0x17, 0x16, 0x14, 0x18, 0x0, 0x18, 0x17, 0x17, 0x14, 0x18, 0x14, 0x16, 0x14, 0x16, 0x16, 0x17, 0x16, 0x16, 0x17, 0x16, 0x16, 0x16, 0x12, 0x14, 0x15, 0x17, 0x14, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x18, 0x18, 0x17, 0x0, 0x16, 0x18, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x0, 0x17, 0x17, 0x17, 0x16, 0x17, 0x17, 0x16, 0x17, 0x16, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x16, 0x18, 0x0, 0x17, 0x14, 0x14, 0x14, 0x16, 0x16, 0x0, 0x17, 0x17, 0x15, 0x16, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x17, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x17, 0x15, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x17, 0x14, 0x14, 0x17, 0x16, 0x15, 0x0, 0x14, 0x15, 0x15, 0x15, 0x12, 0x16, 0x17, 0x16, 0x18, 0x15, 0x16, 0x17, 0x16, 0x0, 0x17, 0x0, 0x16, 0x18, 0x16, 0x0, 0x15, 0x15, 0x17, 0x17, 0x12, 0x15, 0x13, 0x18, 0x11, 0x16, 0x13, 0x12, 0x13, 0x13, 0x14, 0x16, 0x13, 0x15, 0x10, 0x15, 0x15, 0x13, 0x14, 0x14, 0x14, 0x11, 0x14, 0x12, 0x15, 0x14, 0x17, 0x13, 0x11, 0xe, 0x14, 0x14, 0x16, 0x14, 0x17, 0x14, 0x15, 0x10, 0x12, 0x15, 0xf, 0x12, 0xf, 0x12, 0x12, 0x14, 0xf, 0x12, 0xf, 0x10, 0x11, 0x13, 0x10, 0x16, 0xf, 0x13, 0x12, 0x12, 0x12, 0x13, 0x15, 0x11, 0x14, 0x12, 0x15, 0x16, 0x16, 0x15, 0x16, 0x14, 0x16, 0x14, 0x17, 0x12, 0x15, 0x12, 0x15, 0x12, 0x15, 0x16, 0xf, 0x12, 0x15, 0x13, 0x14, 0x15, 0x17, 0x11, 0x18, 0x15, 0x18, 0x12, 0x17, 0x16, 0x17, 0x0, 0x17, 0x0, 0x16, 0x0, 0x15, 0x17, 0x12, 0x14, 0x11, 0xf, 0x12, 0xf, 0x12, 0xe, 0x13, 0x11, 0x12, 0x13, 0x12, 0x10, 0x13, 0x15, 0x12, 0x18, 0x15, 0x15, 0x12, 0x18, 0x13, 0x14, 0x10, 0x15, 0x14, 0x16, 0x11, 0x13, 0x14, 0x12, 0x18, 0x12, 0x16, 0x13, 0x17, 0x16, 0x17, 0x11, 0x15, 0x12, 0x13, 0x11, 0x16, 0x12, 0x16, 0x15, 0x14, 0x0, 0x0, 0x18, 0x16, 0x0, 0x18, 0x0, 0x12, 0x15, 0x14, 0x17, 0x13, 0x16, 0x12, 0x14, 0x13, 0x16, 0x15, 0x13, 0x14, 0x16, 0x15, 0x18, 0x14, 0x0, 0x18, 0x15, 0x13, 0x0, 0x16, 0x0, 0x18, 0x17, 0x16, 0x0, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x0, 0x17, 0x17, 0x17, 0x0, 0x0, 0x17, 0x17, 0x17, 0x16, 0x17, 0x18, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x17, 0x18, 0x13, 0x16, 0x14, 0x14, 0x16, 0x16, 0x13, 0x14, 0x16, 0x15, 0x13, 0x17, 0x18, 0x18, 0x16, 0x17, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x16, 0x0, 0x17, 0x18, 0x15, 0x16, 0x17, 0x0, 0x16, 0x18, 0x15, 0x18, 0x16, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x0, 0x18, 0x14, 0x17, 0x14, 0x0, 0x0, 0x17, 0x17, 0x0, 0x15, 0x18, 0x14, 0x17, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x17, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x13, 0x14, 0x16, 0x0, 0x18, 0x0, 0x18, 0x17, 0x15, 0x16, 0x14, 0x18, 0x16, 0x17, 0x17, 0x0, 0x18, 0x15, 0x10, 0x15, 0xc, 0x11, 0x11, 0x17, 0x12, 0x13, 0x13, 0x15, 0x11, 0x14, 0x12, 0x14, 0x13, 0x17, 0x17, 0x17, 0x18, 0x15, 0x15, 0x17, 0x12, 0x17, 0x15, 0x17, 0x14, 0x16, 0x13, 0x16, 0x14, 0x16, 0x15, 0x16, 0x13, 0x15, 0x14, 0x16, 0x10, 0x13, 0x11, 0x12, 0x13, 0x13, 0xf, 0x14, 0x10, 0x14, 0x10, 0x16, 0x12, 0x14, 0x16, 0x15, 0x15, 0x11, 0x17, 0x13, 0x12, 0x12, 0x16, 0x12, 0x14, 0xf, 0x14, 0x13, 0x14, 0x11, 0x16, 0x12, 0x10, 0xb, 0xc, 0xf, 0xa, 0x10, 0x12, 0x18, 0x13, 0x16, 0x12, 0x16, 0x16, 0x16, 0x15, 0x17, 0x16, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x18, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x18, 0x16, 0x18, 0x17, 0x17, 0x15, 0x17, 0x18, 0x14, 0x16, 0x17, 0x16, 0x16, 0x16, 0x18, 0x14, 0x18, 0x15, 0x18, 0x14, 0x17, 0x16, 0x15, 0x18, 0x17, 0x18, 0x15, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x14, 0x16, 0x12, 0x14, 0x11, 0x15, 0x14, 0x15, 0x15, 0x14, 0x13, 0x15, 0x17, 0x16, 0x18, 0x18, 0x17, 0x15, 0x18, 0x15, 0x17, 0x12, 0x16, 0x15, 0x16, 0x14, 0x15, 0x16, 0x16, 0x18, 0x15, 0x17, 0x15, 0x18, 0x16, 0x17, 0x14, 0x16, 0x16, 0x16, 0x14, 0x17, 0x15, 0x17, 0x17, 0x15, 0x16, 0x17, 0x16, 0x16, 0x0, 0x0, 0x0, 0x16, 0x17, 0x17, 0x18, 0x15, 0x16, 0x13, 0x15, 0x15, 0x15, 0x16, 0x14, 0x16, 0x0, 0x16, 0x0, 0x16, 0x0, 0x18, 0x16, 0x13, 0x18, 0x14, 0x18, 0x17, 0x17, 0x17, 0x0, 0x16, 0x16, 0x12, 0x17, 0x16, 0x17, 0x14, 0x15, 0x14, 0x16, 0x16, 0x17, 0x14, 0x16, 0x17, 0x16, 0x18, 0x18, 0x18, 0x17, 0x16, 0x13, 0x16, 0x14, 0x17, 0x16, 0x16, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x18, 0x18, 0x16, 0x17, 0x17, 0x16, 0x17, 0x17, 0x0, 0x17, 0x0, 0x16, 0x0, 0x17, 0x18, 0x17, 0x18, 0x0, 0x0, 0x16, 0x18, 0x16, 0x18, 0x16, 0x18, 0x18, 0x0, 0x16, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x17, 0x18, 0x16, 0x16, 0x16, 0x0, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x14, 0x17, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x16, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x17, 0x16, 0x16, 0x11, 0x17, 0x14, 0x14, 0x16, 0x17, 0x11, 0x12, 0x13, 0x15, 0x11, 0x13, 0x12, 0x13, 0x15, 0x16, 0x16, 0x17, 0x18, 0x16, 0x15, 0x17, 0x13, 0x16, 0x14, 0x16, 0x13, 0x13, 0x12, 0x14, 0x13, 0x15, 0x14, 0x15, 0x14, 0x16, 0x15, 0x17, 0x15, 0x16, 0x15, 0x16, 0x16, 0x16, 0x14, 0x17, 0x14, 0x16, 0x14, 0x17, 0x15, 0x16, 0x17, 0x16, 0x15, 0x13, 0x17, 0x13, 0x12, 0x13, 0x16, 0x14, 0x14, 0x13, 0x16, 0x14, 0x15, 0x13, 0x17, 0x11, 0x11, 0x13, 0x13, 0x14, 0xf, 0x10, 0x13, 0x16, 0x12, 0x13, 0xd, 0xf, 0xf, 0x10, 0xd, 0xd, 0xc, 0x15, 0x12, 0x14, 0x16, 0x15, 0x16, 0x14, 0x18, 0x16, 0x17, 0x16, 0x16, 0x14, 0x16, 0x13, 0x15, 0x10, 0x12, 0x10, 0x14, 0x11, 0x14, 0x12, 0x16, 0x13, 0x16, 0x14, 0xd, 0x10, 0x13, 0x11, 0x12, 0x13, 0x17, 0x11, 0x0, 0x17, 0x18, 0x13, 0x16, 0x13, 0x12, 0x16, 0x13, 0x18, 0x13, 0x16, 0x15, 0x18, 0x17, 0x0, 0x17, 0x17, 0x0, 0x15, 0x17, 0x14, 0x14, 0x12, 0x15, 0x16, 0x15, 0x16, 0x17, 0x16, 0x11, 0x16, 0x13, 0x15, 0x11, 0x15, 0x13, 0x16, 0xf, 0x12, 0xe, 0x10, 0xd, 0x11, 0x12, 0x11, 0x14, 0xf, 0x14, 0xd, 0x10, 0x10, 0x14, 0x11, 0x15, 0x16, 0x17, 0x18, 0x17, 0x14, 0x18, 0x10, 0xc, 0xe, 0x12, 0x14, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x17, 0x14, 0x16, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x16, 0x17, 0x14, 0x18, 0x15, 0x18, 0x18, 0x0, 0x15, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x15, 0x16, 0x17, 0x18, 0x16, 0x17, 0x18, 0x16, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x16, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x16, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x18, 0x0, 0x17, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x15, 0x18, 0x17, 0x18, 0x17, 0x14, 0x14, 0x15, 0x0, 0x15, 0x16, 0x13, 0x16, 0x15, 0x15, 0x11, 0x16, 0x14, 0x17, 0x14, 0x18, 0x13, 0x15, 0x15, 0x13, 0x16, 0x14, 0x12, 0x14, 0x15, 0x14, 0x16, 0x12, 0x18, 0x15, 0x16, 0x16, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x13, 0x15, 0x12, 0x13, 0x14, 0x17, 0x15, 0x17, 0x15, 0x14, 0xd, 0x12, 0x10, 0xf, 0x13, 0x0, 0x11, 0x17, 0x12, 0x12, 0x10, 0x17, 0x12, 0x16, 0xf, 0x13, 0x12, 0x16, 0x14, 0x16, 0x13, 0x15, 0x17, 0x15, 0x14, 0x0, 0x14, 0x18, 0x15, 0x18, 0x14, 0x14, 0x13, 0x14, 0x12, 0x14, 0x16, 0x17, 0x15, 0x16, 0x15, 0x17, 0x13, 0x15, 0x16, 0x16, 0x16, 0x14, 0x12, 0x14, 0x11, 0x15, 0x11, 0x15, 0x12, 0x11, 0x13, 0x13, 0x15, 0x10, 0x17, 0x14, 0x17, 0x13, 0x14, 0x12, 0x15, 0x16, 0x18, 0x15, 0x16, 0x15, 0x16, 0x14, 0x15, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x16, 0x16, 0x14, 0x16, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x17, 0x15, 0x15, 0x18, 0x15, 0x17, 0x16, 0x18, 0x16, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x17, 0x18, 0x11, 0x17, 0x14, 0x16, 0x15, 0x16, 0x15, 0x12, 0x15, 0x14, 0x17, 0x16, 0x16, 0x18, 0x18, 0x16, 0x13, 0x16, 0x16, 0x15, 0x13, 0x17, 0x13, 0x15, 0x13, 0x16, 0x14, 0x17, 0x13, 0x15, 0x12, 0x13, 0x14, 0x16, 0x18, 0x14, 0x17, 0x14, 0x17, 0x15, 0x16, 0x14, 0x16, 0x15, 0x16, 0x15, 0x17, 0x16, 0x18, 0x0, 0x0, 0x11, 0x11, 0x10, 0x14, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x10, 0x12, 0xd, 0xd, 0x10, 0xe, 0x10, 0x11, 0x10, 0x12, 0x15, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x18, 0x16, 0x18, 0x18, 0x17, 0x15, 0x17, 0x18, 0x0, 0x16, 0x0, 0x0, 0x0, 0x16, 0x0, 0x18, 0x16, 0x18, 0x18, 0x17, 0x16, 0x17, 0x15, 0x18, 0x16, 0x16, 0x16, 0x16, 0x18, 0x17, 0x14, 0x15, 0x15, 0x18, 0x16, 0x17, 0x14, 0x15, 0x13, 0x14, 0x15, 0x16, 0x15, 0x16, 0x11, 0x10, 0x11, 0x16, 0x17, 0x16, 0x14, 0x17, 0x18, 0x0, 0x0, 0x15, 0x18, 0x15, 0x18, 0x16, 0x17, 0x15, 0x15, 0x13, 0x14, 0x14, 0x15, 0x14, 0x16, 0x16, 0x16, 0x12, 0x16, 0x14, 0x16, 0x17, 0x18, 0x17, 0x17, 0x14, 0x14, 0x14, 0x15, 0x13, 0x14, 0x15, 0x15, 0x14, 0x14, 0x14, 0x12, 0x15, 0x13, 0x15, 0x13, 0x16, 0x14, 0x15, 0x12, 0x16, 0x13, 0x15, 0x13, 0x14, 0x15, 0x16, 0x16, 0x15, 0x17, 0x0, 0x0, 0x18, 0x16, 0x15, 0x17, 0x14, 0x17, 0x15, 0x16, 0x15, 0x17, 0x15, 0x17, 0x14, 0x16, 0x12, 0x15, 0x12, 0x13, 0x13, 0x14, 0x13, 0x16, 0x14, 0x14, 0x11, 0x13, 0x12, 0x15, 0x17, 0x18, 0x16, 0x17, 0x15, 0x18, 0x15, 0x16, 0x14, 0x17, 0x15, 0x17, 0x14, 0x16, 0x15, 0x17, 0x16, 0x17, 0x14, 0x15, 0x18, 0x17, 0x16, 0x0, 0x15, 0x18, 0x16, 0x18, 0x16, 0x16, 0x15, 0x15, 0x14, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x18, 0x15, 0x17, 0x16, 0x17, 0x16, 0x16, 0x14, 0x16, 0x15, 0x17, 0x14, 0x16, 0x14, 0x14, 0x15, 0x15, 0x15, 0x12, 0x17, 0x15, 0x17, 0x13, 0x14, 0x12, 0x15, 0x14, 0x18, 0x15, 0x16, 0x13, 0x15, 0x13, 0x15, 0x15, 0x16, 0x17, 0x13, 0x15, 0x13, 0x16, 0x17, 0x18, 0x13, 0x16, 0x15, 0x14, 0x13, 0x16, 0xf, 0x14, 0x11, 0x15, 0x15, 0x12, 0x14, 0x12, 0x18, 0x14, 0x16, 0x15, 0x17, 0x15, 0x18, 0x14, 0x16, 0x14, 0x14, 0x13, 0x16, 0x13, 0x16, 0x12, 0x15, 0x14, 0x14, 0x17, 0x13, 0x13, 0x15, 0x14, 0x16, 0x13, 0x16, 0x11, 0x15, 0x14, 0x15, 0x13, 0x17, 0x13, 0x13, 0x17, 0x14, 0x17, 0x11, 0x17, 0x16, 0x17, 0x15, 0x16, 0x17, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x14, 0x16, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x15, 0x15, 0x12, 0x17, 0x13, 0x16, 0x13, 0x15, 0x17, 0x18, 0x0, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x15, 0x17, 0x15, 0x16, 0x14, 0x17, 0x16, 0x18, 0x0, 0x0, 0x13, 0x17, 0x16, 0x14, 0x18, 0x18, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x14, 0x12, 0xf, 0xe, 0xd, 0xd, 0xe, 0x11, 0x15, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x16, 0x18, 0x16, 0x14, 0x15, 0x16, 0x15, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x16, 0x17, 0x18, 0x0, 0x16, 0x18, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16, 0x18, 0x0, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x16, 0x16, 0x17, 0x17, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x17, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x16, 0x18, 0x16, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x16, 0x17, 0x16, 0x18, 0x17, 0x17, 0x17, 0x17, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x16, 0x14, 0x14, 0x18, 0x16, 0x16, 0x0, 0x15, 0x16, 0x16, 0x17, 0x16, 0x16, 0x14, 0x15, 0x13, 0x16, 0x15, 0x15, 0x14, 0x14, 0x12, 0x0, 0x18, 0x0, 0x0, 0x15, 0x16, 0x17, 0x12, 0x16, 0x11, 0x14, 0x14, 0x16, 0x14, 0x15, 0x12, 0x14, 0x15, 0x17, 0x12, 0x15, 0x13, 0x17, 0x12, 0x12, 0x13, 0x11, 0x12, 0x12, 0xf, 0x11, 0x10, 0x17, 0x11, 0x14, 0x13, 0x12, 0x16, 0x14, 0x14, 0x10, 0x16, 0x13, 0x15, 0x14, 0x15, 0x12, 0x13, 0x10, 0x12, 0x12, 0x14, 0x12, 0x13, 0x15, 0x14, 0x16, 0x14, 0x18, 0x16, 0x18, 0x16, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x17, 0x17, 0x15, 0x17, 0x16, 0x18, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x15, 0x15, 0x16, 0x15, 0x17, 0x14, 0x17, 0x16, 0x15, 0x17, 0x14, 0x13, 0x14, 0x14, 0x17, 0x15, 0x17, 0x13, 0x17, 0x15, 0x18, 0x15, 0x17, 0x17, 0x15, 0x0, 0x17, 0x15, 0xd, 0x12, 0x11, 0x13, 0x13, 0x14, 0x16, 0x13, 0x17, 0x15, 0x17, 0x15, 0x16, 0x15, 0x17, 0x17, 0x17, 0x17, 0x15, 0x15, 0x12, 0x16, 0x12, 0x15, 0x14, 0x0, 0x18, 0x18, 0x15, 0x0, 0x14, 0x15, 0x15, 0x14, 0x17, 0x17, 0x0, 0x14, 0x17, 0x15, 0x16, 0x14, 0x16, 0x14, 0x14, 0x14, 0x17, 0x17, 0x17, 0x15, 0x18, 0x17, 0x0, 0x0, 0x16, 0x0, 0x18, 0x15, 0x17, 0x17, 0x16, 0x18, 0x18, 0x16, 0x17, 0x0, 0x17, 0x13, 0x13, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x15, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x15, 0x15, 0x18, 0x18, 0x18, 0x0, 0x0, 0x17, 0x16, 0x18, 0x0, 0x0, 0x16, 0x17, 0x17, 0x0, 0x0, 0x14, 0x16, 0x15, 0x12, 0x14, 0x14, 0x14, 0x18, 0x17, 0x17, 0x18, 0x15, 0x15, 0x15, 0x14, 0x18, 0x13, 0x16, 0x16, 0x17, 0x15, 0x15, 0x13, 0x14, 0x15, 0x17, 0x15, 0x15, 0x15, 0x15, 0x14, 0x17, 0x18, 0x17, 0x15, 0x16, 0x16, 0x13, 0x15, 0x17, 0x0, 0x18, 0x0, 0x16, 0x0, 0x0, 0x0, 0x17, 0x16, 0x16, 0x18, 0x16, 0x16, 0x17, 0x18, 0x16, 0x15, 0x13, 0x15, 0x16, 0x0, 0x17, 0x16, 0x14, 0x18, 0x17, 0x16, 0x14, 0x15, 0x14, 0x17, 0x15, 0x16, 0x17, 0x14, 0x13, 0x13, 0x16, 0x14, 0x18, 0x14, 0x16, 0x15, 0x18, 0x16, 0x16, 0x15, 0x17, 0x0, 0x0, 0x18, 0x16, 0x17, 0x13, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x16, 0x18, 0x15, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x17, 0x18, 0x16, 0x17, 0x18, 0x18, 0x17, 0x17, 0x15, 0x17, 0x17, 0x17, 0x15, 0x17, 0x16, 0x18, 0x15, 0x15, 0x16, 0x14, 0x14, 0x15, 0x14, 0x15, 0x14, 0x18, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x17, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x16, 0x13, 0x16, 0x16, 0x15, 0x11, 0x12, 0x13, 0x14, 0x14, 0x12, 0x17, 0x12, 0x16, 0x11, 0x16, 0x13, 0x16, 0x14, 0x17, 0x16, 0x14, 0x15, 0x14, 0x10, 0x15, 0x12, 0x11, 0x14, 0x11, 0x14, 0x11, 0x18, 0x16, 0x14, 0x12, 0x16, 0x15, 0x17, 0x11, 0x16, 0x11, 0x15, 0x14, 0x17, 0x15, 0x16, 0x13, 0x15, 0x15, 0x17, 0x16, 0x15, 0x14, 0x15, 0x15, 0x17, 0x15, 0x18, 0x13, 0x17, 0x16, 0x18, 0x14, 0x15, 0x16, 0x15, 0x0, 0x17, 0x16, 0x10, 0x15, 0x14, 0x15, 0x16, 0x14, 0x16, 0x15, 0x0, 0x15, 0x17, 0x17, 0x17, 0x18, 0x16, 0x18, 0x16, 0x0, 0x18, 0x18, 0x17, 0x18, 0x16, 0x17, 0x16, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x16, 0x17, 0x15, 0x17, 0x17, 0x17, 0x16, 0x17, 0x11, 0x14, 0x14, 0x14, 0x16, 0x16, 0x14, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x16, 0x17, 0xf, 0xd, 0x11, 0x13, 0xe, 0x11, 0x15, 0x14, 0x14, 0x17, 0x17, 0x15, 0x11, 0xd, 0x12, 0x12, 0x15, 0x14, 0x15, 0x15, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x17, 0x16, 0x18, 0x15, 0x18, 0x17, 0x18, 0x16, 0x17, 0x15, 0x16, 0x17, 0x18, 0x18, 0x17, 0x17, 0x16, 0x16, 0x18, 0x17, 0x16, 0x15, 0x18, 0x18, 0x16, 0x0, 0x16, 0x18, 0x15, 0x18, 0x16, 0x18, 0x17, 0x0, 0x16, 0x17, 0x16, 0x18, 0x13, 0x15, 0x16, 0x16, 0x15, 0x17, 0x17, 0x17, 0x15, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x15, 0x17, 0x16, 0x18, 0x16, 0x18, 0x15, 0x17, 0x14, 0x0, 0x15, 0x16, 0x13, 0x16, 0x13, 0x18, 0x16, 0x16, 0x15, 0x14, 0x15, 0x0, 0x13, 0x17, 0x13, 0x16, 0x15, 0x15, 0x14, 0x16, 0x14, 0x14, 0x16, 0x16, 0x15, 0x16, 0x17, 0x18, 0x14, 0x13, 0x15, 0x17, 0x17, 0x17, 0x14, 0x14, 0x12, 0x17, 0x13, 0x14, 0x13, 0x10, 0x13, 0xf, 0x13, 0xf, 0x16, 0x12, 0x14, 0x11, 0x14, 0x13, 0x12, 0x10, 0x14, 0x15, 0x15, 0x15, 0x14, 0x15, 0x15, 0x16, 0x15, 0x17, 0x16, 0x18, 0x17, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x17, 0x16, 0x18, 0x18, 0x0, 0x17, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x17, 0x14, 0x17, 0x16, 0x18, 0x17, 0x16, 0x15, 0x18, 0x14, 0x15, 0x12, 0x15, 0x10, 0x16, 0x14, 0x14, 0x11, 0xf, 0x12, 0x13, 0x0, 0x16, 0x16, 0x10, 0x16, 0x12, 0x14, 0x15, 0x15, 0x17, 0x15, 0x18, 0x13, 0x16, 0x15, 0x15, 0x16, 0x12, 0x13, 0x12, 0x16, 0x18, 0x17, 0x16, 0x18, 0x16, 0x16, 0x13, 0x16, 0x12, 0x15, 0x11, 0x14, 0x15, 0x16, 0x14, 0x11, 0x13, 0x10, 0x16, 0x14, 0x15, 0x14, 0x17, 0x0, 0x0, 0x14, 0x18, 0x16, 0x17, 0x14, 0x13, 0x11, 0x14, 0xc, 0xf, 0x13, 0x11, 0x10, 0x10, 0xe, 0x10, 0x12, 0x14, 0x13, 0x14, 0x14, 0x15, 0x15, 0x14, 0x15, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x13, 0x12, 0x13, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x0, 0x14, 0x14, 0x17, 0x16, 0x15, 0x17, 0x18, 0x17, 0x13, 0x12, 0x17, 0x18, 0x18, 0x18, 0x16, 0x15, 0x16, 0x16, 0x17, 0x18, 0x18, 0x18, 0x0, 0x16, 0x15, 0x12, 0x17, 0x14, 0x17, 0x15, 0x13, 0x13, 0x15, 0x17, 0x18, 0x16, 0x16, 0x16, 0x15, 0x14, 0x18, 0x16, 0x15, 0x14, 0x18, 0x18, 0x14, 0x0, 0x16, 0x16, 0x15, 0x17, 0x17, 0x17, 0x16, 0x18, 0x16, 0x17, 0x17, 0x0, 0x14, 0x15, 0x15, 0x14, 0x15, 0x17, 0x17, 0x16, 0x13, 0x15, 0x17, 0x0, 0x16, 0x17, 0x17, 0x17, 0x17, 0x0, 0x15, 0x16, 0x16, 0x16, 0x17, 0x16, 0x0, 0x16, 0x16, 0x13, 0x16, 0x13, 0x14, 0x12, 0x17, 0x16, 0x16, 0x14, 0x17, 0x0, 0x0, 0x18, 0x15, 0x18, 0x14, 0x17, 0x16, 0x17, 0x16, 0x18, 0x15, 0x18, 0x16, 0x18, 0x14, 0x16, 0x14, 0x17, 0x13, 0x15, 0x12, 0x14, 0x13, 0x14, 0x16, 0x17, 0x18, 0x0, 0x16, 0x14, 0x15, 0x17, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x16, 0x18, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x0, 0x16, 0x18, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x16, 0x17, 0x18, 0x18, 0x15, 0x14, 0x15, 0x18, 0x17, 0x18, 0x16, 0x15, 0x14, 0x18, 0x14, 0x15, 0x14, 0x13, 0x14, 0x12, 0x14, 0x12, 0x17, 0x13, 0x15, 0x12, 0x14, 0x14, 0x13, 0x12, 0x15, 0x16, 0x15, 0x14, 0x15, 0x14, 0x14, 0x15, 0x11, 0x11, 0x12, 0x16, 0x14, 0x18, 0x15, 0x17, 0x12, 0x13, 0x12, 0x14, 0x12, 0x15, 0x14, 0x17, 0x14, 0x14, 0x16, 0x14, 0x16, 0x11, 0x17, 0x12, 0x15, 0x11, 0x15, 0x15, 0x16, 0x16, 0x16, 0x13, 0x15, 0x13, 0x16, 0x11, 0x16, 0x11, 0x14, 0x12, 0x13, 0x13, 0x13, 0x12, 0x14, 0x10, 0x12, 0x10, 0x13, 0x12, 0x13, 0x13, 0x16, 0x14, 0x16, 0x16, 0x12, 0x16, 0x14, 0x14, 0xe, 0x14, 0x13, 0x13, 0x15, 0x15, 0x16, 0x12, 0x16, 0x14, 0x16, 0x16, 0x14, 0x15, 0x14, 0x18, 0x14, 0x15, 0x13, 0x18, 0x13, 0x16, 0x16, 0x16, 0x15, 0x18, 0x14, 0x18, 0x15, 0x16, 0x15, 0x16, 0x18, 0x17, 0x17, 0x13, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x16, 0x13, 0x15, 0x16, 0x18, 0x16, 0x13, 0x14, 0x14, 0xf, 0x12, 0xf, 0x13, 0x14, 0x15, 0x14, 0x13, 0x17, 0x0, 0x13, 0xf, 0xf, 0x13, 0x12, 0x10, 0xe, 0xf, 0x10, 0xf, 0x10, 0xf, 0xf, 0xe, 0x11, 0x16, 0x17, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x16, 0x17, 0x16, 0x16, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x14, 0x0, 0x18, 0x15, 0x16, 0x15, 0x13, 0xc, 0xc, 0x11, 0xf, 0xf, 0x11, 0x18, 0x0, 0x18, 0x13, 0x18, 0x16, 0x18, 0x16, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x16, 0x18, 0x18, 0x15, 0x12, 0x14, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x15, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x17, 0x13, 0x17, 0x17, 0x17, 0x18, 0x16, 0x15, 0x15, 0x13, 0x16, 0x15, 0x16, 0x14, 0x13, 0x15, 0x14, 0x16, 0x11, 0x15, 0x15, 0x18, 0x14, 0x16, 0x14, 0x16, 0x13, 0x15, 0x13, 0x16, 0x18, 0x17, 0x17, 0x13, 0x17, 0x13, 0x15, 0x13, 0x17, 0x16, 0x17, 0x13, 0x17, 0x16, 0x17, 0x13, 0x16, 0x15, 0x15, 0x14, 0x17, 0x15, 0x16, 0x16, 0x15, 0x17, 0x15, 0x15, 0x16, 0x16, 0x16, 0x17, 0x17, 0x0, 0x18, 0x18, 0x17, 0x16, 0x17, 0x16, 0x16, 0x17, 0x18, 0x17, 0x17, 0x14, 0x17, 0x15, 0x16, 0x15, 0x15, 0x13, 0x18, 0x0, 0x17, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x15, 0x15, 0x18, 0x15, 0x17, 0x17, 0x15, 0x15, 0x15, 0x14, 0x16, 0x17, 0x0, 0x15, 0x17, 0x15, 0x14, 0x16, 0x15, 0x16, 0x10, 0x12, 0x12, 0x15, 0x13, 0x12, 0x14, 0x16, 0x15, 0x0, 0x16, 0x16, 0x17, 0x18, 0x17, 0x16, 0x15, 0x14, 0x18, 0x16, 0x17, 0x17, 0x18, 0x15, 0x17, 0x17, 0x17, 0x18, 0x18, 0x16, 0x16, 0x15, 0x17, 0x15, 0x16, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x15, 0x17, 0x17, 0x18, 0x15, 0x16, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x14, 0x16, 0x16, 0x16, 0x17, 0x13, 0x12, 0x13, 0x10, 0x12, 0x15, 0x15, 0x12, 0x12, 0x13, 0x16, 0x17, 0x18, 0x17, 0x14, 0x17, 0x15, 0x17, 0x11, 0x14, 0x14, 0x14, 0x17, 0x15, 0x16, 0x14, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16, 0x15, 0x0, 0x16, 0x16, 0x14, 0x17, 0x14, 0x16, 0x16, 0x17, 0x15, 0x18, 0x13, 0x17, 0x15, 0x16, 0x15, 0x16, 0x18, 0x17, 0x17, 0x13, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x15, 0x13, 0x14, 0x15, 0x17, 0x16, 0x14, 0x13, 0x15, 0xe, 0x12, 0x11, 0x11, 0x12, 0x13, 0x16, 0x18, 0x16, 0x14, 0x12, 0x12, 0x17, 0x14, 0x14, 0x15, 0x16, 0x15, 0x14, 0x13, 0x11, 0xb, 0x7, 0xa, 0xc, 0xe, 0x11, 0x10, 0x11, 0x12, 0xe, 0x11, 0x11, 0xd, 0xb, 0xb, 0xa, 0xe, 0x10, 0x11, 0x13, 0x11, 0x11, 0x11, 0x11, 0x14, 0x15, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x12, 0xf, 0x12, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x15, 0x17, 0x16, 0x18, 0x16, 0x16, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x13, 0x17, 0x17, 0x18, 0x15, 0x14, 0x14, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x0, 0x18, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x16, 0x18, 0x18, 0x15, 0x15, 0x15, 0x17, 0x16, 0x17, 0x16, 0x14, 0x16, 0x15, 0x17, 0x15, 0x17, 0x17, 0x0, 0x16, 0x18, 0x16, 0x17, 0x15, 0x16, 0x15, 0x17, 0x18, 0x17, 0x17, 0x15, 0x17, 0x15, 0x15, 0x13, 0x17, 0x17, 0x17, 0x15, 0x17, 0x18, 0x18, 0x16, 0x18, 0x16, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x17, 0x17, 0x13, 0x11, 0x13, 0x16, 0x16, 0x17, 0x17, 0x0, 0x17, 0x17, 0x17, 0x14, 0x16, 0x0, 0x0, 0x15, 0x17, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x15, 0x17, 0x0, 0x17, 0x16, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x17, 0x18, 0x16, 0x16, 0x18, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x16, 0x18, 0x18, 0x17, 0x14, 0x13, 0x14, 0x17, 0x15, 0x16, 0x16, 0x18, 0x17, 0x0, 0x18, 0x17, 0x18, 0x18, 0x17, 0x14, 0x13, 0x11, 0x15, 0x11, 0x15, 0x13, 0x14, 0x11, 0x13, 0x11, 0x13, 0x17, 0x17, 0x12, 0x12, 0xf, 0x14, 0x10, 0x12, 0x14, 0x11, 0x16, 0xf, 0x17, 0x14, 0x14, 0xe, 0x13, 0x12, 0x16, 0x10, 0x13, 0xf, 0x13, 0x10, 0x12, 0x10, 0x13, 0xf, 0x10, 0x11, 0x12, 0x13, 0x12, 0x11, 0x12, 0xe, 0x12, 0x17, 0x0, 0x0, 0x0, 0x13, 0x15, 0x13, 0x14, 0x15, 0x11, 0x16, 0x13, 0x16, 0x12, 0x16, 0x14, 0x13, 0x17, 0x15, 0x17, 0x14, 0x17, 0x17, 0x18, 0x16, 0x15, 0x17, 0x15, 0x18, 0x15, 0x16, 0x15, 0x17, 0x15, 0x0, 0x16, 0x18, 0x16, 0x16, 0x13, 0x16, 0x15, 0x16, 0x17, 0x18, 0x18, 0x16, 0x17, 0x11, 0x14, 0x11, 0x13, 0x11, 0x10, 0xf, 0x13, 0x12, 0x13, 0x11, 0x15, 0x16, 0x14, 0x11, 0x13, 0xd, 0xf, 0xe, 0xd, 0x10, 0x12, 0x15, 0x17, 0x15, 0x12, 0x13, 0x17, 0x17, 0x13, 0x12, 0x12, 0x11, 0x11, 0x11, 0x12, 0x13, 0x14, 0xc, 0xd, 0x10, 0x11, 0x17, 0x15, 0x16, 0x14, 0x12, 0x14, 0x10, 0x10, 0xd, 0xb, 0xe, 0xd, 0xf, 0xd, 0xe, 0xd, 0x9, 0xc, 0xf, 0x13, 0x14, 0x11, 0x15, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x16, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x16, 0x15, 0x0, 0x13, 0x16, 0x16, 0x18, 0x16, 0x16, 0x14, 0x13, 0x14, 0x17, 0x0, 0x0, 0x17, 0x18, 0x17, 0x18, 0x16, 0x16, 0x16, 0x16, 0x0, 0x16, 0x18, 0x16, 0x18, 0x17, 0x18, 0x15, 0x16, 0x15, 0x16, 0x16, 0x18, 0x16, 0x0, 0x17, 0x14, 0x15, 0x18, 0x17, 0x15, 0x13, 0x18, 0x18, 0x15, 0x16, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x16, 0x15, 0x0, 0x17, 0x18, 0x14, 0x16, 0x16, 0x17, 0x16, 0x17, 0x17, 0x18, 0x18, 0x17, 0x18, 0x15, 0x16, 0x16, 0x18, 0x16, 0x18, 0x16, 0x0, 0x17, 0x17, 0x16, 0x0, 0x18, 0x15, 0x14, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x17, 0x16, 0x15, 0x16, 0x15, 0x14, 0x12, 0x14, 0x11, 0x12, 0x14, 0x17, 0x14, 0x16, 0x17, 0x16, 0x12, 0x15, 0x16, 0x16, 0x15, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x18, 0x0, 0x17, 0x17, 0x15, 0x17, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x16, 0x16, 0x0, 0x0, 0x17, 0x17, 0x17, 0x17, 0x15, 0x14, 0x13, 0x17, 0x14, 0x13, 0x16, 0x13, 0x13, 0x12, 0x13, 0x18, 0x14, 0x15, 0x13, 0x17, 0x17, 0x13, 0x18, 0x17, 0x17, 0x14, 0x18, 0x16, 0x17, 0x15, 0x14, 0x12, 0x14, 0x13, 0x10, 0x12, 0x14, 0x15, 0x15, 0x16, 0x15, 0x17, 0x14, 0x18, 0x18, 0x0, 0x17, 0x16, 0x16, 0x18, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x14, 0x12, 0x14, 0x13, 0x16, 0x18, 0x18, 0x14, 0x18, 0x14, 0x15, 0x15, 0x17, 0x17, 0x14, 0x17, 0x17, 0x18, 0x13, 0x16, 0x14, 0x12, 0x16, 0x15, 0x18, 0x12, 0x17, 0x14, 0x16, 0x15, 0x13, 0x16, 0x14, 0x18, 0x14, 0x17, 0x17, 0x17, 0x13, 0x16, 0x16, 0x17, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x18, 0x16, 0x17, 0x16, 0x17, 0x13, 0x17, 0x15, 0x15, 0x13, 0x14, 0x15, 0x15, 0x15, 0x17, 0x16, 0x16, 0x16, 0x14, 0x16, 0x15, 0xd, 0xe, 0xd, 0xc, 0x10, 0x11, 0x11, 0x11, 0x18, 0x13, 0x14, 0x0, 0x13, 0xe, 0x10, 0xe, 0xd, 0xf, 0x11, 0x15, 0x16, 0x17, 0x11, 0xd, 0xc, 0xc, 0xc, 0x10, 0x12, 0x13, 0x12, 0x0, 0x13, 0x14, 0xf, 0xd, 0xe, 0x11, 0x17, 0x17, 0x17, 0x15, 0x11, 0xe, 0xf, 0x13, 0x12, 0xf, 0x13, 0x11, 0xc, 0xe, 0x13, 0x14, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x17, 0x15, 0x18, 0x16, 0x18, 0x13, 0x15, 0x15, 0x17, 0x18, 0x14, 0x12, 0x16, 0x13, 0x15, 0x15, 0x16, 0x14, 0x14, 0x14, 0x18, 0x16, 0x17, 0x0, 0x16, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x14, 0x17, 0x17, 0x16, 0x14, 0x18, 0x17, 0x18, 0x16, 0x18, 0x0, 0x0, 0x15, 0x17, 0x0, 0x0, 0x18, 0x17, 0x14, 0x14, 0x14, 0x18, 0x16, 0x17, 0x16, 0x16, 0x17, 0x15, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x15, 0x17, 0x16, 0x18, 0x16, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x16, 0x13, 0x14, 0x16, 0x17, 0x15, 0x16, 0x17, 0x16, 0x11, 0x13, 0x14, 0x14, 0x13, 0x12, 0x15, 0x11, 0x15, 0x15, 0x16, 0x15, 0x16, 0x15, 0x17, 0x15, 0x18, 0x18, 0x15, 0x13, 0x18, 0x13, 0x18, 0x15, 0x16, 0x15, 0x14, 0x15, 0x17, 0x17, 0x15, 0x17, 0x17, 0x18, 0x17, 0x0, 0x0, 0x17, 0x15, 0x17, 0x16, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x14, 0x17, 0x17, 0x15, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x16, 0x16, 0x16, 0x13, 0x15, 0x17, 0x17, 0x17, 0x16, 0x15, 0x16, 0x12, 0x16, 0x15, 0x0, 0x14, 0x12, 0x10, 0x15, 0x13, 0x11, 0x10, 0x12, 0x13, 0x17, 0x18, 0x17, 0x18, 0x12, 0x14, 0x11, 0x15, 0x11, 0x15, 0x13, 0x12, 0xf, 0x12, 0x13, 0x14, 0x10, 0x15, 0x14, 0x15, 0x11, 0x13, 0x13, 0x15, 0x14, 0x15, 0x12, 0x15, 0x12, 0x11, 0xf, 0x12, 0x10, 0x12, 0x14, 0x18, 0x15, 0x0, 0x13, 0x14, 0x13, 0x16, 0x17, 0x13, 0x16, 0x12, 0x17, 0x12, 0x15, 0x15, 0x14, 0x16, 0x13, 0x17, 0x13, 0x15, 0x16, 0x16, 0x15, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x17, 0x17, 0x14, 0x15, 0x15, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x15, 0x17, 0x16, 0x16, 0x15, 0x15, 0x15, 0x16, 0x15, 0x17, 0x15, 0x14, 0x12, 0x14, 0x16, 0x15, 0xd, 0xe, 0xe, 0xd, 0x10, 0xf, 0x13, 0x13, 0x12, 0x15, 0x12, 0x10, 0xf, 0xe, 0xe, 0xd, 0x15, 0x0, 0x15, 0x11, 0x16, 0x13, 0xf, 0xd, 0xb, 0xd, 0xe, 0xe, 0xe, 0xf, 0xf, 0x11, 0x11, 0x10, 0x11, 0x10, 0x13, 0x3c, 0x5c, 0x71, 0x8a, 0x7a, 0x7e, 0x83, 0x78, 0x85, 0x7e, 0x7a, 0x85, 0x7a, 0x8a, 0x88, 0x93, 0x8f, 0x95, 0x95, 0x95, 0x8f, 0x93, 0x88, 0x93, 0x88, 0x8a, 0x84, 0x85, 0x7e, 0x88, 0x7a, 0x7e, 0x83, 0x7e, 0x78, 0x7e, 0x7a, 0x85, 0x85, 0x7e, 0x85, 0x7e, 0x85, 0x85, 0x83, 0x78, 0x83, 0x83, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x83, 0x85, 0x83, 0x7a, 0x7a, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x83, 0x78, 0x7a, 0x83, 0x7a, 0x83, 0x83, 0x83, 0x83, 0x78, 0x7a, 0x7a, 0x83, 0x78, 0x83, 0x83, 0x7a, 0x8a, 0x8a, 0x78, 0x85, 0x7a, 0x7e, 0x7e, 0x7a, 0x7e, 0x7a, 0x7e, 0x83, 0x78, 0x83, 0x7e, 0x83, 0x84, 0x8a, 0x8a, 0x7e, 0x84, 0x8a, 0x7e, 0x51, 0x15, 0x13, 0x18, 0x15, 0x17, 0x18, 0x0, 0x16, 0x17, 0x17, 0x17, 0x15, 0x18, 0x17, 0x0, 0x16, 0x13, 0x14, 0x18, 0x16, 0x18, 0x16, 0x14, 0x16, 0x15, 0x16, 0x14, 0x14, 0x14, 0x18, 0x17, 0x18, 0x16, 0x17, 0x15, 0x15, 0x14, 0x15, 0x17, 0x16, 0x15, 0x16, 0x17, 0x15, 0x17, 0x17, 0x17, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x15, 0x18, 0x16, 0x15, 0x16, 0x15, 0x17, 0x16, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x0, 0x0, 0x17, 0x15, 0x18, 0x17, 0x17, 0x17, 0x15, 0x17, 0x15, 0x15, 0x11, 0x14, 0x14, 0x10, 0x12, 0x12, 0x0, 0x15, 0x17, 0x14, 0x15, 0x12, 0x14, 0x11, 0x10, 0xf, 0x12, 0x14, 0x13, 0x15, 0x13, 0x15, 0x13, 0x15, 0x12, 0x16, 0x15, 0x17, 0x14, 0x15, 0x14, 0x17, 0x14, 0x16, 0x15, 0x14, 0x14, 0x17, 0x17, 0x18, 0x18, 0x16, 0x17, 0x16, 0x16, 0x12, 0x17, 0x18, 0x17, 0x13, 0x15, 0x15, 0x14, 0x13, 0x17, 0x18, 0x18, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x16, 0x15, 0x15, 0x17, 0x14, 0x18, 0x0, 0x18, 0x12, 0x16, 0x15, 0x17, 0x14, 0x14, 0x18, 0x15, 0x0, 0x15, 0x18, 0x10, 0x14, 0x14, 0x12, 0x15, 0x10, 0x15, 0x12, 0x13, 0x11, 0x12, 0x13, 0x13, 0x15, 0x13, 0x0, 0x18, 0x0, 0x13, 0x17, 0x17, 0x18, 0x0, 0x0, 0x16, 0x16, 0x13, 0x16, 0x12, 0x13, 0x18, 0x16, 0x0, 0x14, 0x17, 0x16, 0x18, 0x15, 0x14, 0x15, 0x14, 0x15, 0x15, 0x14, 0x15, 0x15, 0x13, 0xf, 0x11, 0x16, 0x17, 0x10, 0x10, 0x11, 0x11, 0x12, 0x11, 0x13, 0x12, 0x12, 0x15, 0x13, 0x11, 0x11, 0x13, 0x11, 0x12, 0x16, 0x16, 0x14, 0x11, 0x14, 0x13, 0x10, 0xf, 0xc, 0x9, 0x9, 0xb, 0x12, 0x13, 0x15, 0x17, 0x18, 0x16, 0x15, 0x15, 0x4e, 0x7e, 0x7e, 0x7e, 0x7e, 0x85, 0x7e, 0x7a, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x7a, 0x78, 0x78, 0x83, 0x85, 0x7e, 0x8a, 0x95, 0x9c, 0x88, 0x84, 0x88, 0x88, 0x93, 0x84, 0x88, 0x93, 0x7a, 0x7e, 0x83, 0x7e, 0x83, 0x7a, 0x83, 0x84, 0x7e, 0x7e, 0x7e, 0x8a, 0x84, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7a, 0x83, 0x7a, 0x7a, 0x78, 0x7e, 0x83, 0x7e, 0x7a, 0x85, 0x78, 0x7a, 0x7e, 0x85, 0x78, 0x7a, 0x78, 0x83, 0x78, 0x7e, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x7e, 0x7e, 0x7e, 0x7a, 0x7e, 0x85, 0x7a, 0x7e, 0x8a, 0x90, 0x8a, 0x8a, 0x7a, 0x85, 0x83, 0x7e, 0x7e, 0x7e, 0x85, 0x7e, 0x83, 0x7e, 0x85, 0x85, 0x7e, 0x83, 0x7a, 0x4e, 0x12, 0x17, 0x0, 0x0, 0x17, 0x16, 0x17, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x15, 0x17, 0x17, 0x18, 0x16, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x0, 0x17, 0x17, 0x17, 0x17, 0x15, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x13, 0x16, 0x14, 0x16, 0x16, 0x18, 0x14, 0x18, 0x13, 0x14, 0x15, 0x16, 0x12, 0x17, 0x10, 0x16, 0x14, 0x15, 0x13, 0x14, 0x15, 0x12, 0x12, 0x14, 0x17, 0x16, 0x15, 0x13, 0x15, 0x14, 0x12, 0x11, 0x17, 0x16, 0x18, 0x15, 0x15, 0x18, 0x16, 0x18, 0x13, 0x15, 0x17, 0x12, 0x15, 0x14, 0x15, 0x13, 0x16, 0x14, 0x16, 0x15, 0x17, 0x16, 0x16, 0x15, 0x16, 0x17, 0x16, 0x17, 0x14, 0x16, 0x14, 0x15, 0x12, 0x15, 0x13, 0x16, 0x13, 0x13, 0x13, 0x15, 0x11, 0x12, 0x11, 0xe, 0xd, 0x12, 0x11, 0x11, 0x10, 0xf, 0x18, 0x12, 0x15, 0xd, 0x16, 0x16, 0x15, 0xf, 0x12, 0x12, 0xa, 0xd, 0x15, 0x17, 0x13, 0x12, 0x13, 0x12, 0x12, 0xe, 0xf, 0x11, 0x13, 0x10, 0x17, 0x16, 0x16, 0x13, 0x17, 0x0, 0x0, 0x13, 0x17, 0x14, 0x15, 0x13, 0x14, 0x17, 0x12, 0x16, 0x15, 0x17, 0x10, 0x15, 0x17, 0x16, 0x17, 0x14, 0x17, 0x13, 0x15, 0x15, 0x15, 0x18, 0x15, 0x18, 0x14, 0x17, 0x18, 0x0, 0x15, 0x17, 0x14, 0x18, 0x18, 0x18, 0x16, 0x17, 0x13, 0x16, 0x13, 0x14, 0x18, 0x17, 0x18, 0x13, 0x16, 0x16, 0x17, 0x15, 0x15, 0x15, 0x17, 0x17, 0x14, 0x13, 0x14, 0x13, 0x14, 0x15, 0x16, 0x16, 0x16, 0xe, 0xf, 0xe, 0xe, 0xf, 0xf, 0xf, 0xf, 0x10, 0x11, 0x11, 0x10, 0x10, 0x14, 0x11, 0x11, 0x12, 0x11, 0x13, 0x15, 0x11, 0xd, 0xc, 0xc, 0xe, 0xd, 0xc, 0xe, 0x12, 0x12, 0x11, 0x14, 0x16, 0x11, 0x10, 0x56, 0x84, 0x90, 0x88, 0x90, 0x90, 0x84, 0x90, 0x84, 0x88, 0x88, 0x84, 0x8a, 0x7e, 0x8a, 0x7e, 0x7e, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x88, 0x88, 0x85, 0x85, 0x85, 0x7e, 0x84, 0x84, 0x93, 0x88, 0x83, 0x7e, 0x83, 0x7e, 0x78, 0x83, 0x78, 0x7e, 0x83, 0x7a, 0x83, 0x84, 0x7a, 0x85, 0x7a, 0x7a, 0x83, 0x85, 0x85, 0x7e, 0x7e, 0x85, 0x83, 0x85, 0x7e, 0x78, 0x7e, 0x83, 0x85, 0x83, 0x7e, 0x7a, 0x8a, 0x7a, 0x83, 0x78, 0x7a, 0x7a, 0x85, 0x83, 0x7a, 0x83, 0x7a, 0x8a, 0x84, 0x85, 0x8a, 0x85, 0x7e, 0x83, 0x85, 0x85, 0x7a, 0x83, 0x7a, 0x7e, 0x7e, 0x84, 0x7a, 0x7e, 0x83, 0x85, 0x78, 0x85, 0x7a, 0x85, 0x7a, 0x84, 0x7a, 0x8a, 0x7e, 0x7e, 0x8a, 0x71, 0x8a, 0x85, 0x21, 0x16, 0x15, 0x16, 0x13, 0x15, 0x15, 0x17, 0x17, 0x18, 0x17, 0x17, 0x15, 0x16, 0x15, 0x16, 0x14, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x15, 0x16, 0x17, 0x16, 0x15, 0x18, 0x15, 0x18, 0x15, 0x16, 0x16, 0x16, 0x14, 0x16, 0x15, 0x16, 0x17, 0x18, 0x18, 0x14, 0x16, 0x16, 0x17, 0x18, 0x18, 0x14, 0x17, 0x15, 0x18, 0x17, 0x16, 0x14, 0x0, 0x14, 0x17, 0x15, 0x15, 0x16, 0x16, 0x16, 0x14, 0x15, 0x15, 0x15, 0x13, 0x14, 0x14, 0x15, 0x14, 0x14, 0x11, 0x16, 0x15, 0x17, 0x16, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x16, 0x14, 0x16, 0x15, 0x14, 0x13, 0x14, 0x12, 0x14, 0x13, 0x15, 0x14, 0x14, 0x15, 0x15, 0x16, 0x13, 0x16, 0x12, 0x15, 0x13, 0x16, 0x15, 0x18, 0x14, 0x16, 0x14, 0x16, 0x15, 0x18, 0x17, 0x17, 0x13, 0x14, 0x14, 0x17, 0x15, 0x16, 0x15, 0x13, 0x18, 0x14, 0x18, 0x15, 0x17, 0x15, 0x14, 0x13, 0x16, 0x16, 0x15, 0x16, 0x18, 0x16, 0x16, 0x17, 0x17, 0x16, 0x18, 0x16, 0x15, 0x17, 0x17, 0x17, 0x17, 0x12, 0x14, 0xf, 0x11, 0x13, 0x17, 0x13, 0x15, 0x14, 0x13, 0x12, 0x14, 0x17, 0xf, 0x13, 0x12, 0x15, 0xd, 0x13, 0x16, 0x16, 0x17, 0x13, 0x16, 0x14, 0x16, 0x16, 0x17, 0x0, 0x17, 0x18, 0x13, 0x16, 0x0, 0x0, 0x15, 0x15, 0x10, 0x16, 0x16, 0x13, 0x13, 0x16, 0x15, 0x16, 0x14, 0x15, 0x17, 0x15, 0x17, 0x10, 0x13, 0x12, 0x14, 0x10, 0x13, 0x11, 0x14, 0x13, 0x10, 0xf, 0xc, 0xc, 0x11, 0x12, 0x15, 0x13, 0x15, 0xd, 0xc, 0xd, 0xe, 0xe, 0x10, 0x12, 0x15, 0x13, 0x10, 0xf, 0x10, 0xf, 0x12, 0xf, 0xd, 0xf, 0x10, 0x13, 0x15, 0x10, 0xc, 0xc, 0xe, 0xf, 0x10, 0xf, 0x11, 0x14, 0x13, 0x11, 0x11, 0x13, 0x16, 0x1b, 0x7a, 0x83, 0x78, 0x8a, 0x7e, 0x7e, 0x84, 0x7e, 0x83, 0x7a, 0x7a, 0x85, 0x7a, 0x85, 0x7e, 0x7a, 0x83, 0x7a, 0x85, 0x85, 0x7e, 0x7a, 0x84, 0x88, 0x88, 0x84, 0x84, 0x90, 0x88, 0x93, 0x93, 0x84, 0x83, 0x7e, 0x83, 0x7e, 0x83, 0x78, 0x83, 0x7a, 0x7a, 0x83, 0x78, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x78, 0x7a, 0x83, 0x7e, 0x7e, 0x7a, 0x78, 0x7a, 0x7a, 0x78, 0x7a, 0x78, 0x7a, 0x78, 0x7a, 0x83, 0x7a, 0x83, 0x78, 0x83, 0x83, 0x78, 0x7a, 0x78, 0x83, 0x78, 0x7e, 0x88, 0x88, 0x84, 0x79, 0x7e, 0x85, 0x78, 0x7a, 0x85, 0x7a, 0x78, 0x83, 0x7e, 0x7e, 0x7a, 0x7a, 0x7e, 0x83, 0x7e, 0x7a, 0x7a, 0x78, 0x85, 0x85, 0x84, 0x84, 0x88, 0x8a, 0x84, 0x84, 0x84, 0x88, 0x8a, 0x64, 0x14, 0x10, 0x11, 0xe, 0x14, 0x12, 0x14, 0x13, 0x17, 0x14, 0x15, 0x13, 0x14, 0x12, 0x13, 0x11, 0x14, 0x13, 0x12, 0x11, 0x10, 0x14, 0x11, 0x15, 0x16, 0x15, 0x11, 0x13, 0x11, 0x14, 0x13, 0x17, 0x16, 0x16, 0x14, 0x15, 0x13, 0x13, 0x14, 0x16, 0x16, 0x15, 0x16, 0x15, 0x16, 0x18, 0x18, 0x14, 0x17, 0x15, 0x18, 0x16, 0x16, 0x15, 0x18, 0x13, 0x17, 0x14, 0x15, 0x16, 0x15, 0x16, 0x15, 0x15, 0x15, 0x15, 0x11, 0x14, 0x14, 0x14, 0x13, 0x12, 0x10, 0x13, 0x11, 0x13, 0x14, 0x13, 0x16, 0x16, 0x18, 0x15, 0x18, 0x17, 0x13, 0x0, 0x16, 0x0, 0x16, 0x18, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x16, 0x16, 0x14, 0x16, 0x15, 0x18, 0x15, 0x16, 0x14, 0x15, 0x17, 0x0, 0x18, 0x18, 0x17, 0x14, 0x17, 0x15, 0x18, 0x15, 0x17, 0x13, 0x11, 0x11, 0x15, 0x15, 0x16, 0x12, 0x14, 0x15, 0x14, 0x14, 0x14, 0x13, 0x16, 0x13, 0x10, 0x10, 0x13, 0x12, 0x17, 0x15, 0x17, 0x12, 0x14, 0x15, 0x17, 0x11, 0x15, 0x15, 0x16, 0x13, 0x16, 0x18, 0x12, 0x15, 0x11, 0x11, 0xd, 0x14, 0x17, 0x12, 0x18, 0x15, 0x15, 0x13, 0x15, 0x15, 0x14, 0x15, 0x12, 0x16, 0x13, 0x16, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x18, 0x15, 0x15, 0x18, 0x16, 0x17, 0x15, 0x15, 0x17, 0x14, 0x14, 0x11, 0x13, 0x12, 0x14, 0x14, 0x12, 0x12, 0x13, 0x12, 0x15, 0x16, 0x14, 0x11, 0x13, 0x11, 0x10, 0x11, 0x14, 0xf, 0xe, 0x10, 0x11, 0x11, 0x11, 0x12, 0x13, 0x11, 0x11, 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x14, 0x12, 0x12, 0x12, 0xf, 0xf, 0x10, 0x10, 0xd, 0xf, 0x12, 0x14, 0x15, 0x14, 0x13, 0x13, 0x15, 0x4e, 0x7e, 0x7e, 0x7e, 0x84, 0x88, 0x90, 0x7e, 0x7e, 0x7e, 0x8a, 0x84, 0x90, 0x84, 0x84, 0x90, 0x84, 0x8a, 0x84, 0x84, 0x84, 0x88, 0x8a, 0x8a, 0x8a, 0x85, 0x78, 0x78, 0x7a, 0x88, 0x88, 0x88, 0x7e, 0x78, 0x83, 0x78, 0x78, 0x78, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x83, 0x78, 0x78, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x78, 0x85, 0x7a, 0x83, 0x7e, 0x78, 0x78, 0x78, 0x83, 0x78, 0x7e, 0x85, 0x7e, 0x78, 0x7e, 0x7a, 0x7a, 0x78, 0x7e, 0x7a, 0x85, 0x7a, 0x7a, 0x7a, 0x8a, 0x7e, 0x84, 0x8a, 0x8a, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x83, 0x84, 0x84, 0x90, 0x84, 0x90, 0x85, 0x7a, 0x7e, 0x7e, 0x83, 0x85, 0x7a, 0x7e, 0x7a, 0x84, 0x85, 0x7e, 0x7e, 0x8a, 0x7e, 0x7a, 0x7e, 0x78, 0x78, 0x1b, 0x18, 0x13, 0x15, 0x18, 0x14, 0x15, 0x12, 0x17, 0x17, 0x18, 0x16, 0x15, 0x17, 0x18, 0x17, 0x17, 0x16, 0x15, 0x17, 0x13, 0x15, 0x12, 0x17, 0x16, 0x16, 0x14, 0x16, 0x13, 0x16, 0x13, 0x16, 0x15, 0x16, 0x12, 0x15, 0x12, 0x11, 0x14, 0x15, 0x15, 0x14, 0x14, 0x10, 0x15, 0x17, 0x16, 0x12, 0x16, 0x13, 0x17, 0x16, 0x17, 0x16, 0x0, 0x16, 0x18, 0x15, 0x17, 0x16, 0x13, 0x17, 0x17, 0x15, 0x13, 0x15, 0x14, 0x14, 0x10, 0x13, 0x14, 0x14, 0x11, 0x15, 0x14, 0x15, 0x16, 0x13, 0x15, 0x13, 0x17, 0x14, 0x15, 0x17, 0x12, 0x17, 0x16, 0x18, 0x15, 0x16, 0x14, 0x15, 0x13, 0x15, 0x15, 0x14, 0x14, 0x12, 0x12, 0x11, 0x13, 0x12, 0x15, 0x11, 0x16, 0x14, 0x0, 0x15, 0x16, 0x13, 0x15, 0x13, 0x16, 0x16, 0x15, 0x15, 0x17, 0x13, 0x14, 0x15, 0x15, 0x14, 0x11, 0x18, 0x14, 0x18, 0x17, 0x17, 0x14, 0x14, 0x15, 0x15, 0x14, 0x13, 0x12, 0x13, 0x17, 0x16, 0x15, 0x16, 0x14, 0x15, 0x16, 0x12, 0x13, 0x16, 0x0, 0x13, 0x11, 0x13, 0xe, 0x11, 0x10, 0x15, 0x16, 0x18, 0x17, 0x18, 0x16, 0x17, 0x18, 0x16, 0x18, 0x14, 0x13, 0x10, 0x15, 0x17, 0x14, 0x18, 0x15, 0x15, 0x13, 0x15, 0x17, 0x14, 0x15, 0x14, 0x16, 0x15, 0x16, 0x17, 0x17, 0x17, 0x0, 0x17, 0x18, 0x18, 0x17, 0x16, 0x18, 0x16, 0x17, 0x14, 0x12, 0x15, 0x12, 0x12, 0x12, 0x15, 0x12, 0x15, 0x15, 0x14, 0x14, 0x14, 0x14, 0x17, 0x17, 0x16, 0x14, 0x13, 0xd, 0xd, 0x13, 0x17, 0xd, 0xc, 0xe, 0xe, 0xe, 0xe, 0x10, 0x11, 0x11, 0x13, 0x13, 0x13, 0x14, 0x14, 0x15, 0x16, 0x15, 0x16, 0x15, 0x16, 0x15, 0x12, 0x14, 0x14, 0x13, 0xf, 0xd, 0xf, 0x10, 0x15, 0x17, 0x12, 0x10, 0x11, 0x84, 0x84, 0x88, 0x90, 0x90, 0x88, 0x84, 0x7a, 0x8a, 0x84, 0x88, 0x88, 0x88, 0x88, 0x84, 0x88, 0x90, 0x88, 0x90, 0x84, 0x90, 0x89, 0x89, 0x89, 0x78, 0x7a, 0x85, 0x7a, 0x90, 0x84, 0x90, 0x89, 0x90, 0x78, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x85, 0x7a, 0x83, 0x78, 0x7a, 0x78, 0x83, 0x78, 0x83, 0x78, 0x83, 0x83, 0x7e, 0x83, 0x7a, 0x7a, 0x85, 0x85, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x83, 0x7a, 0x83, 0x78, 0x7a, 0x83, 0x7a, 0x7a, 0x83, 0x83, 0x7e, 0x85, 0x85, 0x7a, 0x7a, 0x83, 0x7a, 0x83, 0x83, 0x7a, 0x7e, 0x97, 0x88, 0x85, 0x7a, 0x84, 0x8f, 0x97, 0x97, 0x88, 0x89, 0x89, 0x88, 0x93, 0x93, 0x88, 0x7e, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x83, 0x83, 0x78, 0x55, 0x17, 0x17, 0x16, 0x17, 0x18, 0x0, 0x18, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x15, 0x16, 0x14, 0x16, 0x15, 0x17, 0x15, 0x17, 0x12, 0x15, 0x12, 0x14, 0x12, 0x15, 0x11, 0x13, 0x12, 0x12, 0x12, 0x16, 0x14, 0x16, 0x15, 0x16, 0x15, 0x16, 0x17, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x15, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x17, 0x13, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x18, 0x17, 0x15, 0x16, 0x14, 0x18, 0x14, 0x13, 0x16, 0x11, 0x15, 0x14, 0x16, 0x13, 0x17, 0x12, 0x14, 0x16, 0x17, 0x15, 0x15, 0x15, 0x12, 0x16, 0x13, 0x15, 0x16, 0x18, 0x16, 0x18, 0x17, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x17, 0x17, 0x15, 0x16, 0x16, 0x15, 0x17, 0x17, 0x17, 0x17, 0x15, 0x18, 0x16, 0x0, 0x17, 0x18, 0x16, 0x15, 0x15, 0x16, 0x14, 0x11, 0x10, 0x13, 0x17, 0x16, 0x15, 0x16, 0x14, 0x15, 0x16, 0x13, 0x13, 0x17, 0x18, 0x15, 0x12, 0x15, 0x12, 0x14, 0x13, 0x14, 0x12, 0x15, 0x15, 0x12, 0x13, 0x13, 0x17, 0x11, 0x14, 0x11, 0x12, 0xe, 0x10, 0x15, 0x14, 0x17, 0x12, 0x13, 0x12, 0x15, 0x15, 0x13, 0x16, 0x13, 0x18, 0x16, 0x16, 0x15, 0x15, 0x15, 0x17, 0x17, 0x17, 0x17, 0x17, 0x0, 0x18, 0x15, 0x18, 0x17, 0x17, 0x0, 0x16, 0x0, 0x15, 0x17, 0x15, 0x13, 0x14, 0x15, 0x15, 0x15, 0x17, 0x17, 0x0, 0x0, 0x17, 0x18, 0x16, 0x11, 0x11, 0x18, 0xe, 0xe, 0xf, 0x10, 0xe, 0xf, 0x11, 0x13, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x15, 0x17, 0x15, 0x10, 0x12, 0x12, 0x11, 0x11, 0x11, 0x10, 0x10, 0x17, 0x16, 0x13, 0x13, 0x38, 0x7a, 0x8a, 0x7e, 0x85, 0x7a, 0x7e, 0x84, 0x90, 0x84, 0x85, 0x8a, 0x7e, 0x63, 0x5f, 0x5f, 0x5f, 0x65, 0x60, 0x6a, 0x65, 0x65, 0x6f, 0x72, 0x6f, 0x65, 0x5c, 0x68, 0x6a, 0x72, 0x6f, 0x64, 0x7c, 0x6f, 0x63, 0x65, 0x58, 0x6a, 0x65, 0x6a, 0x58, 0x68, 0x63, 0x65, 0x58, 0x71, 0x5f, 0x85, 0x7a, 0x7a, 0x83, 0x7a, 0x71, 0x8a, 0x7a, 0x7a, 0x85, 0x7a, 0x7e, 0x7a, 0x7a, 0x83, 0x7a, 0x7a, 0x7a, 0x78, 0x7a, 0x7e, 0x85, 0x78, 0x85, 0x7a, 0x85, 0x7a, 0x83, 0x7a, 0x7a, 0x85, 0x7e, 0x7a, 0x85, 0x6e, 0x83, 0x83, 0x7a, 0x7e, 0x88, 0x8f, 0x8a, 0x7e, 0x7e, 0x85, 0x7e, 0x7e, 0x88, 0x9c, 0x8f, 0x8a, 0x84, 0x84, 0x88, 0x89, 0x95, 0x89, 0x90, 0x84, 0x8a, 0x84, 0x8a, 0x7e, 0x7a, 0x83, 0x1a, 0x0, 0x17, 0x18, 0x0, 0x0, 0x18, 0x16, 0x16, 0x18, 0x15, 0x17, 0x15, 0x17, 0x17, 0x18, 0x18, 0x17, 0x16, 0x16, 0x17, 0x17, 0x0, 0x17, 0x16, 0x14, 0x17, 0x14, 0x16, 0x14, 0x17, 0x15, 0x15, 0x16, 0x17, 0x14, 0x16, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x16, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x17, 0x11, 0x15, 0x13, 0x16, 0x18, 0x18, 0x16, 0x14, 0x17, 0x15, 0x17, 0x13, 0x16, 0x13, 0x14, 0x10, 0x12, 0x14, 0x16, 0x12, 0x15, 0x14, 0x16, 0x15, 0x13, 0x15, 0x14, 0x15, 0x13, 0x14, 0x18, 0x13, 0x17, 0x16, 0x17, 0x16, 0x17, 0x17, 0x16, 0x16, 0x16, 0x17, 0x16, 0x15, 0x14, 0x15, 0x13, 0x16, 0x13, 0x17, 0x14, 0x17, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x13, 0x11, 0x16, 0x15, 0x16, 0x16, 0x15, 0x17, 0x13, 0x0, 0x14, 0x16, 0x15, 0x0, 0x17, 0x16, 0x14, 0x11, 0x14, 0x15, 0x15, 0x13, 0x16, 0x12, 0x12, 0x13, 0x15, 0x16, 0x16, 0x13, 0x13, 0x12, 0x13, 0x14, 0x11, 0x13, 0xf, 0x12, 0xf, 0xf, 0x11, 0x15, 0x12, 0x12, 0x12, 0x13, 0x17, 0x12, 0x16, 0x14, 0x16, 0x12, 0x14, 0x18, 0x16, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x18, 0x17, 0x15, 0x18, 0x15, 0x15, 0x15, 0x15, 0x17, 0x17, 0x11, 0x10, 0x15, 0x14, 0x14, 0x16, 0x16, 0x15, 0x15, 0x14, 0x18, 0x15, 0x18, 0x15, 0x17, 0x17, 0x17, 0x17, 0x18, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x14, 0xd, 0x12, 0xe, 0x14, 0x12, 0xf, 0xe, 0xe, 0x10, 0xf, 0x10, 0xf, 0xf, 0xf, 0xe, 0xf, 0x12, 0x10, 0x10, 0x10, 0x10, 0x11, 0x10, 0xe, 0xf, 0x10, 0x11, 0x12, 0x11, 0xe, 0xf, 0x16, 0x15, 0x12, 0x13, 0x71, 0x7e, 0x85, 0x8a, 0x7e, 0x78, 0x85, 0x90, 0x84, 0x7e, 0x7a, 0x57, 0x19, 0x15, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x14, 0x13, 0x13, 0x12, 0x12, 0x21, 0x13, 0xf, 0xf, 0x11, 0x13, 0xd, 0x10, 0x15, 0x12, 0x18, 0x14, 0x17, 0x14, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x49, 0x85, 0x78, 0x7e, 0x83, 0x7e, 0x7a, 0x7e, 0x8a, 0x7a, 0x83, 0x78, 0x85, 0x6e, 0x38, 0x34, 0x3c, 0x36, 0x2a, 0x2b, 0x27, 0x36, 0x28, 0x28, 0x27, 0x27, 0x28, 0x28, 0x34, 0x27, 0x2b, 0x38, 0x1d, 0x2b, 0x2a, 0x30, 0x2b, 0x2b, 0x3a, 0x29, 0x32, 0x2d, 0x3d, 0x30, 0x2a, 0x3a, 0x30, 0x3d, 0x2c, 0x28, 0x34, 0x28, 0x41, 0x63, 0x7e, 0x85, 0x7e, 0x7e, 0x8a, 0x84, 0x88, 0x9c, 0x95, 0x95, 0x74, 0xb, 0xc, 0x12, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x16, 0x15, 0x15, 0x0, 0x15, 0x18, 0x17, 0x18, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x17, 0x18, 0x18, 0x15, 0x15, 0x15, 0x15, 0x15, 0x17, 0x16, 0x16, 0x16, 0x14, 0x14, 0x12, 0x17, 0x12, 0x16, 0x14, 0x18, 0x12, 0x16, 0x16, 0x17, 0x17, 0x16, 0x17, 0x15, 0x18, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x17, 0x15, 0x17, 0x16, 0x17, 0x15, 0x15, 0x18, 0x14, 0x17, 0x15, 0x17, 0x14, 0x17, 0x15, 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x13, 0x13, 0x12, 0x14, 0x11, 0x16, 0x11, 0x16, 0x13, 0x17, 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x17, 0x16, 0x15, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x0, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x15, 0x18, 0x17, 0x15, 0x16, 0x11, 0x11, 0x10, 0x12, 0x12, 0x15, 0x13, 0x13, 0x12, 0x12, 0x17, 0x13, 0x16, 0x16, 0x17, 0x10, 0x14, 0x17, 0x13, 0x18, 0x17, 0x0, 0x18, 0x16, 0x18, 0x18, 0x16, 0x14, 0x17, 0x13, 0x14, 0x14, 0x14, 0x16, 0x18, 0x14, 0x14, 0x16, 0x15, 0x15, 0x16, 0x15, 0x14, 0x14, 0x12, 0x16, 0x13, 0x17, 0x14, 0x16, 0x18, 0x17, 0x0, 0x0, 0x17, 0x16, 0x18, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x16, 0x10, 0x14, 0x11, 0x16, 0x14, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x14, 0x13, 0x13, 0x12, 0x11, 0x10, 0xf, 0x10, 0x10, 0xe, 0xd, 0xd, 0xd, 0x12, 0x13, 0x10, 0x20, 0x84, 0x8a, 0x71, 0x84, 0x8a, 0x7a, 0x7a, 0x84, 0x84, 0x7e, 0x51, 0x0, 0x14, 0x12, 0x14, 0x16, 0x17, 0x17, 0x17, 0x17, 0x15, 0x11, 0x11, 0x11, 0xf, 0x12, 0xf, 0xe, 0xe, 0x11, 0x10, 0x13, 0x11, 0x15, 0x18, 0x14, 0x15, 0x16, 0x0, 0x17, 0x0, 0x17, 0x0, 0x17, 0x17, 0x16, 0x0, 0x16, 0x18, 0x38, 0x7a, 0x7e, 0x78, 0x85, 0x7a, 0x7e, 0x8a, 0x7a, 0x7a, 0x83, 0x6e, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x1a, 0x17, 0x17, 0x16, 0x16, 0x15, 0x17, 0x16, 0x16, 0x16, 0x14, 0x16, 0x16, 0x16, 0x26, 0x12, 0x0, 0x16, 0x13, 0x11, 0xc, 0x9, 0xa, 0xd, 0xd, 0xe, 0x10, 0xe, 0x11, 0x3c, 0x6a, 0x90, 0x88, 0x84, 0x84, 0x7e, 0x8f, 0x95, 0x8f, 0x8f, 0x29, 0x8, 0x9, 0x6, 0xc, 0xd, 0xe, 0xf, 0x11, 0x12, 0x11, 0x11, 0x14, 0x15, 0x15, 0x18, 0x15, 0x18, 0x16, 0x17, 0x12, 0x15, 0x14, 0x15, 0x14, 0x17, 0x16, 0x16, 0x13, 0x15, 0x14, 0x14, 0x12, 0x15, 0x15, 0x18, 0x17, 0x0, 0x16, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x16, 0x15, 0x17, 0x14, 0x17, 0x15, 0x16, 0x15, 0x18, 0x18, 0x18, 0x14, 0x17, 0x14, 0x15, 0x15, 0x13, 0x15, 0x11, 0x14, 0x11, 0x12, 0x17, 0x13, 0x18, 0x15, 0x16, 0x17, 0x0, 0x16, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x16, 0x16, 0x16, 0x17, 0x14, 0x17, 0x14, 0x16, 0x15, 0x17, 0x16, 0x18, 0x15, 0x17, 0x15, 0x15, 0x14, 0x13, 0x13, 0x16, 0x17, 0x15, 0x17, 0x15, 0x15, 0x12, 0x0, 0x15, 0x16, 0x12, 0x10, 0xf, 0x13, 0x10, 0x11, 0x15, 0x13, 0x16, 0x17, 0x17, 0x13, 0x15, 0x12, 0x13, 0x14, 0x17, 0x15, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x12, 0x13, 0x12, 0x14, 0x12, 0x13, 0x13, 0x14, 0x16, 0x11, 0x17, 0x15, 0x0, 0x15, 0x15, 0xb, 0x11, 0x0, 0x16, 0x16, 0x11, 0x15, 0x13, 0x10, 0x11, 0x12, 0x17, 0x12, 0x16, 0x11, 0x17, 0x18, 0x16, 0x17, 0x16, 0x11, 0x11, 0x16, 0x15, 0x16, 0x16, 0x13, 0x14, 0x15, 0x11, 0x17, 0x12, 0x14, 0x11, 0x11, 0x12, 0x11, 0x15, 0x13, 0x15, 0x11, 0x13, 0x15, 0x16, 0x16, 0x13, 0x17, 0x16, 0x14, 0xf, 0x15, 0x13, 0x12, 0x10, 0xd, 0xe, 0x11, 0x11, 0x10, 0x11, 0x11, 0x13, 0x13, 0x13, 0x13, 0x13, 0x11, 0x11, 0x13, 0x13, 0x13, 0x13, 0x11, 0x12, 0x13, 0x13, 0x10, 0xc, 0xc, 0xd, 0x11, 0x15, 0x1c, 0x4a, 0x88, 0x8a, 0x84, 0x90, 0x84, 0x84, 0x84, 0x8a, 0x7e, 0x2d, 0x15, 0x18, 0x17, 0x16, 0x14, 0x14, 0x15, 0x14, 0x13, 0x12, 0x12, 0x14, 0x10, 0xd, 0xf, 0x14, 0x10, 0xf, 0xe, 0xf, 0x13, 0x12, 0xe, 0x13, 0x18, 0x11, 0x13, 0x14, 0x0, 0x18, 0x18, 0x18, 0x18, 0x14, 0x13, 0x16, 0x17, 0x16, 0x18, 0x15, 0x65, 0x8a, 0x7a, 0x85, 0x7a, 0x7e, 0x7e, 0x7a, 0x85, 0x78, 0x36, 0x18, 0x0, 0x0, 0x0, 0x18, 0x15, 0x18, 0x17, 0x17, 0x16, 0x18, 0x18, 0x17, 0x16, 0x17, 0x15, 0x16, 0x16, 0x0, 0x1b, 0x18, 0x18, 0x16, 0x17, 0x17, 0x18, 0x8, 0x7, 0x16, 0x18, 0x18, 0x0, 0x18, 0x10, 0xa, 0xf, 0xf, 0xe, 0xd, 0xc, 0xf, 0xf, 0xf, 0x64, 0x84, 0x8a, 0x7a, 0x85, 0x7a, 0x85, 0x7a, 0x78, 0x55, 0x17, 0x14, 0x10, 0xd, 0x9, 0x8, 0x6, 0x5, 0x9, 0x7, 0x8, 0xb, 0xd, 0xd, 0xd, 0xe, 0x12, 0x13, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x18, 0x16, 0x18, 0x17, 0x0, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x16, 0xf, 0x16, 0x16, 0x16, 0x15, 0x18, 0x0, 0x18, 0x17, 0x14, 0x15, 0x13, 0x18, 0x17, 0x18, 0x15, 0x17, 0x16, 0x17, 0x14, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x16, 0x13, 0x14, 0x17, 0x18, 0x17, 0x18, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x16, 0x18, 0x14, 0x17, 0x13, 0x15, 0xe, 0x14, 0xf, 0x12, 0x11, 0x14, 0x12, 0x14, 0x14, 0x18, 0x0, 0x16, 0x15, 0x17, 0x16, 0x17, 0x0, 0x18, 0x0, 0x16, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x14, 0x15, 0xe, 0x12, 0x13, 0x13, 0x10, 0x15, 0x16, 0x15, 0x16, 0x14, 0x17, 0x14, 0x18, 0x16, 0x14, 0xf, 0x14, 0x0, 0x15, 0x15, 0x13, 0x16, 0x15, 0x13, 0x14, 0x14, 0x17, 0x15, 0x17, 0x15, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x15, 0x17, 0x17, 0x18, 0x18, 0x15, 0x16, 0x16, 0x16, 0x18, 0x16, 0x18, 0x16, 0x16, 0x17, 0x14, 0x17, 0x16, 0x17, 0x14, 0x16, 0x17, 0x16, 0x17, 0x14, 0x17, 0x16, 0x17, 0x12, 0x10, 0xd, 0xa, 0x11, 0x14, 0x12, 0x14, 0x13, 0x13, 0x12, 0x13, 0x15, 0x16, 0x14, 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x12, 0x10, 0x10, 0x11, 0xe, 0xf, 0x10, 0xd, 0xb, 0xe, 0x14, 0x18, 0x17, 0x65, 0x8a, 0x7a, 0x78, 0x7e, 0x7a, 0x85, 0x7a, 0x7a, 0x2a, 0x15, 0x14, 0x16, 0x15, 0x13, 0x14, 0x16, 0x17, 0x14, 0x14, 0x12, 0x14, 0x12, 0x10, 0x10, 0x11, 0x14, 0xf, 0xf, 0x11, 0x11, 0x12, 0x13, 0x10, 0x14, 0x15, 0x10, 0x16, 0x11, 0x16, 0x13, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x16, 0x17, 0x0, 0x28, 0x78, 0x78, 0x78, 0x78, 0x83, 0x7a, 0x85, 0x7a, 0x6b, 0x17, 0x0, 0x18, 0x0, 0x16, 0x16, 0x1a, 0x18, 0x16, 0x18, 0x15, 0x18, 0x15, 0x13, 0x15, 0x17, 0x16, 0x15, 0x16, 0x0, 0x17, 0x14, 0x12, 0x13, 0x17, 0x14, 0x17, 0xe, 0xb, 0x13, 0x14, 0x12, 0x12, 0x14, 0x17, 0x13, 0x14, 0x13, 0x10, 0x10, 0xf, 0xe, 0xf, 0xf, 0xd, 0x53, 0x89, 0x93, 0x89, 0x93, 0x97, 0x97, 0x88, 0x7d, 0x1f, 0xf, 0xe, 0xe, 0xc, 0x11, 0x12, 0xc, 0xe, 0xb, 0xd, 0x12, 0xf, 0xe, 0xa, 0xa, 0xc, 0x8, 0x6, 0x9, 0xd, 0xf, 0x10, 0x13, 0x14, 0x13, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x15, 0x15, 0x14, 0x18, 0x14, 0x17, 0x17, 0x18, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x17, 0x17, 0x17, 0x16, 0x17, 0x0, 0x18, 0x18, 0x16, 0x15, 0x14, 0x17, 0x15, 0x17, 0x14, 0x17, 0x14, 0x16, 0x12, 0x12, 0x12, 0x14, 0x15, 0x13, 0x16, 0x11, 0x13, 0x10, 0x10, 0x15, 0x10, 0x16, 0x14, 0x16, 0x14, 0x16, 0x13, 0x15, 0x15, 0x13, 0x14, 0x13, 0x17, 0x15, 0x17, 0x16, 0x18, 0x0, 0x17, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x16, 0x15, 0x18, 0x0, 0x15, 0x13, 0x16, 0x15, 0x14, 0x18, 0x16, 0x16, 0x12, 0x18, 0x16, 0x18, 0x16, 0x18, 0x16, 0x16, 0x0, 0x17, 0x17, 0x17, 0x18, 0x18, 0x17, 0x14, 0x18, 0x18, 0x17, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x14, 0x10, 0x12, 0xf, 0x12, 0x15, 0x16, 0x15, 0x17, 0x18, 0x16, 0x15, 0x15, 0x18, 0x13, 0x17, 0x15, 0x15, 0x12, 0x14, 0x18, 0x15, 0x15, 0x12, 0x15, 0x17, 0x15, 0x16, 0x13, 0x17, 0x0, 0x0, 0x13, 0x15, 0x18, 0x15, 0x13, 0x12, 0x12, 0x11, 0x15, 0x14, 0x0, 0x18, 0x15, 0x13, 0x15, 0x16, 0x0, 0x16, 0x0, 0x13, 0x16, 0x17, 0x14, 0x0, 0x18, 0x17, 0x17, 0x16, 0x15, 0x14, 0x15, 0x0, 0x0, 0x17, 0x18, 0x13, 0x11, 0xf, 0xe, 0x16, 0x17, 0xf, 0xf, 0x12, 0x11, 0x11, 0x12, 0x13, 0x15, 0x14, 0x13, 0x12, 0x13, 0x13, 0x12, 0xf, 0xc, 0xd, 0x10, 0x11, 0xf, 0x10, 0x11, 0xd, 0xb, 0xb, 0x11, 0x0, 0x1a, 0x83, 0x7e, 0x7a, 0x83, 0x7a, 0x7a, 0x7a, 0x78, 0x27, 0x17, 0x16, 0x14, 0x16, 0x15, 0x17, 0x17, 0x18, 0x0, 0x17, 0x15, 0x16, 0x16, 0x15, 0x15, 0x16, 0x15, 0x14, 0x10, 0xe, 0x10, 0x14, 0x13, 0x18, 0x13, 0x13, 0x15, 0x13, 0x18, 0x15, 0x18, 0x12, 0x16, 0x16, 0x18, 0x16, 0x17, 0x15, 0x18, 0x15, 0x17, 0x17, 0x18, 0x78, 0x78, 0x83, 0x78, 0x83, 0x7a, 0x78, 0x83, 0x55, 0x18, 0x0, 0x17, 0x0, 0x17, 0x16, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x16, 0x15, 0x16, 0x16, 0x17, 0x17, 0x16, 0x16, 0x18, 0x17, 0x15, 0x13, 0x17, 0x15, 0x16, 0xc, 0xf, 0x13, 0x10, 0xc, 0xf, 0x12, 0x15, 0x13, 0x13, 0x11, 0xe, 0xe, 0xd, 0xe, 0xe, 0xe, 0x14, 0x15, 0x3a, 0x84, 0x90, 0x88, 0x89, 0x89, 0x9c, 0x8f, 0x5e, 0xd, 0xd, 0xe, 0xe, 0x10, 0x16, 0x11, 0x10, 0x13, 0x16, 0x0, 0x0, 0x18, 0x14, 0x13, 0x12, 0x10, 0xd, 0x9, 0x8, 0x9, 0x9, 0xc, 0xc, 0xb, 0x12, 0x13, 0xc, 0xd, 0x14, 0x11, 0xf, 0xe, 0x10, 0x13, 0x16, 0x16, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x17, 0x16, 0x15, 0x13, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x14, 0x12, 0x16, 0x0, 0x18, 0x13, 0x16, 0x12, 0x13, 0x10, 0x14, 0x16, 0x13, 0x17, 0x10, 0x12, 0xf, 0x11, 0x15, 0x11, 0x16, 0x14, 0x17, 0x16, 0x17, 0x16, 0x16, 0x17, 0x15, 0x14, 0x14, 0x16, 0x12, 0x15, 0x11, 0x18, 0x16, 0x14, 0x10, 0x14, 0x13, 0x16, 0x15, 0x16, 0x15, 0x17, 0x16, 0x17, 0x16, 0x14, 0x13, 0x14, 0x15, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x16, 0x12, 0x13, 0x11, 0x13, 0x13, 0x13, 0x13, 0x18, 0x17, 0x14, 0x15, 0x15, 0x0, 0x14, 0x16, 0x15, 0x14, 0x13, 0x15, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x16, 0x18, 0x15, 0x16, 0x15, 0x17, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x18, 0x16, 0x17, 0x14, 0x15, 0x14, 0x14, 0x13, 0x17, 0x14, 0x17, 0x15, 0x17, 0x17, 0x18, 0x18, 0x16, 0x17, 0x15, 0x18, 0x16, 0x17, 0x15, 0x14, 0x14, 0x15, 0x16, 0x15, 0x18, 0x12, 0x10, 0xd, 0xe, 0x11, 0x12, 0xe, 0xf, 0x11, 0x10, 0x11, 0xf, 0x10, 0x11, 0x12, 0x10, 0x10, 0x12, 0x13, 0x13, 0x10, 0x10, 0x10, 0xd, 0xe, 0xf, 0xf, 0x11, 0x11, 0xf, 0xf, 0x13, 0x16, 0x42, 0x84, 0x8a, 0x7a, 0x78, 0x78, 0x83, 0x7a, 0x19, 0x17, 0x18, 0x16, 0x15, 0x16, 0x14, 0x17, 0x18, 0x18, 0x0, 0x17, 0x15, 0x17, 0x17, 0x15, 0x18, 0x0, 0x13, 0x12, 0x13, 0x13, 0xf, 0xf, 0x10, 0x14, 0xf, 0x11, 0x15, 0x14, 0x17, 0x14, 0x17, 0x12, 0x17, 0x16, 0x0, 0x15, 0x17, 0x14, 0x16, 0x15, 0x17, 0x14, 0x18, 0x51, 0x83, 0x78, 0x85, 0x78, 0x83, 0x78, 0x85, 0x36, 0x17, 0x18, 0x15, 0x0, 0x17, 0x17, 0x16, 0x17, 0x18, 0x0, 0x17, 0x18, 0x16, 0x15, 0x16, 0x14, 0x15, 0x17, 0x17, 0x14, 0x17, 0x18, 0x17, 0x13, 0x17, 0x11, 0x11, 0xb, 0xc, 0x12, 0x11, 0xe, 0x10, 0x12, 0x14, 0x13, 0x14, 0x12, 0x10, 0x12, 0x12, 0x12, 0x10, 0xf, 0x15, 0x0, 0x0, 0x41, 0x7a, 0x7a, 0x7a, 0x7e, 0x7e, 0x84, 0x75, 0x20, 0xf, 0x11, 0x11, 0x12, 0xf, 0xc, 0xc, 0xe, 0xf, 0x11, 0x10, 0x10, 0xb, 0xa, 0xa, 0xa, 0xd, 0xd, 0xf, 0x10, 0x12, 0x13, 0x15, 0x11, 0x10, 0x14, 0x10, 0xe, 0x11, 0xf, 0xb, 0x8, 0xd, 0xb, 0x9, 0xd, 0x16, 0x16, 0x0, 0x18, 0x17, 0x16, 0x18, 0x0, 0x16, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x17, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x15, 0x17, 0x16, 0x18, 0x16, 0x18, 0x16, 0x17, 0x14, 0x16, 0x14, 0x16, 0x17, 0x16, 0x18, 0x12, 0x12, 0xf, 0x10, 0x11, 0xe, 0x13, 0x12, 0x15, 0x14, 0x15, 0x16, 0x16, 0x15, 0x16, 0x17, 0x15, 0x17, 0x14, 0x16, 0x14, 0x16, 0x13, 0x15, 0x14, 0x17, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x16, 0x15, 0x14, 0x14, 0x15, 0x17, 0x0, 0x17, 0x18, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x15, 0x12, 0x15, 0x12, 0x16, 0x15, 0x12, 0x10, 0x13, 0x14, 0x13, 0x14, 0x12, 0x18, 0x13, 0x15, 0x14, 0x15, 0x16, 0x15, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x16, 0x18, 0x16, 0x17, 0x14, 0x17, 0x0, 0x17, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x15, 0x15, 0x15, 0x16, 0x14, 0x17, 0x14, 0x18, 0x15, 0x17, 0x18, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x17, 0x16, 0x16, 0x15, 0x15, 0x16, 0x17, 0x12, 0x16, 0xe, 0xd, 0x13, 0x13, 0x12, 0x12, 0x12, 0x12, 0xf, 0x12, 0x15, 0xf, 0xf, 0xe, 0x10, 0x13, 0x11, 0xf, 0x10, 0x10, 0xe, 0xb, 0xe, 0xe, 0xe, 0x10, 0x12, 0x10, 0x10, 0x13, 0x19, 0x5c, 0x84, 0x84, 0x7a, 0x7a, 0x8a, 0x7e, 0x4e, 0x14, 0x12, 0x12, 0x15, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x18, 0x15, 0x11, 0x17, 0x15, 0x10, 0x10, 0x13, 0x12, 0x10, 0x10, 0x11, 0x10, 0x17, 0xc, 0xe, 0x15, 0x12, 0x17, 0x12, 0x16, 0x13, 0x16, 0x17, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46, 0x7e, 0x84, 0x84, 0x8a, 0x84, 0x7e, 0x84, 0x27, 0x14, 0x18, 0x16, 0x18, 0x13, 0x16, 0x13, 0x13, 0x12, 0x14, 0x12, 0x14, 0x12, 0x10, 0x14, 0x14, 0x12, 0x13, 0x17, 0x16, 0x17, 0x15, 0x15, 0x12, 0x13, 0x13, 0x16, 0xc, 0xd, 0x13, 0x14, 0x13, 0x12, 0x11, 0x12, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0xe, 0xf, 0x10, 0xf, 0x14, 0x13, 0xf, 0x64, 0x88, 0x84, 0x8a, 0x8a, 0x7a, 0x78, 0x52, 0x12, 0x12, 0x12, 0x18, 0x17, 0x16, 0x15, 0x14, 0x12, 0x12, 0xf, 0xc, 0xd, 0xc, 0xc, 0xc, 0xb, 0xd, 0xd, 0xe, 0x10, 0x15, 0x0, 0x12, 0xc, 0x11, 0x11, 0x13, 0x14, 0x14, 0x12, 0x12, 0x14, 0x12, 0xb, 0x9, 0x16, 0x17, 0x15, 0x16, 0x16, 0x16, 0x0, 0x18, 0x13, 0x16, 0x14, 0x18, 0x0, 0x0, 0x16, 0x16, 0x15, 0x12, 0x15, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x0, 0x17, 0x17, 0x12, 0x14, 0x13, 0x16, 0x17, 0x14, 0x15, 0x14, 0x18, 0x14, 0x11, 0x15, 0xe, 0x12, 0x13, 0x13, 0x10, 0x12, 0x13, 0x14, 0x15, 0x15, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x17, 0x16, 0x18, 0x17, 0x18, 0x15, 0x16, 0x14, 0x16, 0x15, 0x16, 0x17, 0x16, 0x13, 0x12, 0x14, 0x16, 0x16, 0x12, 0x18, 0x12, 0x16, 0x11, 0x14, 0x12, 0x13, 0x14, 0x12, 0x16, 0x13, 0x18, 0x14, 0x16, 0x12, 0x15, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x14, 0x12, 0x14, 0x13, 0x15, 0x14, 0x11, 0x14, 0x16, 0x15, 0x15, 0x15, 0x13, 0x18, 0x13, 0x15, 0x15, 0x16, 0x12, 0x14, 0x0, 0x13, 0x14, 0x12, 0x14, 0x16, 0x15, 0x16, 0x13, 0x17, 0x13, 0x0, 0x14, 0x12, 0x14, 0x13, 0x15, 0x16, 0x18, 0x14, 0x0, 0x17, 0x17, 0x14, 0x13, 0x11, 0x16, 0x12, 0x17, 0x17, 0x18, 0x16, 0x13, 0x16, 0x11, 0x17, 0x17, 0x16, 0x13, 0x15, 0x15, 0x14, 0x16, 0x15, 0x17, 0x15, 0x16, 0x13, 0x17, 0x12, 0x13, 0x17, 0x16, 0x13, 0x10, 0x10, 0x11, 0x10, 0x14, 0x14, 0x10, 0x11, 0xf, 0x12, 0x15, 0x14, 0x13, 0x14, 0x15, 0x15, 0x10, 0x10, 0x14, 0x16, 0x13, 0x16, 0x12, 0xd, 0xc, 0xf, 0x84, 0x8a, 0x84, 0x7a, 0x85, 0x84, 0x75, 0x16, 0x15, 0x13, 0x11, 0x14, 0x17, 0x16, 0x16, 0x15, 0x14, 0x18, 0x0, 0x17, 0x16, 0x18, 0x16, 0x17, 0x14, 0x11, 0x10, 0x12, 0xf, 0xd, 0x10, 0x12, 0x11, 0x15, 0x10, 0x10, 0x16, 0x14, 0x16, 0x14, 0x16, 0x13, 0x17, 0x16, 0x18, 0x0, 0x0, 0x17, 0x17, 0x16, 0x18, 0x0, 0x0, 0x2a, 0x7a, 0x7a, 0x7e, 0x7a, 0x7a, 0x7e, 0x8a, 0x1a, 0x15, 0x18, 0x15, 0x18, 0x14, 0x14, 0x14, 0x15, 0x13, 0x15, 0x14, 0x15, 0x14, 0x12, 0x16, 0x15, 0x14, 0x13, 0x18, 0x17, 0x18, 0x17, 0x17, 0x15, 0x16, 0x17, 0x0, 0xd, 0xc, 0x13, 0x15, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x13, 0x14, 0x14, 0x12, 0x13, 0x13, 0x1d, 0x15, 0x14, 0x16, 0x58, 0x7e, 0x7e, 0x7e, 0x85, 0x85, 0x7a, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x13, 0x17, 0x15, 0x15, 0x13, 0x12, 0x10, 0xe, 0xf, 0xc, 0xa, 0xb, 0xf, 0x13, 0xe, 0xa, 0xb, 0xc, 0xd, 0xd, 0xe, 0xe, 0xe, 0x10, 0xe, 0xb, 0xc, 0x15, 0x16, 0x13, 0x14, 0x16, 0x17, 0x18, 0x17, 0x12, 0x14, 0x14, 0x17, 0x18, 0x17, 0x14, 0x15, 0x15, 0x11, 0x16, 0x12, 0x16, 0x13, 0x15, 0x14, 0x17, 0x14, 0x16, 0x12, 0x16, 0x13, 0x15, 0x11, 0x15, 0x15, 0x16, 0x17, 0x16, 0x17, 0x16, 0x18, 0x18, 0x16, 0x17, 0x13, 0x14, 0x13, 0x14, 0x12, 0x13, 0x13, 0x13, 0x15, 0x15, 0x15, 0x13, 0x17, 0x15, 0x17, 0x13, 0x16, 0x15, 0x17, 0x17, 0x18, 0x16, 0x15, 0x15, 0x18, 0x0, 0x17, 0x16, 0x18, 0x18, 0x17, 0x15, 0x16, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x0, 0x15, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x16, 0x18, 0x16, 0x16, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x16, 0x14, 0x11, 0x13, 0x10, 0x11, 0x11, 0x11, 0x16, 0x15, 0x15, 0x13, 0x15, 0x13, 0x18, 0x12, 0x11, 0x14, 0x16, 0x12, 0x13, 0x18, 0x15, 0x13, 0x13, 0x14, 0x18, 0x16, 0x16, 0x13, 0x16, 0x15, 0x16, 0x17, 0x13, 0x18, 0x16, 0x18, 0x18, 0x18, 0x16, 0x0, 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x18, 0x16, 0x18, 0x16, 0x14, 0x17, 0x14, 0x18, 0x16, 0x16, 0x15, 0x16, 0x16, 0x18, 0x16, 0x14, 0x16, 0x11, 0x14, 0x16, 0x18, 0x10, 0x10, 0x11, 0x13, 0x11, 0x12, 0x11, 0x12, 0x12, 0x14, 0x13, 0x14, 0x14, 0x12, 0x13, 0x14, 0x17, 0x18, 0x0, 0x0, 0x17, 0xf, 0xf, 0x15, 0x18, 0x13, 0x15, 0x12, 0xf, 0x13, 0x48, 0x8a, 0x7e, 0x8a, 0x84, 0x7e, 0x7e, 0x1c, 0x13, 0x16, 0x15, 0x13, 0x15, 0x16, 0x15, 0x14, 0x14, 0x15, 0x18, 0x18, 0x13, 0x13, 0x0, 0x0, 0x16, 0x12, 0x16, 0x13, 0x12, 0x12, 0x12, 0x14, 0x14, 0x13, 0x15, 0x11, 0x12, 0x16, 0x13, 0x14, 0x12, 0x17, 0x13, 0x18, 0x15, 0x17, 0x0, 0x0, 0x17, 0x16, 0x15, 0x17, 0x0, 0x0, 0x2c, 0x83, 0x78, 0x78, 0x78, 0x78, 0x7a, 0x85, 0x18, 0x15, 0x0, 0x15, 0x1b, 0x15, 0x16, 0x15, 0x16, 0x16, 0x16, 0x14, 0x15, 0x15, 0x13, 0x17, 0x16, 0x13, 0x14, 0x0, 0x18, 0x18, 0x17, 0x0, 0x16, 0x18, 0x17, 0x12, 0xd, 0xd, 0x10, 0x10, 0xf, 0xf, 0xf, 0xe, 0xe, 0xd, 0xe, 0xf, 0xf, 0x11, 0xf, 0x10, 0x11, 0xf, 0x10, 0x11, 0x12, 0x12, 0xf, 0x7d, 0x89, 0x89, 0x89, 0x88, 0x90, 0x30, 0x15, 0x18, 0x14, 0x13, 0x13, 0x14, 0x14, 0x13, 0x11, 0x13, 0x15, 0x12, 0x17, 0x0, 0x14, 0x11, 0x13, 0x11, 0x16, 0x14, 0xe, 0xd, 0xf, 0xe, 0xe, 0xf, 0xe, 0xd, 0xf, 0x10, 0x10, 0x10, 0xe, 0xa, 0xf, 0x16, 0x16, 0x16, 0x17, 0x18, 0x17, 0x15, 0x17, 0x14, 0x18, 0x17, 0x0, 0x15, 0x15, 0x16, 0x15, 0x15, 0x12, 0x18, 0x14, 0x17, 0x12, 0x17, 0x15, 0x18, 0x13, 0x16, 0x13, 0x17, 0x13, 0x15, 0x14, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x16, 0x0, 0x18, 0x16, 0x18, 0x14, 0x17, 0x13, 0x14, 0x11, 0x14, 0x15, 0x15, 0x14, 0x12, 0x15, 0x15, 0x17, 0x14, 0x18, 0x15, 0x17, 0x16, 0x18, 0x16, 0x18, 0x16, 0x16, 0x15, 0x18, 0x0, 0x15, 0x12, 0x17, 0x14, 0x12, 0x12, 0x16, 0x16, 0x13, 0x16, 0x13, 0x16, 0x13, 0x18, 0x14, 0x15, 0x15, 0x13, 0x14, 0x12, 0x15, 0x11, 0x15, 0x13, 0x0, 0x17, 0x16, 0x12, 0x13, 0x14, 0x16, 0x13, 0x13, 0x12, 0x16, 0x17, 0x14, 0x16, 0x12, 0x16, 0x14, 0x13, 0x13, 0x13, 0x16, 0x15, 0x16, 0x15, 0x17, 0x16, 0x18, 0x17, 0x16, 0x18, 0x17, 0x15, 0x15, 0x18, 0x15, 0x13, 0x11, 0x10, 0x18, 0x14, 0x15, 0x11, 0x14, 0x13, 0x14, 0x16, 0x11, 0x18, 0x15, 0x17, 0x18, 0x17, 0x14, 0x0, 0x11, 0x12, 0x14, 0x18, 0x13, 0x15, 0x10, 0x14, 0x11, 0x17, 0x16, 0x11, 0x14, 0x13, 0x18, 0x15, 0x15, 0x15, 0x15, 0x14, 0x15, 0x13, 0x12, 0x15, 0x12, 0x17, 0x16, 0x17, 0x10, 0x12, 0x13, 0x15, 0x15, 0x15, 0x15, 0x13, 0x12, 0x15, 0x15, 0x15, 0x17, 0x14, 0x14, 0x13, 0x13, 0x14, 0x13, 0x15, 0x13, 0x10, 0x13, 0x13, 0x11, 0x11, 0x12, 0x11, 0xe, 0x16, 0x5c, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x51, 0x13, 0x12, 0x12, 0x13, 0x14, 0x15, 0x13, 0x11, 0x11, 0x14, 0x15, 0xd, 0x10, 0x17, 0x18, 0x0, 0x0, 0x0, 0x14, 0x17, 0x0, 0x17, 0x15, 0x14, 0x10, 0xf, 0x10, 0x10, 0xd, 0x10, 0x15, 0x13, 0x17, 0x12, 0x16, 0x12, 0x16, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x16, 0x7a, 0x85, 0x83, 0x78, 0x83, 0x7a, 0x7a, 0x1a, 0x11, 0x1a, 0x14, 0x16, 0x16, 0x18, 0x14, 0x13, 0x14, 0x18, 0x14, 0x13, 0x13, 0xf, 0x10, 0x13, 0x10, 0x13, 0x17, 0x12, 0x12, 0x12, 0x16, 0xe, 0x11, 0xf, 0xe, 0xe, 0xb, 0xe, 0x11, 0x11, 0x12, 0xe, 0xd, 0xd, 0xd, 0x10, 0x12, 0x12, 0x10, 0x10, 0x10, 0x10, 0xf, 0xf, 0x10, 0x14, 0xf, 0xc, 0x22, 0x5e, 0x87, 0x89, 0x89, 0x56, 0x10, 0x11, 0x11, 0xe, 0xe, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x17, 0x14, 0x14, 0x0, 0x18, 0x17, 0x17, 0x18, 0x0, 0x16, 0x10, 0xf, 0x13, 0x16, 0x14, 0xf, 0xc, 0xc, 0xd, 0xf, 0xf, 0xe, 0xe, 0xb, 0x13, 0x18, 0x16, 0x14, 0x17, 0x16, 0x16, 0x13, 0x16, 0x12, 0x16, 0x15, 0x16, 0x13, 0x15, 0x16, 0x16, 0x15, 0x12, 0x16, 0x12, 0x16, 0x11, 0x15, 0x12, 0x16, 0x11, 0x13, 0x11, 0x17, 0x10, 0x16, 0x15, 0x17, 0x15, 0x15, 0x14, 0x15, 0x17, 0x12, 0x14, 0x14, 0x16, 0x0, 0x17, 0x0, 0x17, 0x0, 0x18, 0x17, 0x18, 0x18, 0x16, 0x14, 0x16, 0x14, 0x16, 0x13, 0x18, 0x14, 0x16, 0x12, 0x16, 0x10, 0x11, 0xe, 0xf, 0x12, 0x14, 0x14, 0x15, 0x13, 0x17, 0x15, 0x15, 0x17, 0x15, 0x17, 0x17, 0x17, 0x17, 0x18, 0x16, 0x18, 0x17, 0x18, 0x18, 0x16, 0x16, 0x14, 0x16, 0x14, 0x18, 0x17, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x16, 0x15, 0x17, 0x18, 0x15, 0x16, 0x11, 0x15, 0x14, 0x13, 0x13, 0x11, 0x13, 0x13, 0x15, 0x13, 0x16, 0x13, 0x18, 0x16, 0x16, 0x17, 0x15, 0x12, 0x18, 0x0, 0x17, 0x17, 0x17, 0x14, 0x17, 0x13, 0x17, 0x14, 0x13, 0x13, 0x14, 0x14, 0x15, 0x0, 0x14, 0x16, 0x14, 0x0, 0x13, 0x16, 0x17, 0x16, 0x14, 0x17, 0x14, 0x18, 0x16, 0x16, 0x13, 0x14, 0x17, 0x13, 0x15, 0x15, 0x17, 0x15, 0x14, 0x14, 0x18, 0x18, 0x16, 0x17, 0x0, 0x17, 0x12, 0x16, 0x17, 0x18, 0xf, 0xc, 0x10, 0x14, 0x15, 0x13, 0x14, 0x12, 0x13, 0x15, 0x16, 0x16, 0x16, 0x16, 0x15, 0x15, 0x15, 0x16, 0x17, 0x17, 0x15, 0x10, 0x13, 0x12, 0x11, 0x12, 0x11, 0x10, 0xd, 0x12, 0x6b, 0x78, 0x7a, 0x85, 0x7a, 0x6e, 0x13, 0x15, 0x14, 0x14, 0x17, 0x15, 0x17, 0x17, 0x15, 0x12, 0x12, 0x13, 0x14, 0x17, 0x0, 0x0, 0x0, 0x14, 0x15, 0x18, 0x0, 0x18, 0x13, 0x10, 0x10, 0xe, 0x12, 0x13, 0x15, 0xf, 0x11, 0x16, 0x14, 0x18, 0x15, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x15, 0x17, 0x15, 0x17, 0x17, 0x0, 0x18, 0x78, 0x7a, 0x7a, 0x78, 0x83, 0x78, 0x83, 0x0, 0x17, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x13, 0x14, 0x17, 0x13, 0x14, 0x16, 0x16, 0x17, 0x18, 0x15, 0x16, 0x12, 0x18, 0x13, 0x16, 0x14, 0x15, 0x12, 0xa, 0x11, 0x11, 0xf, 0x11, 0x11, 0x10, 0x11, 0x11, 0x12, 0x13, 0x11, 0x12, 0x13, 0x17, 0x17, 0x13, 0x18, 0x17, 0x11, 0x10, 0xc, 0xc, 0xc, 0xd, 0xe, 0x10, 0x20, 0x11, 0x11, 0x10, 0x12, 0x12, 0x11, 0x11, 0x12, 0x13, 0x14, 0x16, 0x16, 0x16, 0x15, 0x17, 0x17, 0x18, 0x18, 0x18, 0x0, 0x16, 0x15, 0x14, 0x13, 0x16, 0xf, 0x6, 0xa, 0xf, 0x11, 0x13, 0x15, 0x14, 0x10, 0x9, 0x13, 0x18, 0x16, 0x15, 0x17, 0x17, 0x16, 0x15, 0x16, 0x16, 0x17, 0x16, 0x17, 0x15, 0x17, 0x17, 0x17, 0x16, 0x14, 0x17, 0x13, 0x16, 0x13, 0x13, 0x11, 0x17, 0x14, 0x16, 0x13, 0x18, 0x14, 0x15, 0x16, 0x17, 0x15, 0x16, 0x13, 0x15, 0x12, 0x10, 0xc, 0xb, 0xd, 0x10, 0x10, 0x15, 0x15, 0x17, 0x15, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x16, 0x0, 0x17, 0x0, 0x16, 0x17, 0x18, 0x0, 0x16, 0x17, 0x16, 0x16, 0x15, 0x15, 0x15, 0x15, 0x16, 0x17, 0x16, 0x17, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x17, 0x14, 0x17, 0x15, 0x17, 0x17, 0x15, 0x14, 0x12, 0x13, 0x11, 0x15, 0x13, 0x14, 0x13, 0x15, 0x15, 0x16, 0x18, 0x0, 0x15, 0x16, 0x12, 0x12, 0x11, 0x12, 0x13, 0xe, 0x10, 0x11, 0x11, 0x10, 0xf, 0x16, 0x15, 0x17, 0x14, 0x16, 0x12, 0x16, 0x13, 0x16, 0x17, 0x16, 0x12, 0x12, 0x18, 0x17, 0x16, 0x17, 0x15, 0x18, 0x16, 0x18, 0x15, 0x15, 0x15, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x18, 0x17, 0x16, 0x15, 0x17, 0x17, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x18, 0x17, 0x14, 0x16, 0x14, 0x13, 0x12, 0x14, 0x17, 0x17, 0xf, 0xc, 0x11, 0x13, 0xf, 0x11, 0xf, 0x11, 0x15, 0x12, 0x11, 0x11, 0x14, 0x15, 0x13, 0x10, 0x11, 0x12, 0x11, 0x13, 0x10, 0xc, 0x11, 0x11, 0xe, 0x12, 0x13, 0x10, 0xd, 0x11, 0x68, 0x78, 0x83, 0x7e, 0x6e, 0x30, 0x14, 0x17, 0x12, 0x15, 0x0, 0x16, 0x15, 0x0, 0x15, 0xc, 0xb, 0xf, 0x17, 0x0, 0x18, 0x0, 0x17, 0x10, 0x11, 0x18, 0x0, 0x12, 0xe, 0x10, 0xf, 0xc, 0xe, 0xe, 0x13, 0xf, 0x13, 0x17, 0x14, 0x18, 0x17, 0x0, 0x17, 0x0, 0x16, 0x16, 0x16, 0x17, 0x14, 0x17, 0x15, 0x16, 0x18, 0x18, 0x0, 0x78, 0x7a, 0x83, 0x83, 0x78, 0x83, 0x7a, 0x18, 0x16, 0x0, 0x17, 0x0, 0x15, 0x16, 0x16, 0x16, 0x17, 0x16, 0x11, 0x13, 0x16, 0x12, 0x14, 0x11, 0x15, 0x14, 0x15, 0x13, 0x17, 0x12, 0x17, 0x15, 0x0, 0x15, 0x11, 0x10, 0xb, 0xd, 0xe, 0xe, 0x10, 0x10, 0x10, 0x11, 0x12, 0x13, 0x13, 0x10, 0x10, 0x12, 0x12, 0x10, 0x10, 0x17, 0x15, 0x11, 0x11, 0xd, 0xd, 0x10, 0xe, 0x10, 0x12, 0x13, 0x12, 0x11, 0x10, 0x11, 0x11, 0xd, 0xe, 0x10, 0x11, 0x12, 0x11, 0x12, 0x11, 0x10, 0x10, 0x11, 0xf, 0x10, 0x14, 0x15, 0x17, 0x15, 0x12, 0x11, 0x12, 0xc, 0x8, 0xa, 0x10, 0xe, 0xf, 0xf, 0xd, 0xa, 0xa, 0x13, 0x16, 0x17, 0x18, 0x18, 0x15, 0x15, 0x14, 0x13, 0x12, 0x15, 0x13, 0x17, 0x13, 0x12, 0x17, 0x15, 0x14, 0x11, 0x14, 0x10, 0x15, 0x15, 0x14, 0x10, 0x14, 0x13, 0x18, 0x14, 0x16, 0x14, 0x16, 0x14, 0x16, 0x14, 0x16, 0x15, 0x18, 0xb, 0x8, 0xb, 0xe, 0xf, 0xc, 0x9, 0x8, 0xb, 0xa, 0xc, 0xe, 0x11, 0x14, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x15, 0x14, 0x14, 0x15, 0x17, 0x14, 0x10, 0x13, 0x13, 0x15, 0x15, 0x11, 0x16, 0x16, 0x0, 0x16, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x15, 0x18, 0x17, 0x17, 0x17, 0x0, 0x16, 0x17, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x17, 0x17, 0x18, 0x15, 0x11, 0x13, 0x16, 0x16, 0x11, 0xf, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x18, 0x16, 0x18, 0x17, 0x18, 0x13, 0x12, 0x17, 0x16, 0x15, 0x17, 0x16, 0x17, 0x15, 0x15, 0x11, 0x12, 0x14, 0x16, 0x15, 0x12, 0x17, 0x16, 0x16, 0x14, 0x17, 0xf, 0x15, 0x18, 0x0, 0x17, 0x16, 0x11, 0x17, 0x14, 0x18, 0x17, 0x17, 0x15, 0x12, 0x16, 0x12, 0x17, 0x14, 0x16, 0x14, 0x15, 0x13, 0x13, 0x15, 0x11, 0x12, 0x11, 0x17, 0x16, 0x10, 0xc, 0xd, 0x15, 0x12, 0xf, 0xf, 0xf, 0x10, 0x13, 0x13, 0x12, 0x14, 0x15, 0x15, 0x16, 0x17, 0x15, 0x13, 0x12, 0x12, 0x12, 0xd, 0xf, 0x12, 0xe, 0x15, 0x16, 0x11, 0xe, 0xe, 0x1d, 0x42, 0x68, 0x44, 0x13, 0x13, 0x12, 0x15, 0x15, 0x12, 0x17, 0x15, 0xe, 0x10, 0x15, 0x13, 0x10, 0x13, 0x16, 0x13, 0x12, 0x12, 0x11, 0x11, 0x11, 0x13, 0x11, 0x10, 0x13, 0xf, 0xe, 0xd, 0xe, 0x10, 0x10, 0xe, 0x16, 0x16, 0x14, 0x0, 0x0, 0x0, 0x14, 0x16, 0x14, 0x18, 0x18, 0x0, 0x15, 0x18, 0x14, 0x17, 0x17, 0x18, 0x0, 0x78, 0x78, 0x78, 0x78, 0x83, 0x78, 0x7a, 0x18, 0x17, 0x0, 0x16, 0x16, 0x14, 0x13, 0x14, 0x16, 0x13, 0x15, 0x14, 0x12, 0x13, 0x13, 0x15, 0x15, 0x18, 0x15, 0x16, 0x13, 0x18, 0x13, 0x15, 0x12, 0x15, 0x15, 0x11, 0x7, 0xb, 0x13, 0xf, 0xd, 0x11, 0x10, 0xf, 0x11, 0x13, 0xf, 0x10, 0xf, 0xf, 0xf, 0xe, 0x11, 0x14, 0x18, 0x15, 0x11, 0x10, 0xf, 0xf, 0x11, 0x10, 0x10, 0x12, 0x14, 0x12, 0x12, 0x13, 0x13, 0x13, 0x10, 0x10, 0x13, 0x12, 0x15, 0x16, 0x14, 0x12, 0x11, 0x11, 0x11, 0xf, 0x10, 0x14, 0x13, 0x15, 0x14, 0x12, 0x10, 0x11, 0xb, 0x9, 0xa, 0xf, 0xf, 0xe, 0xe, 0xd, 0xa, 0xb, 0x13, 0x17, 0x16, 0x15, 0x17, 0x15, 0x17, 0x16, 0x16, 0x16, 0x17, 0x16, 0x18, 0x15, 0x14, 0x17, 0x15, 0x16, 0x13, 0x15, 0x12, 0x17, 0x14, 0x15, 0x12, 0x16, 0x13, 0x16, 0x14, 0x15, 0x12, 0x16, 0x13, 0x15, 0x12, 0x14, 0x17, 0x18, 0x10, 0x17, 0x14, 0x11, 0x16, 0x16, 0x12, 0x11, 0xe, 0xa, 0xc, 0xc, 0xa, 0x8, 0xb, 0xb, 0xe, 0x10, 0x13, 0x15, 0x13, 0x13, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x17, 0x18, 0x15, 0x18, 0x16, 0x16, 0x17, 0x0, 0x15, 0x16, 0x16, 0x17, 0x15, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x10, 0xc, 0xf, 0x13, 0x15, 0xe, 0xb, 0x15, 0x14, 0x14, 0x12, 0x15, 0x10, 0x17, 0x12, 0x14, 0x15, 0x15, 0x11, 0x14, 0x18, 0x15, 0x13, 0x17, 0x14, 0x18, 0x14, 0x17, 0x15, 0x16, 0x18, 0x17, 0x17, 0x15, 0x18, 0x18, 0x18, 0x0, 0x18, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x16, 0x16, 0x17, 0x0, 0x0, 0x17, 0x15, 0x16, 0x16, 0x18, 0x13, 0x13, 0x14, 0x16, 0x13, 0x12, 0x15, 0x15, 0x18, 0x17, 0x10, 0xd, 0xd, 0x13, 0xf, 0xf, 0x10, 0x10, 0x10, 0x10, 0x12, 0x12, 0x15, 0x16, 0x16, 0x17, 0x0, 0x16, 0x14, 0x13, 0x12, 0x12, 0xf, 0xe, 0xf, 0x11, 0x15, 0x15, 0x10, 0xd, 0xe, 0x17, 0x15, 0x13, 0x14, 0x14, 0x14, 0x14, 0x16, 0x16, 0x13, 0x13, 0x14, 0x15, 0x12, 0x17, 0x17, 0x13, 0x16, 0x15, 0x14, 0x15, 0x13, 0x13, 0x13, 0x14, 0x13, 0x11, 0x10, 0x11, 0xd, 0xb, 0xe, 0x13, 0x15, 0x15, 0xf, 0x15, 0x18, 0x14, 0x17, 0x14, 0x17, 0x13, 0x17, 0x0, 0x0, 0x17, 0x18, 0x16, 0x16, 0x16, 0x18, 0x16, 0x17, 0x15, 0x7a, 0x85, 0x7a, 0x83, 0x7e, 0x83, 0x7a, 0x0, 0x16, 0x0, 0x16, 0x18, 0x18, 0x16, 0x16, 0x15, 0x16, 0x18, 0x16, 0x17, 0x17, 0x14, 0x15, 0x16, 0x17, 0x15, 0x18, 0x15, 0x0, 0x17, 0x0, 0x16, 0x16, 0x18, 0x15, 0xd, 0xd, 0x14, 0x11, 0xf, 0x11, 0x10, 0xf, 0x12, 0x11, 0xd, 0xf, 0xe, 0xe, 0xe, 0xf, 0x14, 0x0, 0x0, 0x13, 0xe, 0xe, 0xe, 0xd, 0x10, 0x11, 0x14, 0x15, 0x15, 0x14, 0x15, 0x16, 0x14, 0x17, 0x13, 0x14, 0x16, 0x18, 0x18, 0x15, 0x13, 0x13, 0x12, 0xf, 0xf, 0xe, 0x10, 0x10, 0xe, 0xf, 0x10, 0x10, 0xf, 0x10, 0xc, 0xb, 0xd, 0x10, 0xd, 0xc, 0xe, 0x10, 0xa, 0xa, 0x11, 0x15, 0x12, 0x11, 0x12, 0x11, 0x16, 0x14, 0x16, 0x15, 0x16, 0x16, 0x17, 0x14, 0x14, 0x15, 0x13, 0x16, 0x12, 0x14, 0x10, 0x16, 0x13, 0x13, 0xe, 0x15, 0xf, 0x14, 0x13, 0x14, 0x11, 0x15, 0x13, 0x14, 0x13, 0x16, 0x14, 0x15, 0x15, 0x0, 0x14, 0x14, 0x17, 0x18, 0x0, 0x0, 0x17, 0x13, 0x11, 0x13, 0x11, 0xe, 0x10, 0xe, 0xe, 0xe, 0x10, 0x11, 0xe, 0xb, 0xb, 0xb, 0xf, 0xf, 0x13, 0x13, 0x13, 0x15, 0x16, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x11, 0x12, 0x12, 0x11, 0x15, 0x18, 0x14, 0x14, 0x16, 0x15, 0x16, 0x11, 0x16, 0x14, 0x15, 0x16, 0x15, 0x11, 0x14, 0x18, 0x16, 0x13, 0x17, 0x13, 0x17, 0x14, 0x16, 0x15, 0x16, 0x18, 0x15, 0x16, 0x13, 0x17, 0x18, 0x18, 0x17, 0x18, 0x12, 0x16, 0x15, 0x15, 0x14, 0x16, 0x17, 0x0, 0x16, 0x14, 0x12, 0x13, 0x0, 0x18, 0x14, 0x10, 0x13, 0x13, 0x17, 0x17, 0x13, 0x14, 0x14, 0x12, 0x12, 0x16, 0x16, 0x18, 0x17, 0x10, 0x12, 0xf, 0x10, 0x12, 0x10, 0x13, 0x12, 0x10, 0x13, 0x15, 0x10, 0x11, 0x16, 0x0, 0x15, 0x0, 0x15, 0x12, 0x12, 0x12, 0x11, 0xe, 0xc, 0xd, 0xf, 0x13, 0x13, 0xf, 0xc, 0x12, 0x0, 0x16, 0x15, 0x1c, 0x12, 0x12, 0x16, 0x16, 0x14, 0xf, 0xf, 0x15, 0x18, 0x14, 0x17, 0x17, 0x15, 0x16, 0x14, 0x14, 0x16, 0x15, 0x16, 0x16, 0x16, 0x14, 0x14, 0xe, 0xf, 0x11, 0x11, 0x14, 0x0, 0x0, 0x18, 0x11, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x15, 0x18, 0x0, 0x0, 0x17, 0x18, 0x16, 0x16, 0x15, 0x0, 0x16, 0x17, 0x16, 0x83, 0x7a, 0x83, 0x7a, 0x7e, 0x7a, 0x7a, 0x18, 0x14, 0x18, 0x16, 0x17, 0x17, 0x18, 0x16, 0x14, 0x15, 0x18, 0x15, 0x17, 0x16, 0x11, 0x14, 0x16, 0x17, 0x16, 0x0, 0x15, 0x18, 0x15, 0x18, 0x14, 0x17, 0x17, 0x11, 0xe, 0xa, 0xe, 0x11, 0x10, 0x10, 0x10, 0x10, 0x12, 0x12, 0x11, 0x11, 0x11, 0x12, 0x12, 0x13, 0x16, 0x0, 0x0, 0x17, 0x11, 0xf, 0x11, 0x10, 0xf, 0x10, 0x10, 0xf, 0xe, 0xf, 0x10, 0x10, 0xe, 0xf, 0xf, 0x11, 0x15, 0x17, 0x17, 0x12, 0x11, 0x11, 0x12, 0x10, 0x11, 0x12, 0x11, 0xf, 0xe, 0x11, 0x11, 0x11, 0xf, 0xd, 0xd, 0xc, 0x10, 0x12, 0xf, 0xf, 0xf, 0xf, 0xa, 0xe, 0x15, 0x18, 0x16, 0x14, 0x17, 0x14, 0x14, 0x15, 0x15, 0x13, 0x14, 0x14, 0x16, 0x13, 0x13, 0x16, 0x11, 0x16, 0x12, 0x14, 0xf, 0x12, 0xe, 0x12, 0xf, 0x16, 0x10, 0x14, 0x13, 0x14, 0x13, 0x15, 0x13, 0x15, 0x13, 0x15, 0x13, 0x12, 0x13, 0x0, 0x14, 0x10, 0xc, 0xd, 0x13, 0x0, 0x16, 0x10, 0x10, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x10, 0x13, 0x12, 0xf, 0xb, 0x9, 0xc, 0xd, 0xb, 0xd, 0xd, 0xf, 0x10, 0x11, 0x13, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x14, 0x15, 0x14, 0x13, 0x14, 0x12, 0x14, 0x18, 0x18, 0x0, 0x0, 0x0, 0x16, 0x16, 0x15, 0x14, 0x13, 0x16, 0x17, 0x13, 0x11, 0x15, 0x14, 0x15, 0x10, 0x16, 0x13, 0x13, 0x15, 0x13, 0xd, 0x11, 0x16, 0x15, 0x13, 0x17, 0x12, 0x17, 0xf, 0xf, 0x10, 0x14, 0x16, 0x14, 0x14, 0x13, 0x16, 0x15, 0x17, 0x15, 0x0, 0x16, 0x18, 0x17, 0x17, 0x18, 0x17, 0x16, 0x17, 0x12, 0x16, 0x12, 0x13, 0x15, 0x10, 0x14, 0x12, 0x16, 0x12, 0x17, 0x0, 0x16, 0x15, 0x11, 0x13, 0x16, 0x17, 0x13, 0x16, 0x14, 0xf, 0x13, 0x12, 0x11, 0x14, 0x13, 0x15, 0x13, 0x11, 0x13, 0x16, 0x13, 0x13, 0x17, 0x17, 0x14, 0x14, 0x14, 0x14, 0x13, 0x14, 0x13, 0x10, 0xf, 0xe, 0x10, 0x16, 0x13, 0xd, 0xc, 0x14, 0x0, 0x15, 0x15, 0x13, 0x12, 0x15, 0x1a, 0xf, 0xe, 0x12, 0xf, 0x10, 0x14, 0x12, 0x15, 0x14, 0x14, 0x12, 0x12, 0x13, 0x12, 0x14, 0x17, 0x12, 0x12, 0x12, 0x12, 0xf, 0xe, 0xf, 0xf, 0x10, 0x11, 0x14, 0x13, 0xd, 0x13, 0x0, 0x0, 0x0, 0x18, 0x0, 0x15, 0x18, 0x17, 0x0, 0x14, 0x16, 0x13, 0x10, 0x12, 0x18, 0x15, 0x0, 0x16, 0x7a, 0x7a, 0x78, 0x85, 0x7e, 0x83, 0x85, 0x17, 0x11, 0x17, 0x12, 0x13, 0x13, 0x13, 0x14, 0x15, 0x13, 0x15, 0x14, 0x13, 0x13, 0x11, 0x15, 0x13, 0x17, 0x12, 0x17, 0x13, 0x17, 0x13, 0x16, 0x11, 0x16, 0x0, 0x11, 0x9, 0xa, 0xf, 0x14, 0x12, 0x15, 0x12, 0x10, 0x10, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x16, 0x16, 0x18, 0x18, 0x15, 0x15, 0x14, 0x13, 0x14, 0x14, 0x15, 0x13, 0x11, 0x11, 0x11, 0x11, 0x11, 0xf, 0x10, 0x10, 0x13, 0x13, 0x15, 0x15, 0xf, 0xe, 0xf, 0xf, 0xf, 0x10, 0x10, 0x11, 0xf, 0xe, 0xf, 0xf, 0xd, 0xe, 0xe, 0xa, 0x7, 0x10, 0x13, 0x14, 0x13, 0x11, 0x12, 0xc, 0xb, 0x14, 0x17, 0x14, 0x13, 0x16, 0x14, 0x15, 0x17, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x16, 0x18, 0x16, 0x18, 0x16, 0x17, 0x14, 0x15, 0x13, 0x15, 0x15, 0x17, 0x13, 0x15, 0x13, 0x15, 0x11, 0x12, 0x13, 0x15, 0x12, 0x14, 0xf, 0xe, 0x10, 0x18, 0x0, 0x14, 0xf, 0xd, 0xe, 0x15, 0x17, 0xf, 0x11, 0x15, 0x16, 0x13, 0x11, 0x13, 0x14, 0xe, 0xf, 0x11, 0x11, 0x13, 0x11, 0x10, 0x13, 0x15, 0x14, 0x10, 0x10, 0x10, 0x10, 0xc, 0xc, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xb, 0xc, 0xe, 0x11, 0x13, 0x14, 0x15, 0x16, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x15, 0x14, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x12, 0x14, 0x11, 0x11, 0x12, 0x11, 0x16, 0x16, 0x16, 0x15, 0x17, 0x11, 0x16, 0x14, 0x14, 0x17, 0x16, 0x10, 0x13, 0x16, 0x16, 0x13, 0x16, 0x15, 0x0, 0x0, 0x18, 0x16, 0x15, 0x14, 0x12, 0x15, 0x14, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x17, 0x17, 0x12, 0x14, 0x13, 0x16, 0x17, 0x14, 0x16, 0x17, 0x0, 0x15, 0x17, 0x17, 0x17, 0x16, 0x12, 0x13, 0x15, 0x16, 0x13, 0x16, 0x13, 0x11, 0x11, 0x11, 0x10, 0x14, 0x11, 0x12, 0x11, 0x10, 0x12, 0x14, 0x11, 0x12, 0x16, 0x14, 0x14, 0x14, 0x14, 0x15, 0x14, 0x12, 0x11, 0xd, 0xa, 0xc, 0xd, 0x10, 0xe, 0xd, 0xe, 0x14, 0x0, 0x13, 0x13, 0x13, 0x12, 0x15, 0xf, 0xf, 0x11, 0x11, 0x12, 0x12, 0x12, 0x13, 0x15, 0x16, 0x15, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x16, 0x15, 0x14, 0x12, 0xd, 0xf, 0xe, 0xe, 0xf, 0x10, 0x15, 0x15, 0xe, 0x14, 0x18, 0x14, 0x18, 0x12, 0x17, 0x14, 0x17, 0x18, 0x0, 0x16, 0x18, 0x15, 0x18, 0x16, 0x18, 0x16, 0x17, 0x17, 0x7a, 0x78, 0x83, 0x7a, 0x83, 0x83, 0x7e, 0x0, 0x16, 0x18, 0x15, 0x18, 0x13, 0x14, 0x0, 0x0, 0x16, 0x18, 0x17, 0x16, 0x15, 0x13, 0x17, 0x17, 0x18, 0x16, 0x0, 0x15, 0x17, 0x14, 0x16, 0x16, 0x17, 0x17, 0x13, 0xc, 0xc, 0x16, 0x0, 0x18, 0x15, 0x13, 0x11, 0x12, 0x13, 0x11, 0x11, 0x11, 0x13, 0x12, 0x16, 0x16, 0x17, 0x17, 0x12, 0x12, 0x13, 0x10, 0x10, 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x10, 0x12, 0x11, 0x13, 0x12, 0x14, 0x13, 0x13, 0x13, 0x15, 0x16, 0x15, 0x12, 0x11, 0x12, 0x11, 0xf, 0x11, 0xf, 0xe, 0xe, 0xe, 0xc, 0x9, 0xd, 0x10, 0x13, 0x13, 0x11, 0x11, 0xe, 0xc, 0x18, 0x18, 0x16, 0x13, 0x17, 0x15, 0x17, 0x16, 0x16, 0x17, 0x17, 0x15, 0x14, 0x15, 0x12, 0x13, 0x14, 0x15, 0xe, 0x12, 0x11, 0x16, 0x10, 0x15, 0x11, 0x16, 0x13, 0x14, 0x11, 0x15, 0x14, 0x14, 0x13, 0x14, 0x12, 0x15, 0x12, 0xe, 0xf, 0x16, 0x10, 0xf, 0x10, 0xf, 0xe, 0x15, 0x18, 0x14, 0x15, 0x15, 0x15, 0x12, 0x11, 0x11, 0x11, 0xc, 0xe, 0xf, 0xe, 0xf, 0xf, 0x11, 0x16, 0x15, 0x16, 0x17, 0x17, 0x17, 0x0, 0x0, 0x18, 0x16, 0x14, 0x12, 0x12, 0x13, 0x18, 0x15, 0xd, 0xc, 0xc, 0xe, 0xc, 0xa, 0xb, 0xd, 0xd, 0xd, 0xf, 0x10, 0x13, 0x14, 0x16, 0x16, 0x0, 0x0, 0x16, 0x16, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x0, 0x17, 0x15, 0x14, 0x15, 0x13, 0x14, 0x12, 0xf, 0x14, 0x15, 0x15, 0x12, 0x14, 0x10, 0x15, 0x15, 0x15, 0x17, 0x16, 0xe, 0xc, 0x14, 0x16, 0x14, 0x18, 0x17, 0x0, 0x0, 0x0, 0x17, 0x14, 0x12, 0xf, 0x11, 0x10, 0x15, 0x15, 0x14, 0x12, 0x16, 0x12, 0x14, 0x18, 0x16, 0x15, 0x17, 0x16, 0x18, 0x11, 0x14, 0x13, 0x15, 0x0, 0x16, 0x14, 0x18, 0x0, 0x18, 0x17, 0x16, 0x12, 0x16, 0x13, 0x18, 0x14, 0x15, 0x12, 0x15, 0x15, 0x15, 0x13, 0x13, 0x17, 0x17, 0x10, 0xe, 0xe, 0xb, 0x11, 0x12, 0xd, 0xf, 0x11, 0x12, 0x13, 0x13, 0x15, 0x18, 0x16, 0x11, 0xf, 0xe, 0xc, 0xf, 0x11, 0x10, 0xd, 0xd, 0xe, 0x10, 0x10, 0xa, 0xc, 0xd, 0xe, 0xf, 0xd, 0x12, 0x12, 0xf, 0x10, 0x10, 0x10, 0x10, 0x13, 0x15, 0x13, 0x16, 0x16, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x15, 0xe, 0xe, 0x13, 0x11, 0x10, 0x11, 0x12, 0x16, 0x15, 0xf, 0x17, 0x18, 0x16, 0x18, 0x14, 0x17, 0x15, 0x17, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x18, 0x83, 0x83, 0x78, 0x83, 0x6e, 0x7a, 0x85, 0x0, 0x16, 0x18, 0x15, 0x18, 0x13, 0x12, 0x0, 0x17, 0x15, 0x18, 0x18, 0x16, 0x15, 0x10, 0x16, 0x18, 0x18, 0x17, 0x0, 0x16, 0x17, 0x12, 0x15, 0x17, 0x18, 0x17, 0x16, 0x11, 0xd, 0x17, 0x18, 0x17, 0x14, 0x14, 0x13, 0x14, 0x14, 0x11, 0x10, 0x10, 0x14, 0xf, 0x15, 0x17, 0x18, 0x0, 0x12, 0x12, 0x14, 0x11, 0xf, 0x10, 0xf, 0x12, 0x10, 0x11, 0x12, 0x13, 0x13, 0x14, 0x14, 0x11, 0x12, 0x12, 0x13, 0x13, 0x13, 0x15, 0x15, 0x14, 0x14, 0x12, 0x12, 0x12, 0x14, 0x14, 0x13, 0x12, 0x10, 0xe, 0xe, 0xa, 0xa, 0xd, 0xd, 0xd, 0xf, 0xf, 0xf, 0xe, 0xc, 0x16, 0x17, 0x16, 0x15, 0x16, 0x18, 0x18, 0x17, 0x17, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x17, 0x14, 0x17, 0x17, 0x16, 0x15, 0x16, 0x14, 0x16, 0x12, 0xd, 0xe, 0x14, 0x10, 0x11, 0x13, 0x11, 0xa, 0x12, 0x12, 0xd, 0xe, 0xe, 0x11, 0x16, 0x18, 0x18, 0x17, 0x12, 0x12, 0x10, 0xe, 0xe, 0xe, 0xd, 0x12, 0xe, 0xa, 0xe, 0x10, 0x10, 0x14, 0x15, 0x18, 0x0, 0x17, 0x11, 0x11, 0x13, 0x14, 0x18, 0x18, 0x17, 0x14, 0x15, 0x13, 0xe, 0xf, 0x14, 0x11, 0xf, 0xc, 0x9, 0xb, 0xa, 0xa, 0xc, 0x10, 0x13, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x14, 0x12, 0x13, 0x12, 0x10, 0x10, 0xd, 0x14, 0x15, 0x16, 0x13, 0x15, 0x12, 0x15, 0x16, 0x16, 0x15, 0x16, 0x12, 0x11, 0x17, 0x18, 0x14, 0x18, 0x13, 0x15, 0x14, 0x14, 0x13, 0x16, 0x16, 0x14, 0x16, 0x15, 0x16, 0x16, 0x16, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x13, 0x16, 0x14, 0x13, 0x0, 0x18, 0x17, 0x11, 0x14, 0x12, 0x16, 0x15, 0x12, 0x15, 0x12, 0x15, 0x11, 0x14, 0x12, 0x17, 0x18, 0x13, 0x11, 0xd, 0x12, 0x15, 0x10, 0x12, 0x16, 0x14, 0x10, 0x11, 0x10, 0x12, 0x12, 0x15, 0x14, 0x16, 0x17, 0x14, 0x15, 0x14, 0x13, 0x10, 0xd, 0xe, 0x13, 0x10, 0xc, 0x9, 0xa, 0xe, 0x11, 0xc, 0xc, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x13, 0x13, 0x13, 0x13, 0x13, 0x11, 0x12, 0x12, 0x15, 0x16, 0x14, 0x14, 0x11, 0x11, 0x11, 0x12, 0x11, 0xf, 0xd, 0xe, 0x10, 0x10, 0x16, 0x0, 0x12, 0x12, 0xe, 0x15, 0x18, 0x16, 0x0, 0x15, 0x18, 0x15, 0x18, 0x16, 0x18, 0x13, 0x15, 0x16, 0x18, 0x18, 0x0, 0x17, 0x17, 0x17, 0x83, 0x7a, 0x7a, 0x85, 0x7a, 0x7a, 0x7a, 0x18, 0x14, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x18, 0x0, 0x17, 0x17, 0x16, 0x12, 0x13, 0x11, 0x15, 0x14, 0x17, 0x13, 0x18, 0x14, 0x13, 0x17, 0x0, 0x18, 0x15, 0x11, 0xd, 0x14, 0x12, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0xf, 0xf, 0x14, 0xf, 0x12, 0x13, 0x17, 0x17, 0x10, 0x10, 0x11, 0x11, 0x12, 0x12, 0xf, 0x11, 0x13, 0x14, 0x12, 0x10, 0x11, 0x12, 0x13, 0x11, 0x10, 0xe, 0xf, 0x11, 0x11, 0x10, 0x12, 0x14, 0x13, 0x10, 0x10, 0x11, 0x16, 0x15, 0x13, 0x13, 0x10, 0xf, 0xe, 0xc, 0x9, 0xf, 0x13, 0xf, 0xf, 0xd, 0xd, 0xb, 0xa, 0x12, 0x15, 0x16, 0x15, 0x17, 0x18, 0x16, 0x15, 0x14, 0x16, 0x18, 0x17, 0x17, 0x15, 0x16, 0x18, 0x15, 0x18, 0x13, 0x17, 0x15, 0x17, 0x14, 0x16, 0x15, 0x18, 0x16, 0x16, 0x10, 0x11, 0x12, 0x14, 0x13, 0x15, 0x13, 0x16, 0x13, 0xd, 0xd, 0x11, 0xd, 0x11, 0x12, 0x11, 0xe, 0x13, 0x13, 0x12, 0x12, 0x11, 0x11, 0x12, 0x14, 0x14, 0x10, 0xf, 0x10, 0x11, 0x11, 0x11, 0x10, 0xb, 0xd, 0xe, 0xa, 0xb, 0xc, 0xb, 0xa, 0xb, 0xc, 0xe, 0xe, 0xd, 0xf, 0x10, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x15, 0x14, 0x15, 0x14, 0xe, 0xd, 0xc, 0xc, 0xf, 0xe, 0xf, 0x10, 0xf, 0x10, 0x11, 0x12, 0xe, 0x12, 0x16, 0x16, 0x13, 0x10, 0x10, 0x10, 0xd, 0xc, 0xe, 0x16, 0x14, 0x15, 0xf, 0x13, 0x10, 0x14, 0x11, 0x10, 0x13, 0x12, 0x11, 0x10, 0x17, 0x17, 0x13, 0x16, 0x14, 0x17, 0x16, 0x16, 0x15, 0x16, 0x18, 0x17, 0x18, 0x16, 0x17, 0x16, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x16, 0x0, 0x16, 0x17, 0x16, 0x16, 0x18, 0x16, 0x17, 0x14, 0x17, 0x12, 0x16, 0x15, 0x12, 0x14, 0x12, 0x15, 0x11, 0x13, 0x12, 0x16, 0x15, 0x11, 0x13, 0x11, 0xf, 0x14, 0x10, 0x12, 0x15, 0x15, 0xf, 0x10, 0xf, 0x12, 0x13, 0x14, 0x14, 0x15, 0x15, 0x15, 0x14, 0x14, 0x13, 0xe, 0xa, 0xb, 0xc, 0xd, 0xc, 0xb, 0xc, 0xf, 0x11, 0x12, 0x13, 0x13, 0x12, 0x14, 0x14, 0x13, 0x15, 0x15, 0x14, 0x13, 0x14, 0x13, 0x14, 0x14, 0x15, 0x16, 0x17, 0x17, 0x15, 0x12, 0x10, 0xe, 0xe, 0xf, 0x10, 0xe, 0xe, 0x15, 0x16, 0x11, 0x15, 0x12, 0x12, 0xd, 0x14, 0x16, 0x11, 0x16, 0x15, 0x18, 0x15, 0x16, 0x18, 0x0, 0x17, 0x0, 0x17, 0x17, 0x17, 0x0, 0x18, 0x18, 0x18, 0x78, 0x7a, 0x83, 0x6e, 0x83, 0x83, 0x83, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x12, 0x13, 0x13, 0x16, 0x13, 0x18, 0x16, 0x17, 0x15, 0x15, 0x13, 0x14, 0x15, 0x16, 0xc, 0xc, 0x10, 0x11, 0x10, 0x13, 0x11, 0x13, 0x13, 0x12, 0x12, 0x12, 0x13, 0x16, 0x12, 0x15, 0x14, 0x18, 0x18, 0x16, 0x15, 0x14, 0x14, 0x14, 0x13, 0x12, 0x12, 0x13, 0x17, 0x16, 0x14, 0x12, 0x13, 0x15, 0x14, 0x13, 0x11, 0x11, 0x12, 0x12, 0x11, 0x11, 0x13, 0x13, 0x10, 0xf, 0xf, 0x10, 0xf, 0xd, 0xe, 0xf, 0xe, 0xc, 0xa, 0xb, 0x12, 0x13, 0x12, 0x10, 0xd, 0xd, 0x9, 0x9, 0xf, 0x14, 0x14, 0x16, 0x15, 0x14, 0x12, 0x15, 0x13, 0x12, 0x12, 0x13, 0x13, 0x14, 0xf, 0x15, 0x12, 0x17, 0x12, 0x14, 0x11, 0x15, 0x13, 0x16, 0x13, 0x16, 0x14, 0x17, 0x15, 0x14, 0x15, 0x16, 0x16, 0x17, 0x14, 0x17, 0x16, 0x12, 0x16, 0x16, 0xb, 0xb, 0xd, 0xf, 0x13, 0x16, 0x12, 0x10, 0x11, 0x10, 0x12, 0x16, 0x15, 0x15, 0x15, 0x15, 0x13, 0x12, 0x13, 0x16, 0x15, 0x13, 0x13, 0x11, 0x10, 0x13, 0x16, 0x13, 0x10, 0x11, 0xf, 0xe, 0xd, 0xd, 0xc, 0xa, 0xe, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x14, 0x12, 0x10, 0xd, 0xc, 0xa, 0x9, 0xe, 0x11, 0x12, 0x12, 0x15, 0x14, 0x12, 0x13, 0xf, 0xf, 0x12, 0xd, 0x13, 0x10, 0x11, 0x12, 0xf, 0xf, 0x13, 0x17, 0x16, 0x16, 0x11, 0x14, 0x12, 0x15, 0x15, 0x14, 0x15, 0x14, 0x14, 0xf, 0x11, 0x14, 0x11, 0x15, 0x12, 0x15, 0x13, 0x15, 0x13, 0x10, 0x14, 0x12, 0x17, 0x13, 0x14, 0x0, 0x18, 0x16, 0x16, 0x11, 0x12, 0x14, 0x13, 0x13, 0x14, 0x13, 0x18, 0x16, 0x18, 0x18, 0x18, 0x18, 0x14, 0x17, 0x16, 0x18, 0x17, 0x17, 0x18, 0x16, 0x0, 0x0, 0x0, 0x18, 0x16, 0x11, 0x15, 0x12, 0x11, 0x14, 0x11, 0x13, 0x14, 0xf, 0xe, 0x10, 0x15, 0x11, 0x10, 0xf, 0xf, 0x10, 0x10, 0x10, 0x10, 0x10, 0x12, 0x12, 0x11, 0x11, 0xe, 0xe, 0xf, 0x10, 0x11, 0x10, 0x11, 0x13, 0x13, 0x15, 0x16, 0x0, 0x16, 0x15, 0x17, 0x13, 0x13, 0x12, 0x13, 0x13, 0x11, 0x10, 0xf, 0x12, 0x15, 0x15, 0x16, 0x16, 0x0, 0x15, 0x16, 0x0, 0x17, 0x13, 0x13, 0x10, 0xc, 0xd, 0x14, 0x17, 0xd, 0x12, 0x10, 0x10, 0xe, 0x15, 0x16, 0x14, 0x17, 0x15, 0x18, 0x16, 0x18, 0x18, 0x0, 0x16, 0x0, 0x17, 0x17, 0x16, 0x17, 0x16, 0x17, 0x18, 0x7a, 0x85, 0x7a, 0x83, 0x78, 0x7a, 0x85, 0x18, 0x17, 0x0, 0x0, 0x18, 0x17, 0x15, 0x0, 0x18, 0x17, 0x0, 0x17, 0x16, 0x16, 0x12, 0x14, 0x13, 0x16, 0x12, 0x17, 0x14, 0x15, 0x13, 0x15, 0x11, 0x11, 0x13, 0x16, 0x11, 0xf, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x11, 0x13, 0x16, 0x12, 0x13, 0x13, 0x16, 0x18, 0x17, 0x16, 0x13, 0x12, 0x13, 0x10, 0xf, 0xf, 0x10, 0x14, 0x15, 0x11, 0xf, 0x10, 0x12, 0x11, 0x12, 0x12, 0x10, 0x10, 0x13, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x11, 0x10, 0x13, 0x15, 0x16, 0x13, 0x11, 0x10, 0xe, 0xd, 0x10, 0x11, 0x13, 0x11, 0xd, 0x12, 0x11, 0x10, 0x12, 0x15, 0x17, 0x16, 0x16, 0x17, 0x15, 0x17, 0x16, 0x15, 0x14, 0x14, 0x15, 0x16, 0x13, 0x17, 0x13, 0x17, 0x14, 0x15, 0x11, 0x14, 0x13, 0x16, 0x14, 0x16, 0x12, 0x15, 0x15, 0x13, 0x13, 0xf, 0x12, 0x15, 0x12, 0x15, 0x15, 0x14, 0x14, 0x15, 0xf, 0xc, 0xd, 0xd, 0xf, 0x17, 0x13, 0x12, 0x12, 0x12, 0x13, 0x15, 0x12, 0x13, 0x12, 0x11, 0x10, 0x10, 0x11, 0x13, 0x13, 0x13, 0x18, 0x16, 0x15, 0x16, 0x17, 0x17, 0x15, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x11, 0x11, 0x12, 0x15, 0x16, 0x18, 0x16, 0x15, 0x13, 0xf, 0xe, 0xc, 0xa, 0x6, 0x5, 0x5, 0x4, 0x5, 0x6, 0x4, 0x4, 0x6, 0x7, 0x6, 0x9, 0xb, 0xc, 0xd, 0xc, 0xc, 0xc, 0xb, 0x14, 0x13, 0x14, 0x13, 0xd, 0xe, 0x14, 0x16, 0x15, 0x17, 0x10, 0x13, 0x13, 0x16, 0x16, 0x12, 0x12, 0x13, 0x14, 0x12, 0x14, 0x16, 0x14, 0x15, 0x14, 0x16, 0x14, 0x14, 0x14, 0xf, 0x11, 0x16, 0x18, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x18, 0x18, 0x15, 0x17, 0x17, 0x0, 0x18, 0x18, 0x17, 0x15, 0x16, 0x15, 0x15, 0x15, 0x0, 0x14, 0x15, 0x17, 0x14, 0x17, 0x18, 0x16, 0x11, 0x15, 0xf, 0x15, 0x15, 0x16, 0x16, 0x11, 0xf, 0x14, 0x11, 0x13, 0x11, 0xf, 0xb, 0xd, 0xc, 0xc, 0x10, 0x10, 0x11, 0x11, 0x13, 0x13, 0x13, 0xf, 0xe, 0xe, 0xd, 0xe, 0xe, 0x11, 0x10, 0xd, 0x10, 0x13, 0x18, 0x14, 0x12, 0x13, 0x13, 0x15, 0x15, 0x13, 0x12, 0x13, 0x13, 0x12, 0x13, 0x15, 0x0, 0x0, 0x16, 0x15, 0x16, 0x18, 0x17, 0x18, 0x0, 0x18, 0x17, 0x16, 0x12, 0xb, 0xb, 0xe, 0x10, 0xf, 0x17, 0x13, 0x10, 0xd, 0x15, 0x18, 0x14, 0x17, 0x13, 0x18, 0x16, 0x17, 0x18, 0x0, 0x17, 0x17, 0x17, 0x0, 0x18, 0x17, 0x17, 0x17, 0x16, 0x7a, 0x83, 0x78, 0x83, 0x83, 0x78, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x15, 0x15, 0x0, 0x18, 0x0, 0x15, 0x18, 0x16, 0x18, 0x0, 0x0, 0x14, 0x15, 0x0, 0x0, 0x15, 0x13, 0x15, 0x16, 0x15, 0x11, 0x11, 0x14, 0x13, 0x13, 0x0, 0x17, 0x12, 0x12, 0xf, 0x11, 0x14, 0x0, 0x0, 0x10, 0x11, 0x10, 0x10, 0x10, 0x11, 0xe, 0xe, 0x12, 0x10, 0x11, 0x11, 0x12, 0xf, 0x14, 0x11, 0xf, 0x10, 0xf, 0xf, 0x10, 0x11, 0x14, 0x13, 0x11, 0x12, 0x12, 0x11, 0xf, 0x10, 0x14, 0x14, 0x12, 0x10, 0xb, 0xb, 0xc, 0x12, 0x13, 0x10, 0x10, 0x13, 0x18, 0x14, 0xf, 0x14, 0x18, 0x16, 0x16, 0x15, 0x16, 0x14, 0x16, 0x16, 0x16, 0x14, 0x13, 0x12, 0x18, 0x14, 0x15, 0x11, 0x18, 0x17, 0x16, 0x12, 0x15, 0x13, 0x13, 0xf, 0x14, 0xf, 0x11, 0xf, 0x12, 0x11, 0xc, 0xd, 0x15, 0x12, 0x15, 0x13, 0x10, 0x13, 0x13, 0xe, 0xd, 0xc, 0xc, 0xe, 0x18, 0x16, 0x14, 0x10, 0xd, 0xb, 0xb, 0xc, 0xe, 0x12, 0x11, 0x11, 0x11, 0xf, 0x12, 0x14, 0x14, 0x17, 0x17, 0x15, 0x14, 0x13, 0x10, 0xf, 0x11, 0x10, 0x10, 0x13, 0x16, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x10, 0x5, 0x5, 0x5, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0x6, 0x4, 0x8, 0x6, 0x3, 0x4, 0x6, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x4, 0x14, 0x13, 0x15, 0x0, 0x12, 0xe, 0x15, 0x18, 0x13, 0x15, 0x10, 0x13, 0x10, 0x16, 0x13, 0x11, 0x17, 0x15, 0x14, 0x13, 0x15, 0x16, 0x14, 0x14, 0x14, 0x15, 0x14, 0x12, 0x13, 0xf, 0x13, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x17, 0x15, 0x0, 0x17, 0x18, 0x16, 0x14, 0x17, 0x15, 0x17, 0x15, 0x18, 0x16, 0x14, 0x15, 0x11, 0x15, 0x11, 0x12, 0x12, 0x18, 0x14, 0x18, 0x0, 0x15, 0x10, 0x10, 0xf, 0x15, 0x11, 0x14, 0x13, 0x12, 0x11, 0x16, 0x15, 0x13, 0x12, 0x11, 0x12, 0x12, 0x12, 0x11, 0x10, 0xc, 0xe, 0xd, 0xc, 0xb, 0xb, 0x11, 0xe, 0xb, 0xb, 0x10, 0x16, 0x12, 0x10, 0x10, 0xf, 0x11, 0x12, 0x10, 0x10, 0x11, 0xf, 0xe, 0xe, 0x12, 0x18, 0x18, 0x13, 0x10, 0x10, 0x13, 0x13, 0x14, 0x18, 0x14, 0x12, 0x10, 0xe, 0xc, 0x10, 0x11, 0x10, 0x11, 0x12, 0x10, 0x13, 0xf, 0x13, 0x17, 0x11, 0x15, 0x14, 0x0, 0x16, 0x17, 0x0, 0x0, 0x16, 0x18, 0x16, 0x16, 0x16, 0x16, 0x18, 0x17, 0x16, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x18, 0x17, 0x0, 0x17, 0x17, 0x14, 0x14, 0x16, 0x18, 0x15, 0x15, 0x17, 0x15, 0x18, 0x15, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x16, 0x17, 0x15, 0x15, 0x17, 0x17, 0x10, 0x14, 0x16, 0x13, 0x11, 0x11, 0x11, 0x11, 0x11, 0x14, 0x17, 0x15, 0x12, 0x11, 0xf, 0x12, 0x13, 0x15, 0x15, 0x10, 0xf, 0xf, 0xf, 0x10, 0x12, 0x12, 0x10, 0x11, 0x11, 0x10, 0x11, 0x10, 0xf, 0x11, 0x10, 0xe, 0xe, 0xe, 0xf, 0xe, 0x10, 0x13, 0x12, 0x11, 0x11, 0x11, 0x11, 0xf, 0xe, 0xe, 0xe, 0x11, 0xe, 0xc, 0xc, 0xa, 0x11, 0x12, 0xc, 0xe, 0x15, 0x0, 0x13, 0xc, 0x10, 0x16, 0x17, 0x15, 0x13, 0x17, 0x15, 0x16, 0x15, 0x16, 0x15, 0x15, 0x13, 0x17, 0x16, 0x18, 0x17, 0x18, 0x16, 0x17, 0x15, 0x17, 0x14, 0x13, 0x12, 0x16, 0x13, 0x15, 0x13, 0x15, 0x15, 0x13, 0x11, 0x17, 0x14, 0x17, 0x14, 0x12, 0x10, 0x14, 0xf, 0xe, 0xf, 0xf, 0xe, 0x18, 0x14, 0x14, 0x13, 0x12, 0x13, 0x12, 0x10, 0x11, 0x12, 0x11, 0xe, 0xd, 0xd, 0xe, 0xe, 0xe, 0x10, 0x13, 0x13, 0x12, 0x13, 0x14, 0x14, 0x14, 0x13, 0x12, 0x13, 0x13, 0x12, 0x11, 0x11, 0x11, 0x13, 0x11, 0xa, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0xc, 0xa, 0x3, 0x3, 0x4, 0x3, 0xf, 0x10, 0x11, 0x16, 0xe, 0x13, 0x0, 0x15, 0x13, 0x14, 0x11, 0x17, 0x17, 0x18, 0x16, 0x15, 0x18, 0x17, 0x14, 0x15, 0x17, 0x18, 0x14, 0x12, 0x11, 0x13, 0x15, 0x14, 0x15, 0x10, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x18, 0x16, 0x17, 0x18, 0x17, 0x0, 0x18, 0x12, 0x17, 0x11, 0x15, 0x17, 0x16, 0x17, 0x15, 0x17, 0x14, 0x15, 0x17, 0x17, 0x13, 0xd, 0x18, 0x15, 0x13, 0x12, 0x18, 0x0, 0x0, 0x18, 0x15, 0x11, 0x13, 0xf, 0x14, 0x11, 0x12, 0x13, 0x13, 0x14, 0x0, 0x18, 0x16, 0x14, 0x13, 0x12, 0x14, 0x14, 0x11, 0x13, 0xe, 0xe, 0x10, 0xf, 0xc, 0xe, 0x14, 0x11, 0xc, 0xa, 0xc, 0xe, 0x12, 0x13, 0x12, 0xe, 0xd, 0xd, 0xf, 0xd, 0xd, 0xd, 0xc, 0xe, 0x11, 0x15, 0x12, 0x12, 0x14, 0x15, 0x0, 0x15, 0x13, 0x17, 0x17, 0x13, 0x15, 0x15, 0xf, 0x12, 0x12, 0x10, 0x13, 0x13, 0x12, 0x15, 0x13, 0x16, 0x18, 0x14, 0x16, 0x15, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x18, 0x16, 0x16, 0x17, 0x18, 0x18, 0x17, 0x16, 0x7a, 0x83, 0x7a, 0x7a, 0x83, 0x7a, 0x7a, 0x17, 0x16, 0x0, 0x17, 0x18, 0x17, 0x16, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x10, 0x10, 0x15, 0x13, 0x12, 0x13, 0x12, 0x13, 0x13, 0x15, 0x17, 0x15, 0x14, 0x13, 0x12, 0x14, 0x14, 0x14, 0x14, 0x12, 0x14, 0x14, 0x13, 0x13, 0x14, 0x14, 0x15, 0x14, 0x13, 0x13, 0x13, 0x12, 0x12, 0x11, 0x11, 0x10, 0xf, 0x10, 0x11, 0xf, 0xf, 0x10, 0x11, 0x11, 0xe, 0x10, 0x10, 0xf, 0xd, 0xd, 0xe, 0xe, 0xd, 0xd, 0xa, 0x7, 0x10, 0xf, 0xc, 0xd, 0xc, 0xc, 0xa, 0xc, 0x12, 0x16, 0x17, 0x16, 0x15, 0x18, 0x16, 0x17, 0x17, 0x17, 0x14, 0x16, 0x13, 0x15, 0x13, 0x17, 0x14, 0x17, 0x12, 0x16, 0x13, 0x15, 0x12, 0x13, 0x12, 0x13, 0xf, 0x15, 0x11, 0x11, 0x13, 0x11, 0x12, 0x17, 0x15, 0x18, 0x15, 0x10, 0x10, 0x14, 0x12, 0x11, 0x12, 0xf, 0xd, 0x13, 0x12, 0x14, 0x14, 0x11, 0x11, 0xf, 0xd, 0xe, 0xf, 0x10, 0xd, 0x11, 0x12, 0x13, 0x15, 0x14, 0x14, 0x15, 0x15, 0x13, 0x12, 0x12, 0x13, 0x10, 0xd, 0xf, 0x11, 0x12, 0x17, 0x0, 0x18, 0x14, 0xb, 0x5, 0x4, 0x3, 0x3, 0x7, 0x4, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x7, 0x9, 0xa, 0xd, 0x7, 0x3, 0x4, 0x10, 0x12, 0x10, 0x11, 0xb, 0x13, 0x0, 0x16, 0x14, 0x14, 0xf, 0x17, 0x18, 0x18, 0x18, 0x16, 0x18, 0x17, 0x14, 0x15, 0x17, 0x18, 0x14, 0x14, 0x13, 0x14, 0x16, 0x14, 0x16, 0x13, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x18, 0x17, 0x18, 0x18, 0x13, 0x18, 0x15, 0x17, 0x17, 0x18, 0x15, 0x12, 0x17, 0x13, 0x14, 0x10, 0x16, 0x14, 0xc, 0x16, 0x15, 0x17, 0x17, 0x16, 0x17, 0x0, 0x17, 0x13, 0x11, 0x15, 0x14, 0x0, 0x15, 0x16, 0x15, 0x13, 0x14, 0x17, 0x16, 0x13, 0x13, 0x10, 0xc, 0xb, 0xf, 0xd, 0xd, 0xb, 0xb, 0xf, 0x12, 0xf, 0xe, 0x11, 0xf, 0xd, 0xb, 0x10, 0x14, 0x14, 0x13, 0x12, 0x10, 0xf, 0xf, 0x10, 0x11, 0x10, 0x11, 0x11, 0x14, 0x15, 0x15, 0x13, 0x11, 0x14, 0x13, 0x16, 0x13, 0x13, 0x16, 0x15, 0x13, 0x15, 0x15, 0x11, 0x12, 0x10, 0xf, 0x12, 0x12, 0x14, 0x12, 0xf, 0x17, 0x0, 0x13, 0x16, 0x14, 0x15, 0x15, 0x17, 0x13, 0x15, 0x16, 0x18, 0x16, 0x17, 0x16, 0x0, 0x17, 0x16, 0x16, 0x7a, 0x7a, 0x83, 0x7a, 0x7a, 0x78, 0x7a, 0x0, 0x15, 0x18, 0x0, 0x0, 0x16, 0x16, 0x0, 0x0, 0x17, 0x16, 0x18, 0x17, 0x0, 0x16, 0x0, 0x15, 0x15, 0x13, 0x17, 0x16, 0x17, 0x0, 0x0, 0x18, 0x0, 0x16, 0x14, 0xd, 0xc, 0x11, 0x11, 0x11, 0x11, 0x10, 0x13, 0x13, 0x13, 0x13, 0x11, 0x11, 0x12, 0x11, 0x12, 0x11, 0x13, 0x17, 0x12, 0x18, 0x15, 0x11, 0xf, 0xf, 0xf, 0x10, 0xf, 0x10, 0x13, 0x14, 0x14, 0x13, 0x15, 0x12, 0xd, 0xd, 0xf, 0x15, 0x11, 0xe, 0xf, 0x11, 0x10, 0x11, 0x10, 0xf, 0x10, 0x10, 0x11, 0x10, 0x10, 0xf, 0xe, 0xc, 0x9, 0xf, 0x11, 0x11, 0x10, 0x10, 0xe, 0xc, 0xe, 0x13, 0x18, 0x17, 0x17, 0x17, 0x18, 0x16, 0x0, 0x17, 0x16, 0x18, 0x0, 0x16, 0x16, 0x13, 0x17, 0x15, 0x17, 0x13, 0x16, 0x15, 0x18, 0x13, 0x16, 0x15, 0x15, 0x12, 0x15, 0x15, 0x14, 0x17, 0x16, 0x16, 0x17, 0x16, 0x17, 0x15, 0x11, 0xf, 0x10, 0xe, 0xf, 0x10, 0xf, 0xe, 0x11, 0xd, 0xa, 0xb, 0xf, 0x11, 0x12, 0x13, 0x14, 0x14, 0x14, 0x11, 0x12, 0x12, 0x11, 0x12, 0x12, 0x11, 0x12, 0x14, 0x15, 0x14, 0x13, 0x15, 0x15, 0x14, 0x14, 0x14, 0x13, 0x15, 0x15, 0xb, 0x7, 0x6, 0x4, 0x4, 0x4, 0x3, 0x5, 0x3, 0x3, 0x3, 0x2, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x6, 0x4, 0x5, 0xe, 0xa, 0x5, 0x3, 0x15, 0x14, 0xd, 0x11, 0xd, 0x15, 0x18, 0x18, 0x14, 0x12, 0xe, 0x14, 0xf, 0x11, 0x18, 0x13, 0x17, 0x13, 0x13, 0x10, 0x10, 0x16, 0x14, 0x16, 0x17, 0x15, 0x16, 0x14, 0x15, 0x15, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x13, 0xf, 0x16, 0x17, 0x14, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x16, 0x0, 0x18, 0x16, 0x13, 0x0, 0x16, 0x10, 0x16, 0x15, 0x0, 0x18, 0x17, 0x11, 0x16, 0x17, 0x13, 0x16, 0x17, 0x15, 0x17, 0x11, 0x11, 0x10, 0xf, 0x14, 0x18, 0x16, 0x16, 0x17, 0x17, 0xd, 0x8, 0xe, 0x12, 0x14, 0x11, 0x12, 0x15, 0x16, 0x10, 0xd, 0xd, 0xf, 0xb, 0xa, 0xc, 0x14, 0x11, 0x11, 0x11, 0xf, 0xf, 0xe, 0x10, 0x10, 0x10, 0xf, 0x10, 0x15, 0x17, 0x12, 0x11, 0x11, 0x11, 0x10, 0xf, 0x12, 0x18, 0x18, 0x12, 0x11, 0x11, 0x10, 0xf, 0x12, 0x13, 0x13, 0x12, 0x12, 0x11, 0x12, 0xd, 0x16, 0x16, 0xe, 0x15, 0x11, 0x16, 0x12, 0x15, 0x16, 0x18, 0x14, 0x16, 0x16, 0x17, 0x18, 0x0, 0x15, 0x17, 0x17, 0x83, 0x7a, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x0, 0x18, 0x18, 0x16, 0x17, 0x16, 0x13, 0x15, 0x16, 0x15, 0x15, 0x16, 0x14, 0x15, 0x13, 0x18, 0x14, 0x16, 0x14, 0x0, 0x13, 0x15, 0x15, 0x16, 0x0, 0x18, 0x15, 0x11, 0x8, 0x7, 0xe, 0x11, 0x11, 0x11, 0x11, 0x13, 0x13, 0x15, 0x14, 0x13, 0x13, 0x12, 0x11, 0x12, 0x11, 0x13, 0x16, 0x13, 0x13, 0x14, 0x14, 0x14, 0x12, 0x12, 0x10, 0x11, 0xf, 0x10, 0x11, 0x12, 0x12, 0x14, 0x14, 0x11, 0x12, 0x12, 0x15, 0x15, 0x13, 0x11, 0x12, 0x14, 0x14, 0x10, 0x11, 0x12, 0x11, 0x14, 0x11, 0xf, 0xe, 0xe, 0x10, 0xa, 0xc, 0xf, 0x10, 0xf, 0x10, 0xf, 0x11, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x15, 0x18, 0x17, 0x16, 0x16, 0x0, 0x17, 0x16, 0x14, 0x18, 0x16, 0x18, 0x15, 0x16, 0x16, 0x0, 0x16, 0x17, 0x16, 0x17, 0x13, 0x13, 0x13, 0x12, 0x15, 0x13, 0x12, 0x14, 0x12, 0x11, 0x11, 0xe, 0xd, 0x13, 0x12, 0x13, 0x12, 0x15, 0x14, 0xe, 0xe, 0x11, 0x11, 0x11, 0x12, 0x13, 0x12, 0xc, 0xa, 0xd, 0xe, 0xd, 0xc, 0xd, 0xf, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x15, 0x15, 0x14, 0x15, 0x14, 0x14, 0x11, 0xe, 0xb, 0x7, 0x5, 0x5, 0x8, 0x7, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x6, 0x4, 0x3, 0x3, 0x2, 0x5, 0x5, 0x2, 0x2, 0x6, 0x9, 0x4, 0x2, 0x4, 0x3, 0x3, 0x4, 0x4, 0x2, 0x16, 0x15, 0x10, 0x13, 0x10, 0x15, 0x17, 0x14, 0x12, 0x13, 0x11, 0x17, 0x12, 0x12, 0x16, 0x11, 0x17, 0x15, 0x12, 0x12, 0x14, 0x17, 0x18, 0x18, 0x15, 0x14, 0x18, 0x16, 0x17, 0x13, 0x17, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x17, 0x15, 0x16, 0x13, 0x17, 0x0, 0x17, 0x18, 0x17, 0x0, 0x14, 0x15, 0x17, 0x14, 0x18, 0x13, 0x14, 0x14, 0x15, 0x0, 0x0, 0x18, 0x12, 0x17, 0x16, 0x14, 0x11, 0x16, 0x18, 0x14, 0x16, 0x16, 0x11, 0x15, 0x13, 0x14, 0x14, 0x13, 0x12, 0x15, 0x14, 0x12, 0x17, 0x16, 0xd, 0x10, 0x11, 0x15, 0x17, 0x14, 0xf, 0xe, 0x12, 0x11, 0xf, 0x12, 0x12, 0xf, 0xd, 0xe, 0x12, 0x13, 0x11, 0x10, 0xf, 0x11, 0x12, 0x15, 0x16, 0x13, 0x14, 0x14, 0x18, 0x16, 0x13, 0x14, 0x14, 0x15, 0x18, 0x0, 0x18, 0x16, 0x16, 0x16, 0x18, 0x18, 0x17, 0x12, 0x10, 0x11, 0x11, 0x11, 0x11, 0x12, 0x10, 0xf, 0x17, 0x17, 0x13, 0x17, 0x13, 0x17, 0x12, 0x15, 0x16, 0x18, 0x14, 0x15, 0x17, 0x17, 0x18, 0x18, 0x13, 0x15, 0x16, 0x7a, 0x85, 0x7e, 0x85, 0x7a, 0x7a, 0x8a, 0x18, 0x17, 0x16, 0x15, 0x17, 0x16, 0x14, 0x16, 0x17, 0x16, 0x15, 0x17, 0x16, 0x17, 0x15, 0x0, 0x16, 0x18, 0x17, 0x0, 0x15, 0x16, 0x15, 0x16, 0x17, 0x17, 0x16, 0x12, 0x8, 0x9, 0x13, 0x11, 0xf, 0x10, 0x12, 0x13, 0x12, 0x13, 0x14, 0x11, 0x11, 0x11, 0x10, 0xd, 0xd, 0x12, 0x16, 0x12, 0x11, 0x12, 0x13, 0x13, 0x11, 0x11, 0x10, 0x12, 0x10, 0x10, 0xe, 0xf, 0x10, 0x10, 0x10, 0xe, 0xf, 0xf, 0x11, 0x13, 0x11, 0xf, 0x10, 0x10, 0x10, 0x10, 0xf, 0x10, 0x11, 0x12, 0x13, 0x10, 0xf, 0xf, 0xc, 0x8, 0xe, 0xf, 0xe, 0x10, 0xe, 0xd, 0xd, 0x12, 0x17, 0x17, 0x18, 0x17, 0x15, 0x14, 0x12, 0x17, 0x13, 0x12, 0x12, 0x18, 0x15, 0x17, 0x13, 0x15, 0x14, 0x18, 0x11, 0x13, 0x12, 0x17, 0x14, 0x14, 0x13, 0x15, 0x15, 0x14, 0x15, 0x14, 0x16, 0x14, 0x13, 0x15, 0x14, 0x14, 0x14, 0x11, 0x10, 0x15, 0x11, 0x10, 0xf, 0x13, 0x14, 0x13, 0x10, 0xe, 0xf, 0xf, 0x10, 0xf, 0xf, 0xe, 0xe, 0x11, 0x11, 0x13, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x13, 0x13, 0x14, 0x15, 0x13, 0x8, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0x4, 0x3, 0x3, 0x4, 0x5, 0x3, 0x6, 0x9, 0x14, 0x14, 0x10, 0x12, 0xf, 0x14, 0x17, 0x15, 0x14, 0x16, 0x13, 0x17, 0x14, 0x16, 0x17, 0x13, 0x17, 0x16, 0x13, 0x15, 0x16, 0x16, 0x18, 0x18, 0x14, 0x15, 0x0, 0x17, 0x17, 0x13, 0x17, 0x17, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x16, 0x17, 0x17, 0x14, 0x18, 0x17, 0x15, 0x18, 0x15, 0x17, 0x11, 0x13, 0x13, 0x11, 0x15, 0xf, 0x15, 0x15, 0x15, 0x18, 0x16, 0x17, 0x13, 0x0, 0x15, 0x17, 0x17, 0x0, 0x17, 0x15, 0x13, 0x12, 0x11, 0x17, 0x16, 0x18, 0x0, 0x17, 0xe, 0x11, 0x12, 0x11, 0x17, 0x15, 0x13, 0x0, 0x17, 0x18, 0x16, 0x10, 0xb, 0xd, 0x10, 0xe, 0xe, 0xf, 0xe, 0xe, 0xe, 0xd, 0x10, 0x11, 0x10, 0xd, 0xd, 0x10, 0x12, 0x14, 0x18, 0x17, 0x17, 0x13, 0x13, 0x12, 0x10, 0x13, 0x12, 0x12, 0x14, 0x15, 0x17, 0x14, 0x14, 0x17, 0x17, 0x17, 0x16, 0x10, 0x11, 0x13, 0x11, 0x14, 0x16, 0x15, 0x11, 0x11, 0x17, 0x17, 0x13, 0x18, 0x12, 0x16, 0x11, 0x14, 0x12, 0x15, 0x14, 0x17, 0x18, 0x17, 0x18, 0x17, 0x15, 0x17, 0x18, 0x83, 0x7a, 0x7a, 0x7a, 0x7a, 0x83, 0x7e, 0x0, 0x0, 0x0, 0x15, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x16, 0x18, 0x17, 0x0, 0x17, 0x18, 0x17, 0x0, 0x16, 0x16, 0x16, 0x15, 0x16, 0x15, 0x15, 0x17, 0x16, 0x12, 0x6, 0x7, 0xe, 0xf, 0x12, 0x12, 0x11, 0xe, 0xf, 0x12, 0x11, 0x11, 0x11, 0x16, 0x14, 0x10, 0x10, 0x13, 0x15, 0x11, 0x10, 0x11, 0x13, 0x12, 0x11, 0x12, 0x13, 0x13, 0x14, 0x16, 0x12, 0x11, 0x10, 0x11, 0x10, 0x11, 0x11, 0x11, 0x12, 0x12, 0x11, 0x12, 0x12, 0x10, 0x10, 0x11, 0xf, 0xf, 0xe, 0x10, 0x11, 0x11, 0x11, 0xf, 0xc, 0x8, 0xe, 0x10, 0xd, 0xc, 0xd, 0xf, 0xb, 0x9, 0x14, 0x17, 0x16, 0x16, 0x13, 0x18, 0x16, 0x18, 0x16, 0x16, 0x13, 0x18, 0x14, 0x18, 0x16, 0x17, 0x17, 0x18, 0x14, 0x15, 0x16, 0x17, 0x16, 0x17, 0x15, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x16, 0x14, 0x14, 0xf, 0xd, 0x12, 0xf, 0x10, 0x15, 0xf, 0xe, 0x10, 0xe, 0x12, 0x0, 0x11, 0x11, 0x10, 0xf, 0x10, 0x11, 0x10, 0x11, 0x11, 0xf, 0xd, 0xe, 0x10, 0xf, 0xf, 0x11, 0x10, 0x13, 0x16, 0x14, 0x15, 0x16, 0x16, 0x15, 0x16, 0x14, 0xa, 0x8, 0x7, 0x4, 0x5, 0x5, 0x4, 0x3, 0x5, 0x7, 0x3, 0x3, 0x6, 0x8, 0x4, 0x3, 0x3, 0x5, 0x7, 0x4, 0x3, 0x4, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x6, 0xd, 0x11, 0x15, 0x13, 0x16, 0xf, 0x11, 0x12, 0x13, 0x16, 0x18, 0x10, 0x14, 0x11, 0x13, 0x0, 0x12, 0x15, 0x15, 0x13, 0x14, 0x16, 0x17, 0x16, 0x17, 0x16, 0x12, 0x14, 0x13, 0x17, 0x12, 0x16, 0x15, 0x18, 0x15, 0x16, 0x17, 0x17, 0x0, 0x18, 0x16, 0x14, 0x14, 0x10, 0x17, 0x15, 0x12, 0x17, 0x14, 0x16, 0xf, 0x12, 0x11, 0x12, 0x16, 0x17, 0x0, 0x18, 0x17, 0x18, 0x15, 0x17, 0x15, 0x17, 0x15, 0x15, 0x15, 0x17, 0x18, 0x15, 0x11, 0x11, 0x11, 0x0, 0x17, 0x18, 0x0, 0x17, 0x10, 0x15, 0x15, 0x14, 0x18, 0x16, 0x14, 0x16, 0x15, 0x15, 0x17, 0x12, 0xf, 0x15, 0x14, 0xd, 0xc, 0xe, 0xc, 0xd, 0xd, 0xf, 0x13, 0x15, 0x12, 0xf, 0x10, 0x13, 0x14, 0x15, 0x17, 0x18, 0x18, 0x14, 0x13, 0x12, 0x12, 0x14, 0x13, 0x11, 0x12, 0x12, 0x16, 0x17, 0x18, 0x0, 0x12, 0x12, 0x10, 0xd, 0x13, 0x14, 0x12, 0x12, 0x13, 0x14, 0x13, 0x14, 0x17, 0x16, 0x12, 0x17, 0x14, 0x16, 0x13, 0x14, 0x13, 0x16, 0x14, 0x18, 0x16, 0x18, 0x15, 0x17, 0x15, 0x15, 0x17, 0x7a, 0x83, 0x7a, 0x85, 0x7e, 0x7a, 0x85, 0x18, 0x14, 0x16, 0x13, 0x17, 0x15, 0x15, 0x15, 0x14, 0x17, 0x17, 0x15, 0x17, 0x0, 0x16, 0x18, 0x0, 0x18, 0x12, 0x16, 0x14, 0x10, 0x11, 0x14, 0x11, 0x13, 0x13, 0x14, 0xb, 0x7, 0xc, 0x13, 0x14, 0x12, 0x12, 0x13, 0x14, 0x15, 0x14, 0x13, 0x14, 0x15, 0x15, 0x13, 0x12, 0x13, 0x13, 0x11, 0x12, 0x10, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0xf, 0x10, 0xf, 0xf, 0x10, 0xf, 0x10, 0x11, 0x12, 0x12, 0x14, 0x14, 0x13, 0x14, 0x14, 0x10, 0x10, 0xf, 0xf, 0xd, 0xd, 0xe, 0xe, 0xe, 0xe, 0xd, 0xe, 0xa, 0xd, 0xd, 0xc, 0xc, 0xe, 0xf, 0xd, 0xa, 0x13, 0x0, 0x16, 0x17, 0x15, 0x0, 0x17, 0x0, 0x17, 0x18, 0x14, 0x18, 0x13, 0x17, 0x14, 0x15, 0x14, 0x17, 0xf, 0x13, 0x11, 0x14, 0x12, 0x15, 0x12, 0x12, 0x12, 0x13, 0x15, 0x14, 0x15, 0x13, 0x12, 0x15, 0x10, 0x12, 0x14, 0x12, 0x11, 0x18, 0x15, 0x14, 0x14, 0xf, 0x11, 0x15, 0x15, 0x14, 0x13, 0xd, 0xc, 0xf, 0x10, 0x14, 0x14, 0x13, 0x13, 0x14, 0x15, 0x14, 0x17, 0x15, 0x14, 0x15, 0x16, 0x11, 0x10, 0x11, 0x13, 0x12, 0x11, 0x12, 0x9, 0x4, 0x7, 0x4, 0x6, 0x9, 0x5, 0x4, 0x4, 0x4, 0x2, 0x3, 0x5, 0x4, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x2, 0x5, 0x12, 0x16, 0x16, 0x17, 0x12, 0x15, 0x14, 0x16, 0x15, 0x16, 0x16, 0x17, 0x12, 0x14, 0x16, 0x12, 0x16, 0x15, 0x14, 0x15, 0x16, 0x16, 0x16, 0x15, 0x15, 0x13, 0x15, 0x13, 0x17, 0x13, 0x16, 0x15, 0x17, 0x16, 0x16, 0x18, 0x18, 0x0, 0x0, 0x17, 0x16, 0x16, 0x12, 0x17, 0x17, 0x17, 0x16, 0x11, 0x15, 0x10, 0x17, 0x15, 0x15, 0x17, 0x11, 0x14, 0x14, 0x14, 0x16, 0x13, 0x17, 0x14, 0x14, 0x11, 0x11, 0x14, 0x18, 0x18, 0x13, 0xf, 0x12, 0xf, 0x18, 0x15, 0x14, 0x18, 0x17, 0x10, 0x16, 0x16, 0x14, 0x17, 0x13, 0x10, 0x13, 0x15, 0x15, 0x16, 0x13, 0xf, 0x17, 0x12, 0xd, 0xd, 0x10, 0xf, 0xe, 0x10, 0x16, 0x0, 0x18, 0x15, 0x13, 0x13, 0x12, 0xf, 0xf, 0x12, 0x14, 0x14, 0x12, 0x12, 0x11, 0x16, 0x17, 0x15, 0x14, 0x10, 0x10, 0x11, 0x11, 0x13, 0x13, 0x11, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0xf, 0x11, 0x12, 0x12, 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x17, 0x16, 0x14, 0x12, 0x17, 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x14, 0x16, 0x15, 0x7a, 0x85, 0x7e, 0x7e, 0x8a, 0x7e, 0x84, 0x18, 0x13, 0x16, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x17, 0x15, 0x17, 0x18, 0x0, 0x17, 0x18, 0x0, 0x16, 0x18, 0x0, 0x15, 0x13, 0x16, 0x18, 0xf, 0x9, 0xc, 0xf, 0xf, 0xc, 0xd, 0xf, 0x10, 0xf, 0xe, 0xf, 0x10, 0x10, 0x13, 0x10, 0xf, 0xf, 0x10, 0x10, 0x10, 0x10, 0xf, 0xf, 0xe, 0xf, 0x11, 0x12, 0x11, 0x12, 0x12, 0x12, 0x11, 0x10, 0xf, 0xe, 0xf, 0xe, 0x10, 0xf, 0xe, 0x11, 0x11, 0xe, 0xc, 0xc, 0xf, 0xf, 0xe, 0xf, 0xe, 0xe, 0xf, 0xd, 0x9, 0x7, 0xf, 0x11, 0xf, 0x10, 0x11, 0x12, 0xd, 0x9, 0xf, 0x14, 0x13, 0x17, 0x16, 0x17, 0x10, 0x15, 0x13, 0x16, 0xf, 0x16, 0x13, 0x18, 0x13, 0x16, 0x17, 0x18, 0x15, 0x17, 0x16, 0x16, 0x16, 0x16, 0x17, 0x15, 0x13, 0x14, 0x15, 0x15, 0x16, 0x15, 0x15, 0x17, 0x16, 0x17, 0x17, 0x12, 0x10, 0x17, 0x12, 0x10, 0x10, 0xd, 0x13, 0xf, 0xf, 0x10, 0x11, 0xf, 0x10, 0x11, 0x11, 0x12, 0x12, 0x13, 0x14, 0x15, 0x12, 0x14, 0x0, 0x13, 0x12, 0x12, 0x13, 0x14, 0x14, 0x13, 0x14, 0x14, 0xc, 0x5, 0x6, 0x7, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x6, 0x4, 0x2, 0x4, 0x3, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x10, 0x15, 0x13, 0x16, 0xf, 0x12, 0x13, 0x15, 0x13, 0x17, 0x16, 0x18, 0x12, 0x14, 0x15, 0x11, 0x16, 0x15, 0x13, 0x13, 0x12, 0x12, 0x15, 0x10, 0x11, 0x10, 0x14, 0x11, 0x14, 0x11, 0x14, 0x12, 0x16, 0x12, 0x12, 0x15, 0x14, 0x15, 0x16, 0x0, 0x0, 0x16, 0x11, 0x18, 0x18, 0x17, 0x14, 0xf, 0x16, 0x10, 0x17, 0x0, 0x0, 0x16, 0xe, 0x11, 0x15, 0x15, 0x18, 0x16, 0x17, 0x15, 0x17, 0x13, 0x14, 0x14, 0x18, 0x18, 0x12, 0xf, 0x12, 0xd, 0x14, 0x15, 0x15, 0x18, 0x17, 0x12, 0x17, 0x17, 0x12, 0x14, 0x13, 0x11, 0x14, 0x18, 0x18, 0x14, 0xd, 0xf, 0x16, 0x12, 0xf, 0xe, 0xe, 0xe, 0xd, 0xe, 0x14, 0x18, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x16, 0x16, 0x14, 0x12, 0x13, 0x13, 0x14, 0x15, 0x14, 0x13, 0x14, 0x17, 0x16, 0x13, 0x13, 0x12, 0x12, 0x12, 0x12, 0xf, 0x11, 0x11, 0x11, 0x12, 0x10, 0x10, 0x11, 0x17, 0x18, 0x18, 0x14, 0x18, 0x13, 0x16, 0x13, 0x11, 0x11, 0x17, 0x11, 0x13, 0x13, 0x10, 0x13, 0x17, 0x10, 0x13, 0x17, 0x8a, 0x88, 0x84, 0x8a, 0x84, 0x85, 0x90, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x17, 0x15, 0x17, 0x16, 0x17, 0x14, 0x17, 0x17, 0x16, 0x18, 0x0, 0x17, 0x17, 0x18, 0x17, 0xc, 0xa, 0xf, 0x15, 0x14, 0x14, 0x16, 0x13, 0x13, 0x14, 0x14, 0x15, 0x14, 0x14, 0x14, 0x13, 0x12, 0x10, 0x10, 0x10, 0x12, 0x12, 0x10, 0xf, 0xe, 0x11, 0x14, 0x11, 0x10, 0x10, 0x12, 0x12, 0x11, 0x10, 0xf, 0xe, 0xf, 0xe, 0xe, 0xe, 0xd, 0xe, 0x10, 0xe, 0xd, 0xe, 0xe, 0xf, 0xf, 0xe, 0xf, 0x10, 0x10, 0x10, 0xe, 0xe, 0x11, 0x14, 0x12, 0x13, 0x15, 0x14, 0x11, 0xf, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x16, 0x18, 0x16, 0x17, 0x14, 0x17, 0x14, 0x18, 0x14, 0x16, 0x17, 0x0, 0x14, 0x17, 0x15, 0x15, 0x14, 0x14, 0x17, 0x14, 0x11, 0xf, 0x10, 0x11, 0x14, 0x12, 0x11, 0x15, 0x13, 0x18, 0x18, 0xf, 0xa, 0x15, 0x15, 0x13, 0x12, 0xb, 0x15, 0x0, 0x0, 0x17, 0x14, 0x14, 0x14, 0x13, 0x12, 0x11, 0xf, 0xf, 0x11, 0xf, 0x11, 0x15, 0x15, 0x14, 0x16, 0x15, 0x15, 0x14, 0x14, 0x12, 0xb, 0xb, 0x8, 0x8, 0xa, 0xb, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x12, 0x16, 0x11, 0x17, 0x15, 0x16, 0x17, 0x0, 0x15, 0x18, 0x16, 0x17, 0x17, 0x17, 0x0, 0x17, 0x18, 0x16, 0x12, 0x13, 0x16, 0x14, 0x18, 0x17, 0x16, 0x14, 0x16, 0x14, 0x18, 0x15, 0x18, 0x16, 0x17, 0x15, 0x15, 0x18, 0x17, 0x16, 0x15, 0x17, 0x16, 0x15, 0x12, 0x18, 0x15, 0x11, 0x15, 0x13, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x14, 0x16, 0x17, 0x15, 0x14, 0x13, 0x16, 0x10, 0x17, 0x17, 0x17, 0x15, 0x14, 0x12, 0x15, 0xe, 0x12, 0x10, 0x15, 0x16, 0x14, 0x14, 0x15, 0xf, 0x13, 0x16, 0x14, 0x14, 0x13, 0x11, 0x13, 0x15, 0x13, 0x13, 0xe, 0xe, 0x15, 0x10, 0x11, 0xe, 0xa, 0xa, 0xb, 0xd, 0x10, 0x12, 0xe, 0xd, 0x10, 0x10, 0xe, 0xe, 0x10, 0x13, 0x13, 0x12, 0x12, 0x11, 0x11, 0x10, 0x11, 0x10, 0x11, 0x13, 0x18, 0x15, 0x12, 0x11, 0x11, 0x12, 0x11, 0xf, 0xf, 0x12, 0x11, 0x11, 0x11, 0x10, 0x14, 0x13, 0x10, 0x17, 0x17, 0x10, 0x16, 0x14, 0x16, 0x14, 0x13, 0x13, 0x18, 0x14, 0x16, 0x15, 0x16, 0x17, 0x0, 0x12, 0x13, 0x17, 0x7a, 0x85, 0x7e, 0x7a, 0x7a, 0x78, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x18, 0x17, 0x0, 0x0, 0x18, 0x15, 0x17, 0x14, 0x17, 0x14, 0x11, 0x11, 0x15, 0x13, 0x14, 0x17, 0x17, 0x16, 0x17, 0x16, 0x15, 0xa, 0x8, 0x10, 0x16, 0x13, 0x12, 0x13, 0x11, 0x10, 0x10, 0x10, 0x12, 0x11, 0x10, 0xf, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xe, 0xf, 0xe, 0x10, 0x11, 0xf, 0xe, 0xf, 0x11, 0x11, 0x13, 0x12, 0x11, 0xf, 0xf, 0x10, 0x10, 0x10, 0x11, 0xf, 0xe, 0xc, 0xc, 0xb, 0xc, 0xe, 0xe, 0xf, 0xe, 0xf, 0xe, 0xf, 0xd, 0xc, 0xc, 0xe, 0xd, 0xf, 0xf, 0xd, 0xb, 0xc, 0x14, 0x16, 0x16, 0x17, 0x14, 0x18, 0x13, 0x17, 0x14, 0x17, 0x14, 0x18, 0x16, 0x16, 0x13, 0x15, 0x13, 0x18, 0x11, 0x13, 0x14, 0x14, 0x16, 0x13, 0x18, 0x18, 0x13, 0x11, 0x14, 0x13, 0x16, 0x15, 0x13, 0x14, 0x13, 0x17, 0x18, 0x13, 0x10, 0x17, 0x16, 0x12, 0x10, 0xa, 0x12, 0x16, 0x18, 0x0, 0x16, 0x14, 0x16, 0x16, 0x15, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0x15, 0x13, 0x10, 0x12, 0x13, 0x13, 0x13, 0x12, 0x11, 0x10, 0x8, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x11, 0x15, 0x10, 0x14, 0x16, 0x18, 0x18, 0x0, 0x14, 0x16, 0x14, 0x16, 0x16, 0x15, 0x18, 0x15, 0x18, 0x16, 0x13, 0x16, 0x17, 0x16, 0x0, 0x18, 0x17, 0x15, 0x17, 0x16, 0x0, 0x17, 0x18, 0x18, 0x17, 0x16, 0x16, 0x0, 0x17, 0x16, 0x16, 0x17, 0x17, 0x18, 0x14, 0x18, 0x17, 0xf, 0x13, 0x17, 0x18, 0x15, 0x0, 0x18, 0x18, 0x18, 0x13, 0x17, 0x0, 0x18, 0x14, 0x11, 0x17, 0x16, 0x18, 0x16, 0x17, 0x11, 0x15, 0x17, 0x0, 0x14, 0x14, 0x14, 0x17, 0x17, 0x16, 0x17, 0x16, 0x11, 0x15, 0x16, 0x17, 0x16, 0x14, 0x12, 0x13, 0x13, 0x11, 0x11, 0xf, 0xe, 0x10, 0x11, 0x13, 0xf, 0xb, 0xb, 0xd, 0xf, 0x11, 0x11, 0x10, 0x11, 0x13, 0x12, 0x10, 0xf, 0xf, 0xf, 0xf, 0x11, 0x11, 0x12, 0x11, 0x11, 0x10, 0xe, 0xd, 0xd, 0xc, 0xd, 0xe, 0xd, 0xd, 0xf, 0xf, 0xe, 0xe, 0xf, 0xf, 0xf, 0x10, 0x10, 0x13, 0x11, 0xf, 0x16, 0x15, 0xe, 0x15, 0x10, 0x14, 0x12, 0x13, 0x12, 0x14, 0x14, 0x16, 0x15, 0x17, 0x18, 0x0, 0x14, 0x14, 0x18, 0x85, 0x7a, 0x7e, 0x83, 0x7a, 0x78, 0x83, 0x0, 0x17, 0x18, 0x0, 0x17, 0x16, 0x14, 0x17, 0x17, 0x18, 0x18, 0x17, 0x14, 0x16, 0x11, 0x17, 0x14, 0x13, 0x12, 0x18, 0x14, 0x13, 0x12, 0x11, 0x12, 0x12, 0x11, 0x10, 0xb, 0xb, 0x13, 0x16, 0x11, 0x11, 0x13, 0x11, 0x11, 0xf, 0x10, 0x10, 0xf, 0xd, 0xe, 0x12, 0x14, 0xe, 0xe, 0xd, 0xf, 0x12, 0x10, 0x11, 0x10, 0xf, 0xe, 0xb, 0xb, 0xd, 0xb, 0xd, 0x11, 0x12, 0x11, 0x10, 0xd, 0xe, 0xe, 0xd, 0x11, 0xc, 0xa, 0xc, 0xe, 0xd, 0xc, 0xc, 0xc, 0xd, 0xd, 0xd, 0xd, 0xd, 0xc, 0xe, 0x10, 0x12, 0x10, 0x12, 0x13, 0x11, 0xe, 0xc, 0x12, 0x17, 0x14, 0x16, 0x15, 0x17, 0x13, 0x16, 0x15, 0x18, 0x14, 0x17, 0x16, 0x16, 0x14, 0x15, 0x14, 0x18, 0x15, 0x17, 0x17, 0x17, 0x17, 0x16, 0x18, 0x18, 0x14, 0x12, 0x15, 0x12, 0x14, 0x14, 0x11, 0x12, 0x10, 0x14, 0x16, 0x13, 0xe, 0x18, 0x17, 0x12, 0xe, 0xc, 0x12, 0x10, 0x10, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x17, 0x15, 0x13, 0x14, 0x11, 0x11, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0xc, 0xc, 0x8, 0x5, 0x6, 0x5, 0x4, 0x4, 0x9, 0x3, 0x2, 0x2, 0x4, 0x6, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0xb, 0xb, 0x2, 0x3, 0x6, 0x5, 0x3, 0x2, 0x2, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x11, 0x18, 0x13, 0x13, 0x12, 0x16, 0x15, 0x17, 0x11, 0x13, 0x15, 0x17, 0x17, 0x15, 0x18, 0x16, 0x17, 0x15, 0x13, 0x16, 0x15, 0x14, 0x17, 0x16, 0x16, 0x16, 0x18, 0x13, 0x16, 0x14, 0x17, 0x15, 0x18, 0x15, 0x14, 0x15, 0x15, 0x17, 0x17, 0x16, 0x13, 0x16, 0x10, 0x14, 0x14, 0x12, 0x16, 0x13, 0x17, 0x13, 0x18, 0x15, 0x14, 0x16, 0x12, 0x17, 0x16, 0x16, 0x18, 0x17, 0x0, 0x0, 0x17, 0x14, 0x15, 0x11, 0x15, 0x17, 0x14, 0xf, 0x10, 0x10, 0x16, 0x15, 0x13, 0x17, 0x18, 0x12, 0x15, 0x16, 0x17, 0x18, 0x14, 0x11, 0xe, 0x10, 0x11, 0x12, 0x10, 0xc, 0x10, 0x14, 0x17, 0x11, 0xd, 0x10, 0xd, 0xb, 0xd, 0x12, 0x11, 0x12, 0x12, 0x11, 0x10, 0x11, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x14, 0x17, 0x14, 0x12, 0x13, 0x13, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xf, 0x11, 0x11, 0x11, 0x13, 0x13, 0x11, 0xf, 0xd, 0x13, 0x15, 0x11, 0x16, 0x11, 0x15, 0x13, 0x14, 0x12, 0x17, 0x15, 0x17, 0x15, 0x16, 0x16, 0x16, 0x14, 0x14, 0x15, 0x7a, 0x83, 0x83, 0x7a, 0x7e, 0x83, 0x7e, 0x17, 0x12, 0x16, 0x18, 0x16, 0x15, 0x13, 0x15, 0x14, 0x18, 0x17, 0x17, 0x15, 0x18, 0x16, 0x18, 0x17, 0x17, 0x15, 0x17, 0x16, 0x17, 0x15, 0x13, 0x12, 0x10, 0x12, 0x11, 0xb, 0xb, 0x12, 0x13, 0x10, 0x10, 0x11, 0x10, 0x12, 0x10, 0x11, 0xf, 0xd, 0xe, 0xc, 0xf, 0xe, 0xd, 0x11, 0x13, 0xf, 0xe, 0xe, 0xe, 0xe, 0xd, 0xe, 0xb, 0xc, 0xf, 0xc, 0xb, 0xd, 0xd, 0xe, 0xf, 0xe, 0xd, 0xc, 0xd, 0xe, 0xd, 0xd, 0xe, 0xf, 0xd, 0xb, 0xc, 0xe, 0x10, 0xf, 0x10, 0xe, 0xd, 0xc, 0xc, 0x11, 0xf, 0xd, 0x11, 0x12, 0x11, 0xd, 0xa, 0x13, 0x17, 0x14, 0x14, 0x15, 0x17, 0x12, 0x17, 0x15, 0x17, 0x13, 0x17, 0x12, 0x13, 0x12, 0x14, 0x12, 0x17, 0x14, 0x15, 0x16, 0x15, 0x15, 0x15, 0x18, 0x15, 0x12, 0x12, 0x16, 0x13, 0x16, 0x16, 0x18, 0x17, 0x12, 0x13, 0x15, 0x15, 0x10, 0x15, 0x17, 0x13, 0xe, 0xf, 0x16, 0x11, 0x11, 0x10, 0x11, 0x12, 0x12, 0x14, 0x16, 0x14, 0x13, 0xf, 0xe, 0xd, 0xf, 0x11, 0x12, 0x15, 0x17, 0x18, 0x0, 0x16, 0xc, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x5, 0x5, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x11, 0x17, 0x13, 0x14, 0x11, 0x17, 0x14, 0x17, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0x17, 0x18, 0x17, 0x16, 0x17, 0x16, 0x18, 0x18, 0x16, 0x14, 0x16, 0x12, 0x16, 0x14, 0x15, 0x18, 0x15, 0x0, 0x14, 0x18, 0x16, 0x17, 0x18, 0x14, 0x18, 0x16, 0x18, 0x15, 0x12, 0x13, 0x12, 0x18, 0x15, 0x16, 0x15, 0x17, 0x18, 0x13, 0xf, 0x13, 0xe, 0x16, 0x15, 0x12, 0x17, 0x0, 0x14, 0x14, 0x15, 0x15, 0x14, 0x11, 0x10, 0x13, 0x14, 0x12, 0x13, 0xf, 0xa, 0x10, 0x14, 0x15, 0x13, 0xe, 0x10, 0xe, 0xb, 0xe, 0x13, 0x10, 0x12, 0x15, 0x14, 0x10, 0x10, 0x10, 0x11, 0xf, 0x11, 0x12, 0x13, 0x10, 0x10, 0x13, 0x11, 0x11, 0x11, 0x11, 0xe, 0xd, 0xd, 0xf, 0xf, 0x11, 0x10, 0xe, 0x12, 0x11, 0x13, 0x12, 0x10, 0x13, 0x11, 0xa, 0xe, 0x14, 0x10, 0x15, 0x11, 0x15, 0x13, 0x16, 0x15, 0x18, 0x16, 0x17, 0x18, 0x18, 0x17, 0x17, 0x16, 0x16, 0x18, 0x7a, 0x83, 0x7a, 0x78, 0x7a, 0x78, 0x85, 0x0, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x0, 0x17, 0x17, 0x17, 0x16, 0x12, 0x18, 0x10, 0x14, 0x11, 0x13, 0xf, 0x13, 0x13, 0x16, 0x15, 0x11, 0x10, 0xa, 0xc, 0x10, 0xc, 0x6, 0xc, 0xd, 0xd, 0xd, 0xf, 0x12, 0x11, 0xc, 0x10, 0x11, 0xd, 0xe, 0xd, 0xc, 0xc, 0xf, 0x14, 0x15, 0x12, 0xe, 0x10, 0x10, 0x11, 0x11, 0x13, 0x11, 0x12, 0x13, 0x12, 0x11, 0x11, 0x13, 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0xf, 0xf, 0x10, 0x11, 0xf, 0xc, 0xb, 0xc, 0xf, 0x10, 0xf, 0xe, 0xc, 0xa, 0xc, 0x11, 0x10, 0xf, 0xf, 0x10, 0x18, 0x12, 0xd, 0x13, 0x14, 0x12, 0x15, 0x14, 0x0, 0x13, 0x16, 0x15, 0x16, 0x14, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x17, 0x18, 0x16, 0x18, 0x18, 0x18, 0x18, 0x16, 0x17, 0x18, 0x17, 0x12, 0x15, 0x17, 0x12, 0xf, 0x14, 0x16, 0x11, 0xf, 0xc, 0xd, 0xe, 0x10, 0x12, 0x12, 0x14, 0x14, 0x13, 0x12, 0x10, 0x12, 0x12, 0x10, 0x12, 0x15, 0x13, 0x10, 0xe, 0xb, 0x7, 0x5, 0x5, 0x3, 0x3, 0x5, 0x8, 0x2, 0x2, 0x3, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x5, 0x7, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x10, 0x13, 0x10, 0x14, 0x11, 0x17, 0x18, 0x18, 0x18, 0x0, 0x16, 0x17, 0x15, 0x13, 0x16, 0x12, 0x15, 0x16, 0x0, 0x0, 0x16, 0x14, 0x17, 0x15, 0x14, 0x13, 0x18, 0x14, 0x17, 0x12, 0x17, 0x17, 0x0, 0x15, 0x13, 0x17, 0x17, 0x0, 0x18, 0x17, 0x13, 0x16, 0x13, 0x18, 0x0, 0x0, 0x18, 0x15, 0x0, 0x14, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x15, 0x14, 0x11, 0xf, 0x16, 0x17, 0x0, 0x14, 0x11, 0x11, 0x14, 0x15, 0x16, 0x12, 0x14, 0x12, 0x17, 0x12, 0x15, 0x0, 0x0, 0x13, 0x14, 0x14, 0x14, 0x16, 0x12, 0x14, 0x14, 0x14, 0x12, 0x13, 0xc, 0x9, 0xb, 0xf, 0x10, 0x10, 0xc, 0xb, 0xb, 0xc, 0xd, 0x11, 0x10, 0x12, 0x13, 0x14, 0x14, 0x14, 0x14, 0x10, 0xc, 0x12, 0x14, 0x15, 0x14, 0x10, 0xf, 0xf, 0x11, 0x10, 0x12, 0x13, 0x12, 0x10, 0x11, 0x11, 0x13, 0x11, 0xe, 0xf, 0xf, 0x10, 0xe, 0xd, 0x10, 0x10, 0xf, 0x15, 0x14, 0xf, 0x16, 0x12, 0x16, 0x16, 0x14, 0x12, 0x14, 0x11, 0x13, 0x14, 0x13, 0x13, 0x14, 0x12, 0x13, 0x16, 0x7e, 0x7e, 0x7a, 0x7a, 0x8a, 0x7a, 0x7e, 0x18, 0x14, 0x18, 0x16, 0x15, 0x16, 0x17, 0x18, 0x16, 0x16, 0x17, 0x18, 0x15, 0x17, 0x12, 0x15, 0x15, 0x17, 0x15, 0x16, 0x18, 0x18, 0x14, 0x12, 0x13, 0x12, 0x12, 0x15, 0x10, 0xd, 0x13, 0x12, 0x10, 0xf, 0x10, 0x10, 0x12, 0x12, 0x12, 0x12, 0xe, 0xe, 0xe, 0xe, 0xf, 0x10, 0xf, 0xf, 0xe, 0x10, 0x11, 0x10, 0xf, 0x11, 0x10, 0xf, 0x10, 0x11, 0x10, 0xf, 0x10, 0x12, 0xf, 0xd, 0xd, 0xd, 0xe, 0xc, 0xc, 0xc, 0xd, 0xd, 0xe, 0xd, 0xe, 0xd, 0xd, 0xd, 0xc, 0xc, 0xc, 0xb, 0xc, 0xc, 0xd, 0xe, 0xe, 0xe, 0xf, 0x12, 0x12, 0x11, 0x13, 0x15, 0x16, 0x17, 0x15, 0x18, 0x13, 0x14, 0x14, 0x16, 0x12, 0x16, 0x17, 0x18, 0x16, 0x16, 0x15, 0x0, 0x16, 0x16, 0x17, 0x17, 0x18, 0x0, 0x17, 0x14, 0x13, 0x15, 0x16, 0x16, 0x17, 0x16, 0x15, 0x15, 0x14, 0x16, 0x17, 0x15, 0xd, 0xf, 0x12, 0xf, 0xc, 0xa, 0x10, 0x11, 0x12, 0x12, 0x11, 0x14, 0x14, 0x15, 0x12, 0xf, 0xe, 0xe, 0xf, 0x10, 0x12, 0x14, 0x16, 0x14, 0x14, 0x16, 0xd, 0x6, 0x4, 0x4, 0x7, 0x5, 0x4, 0x4, 0x5, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x5, 0x3, 0x3, 0x6, 0x6, 0x4, 0x3, 0x5, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x12, 0x17, 0x16, 0x16, 0x14, 0x17, 0x16, 0x18, 0x16, 0x17, 0x17, 0x17, 0x16, 0x14, 0x17, 0x14, 0x14, 0x11, 0x17, 0x0, 0x17, 0x15, 0x15, 0x13, 0x14, 0x12, 0x14, 0xf, 0x14, 0x12, 0x16, 0x12, 0x17, 0x16, 0x15, 0x14, 0x11, 0x13, 0x15, 0x11, 0x10, 0x13, 0xe, 0x17, 0x15, 0x14, 0x15, 0x12, 0x17, 0x14, 0x18, 0x17, 0x18, 0x18, 0x10, 0x14, 0x11, 0xf, 0x11, 0x12, 0x18, 0x0, 0x18, 0x15, 0x15, 0x17, 0x18, 0x18, 0x14, 0xc, 0x10, 0x14, 0x18, 0x16, 0x18, 0x0, 0x0, 0x17, 0x17, 0x14, 0x15, 0x16, 0x12, 0x15, 0x16, 0x17, 0x15, 0x15, 0x10, 0x10, 0x14, 0x17, 0x0, 0x0, 0x14, 0x10, 0xf, 0xf, 0x10, 0x12, 0x10, 0x12, 0x12, 0x16, 0x18, 0x18, 0x18, 0x16, 0x12, 0x15, 0x16, 0x17, 0x18, 0x15, 0x12, 0x10, 0x10, 0xd, 0xc, 0x10, 0xf, 0xe, 0xe, 0xf, 0xe, 0x10, 0x10, 0xf, 0xf, 0xe, 0x10, 0xf, 0x12, 0x10, 0x10, 0x16, 0x17, 0x14, 0x18, 0x11, 0x15, 0x15, 0x16, 0x13, 0x16, 0x16, 0x17, 0x18, 0x15, 0x14, 0x15, 0x13, 0x12, 0x14, 0x84, 0x84, 0x84, 0x90, 0x89, 0x7e, 0x84, 0x16, 0x13, 0x14, 0x0, 0x0, 0x17, 0x15, 0x14, 0x13, 0x17, 0x17, 0x0, 0x12, 0x16, 0x12, 0x15, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x16, 0x14, 0x14, 0x15, 0x17, 0x16, 0xe, 0xc, 0x14, 0x16, 0x15, 0x15, 0x14, 0x11, 0x14, 0x15, 0x15, 0x13, 0x11, 0x13, 0x14, 0x14, 0x14, 0x14, 0x12, 0x12, 0x15, 0x16, 0x14, 0x12, 0x12, 0x13, 0x14, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x11, 0x10, 0xe, 0xf, 0x11, 0x11, 0x11, 0x11, 0xf, 0x11, 0x12, 0x12, 0x12, 0x12, 0x10, 0x11, 0x11, 0xf, 0x10, 0x10, 0x11, 0xa, 0xb, 0xe, 0xf, 0xd, 0xf, 0xf, 0xf, 0xf, 0xc, 0x10, 0x12, 0x11, 0x13, 0x12, 0x15, 0x10, 0x13, 0x11, 0x15, 0xf, 0x14, 0x12, 0x16, 0x13, 0x13, 0x15, 0x17, 0x13, 0x16, 0x16, 0x17, 0x15, 0x13, 0x18, 0x15, 0x16, 0x12, 0x15, 0x13, 0x18, 0x17, 0x15, 0x18, 0x16, 0x17, 0x17, 0x15, 0xd, 0xe, 0x14, 0x14, 0x10, 0xd, 0x14, 0x15, 0x15, 0x14, 0x10, 0xd, 0xc, 0xd, 0xd, 0xf, 0x11, 0x16, 0x16, 0x14, 0x15, 0x17, 0x16, 0x16, 0x13, 0xb, 0x7, 0x7, 0x6, 0x8, 0x8, 0x5, 0x4, 0x5, 0x5, 0x3, 0x4, 0x6, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x5, 0x8, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x11, 0x16, 0x14, 0x14, 0x11, 0x14, 0x13, 0x17, 0x12, 0x10, 0x10, 0x13, 0x12, 0x11, 0x18, 0x14, 0x14, 0x12, 0x0, 0x18, 0x17, 0x16, 0x16, 0x14, 0x17, 0x18, 0x18, 0x12, 0x16, 0x15, 0x17, 0x14, 0x18, 0x16, 0x15, 0x14, 0x10, 0x14, 0x18, 0x15, 0x15, 0x16, 0x11, 0x18, 0x16, 0x16, 0x18, 0x15, 0x16, 0x13, 0x0, 0x14, 0x16, 0x13, 0xa, 0x14, 0x12, 0x13, 0x13, 0x15, 0x15, 0x14, 0x17, 0x13, 0x18, 0x16, 0x18, 0x17, 0x14, 0x11, 0x10, 0x10, 0x15, 0x16, 0x15, 0x16, 0x14, 0x10, 0x17, 0x16, 0x16, 0x13, 0x10, 0x14, 0x14, 0x14, 0x11, 0xe, 0xe, 0xe, 0x14, 0x17, 0x0, 0x0, 0x13, 0xf, 0xe, 0xd, 0xf, 0x16, 0x12, 0x15, 0x15, 0x18, 0x15, 0x11, 0x12, 0x11, 0x11, 0x11, 0x10, 0x11, 0x10, 0xf, 0xe, 0xe, 0x10, 0xf, 0xe, 0x12, 0x11, 0x13, 0x15, 0x16, 0x17, 0x12, 0xf, 0xc, 0xf, 0x11, 0x13, 0x13, 0x13, 0xa, 0xd, 0x16, 0x17, 0x14, 0x18, 0x11, 0x15, 0x14, 0x16, 0x12, 0x16, 0x16, 0x17, 0x17, 0x15, 0x14, 0x15, 0x15, 0x13, 0x14, 0x8a, 0x8a, 0x8a, 0x7e, 0x84, 0x85, 0x7e, 0x18, 0x17, 0x16, 0x17, 0x18, 0x17, 0x15, 0x17, 0x16, 0x17, 0x14, 0x16, 0x17, 0x0, 0x13, 0x15, 0x18, 0x18, 0x12, 0x15, 0x16, 0x16, 0x17, 0x13, 0x13, 0x14, 0x16, 0x15, 0xe, 0xf, 0x17, 0x0, 0x0, 0x0, 0x13, 0x11, 0x11, 0x12, 0x15, 0x15, 0x12, 0x13, 0x13, 0x13, 0x12, 0x10, 0xf, 0xf, 0x13, 0x14, 0x11, 0x10, 0x10, 0xf, 0x11, 0x10, 0xf, 0xf, 0xf, 0xf, 0x10, 0xe, 0xe, 0xe, 0xd, 0xf, 0xe, 0xd, 0xf, 0xe, 0xd, 0xd, 0xe, 0xe, 0xe, 0xd, 0xd, 0xd, 0xc, 0xe, 0xf, 0xf, 0x7, 0xf, 0x14, 0x15, 0xe, 0xe, 0xf, 0xe, 0xd, 0x9, 0x12, 0x15, 0x13, 0x13, 0x13, 0x16, 0x13, 0x16, 0x16, 0x17, 0x16, 0x17, 0x15, 0x17, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x18, 0x18, 0x16, 0x16, 0x18, 0x16, 0x16, 0x13, 0x15, 0x11, 0x16, 0x16, 0x13, 0x15, 0x12, 0x14, 0x14, 0x12, 0xe, 0x11, 0x13, 0x13, 0xd, 0xc, 0x11, 0x10, 0xf, 0xf, 0x10, 0x12, 0x12, 0x10, 0xf, 0xe, 0xf, 0x14, 0x11, 0xe, 0x13, 0x13, 0x13, 0x14, 0x10, 0x7, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x11, 0x17, 0x13, 0x16, 0x15, 0x0, 0x16, 0x16, 0x14, 0x11, 0x13, 0x13, 0x11, 0x10, 0x17, 0x11, 0x13, 0x16, 0x0, 0x16, 0xd, 0xf, 0x15, 0x13, 0x17, 0x18, 0x18, 0x15, 0x17, 0x15, 0x18, 0x14, 0x17, 0x15, 0x15, 0x14, 0xd, 0x11, 0x18, 0x13, 0x12, 0x17, 0x13, 0x17, 0x17, 0x16, 0x0, 0x18, 0x15, 0xc, 0x15, 0xf, 0x14, 0x17, 0x11, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x18, 0x17, 0x15, 0x16, 0x15, 0x16, 0x14, 0x16, 0x12, 0x10, 0x11, 0x17, 0x17, 0x16, 0x16, 0x16, 0x15, 0x18, 0x15, 0x16, 0x15, 0x15, 0x15, 0x13, 0x12, 0x13, 0xe, 0xd, 0xd, 0xe, 0x12, 0x16, 0x17, 0x13, 0xd, 0xc, 0xe, 0x11, 0x13, 0x15, 0x13, 0x11, 0x12, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0xe, 0xc, 0xe, 0xf, 0x10, 0xf, 0xe, 0xf, 0xf, 0x10, 0x14, 0x11, 0xd, 0xf, 0x11, 0x11, 0x17, 0x0, 0x16, 0x13, 0x13, 0x17, 0x0, 0x15, 0x15, 0x10, 0x17, 0x13, 0x13, 0x14, 0x14, 0x11, 0x15, 0x15, 0x12, 0x15, 0x16, 0x18, 0x14, 0x15, 0x7e, 0x71, 0x7a, 0x83, 0x7e, 0x7a, 0x7e, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x17, 0x0, 0x0, 0x17, 0x17, 0x18, 0x0, 0x0, 0x11, 0x13, 0x14, 0x14, 0x10, 0x14, 0x16, 0x11, 0x13, 0x14, 0xf, 0xd, 0xd, 0x11, 0xc, 0xe, 0x12, 0x15, 0x14, 0x12, 0x12, 0x11, 0xf, 0xf, 0x11, 0x12, 0xe, 0xe, 0xd, 0xd, 0xd, 0xe, 0xf, 0xf, 0xd, 0xe, 0xf, 0x14, 0xf, 0xd, 0xf, 0x10, 0xe, 0x10, 0x10, 0x11, 0xe, 0xd, 0xf, 0xe, 0xe, 0xd, 0xc, 0xb, 0xe, 0x10, 0xe, 0xb, 0xb, 0xd, 0xc, 0xb, 0xa, 0xa, 0xa, 0xb, 0xc, 0xa, 0x8, 0x13, 0x13, 0x12, 0xf, 0x11, 0x13, 0x12, 0xf, 0xb, 0x12, 0x16, 0x15, 0x14, 0x12, 0x15, 0x12, 0x15, 0x15, 0x16, 0x15, 0x16, 0x15, 0x13, 0x15, 0x16, 0x17, 0x18, 0x14, 0x17, 0x17, 0x15, 0x14, 0xd, 0x14, 0x13, 0x16, 0x10, 0x16, 0x11, 0x13, 0x15, 0x10, 0x11, 0xe, 0x11, 0x11, 0xe, 0xb, 0x12, 0xf, 0xe, 0xa, 0xb, 0x16, 0x16, 0x15, 0x11, 0xc, 0xb, 0xd, 0xe, 0xe, 0xe, 0xe, 0x11, 0x14, 0x17, 0x18, 0x18, 0x18, 0xb, 0x4, 0x8, 0xa, 0x5, 0x3, 0x5, 0x5, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x7, 0x4, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x2, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x13, 0x17, 0x15, 0x16, 0x14, 0x17, 0x17, 0x16, 0x14, 0x12, 0x12, 0x14, 0x11, 0x11, 0x16, 0x11, 0x14, 0x18, 0x0, 0x17, 0x12, 0x15, 0x17, 0x14, 0x17, 0x17, 0x14, 0x14, 0x18, 0x14, 0x17, 0x17, 0x0, 0x14, 0x16, 0x17, 0x16, 0x16, 0x18, 0x17, 0x18, 0x18, 0x15, 0x18, 0x14, 0x14, 0x17, 0x16, 0x17, 0xf, 0x14, 0xf, 0x14, 0x17, 0x13, 0x17, 0x14, 0x15, 0x13, 0x15, 0x17, 0x17, 0x16, 0x11, 0x16, 0x14, 0x16, 0x15, 0x17, 0x11, 0x12, 0x12, 0x18, 0x14, 0x12, 0x13, 0x16, 0x0, 0x18, 0x15, 0x15, 0x15, 0x12, 0x12, 0xe, 0x10, 0x11, 0xe, 0xe, 0xd, 0x10, 0x16, 0x17, 0x16, 0x11, 0xc, 0xd, 0xc, 0xd, 0x10, 0x13, 0x10, 0xe, 0xf, 0xf, 0x11, 0x10, 0x10, 0x11, 0x10, 0x10, 0x12, 0x11, 0xf, 0xe, 0xd, 0xf, 0x10, 0xe, 0xf, 0xd, 0xe, 0xe, 0xe, 0x11, 0x12, 0xf, 0x10, 0x16, 0x16, 0x16, 0x0, 0x0, 0x14, 0x11, 0x16, 0x18, 0x14, 0x15, 0x11, 0x14, 0x12, 0x14, 0x14, 0x17, 0x16, 0x18, 0x16, 0x15, 0x17, 0x16, 0x16, 0x13, 0x17, 0x78, 0x85, 0x7a, 0x7a, 0x85, 0x7a, 0x85, 0x18, 0x13, 0x14, 0x15, 0x15, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x12, 0x13, 0x12, 0x14, 0x12, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x10, 0xe, 0x14, 0x10, 0xf, 0x11, 0x12, 0xf, 0x10, 0x11, 0x10, 0xe, 0xd, 0x10, 0x11, 0xf, 0x10, 0x11, 0x11, 0x12, 0x13, 0x13, 0x13, 0x12, 0x12, 0x11, 0x12, 0x10, 0x10, 0x10, 0x11, 0x11, 0x10, 0xf, 0xf, 0x10, 0xe, 0xf, 0xe, 0xe, 0xc, 0xd, 0xf, 0x12, 0x12, 0x11, 0xf, 0xf, 0x10, 0xf, 0xd, 0xd, 0xd, 0xd, 0xc, 0xc, 0xf, 0x12, 0x16, 0x14, 0xf, 0xe, 0xe, 0x10, 0x10, 0xe, 0xa, 0x11, 0x15, 0x14, 0x14, 0x13, 0x14, 0x14, 0x14, 0x15, 0x16, 0x15, 0x17, 0x18, 0x16, 0x18, 0x18, 0x16, 0x18, 0x15, 0x15, 0x16, 0x15, 0x16, 0x13, 0x17, 0x16, 0x18, 0x14, 0x18, 0x14, 0x16, 0x17, 0x15, 0x16, 0x13, 0x15, 0x16, 0x13, 0x13, 0x16, 0x13, 0x11, 0xd, 0xf, 0x13, 0x10, 0x10, 0x11, 0x12, 0x13, 0x15, 0x15, 0x15, 0x13, 0x11, 0x11, 0x13, 0x17, 0x0, 0x13, 0x12, 0x6, 0x6, 0x7, 0x6, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x4, 0x7, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0xe, 0x13, 0xf, 0x13, 0x11, 0x14, 0x12, 0x13, 0xf, 0x13, 0x15, 0x14, 0x12, 0x12, 0x18, 0x14, 0x15, 0x17, 0x16, 0x17, 0x11, 0x16, 0x18, 0x16, 0x17, 0x17, 0x15, 0x14, 0x18, 0x15, 0x17, 0x18, 0x0, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x12, 0x17, 0x13, 0x16, 0x15, 0x0, 0x18, 0x15, 0x17, 0x14, 0x16, 0x14, 0x15, 0x15, 0x15, 0x15, 0xf, 0x11, 0x11, 0x12, 0x15, 0x13, 0x10, 0x14, 0x15, 0x15, 0x13, 0x11, 0x14, 0x12, 0x12, 0x14, 0x16, 0x17, 0x18, 0x12, 0xf, 0xf, 0x15, 0x12, 0xd, 0xe, 0xc, 0xd, 0x10, 0x13, 0xe, 0xc, 0xa, 0xd, 0xd, 0xc, 0xe, 0xc, 0xd, 0xe, 0xe, 0xf, 0x11, 0x11, 0x12, 0x11, 0xe, 0x10, 0x10, 0x11, 0x10, 0x11, 0xf, 0x11, 0x13, 0x10, 0xf, 0xd, 0xf, 0x10, 0x10, 0x12, 0x12, 0x11, 0x12, 0x15, 0x14, 0x12, 0x12, 0x13, 0x11, 0xb, 0x10, 0x16, 0xe, 0x11, 0xf, 0xe, 0x10, 0x16, 0x14, 0x0, 0x18, 0x0, 0x17, 0x17, 0x17, 0x16, 0x15, 0x13, 0x1a, 0x83, 0x7a, 0x7a, 0x7a, 0x7a, 0x83, 0x7e, 0x18, 0x14, 0x12, 0x11, 0x11, 0x12, 0x11, 0x13, 0xe, 0x15, 0x15, 0x14, 0xf, 0x15, 0x12, 0x12, 0x11, 0x13, 0x16, 0x11, 0x14, 0x16, 0x15, 0x16, 0x16, 0x12, 0x12, 0x15, 0x10, 0xd, 0x12, 0x15, 0x0, 0x12, 0x10, 0x12, 0x14, 0x11, 0x15, 0x14, 0x10, 0x10, 0x10, 0x13, 0x15, 0x13, 0x15, 0x13, 0x11, 0x10, 0xd, 0xd, 0xe, 0x10, 0x11, 0x12, 0x12, 0x12, 0x11, 0xe, 0x11, 0x11, 0x12, 0x11, 0x10, 0xf, 0xf, 0x10, 0x13, 0x12, 0x12, 0x11, 0x10, 0x10, 0xf, 0xe, 0xd, 0xf, 0xf, 0xd, 0xd, 0x11, 0x11, 0xd, 0x11, 0x11, 0xb, 0xd, 0xc, 0xd, 0xc, 0xa, 0x14, 0x17, 0x16, 0x15, 0x14, 0x16, 0x14, 0x15, 0x15, 0x15, 0x15, 0x17, 0x17, 0x14, 0x18, 0x16, 0x15, 0x17, 0x13, 0x14, 0x16, 0x14, 0x16, 0x14, 0x18, 0x17, 0x0, 0x17, 0x18, 0x14, 0x17, 0x18, 0x16, 0x18, 0x14, 0x15, 0x0, 0x14, 0x16, 0x16, 0xe, 0xd, 0xb, 0xf, 0x16, 0x16, 0x16, 0x14, 0xf, 0xa, 0xa, 0xa, 0xc, 0xe, 0xe, 0xe, 0x11, 0x14, 0x18, 0xe, 0x5, 0x4, 0x8, 0x6, 0x2, 0x3, 0x3, 0x3, 0x7, 0x5, 0x3, 0x2, 0x5, 0x5, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x11, 0x15, 0x11, 0x14, 0x12, 0x14, 0x14, 0x16, 0x12, 0x14, 0x12, 0x16, 0x14, 0x12, 0x18, 0x14, 0x13, 0x14, 0x12, 0x15, 0x10, 0x11, 0x17, 0x13, 0x14, 0x14, 0x14, 0x14, 0x0, 0x15, 0x15, 0x14, 0x0, 0x16, 0x17, 0x17, 0x18, 0x16, 0x14, 0x12, 0xf, 0x13, 0x11, 0x18, 0x13, 0x13, 0x10, 0x11, 0x0, 0x18, 0x18, 0x15, 0x15, 0x16, 0xf, 0x14, 0x11, 0x14, 0x11, 0x13, 0x14, 0x15, 0x16, 0x11, 0x13, 0x15, 0x15, 0x17, 0x12, 0xd, 0x10, 0x17, 0x16, 0x16, 0x15, 0x16, 0x14, 0x14, 0x17, 0x0, 0x17, 0x16, 0x14, 0xf, 0x13, 0x16, 0x15, 0x10, 0x10, 0xf, 0x10, 0x12, 0x14, 0x12, 0x10, 0xc, 0xe, 0x11, 0xf, 0x12, 0x11, 0x10, 0x14, 0x13, 0x14, 0x17, 0x15, 0x14, 0x11, 0xf, 0x11, 0x10, 0x11, 0x13, 0x16, 0x12, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x13, 0x10, 0xf, 0x11, 0x12, 0xe, 0xe, 0xf, 0xd, 0xe, 0x10, 0xf, 0xe, 0x15, 0x18, 0x14, 0x15, 0x15, 0x16, 0x17, 0x0, 0x13, 0x15, 0x12, 0x13, 0x14, 0x14, 0x16, 0x16, 0x13, 0x12, 0x16, 0x7e, 0x83, 0x85, 0x85, 0x85, 0x7a, 0x8a, 0x18, 0x15, 0x14, 0x13, 0x12, 0x15, 0x14, 0x16, 0x14, 0x17, 0x18, 0x18, 0x12, 0x17, 0x14, 0x16, 0x15, 0x15, 0x13, 0x12, 0x16, 0x12, 0x13, 0x14, 0x13, 0x12, 0x11, 0x12, 0xe, 0xa, 0xe, 0x17, 0x16, 0xf, 0xd, 0x10, 0x12, 0x11, 0x13, 0x14, 0x13, 0x13, 0x12, 0x11, 0xf, 0x10, 0xf, 0xf, 0xd, 0xd, 0xf, 0x11, 0x14, 0x13, 0x10, 0x11, 0x15, 0x17, 0x12, 0xf, 0x10, 0xf, 0xf, 0xe, 0xe, 0xe, 0xf, 0xf, 0x11, 0x12, 0x11, 0x12, 0x10, 0x10, 0x10, 0xe, 0xe, 0xf, 0xe, 0xe, 0xe, 0xf, 0xc, 0xc, 0xe, 0x10, 0xb, 0xa, 0xb, 0xe, 0x10, 0x9, 0x10, 0x18, 0x14, 0x11, 0x12, 0x14, 0x11, 0x14, 0x14, 0x11, 0x11, 0x12, 0x15, 0x13, 0x15, 0x14, 0x15, 0x14, 0x10, 0x10, 0x16, 0x14, 0x14, 0x12, 0x16, 0x12, 0x15, 0x11, 0x17, 0x16, 0x16, 0x15, 0x16, 0x17, 0x14, 0x13, 0x16, 0x12, 0x15, 0x16, 0x11, 0x12, 0xf, 0x11, 0x14, 0x16, 0x14, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x13, 0x13, 0x11, 0x11, 0xf, 0xe, 0x8, 0x7, 0x4, 0x6, 0x5, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x13, 0x17, 0x15, 0x13, 0x10, 0x13, 0x13, 0x17, 0x15, 0x16, 0x13, 0x14, 0x14, 0x11, 0x18, 0x14, 0x13, 0x11, 0xd, 0x12, 0x13, 0x13, 0x16, 0x16, 0x13, 0x14, 0x15, 0x13, 0x18, 0x16, 0x15, 0x12, 0x14, 0x11, 0x16, 0x17, 0x15, 0x18, 0x0, 0x13, 0xe, 0x13, 0x13, 0x18, 0x13, 0x15, 0x15, 0x14, 0x18, 0x16, 0x17, 0x13, 0x16, 0x16, 0x11, 0x17, 0x13, 0x14, 0x11, 0x14, 0x14, 0x17, 0x15, 0x15, 0x18, 0x13, 0x13, 0x14, 0x13, 0xf, 0x11, 0x18, 0x0, 0x17, 0x16, 0x0, 0x18, 0x17, 0x0, 0x0, 0x18, 0x16, 0x10, 0x12, 0x15, 0x16, 0x15, 0x12, 0x10, 0x11, 0x11, 0x13, 0x13, 0x14, 0x16, 0x14, 0x10, 0x11, 0x10, 0x13, 0x12, 0x11, 0x13, 0x10, 0x10, 0x12, 0x10, 0xe, 0xd, 0xe, 0xe, 0x11, 0x12, 0x10, 0x14, 0x14, 0x11, 0x14, 0x16, 0x16, 0x13, 0x10, 0xc, 0xc, 0xe, 0xf, 0xf, 0xd, 0x15, 0x0, 0x11, 0xe, 0xf, 0xf, 0xe, 0x13, 0x17, 0x14, 0x16, 0x16, 0x17, 0x16, 0x17, 0x15, 0x16, 0x15, 0x14, 0x16, 0x16, 0x16, 0x14, 0x15, 0x13, 0x17, 0x8a, 0x7e, 0x7e, 0x7a, 0x88, 0x7e, 0x88, 0x16, 0x15, 0x17, 0x13, 0x14, 0x17, 0x15, 0x17, 0x15, 0x18, 0x18, 0x18, 0x14, 0x17, 0x16, 0x17, 0x17, 0x16, 0x16, 0x16, 0x17, 0x13, 0x13, 0x14, 0x15, 0x13, 0x14, 0x14, 0x12, 0x10, 0x15, 0x18, 0x16, 0x11, 0xf, 0xf, 0x11, 0x11, 0x11, 0x12, 0x14, 0x15, 0x13, 0x11, 0xe, 0xf, 0xf, 0xe, 0xe, 0xe, 0x10, 0x12, 0x10, 0xf, 0xf, 0xf, 0x10, 0xf, 0xf, 0xe, 0x10, 0x10, 0x12, 0x10, 0xe, 0xe, 0xd, 0xd, 0xe, 0xf, 0xe, 0xc, 0xe, 0xd, 0xe, 0xf, 0xd, 0xe, 0xc, 0xc, 0xd, 0xe, 0xb, 0xe, 0xf, 0x12, 0xf, 0xc, 0xe, 0x12, 0x14, 0xf, 0x12, 0x16, 0x14, 0x13, 0x13, 0x14, 0x14, 0x16, 0x18, 0x17, 0x16, 0x15, 0x17, 0x16, 0x17, 0x16, 0x18, 0x17, 0x16, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x18, 0x15, 0x18, 0x18, 0x17, 0x17, 0x17, 0x18, 0x16, 0x13, 0x15, 0x13, 0x14, 0x16, 0x12, 0x13, 0xf, 0xb, 0x10, 0x12, 0x12, 0x11, 0x10, 0xf, 0x11, 0x13, 0x13, 0x11, 0x11, 0xe, 0x13, 0xd, 0x6, 0x4, 0x4, 0x4, 0x2, 0x3, 0x6, 0x4, 0x2, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x8, 0x6, 0x2, 0x3, 0x4, 0x4, 0x3, 0x4, 0x9, 0x6, 0x2, 0x4, 0x5, 0x8, 0x6, 0x2, 0x3, 0x6, 0x6, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x11, 0x17, 0x14, 0x12, 0x12, 0x0, 0x15, 0x18, 0x0, 0x17, 0xc, 0xf, 0x13, 0xf, 0x15, 0x13, 0x12, 0x17, 0x0, 0x18, 0x13, 0x13, 0x16, 0x16, 0x12, 0x14, 0x13, 0x13, 0x0, 0x14, 0x15, 0x12, 0x15, 0xf, 0x16, 0x17, 0x15, 0x11, 0x15, 0xd, 0xb, 0x15, 0x14, 0x18, 0x18, 0x17, 0x12, 0x10, 0x16, 0x12, 0x16, 0x12, 0x15, 0x16, 0x12, 0x17, 0x16, 0x15, 0x14, 0x16, 0x16, 0x17, 0x17, 0x16, 0x18, 0x16, 0x18, 0x0, 0x18, 0x17, 0x18, 0x17, 0x16, 0x15, 0x14, 0x12, 0x17, 0x15, 0x15, 0x16, 0x17, 0x17, 0x15, 0x14, 0x10, 0x13, 0xe, 0xe, 0x10, 0x11, 0x10, 0x11, 0x14, 0x17, 0x0, 0x11, 0xd, 0xd, 0xe, 0x12, 0x12, 0x11, 0x12, 0x11, 0x12, 0x13, 0x12, 0x10, 0x10, 0x12, 0x13, 0x13, 0x12, 0x12, 0x13, 0x13, 0x13, 0x15, 0x17, 0x13, 0x11, 0x10, 0xd, 0xf, 0x12, 0x10, 0x10, 0xf, 0x17, 0x18, 0x13, 0x10, 0x11, 0x10, 0xf, 0x12, 0x16, 0x12, 0x16, 0x12, 0x13, 0x11, 0x13, 0x16, 0x15, 0x12, 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x12, 0x15, 0x88, 0x84, 0x8a, 0x85, 0x90, 0x7e, 0x8a, 0x17, 0x15, 0x16, 0x15, 0x14, 0x17, 0x15, 0x18, 0x15, 0x18, 0x18, 0x18, 0x15, 0x18, 0x17, 0x16, 0x16, 0x16, 0x16, 0x17, 0x18, 0x12, 0x14, 0x12, 0x14, 0x14, 0x14, 0x14, 0x13, 0x14, 0x15, 0xf, 0xf, 0x10, 0xf, 0xe, 0xf, 0x11, 0x12, 0x13, 0x13, 0x12, 0x10, 0xd, 0xc, 0xc, 0xb, 0xd, 0xe, 0xd, 0xd, 0xf, 0xf, 0xf, 0x10, 0xf, 0xf, 0xe, 0xd, 0xe, 0xf, 0xf, 0x10, 0xe, 0xe, 0xf, 0xe, 0xf, 0xf, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0x10, 0xd, 0xf, 0xe, 0xc, 0xe, 0xe, 0xa, 0xc, 0xe, 0x13, 0x13, 0xf, 0x12, 0x13, 0x16, 0x10, 0x11, 0x17, 0x13, 0x12, 0x12, 0x14, 0x13, 0x12, 0x18, 0x0, 0x14, 0x11, 0x14, 0x13, 0x15, 0x10, 0x12, 0x17, 0x15, 0x12, 0x16, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x16, 0x0, 0x17, 0x0, 0x0, 0x15, 0x16, 0x14, 0x15, 0x13, 0x10, 0x12, 0x14, 0xf, 0x12, 0xf, 0xf, 0x16, 0x14, 0x10, 0xe, 0x10, 0x10, 0x13, 0x17, 0x17, 0x15, 0x16, 0xc, 0x6, 0x6, 0x5, 0x3, 0x5, 0x7, 0x4, 0x3, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x14, 0x17, 0x16, 0x14, 0x14, 0x18, 0x13, 0x14, 0x16, 0x18, 0xe, 0xf, 0xf, 0xc, 0x16, 0x12, 0xd, 0x14, 0x14, 0x13, 0xd, 0x12, 0x13, 0x11, 0xe, 0x11, 0xe, 0xf, 0x16, 0x11, 0x14, 0x13, 0x17, 0x11, 0x13, 0x14, 0x17, 0x13, 0x16, 0x13, 0x14, 0x18, 0x16, 0x0, 0x17, 0x17, 0x17, 0x15, 0x18, 0x15, 0x0, 0x14, 0x14, 0x16, 0x12, 0x16, 0x11, 0x15, 0x10, 0x14, 0x13, 0x14, 0x15, 0x13, 0x15, 0x14, 0x0, 0x0, 0x17, 0x17, 0x16, 0x18, 0x17, 0x16, 0x15, 0x16, 0x18, 0x10, 0xf, 0x12, 0x15, 0x16, 0x17, 0x15, 0x16, 0x17, 0x14, 0x12, 0x11, 0x11, 0x12, 0x14, 0x16, 0x15, 0x17, 0x12, 0xb, 0xc, 0x12, 0x0, 0x13, 0x10, 0x16, 0x17, 0x17, 0x14, 0x11, 0x10, 0x12, 0x14, 0x15, 0x15, 0x13, 0x12, 0x14, 0x13, 0x14, 0x15, 0x17, 0x14, 0x14, 0x14, 0x12, 0x13, 0x15, 0x13, 0x15, 0x12, 0xf, 0x15, 0x10, 0xf, 0x11, 0x11, 0x10, 0x14, 0x17, 0x13, 0x17, 0x16, 0x16, 0x17, 0x17, 0x16, 0x17, 0x14, 0x16, 0x0, 0x17, 0x16, 0x14, 0x12, 0x11, 0x16, 0x90, 0x84, 0x7a, 0x78, 0x84, 0x85, 0x90, 0x12, 0x11, 0x13, 0x11, 0x11, 0x18, 0x15, 0x18, 0x16, 0x17, 0x16, 0x17, 0x13, 0x17, 0x14, 0x14, 0x14, 0x14, 0x12, 0x15, 0x15, 0x11, 0x14, 0x11, 0x16, 0x16, 0x12, 0x13, 0x12, 0xd, 0x14, 0x17, 0x13, 0x11, 0x15, 0x14, 0x11, 0x12, 0x15, 0x18, 0x14, 0x11, 0x10, 0x11, 0x13, 0xf, 0xf, 0x11, 0x13, 0x14, 0x10, 0xf, 0x10, 0x11, 0x11, 0x10, 0xf, 0x10, 0xe, 0xe, 0xe, 0x10, 0x10, 0x10, 0x10, 0x11, 0xf, 0xe, 0xe, 0xb, 0xd, 0xd, 0xd, 0xe, 0xf, 0x11, 0xf, 0xc, 0xd, 0xb, 0xc, 0xb, 0x8, 0x9, 0xb, 0xc, 0xb, 0xd, 0xd, 0xd, 0xe, 0xa, 0x10, 0x16, 0x14, 0x14, 0x13, 0x13, 0x12, 0x10, 0x11, 0x13, 0x17, 0x17, 0x16, 0x14, 0x14, 0x13, 0x14, 0x16, 0x14, 0x11, 0x14, 0x14, 0x17, 0x14, 0x17, 0x14, 0x18, 0x15, 0x18, 0x16, 0x17, 0x18, 0x17, 0x16, 0x18, 0x18, 0x16, 0x11, 0x12, 0x18, 0x14, 0x16, 0x13, 0x11, 0x14, 0x15, 0x0, 0x17, 0x13, 0x15, 0x16, 0x0, 0x17, 0x12, 0x11, 0xd, 0xa, 0x6, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x6, 0x8, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x10, 0x15, 0x12, 0x11, 0x11, 0x17, 0x16, 0x15, 0x14, 0x17, 0xf, 0x14, 0x12, 0xf, 0x16, 0x12, 0xe, 0x12, 0x12, 0x13, 0x11, 0x13, 0x13, 0x13, 0x12, 0x16, 0x14, 0x13, 0x17, 0x17, 0x16, 0x12, 0x14, 0xd, 0x10, 0x12, 0x14, 0x13, 0x15, 0x18, 0x17, 0x18, 0x13, 0x18, 0x16, 0x17, 0x16, 0x16, 0x18, 0x15, 0x0, 0x15, 0x15, 0x17, 0x15, 0x17, 0x15, 0x18, 0x16, 0x17, 0x17, 0x18, 0x17, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x13, 0x11, 0x15, 0x16, 0x15, 0x14, 0x17, 0x17, 0x13, 0x13, 0x15, 0x17, 0x18, 0x0, 0x13, 0x15, 0x18, 0x18, 0x17, 0x12, 0x11, 0x11, 0x17, 0x14, 0xf, 0x12, 0xe, 0xc, 0xc, 0x10, 0x14, 0xf, 0x10, 0x13, 0x14, 0x15, 0x12, 0x11, 0x12, 0x10, 0x12, 0x13, 0x15, 0x18, 0x13, 0x12, 0x11, 0xf, 0x10, 0x12, 0x13, 0x11, 0x11, 0x11, 0x10, 0x11, 0xf, 0x11, 0x11, 0x10, 0x16, 0x11, 0x11, 0x11, 0x11, 0xf, 0x13, 0x14, 0xf, 0x14, 0x13, 0x14, 0x15, 0x15, 0x14, 0x15, 0x13, 0x15, 0x0, 0x17, 0x16, 0x16, 0x14, 0x13, 0x15, 0x84, 0x7e, 0x7e, 0x83, 0x7e, 0x83, 0x7e, 0x16, 0x17, 0x18, 0x17, 0x13, 0x16, 0x12, 0x11, 0x13, 0x16, 0x14, 0x17, 0x12, 0x16, 0x14, 0x14, 0x15, 0x15, 0x13, 0x16, 0x14, 0x11, 0x15, 0x13, 0x17, 0x17, 0x12, 0x14, 0x14, 0x11, 0x14, 0x0, 0x14, 0x10, 0x16, 0x14, 0x11, 0x13, 0x16, 0x15, 0x10, 0xf, 0xf, 0xf, 0x12, 0xd, 0xd, 0xe, 0x10, 0x12, 0xe, 0xd, 0xe, 0x10, 0x10, 0xf, 0x10, 0xe, 0xb, 0xc, 0xf, 0x10, 0x13, 0x13, 0x12, 0x13, 0x12, 0x11, 0x11, 0x11, 0x10, 0x11, 0x13, 0x13, 0x14, 0x15, 0x14, 0x11, 0x11, 0x10, 0xf, 0xe, 0xb, 0xc, 0xe, 0x10, 0xf, 0x11, 0x11, 0x10, 0x11, 0xc, 0xe, 0x14, 0x15, 0x14, 0x12, 0x13, 0x13, 0x10, 0x13, 0x13, 0x17, 0x18, 0x17, 0x14, 0x15, 0x14, 0x15, 0x17, 0x15, 0x11, 0x13, 0x13, 0x15, 0x14, 0x17, 0x11, 0x17, 0x13, 0x17, 0x13, 0x15, 0x15, 0x14, 0x13, 0x16, 0x0, 0x15, 0xd, 0x11, 0x18, 0x11, 0x11, 0xe, 0xe, 0x14, 0x15, 0x17, 0x17, 0x14, 0x14, 0x12, 0x12, 0x15, 0x14, 0x9, 0x7, 0x6, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x10, 0x14, 0x11, 0x11, 0xe, 0x15, 0x13, 0x15, 0x17, 0x18, 0xf, 0x13, 0x14, 0x10, 0x15, 0x12, 0x10, 0x10, 0x10, 0x12, 0xf, 0x16, 0x15, 0x16, 0x14, 0x16, 0x12, 0xf, 0x13, 0x13, 0x15, 0xe, 0x12, 0x12, 0x15, 0x17, 0x18, 0x17, 0x0, 0x16, 0x13, 0x17, 0x15, 0x17, 0x17, 0x16, 0x14, 0x13, 0x17, 0x13, 0x0, 0x15, 0x17, 0x17, 0x13, 0x17, 0x15, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x14, 0x17, 0x15, 0x18, 0x17, 0x16, 0x11, 0x14, 0x17, 0x16, 0x17, 0x17, 0x16, 0x17, 0x13, 0x16, 0x17, 0x17, 0x16, 0x15, 0x17, 0x13, 0x14, 0x11, 0xe, 0xc, 0xc, 0xe, 0x12, 0x11, 0x11, 0xe, 0xb, 0xb, 0xb, 0xc, 0xf, 0xf, 0x10, 0xf, 0xe, 0xf, 0xe, 0xd, 0xe, 0xf, 0xf, 0x10, 0x12, 0x15, 0x12, 0x12, 0xf, 0xf, 0x11, 0x14, 0x11, 0x10, 0xf, 0x10, 0x13, 0x13, 0x11, 0x12, 0x12, 0x10, 0x10, 0xf, 0xf, 0xe, 0xe, 0x10, 0x13, 0x18, 0x12, 0x13, 0x14, 0x15, 0x0, 0x0, 0x16, 0x16, 0x17, 0x17, 0x0, 0x17, 0x15, 0x18, 0x17, 0x14, 0x16, 0x7e, 0x85, 0x84, 0x7a, 0x85, 0x78, 0x7a, 0x18, 0x17, 0x17, 0x18, 0x16, 0x17, 0x13, 0x15, 0x14, 0x11, 0x13, 0x17, 0x12, 0x16, 0x13, 0x14, 0x17, 0x17, 0x16, 0x18, 0x17, 0x12, 0x15, 0x14, 0x16, 0x15, 0x13, 0x15, 0x11, 0x11, 0x17, 0x16, 0x12, 0x10, 0xf, 0xf, 0x10, 0x12, 0x11, 0x12, 0x12, 0x12, 0x11, 0x11, 0xf, 0xe, 0xe, 0xe, 0xf, 0x11, 0x11, 0x10, 0x12, 0x15, 0x12, 0x11, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0x10, 0xf, 0x10, 0xf, 0x10, 0xe, 0x10, 0xf, 0x10, 0x11, 0x11, 0x11, 0x11, 0x13, 0x15, 0x12, 0x12, 0x11, 0x11, 0xe, 0xf, 0x12, 0x11, 0xf, 0x11, 0x12, 0x11, 0x11, 0xe, 0xf, 0x14, 0x15, 0x12, 0x12, 0x15, 0x15, 0x13, 0x16, 0x14, 0x0, 0x18, 0x18, 0x17, 0x0, 0x16, 0x16, 0x17, 0x16, 0x13, 0x17, 0x15, 0x16, 0x11, 0x16, 0x14, 0x18, 0x18, 0x0, 0x17, 0x15, 0x14, 0x14, 0x16, 0x14, 0x16, 0x16, 0x10, 0x12, 0x14, 0x12, 0x13, 0x11, 0xe, 0x13, 0x12, 0x11, 0x12, 0x13, 0x14, 0x14, 0x14, 0x14, 0xc, 0x6, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x9, 0xa, 0xc, 0xe, 0x11, 0xf, 0x11, 0x12, 0x10, 0x10, 0x11, 0x13, 0x11, 0x10, 0x10, 0x10, 0x11, 0x13, 0x13, 0xf, 0xf, 0xd, 0x12, 0x16, 0x13, 0x14, 0x11, 0x17, 0x16, 0x17, 0x18, 0x18, 0xf, 0x13, 0x12, 0x10, 0x16, 0x12, 0x12, 0xf, 0xe, 0x12, 0x10, 0x15, 0x16, 0x16, 0x11, 0x12, 0x11, 0xf, 0x14, 0x11, 0x13, 0x11, 0x14, 0x14, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x13, 0x16, 0x14, 0x17, 0x18, 0x18, 0x15, 0x15, 0x18, 0x16, 0x0, 0x16, 0x16, 0x17, 0x14, 0x18, 0x14, 0x15, 0x13, 0x17, 0x15, 0x16, 0x14, 0x13, 0x16, 0x15, 0x0, 0x14, 0x0, 0x0, 0x17, 0x0, 0x18, 0x16, 0x16, 0x18, 0x18, 0x17, 0x18, 0x17, 0x13, 0x16, 0x16, 0x0, 0x18, 0x18, 0x14, 0xe, 0xd, 0xd, 0x10, 0x14, 0x13, 0x13, 0x14, 0xf, 0xc, 0xe, 0xc, 0xf, 0xe, 0xf, 0x10, 0xe, 0xf, 0xf, 0xf, 0xf, 0xe, 0xe, 0xd, 0x10, 0x14, 0x13, 0x13, 0x12, 0x12, 0x11, 0x14, 0x15, 0x12, 0x11, 0x10, 0x12, 0x12, 0x10, 0x13, 0x13, 0x10, 0xe, 0xe, 0xf, 0xf, 0xf, 0x10, 0x15, 0x0, 0x13, 0x15, 0x17, 0x18, 0x18, 0x17, 0x16, 0x16, 0x16, 0x14, 0x15, 0x13, 0x14, 0x16, 0x14, 0x12, 0x15, 0x84, 0x7e, 0x84, 0x83, 0x85, 0x7a, 0x7a, 0x18, 0x15, 0x12, 0x16, 0x15, 0x17, 0x14, 0x16, 0x16, 0x13, 0x16, 0x0, 0x17, 0x16, 0x14, 0x15, 0x14, 0x14, 0x15, 0x0, 0x18, 0x13, 0x13, 0x10, 0x10, 0x14, 0x14, 0x15, 0x10, 0xd, 0x14, 0x17, 0x15, 0x14, 0x12, 0x12, 0x12, 0x15, 0x18, 0x18, 0x17, 0x18, 0x16, 0x13, 0x12, 0x13, 0x14, 0x13, 0x13, 0x11, 0xd, 0xf, 0x13, 0x15, 0x12, 0x10, 0x14, 0x16, 0x12, 0xe, 0xd, 0xc, 0xc, 0xc, 0xf, 0x11, 0xe, 0xc, 0xe, 0xf, 0x11, 0xf, 0xe, 0xf, 0xf, 0x10, 0x11, 0x13, 0x11, 0x11, 0x11, 0x10, 0xe, 0x10, 0x10, 0xf, 0xe, 0xf, 0x10, 0x10, 0xf, 0xc, 0xb, 0x11, 0x12, 0x10, 0x14, 0x13, 0x13, 0x11, 0x16, 0x15, 0x16, 0x12, 0x15, 0x15, 0x18, 0x13, 0x15, 0x17, 0x15, 0x13, 0x17, 0x15, 0x16, 0x13, 0x17, 0x15, 0x18, 0x17, 0x18, 0x18, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x14, 0x15, 0x16, 0x12, 0x14, 0xf, 0xb, 0x13, 0x14, 0x14, 0x14, 0x15, 0x12, 0x13, 0x11, 0xe, 0x9, 0x4, 0x3, 0x4, 0x6, 0x4, 0x4, 0x5, 0x4, 0x5, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x6, 0x6, 0x6, 0xb, 0x8, 0x9, 0xb, 0xc, 0xd, 0xe, 0xf, 0x13, 0x16, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x18, 0x17, 0x17, 0x10, 0x15, 0x13, 0x14, 0x17, 0x0, 0x11, 0x12, 0x11, 0xf, 0x15, 0x11, 0x12, 0x12, 0x16, 0x17, 0x11, 0x16, 0x16, 0x16, 0x13, 0x15, 0x13, 0x11, 0x17, 0x18, 0x18, 0x0, 0x18, 0x13, 0x16, 0x14, 0x16, 0x13, 0x15, 0x13, 0xe, 0x11, 0xf, 0x13, 0x11, 0x14, 0x10, 0xf, 0x14, 0x12, 0x18, 0x13, 0x13, 0x17, 0x13, 0x17, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x15, 0x17, 0x17, 0x16, 0x0, 0x18, 0x0, 0x18, 0x14, 0x0, 0x0, 0x16, 0x14, 0x0, 0x0, 0x16, 0x17, 0x18, 0x18, 0x18, 0x13, 0x14, 0x13, 0x18, 0x18, 0x10, 0xc, 0xe, 0xe, 0xf, 0xd, 0x12, 0x16, 0x10, 0x8, 0xc, 0xf, 0x11, 0x11, 0xf, 0x10, 0x11, 0x11, 0xe, 0xe, 0x10, 0xe, 0xd, 0xd, 0xe, 0x11, 0xf, 0x10, 0x11, 0x10, 0xf, 0x13, 0x13, 0x10, 0x11, 0x13, 0x13, 0x13, 0xe, 0xf, 0xf, 0xe, 0x10, 0x10, 0xe, 0xf, 0xf, 0x11, 0x18, 0x0, 0x12, 0x14, 0x0, 0x18, 0x17, 0x16, 0x16, 0x15, 0x15, 0x13, 0x14, 0x14, 0x15, 0x16, 0x17, 0x16, 0x17, 0x8a, 0x85, 0x7e, 0x7a, 0x7a, 0x83, 0x7e, 0x18, 0x16, 0x16, 0x16, 0x12, 0x17, 0x15, 0x18, 0x15, 0x18, 0x15, 0x18, 0x16, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x14, 0x17, 0x14, 0x13, 0x13, 0x15, 0x15, 0x13, 0x9, 0x10, 0x17, 0x16, 0x14, 0x12, 0x10, 0x10, 0x16, 0x18, 0x18, 0x15, 0x18, 0x18, 0x10, 0xd, 0xe, 0x10, 0x11, 0x11, 0x11, 0x10, 0x10, 0x12, 0x14, 0x11, 0x11, 0x14, 0x13, 0xf, 0xf, 0xf, 0xe, 0xe, 0xf, 0x11, 0x15, 0x13, 0x15, 0x11, 0x10, 0x10, 0x10, 0xf, 0xf, 0xf, 0x10, 0xf, 0x12, 0x10, 0xe, 0xf, 0x10, 0xc, 0xf, 0xf, 0xf, 0xf, 0x11, 0x10, 0x10, 0xf, 0x9, 0x7, 0xf, 0x11, 0x11, 0x13, 0x10, 0x13, 0x11, 0x15, 0x14, 0x16, 0x10, 0x14, 0x13, 0x15, 0x10, 0x13, 0x16, 0x15, 0x13, 0x18, 0x14, 0x16, 0x12, 0x17, 0x14, 0x18, 0x17, 0x18, 0x17, 0x15, 0x16, 0x16, 0x16, 0x14, 0x16, 0x17, 0x15, 0x15, 0x16, 0x12, 0x13, 0xb, 0xc, 0x15, 0x12, 0x10, 0x10, 0x13, 0xd, 0xf, 0x10, 0x8, 0x6, 0x5, 0x4, 0x5, 0x7, 0x5, 0x4, 0x4, 0x2, 0x3, 0x4, 0x5, 0x8, 0xb, 0xe, 0x11, 0x14, 0x17, 0x16, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x16, 0x15, 0x15, 0x12, 0x16, 0x16, 0x16, 0x14, 0x16, 0x11, 0x12, 0x14, 0x10, 0x17, 0x13, 0x15, 0x11, 0x14, 0x17, 0xe, 0xd, 0x12, 0x13, 0xe, 0x14, 0x10, 0xb, 0x12, 0x12, 0x16, 0x0, 0x17, 0xe, 0x13, 0x13, 0x15, 0x15, 0x17, 0x16, 0x12, 0x16, 0x16, 0x16, 0x16, 0x18, 0x16, 0x16, 0x17, 0x16, 0x0, 0x16, 0x17, 0x17, 0x14, 0x17, 0x15, 0x17, 0x15, 0x17, 0x10, 0x14, 0x14, 0x15, 0x15, 0x10, 0x16, 0x0, 0x16, 0x13, 0x10, 0x15, 0x12, 0x14, 0x13, 0x15, 0x16, 0x13, 0x16, 0x15, 0x13, 0x13, 0x11, 0x13, 0x13, 0x13, 0x12, 0x10, 0x10, 0x10, 0x13, 0x15, 0x13, 0x15, 0x18, 0x17, 0xb, 0xa, 0xd, 0x17, 0x14, 0x10, 0x15, 0x15, 0x12, 0xd, 0xc, 0xb, 0xc, 0xd, 0xf, 0xd, 0xc, 0xc, 0xf, 0xf, 0xc, 0xf, 0x12, 0x14, 0x13, 0x12, 0x12, 0x13, 0x14, 0x10, 0x10, 0x11, 0x11, 0x13, 0x13, 0x13, 0x11, 0x13, 0x13, 0x15, 0x18, 0x14, 0x14, 0x16, 0x15, 0x17, 0x17, 0x18, 0x16, 0x0, 0x0, 0x17, 0x13, 0x15, 0x13, 0x18, 0x15, 0x15, 0x84, 0x7a, 0x84, 0x85, 0x7e, 0x7a, 0x8a, 0x17, 0x14, 0x15, 0x16, 0x14, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x14, 0x14, 0x13, 0x14, 0xf, 0x13, 0x11, 0x16, 0x15, 0x13, 0x11, 0x15, 0x16, 0x12, 0x9, 0x13, 0x0, 0x17, 0x13, 0x13, 0x15, 0x0, 0x15, 0x11, 0x10, 0xf, 0xf, 0x14, 0x14, 0xf, 0xe, 0xe, 0x12, 0xd, 0xc, 0xe, 0xd, 0xe, 0x12, 0x10, 0x13, 0xf, 0xd, 0xd, 0xc, 0xc, 0xd, 0xc, 0xc, 0x10, 0x16, 0x15, 0x18, 0x14, 0xe, 0xd, 0xd, 0xe, 0xc, 0xc, 0xd, 0xc, 0xd, 0xd, 0xc, 0xd, 0xe, 0xb, 0xe, 0x11, 0xe, 0xd, 0xe, 0xf, 0xe, 0xd, 0x7, 0x8, 0x13, 0x15, 0x12, 0x11, 0x10, 0x13, 0xe, 0x13, 0x12, 0x14, 0x10, 0x14, 0x10, 0x14, 0x10, 0x14, 0x15, 0x15, 0x13, 0x17, 0x11, 0x14, 0x10, 0x16, 0x12, 0x16, 0x16, 0x17, 0x17, 0x18, 0x16, 0x16, 0x18, 0x16, 0x17, 0x17, 0x14, 0x13, 0x16, 0x12, 0x12, 0xc, 0xf, 0x17, 0x15, 0x0, 0x18, 0x15, 0x11, 0xf, 0xc, 0x6, 0x3, 0x4, 0x4, 0x3, 0x4, 0x7, 0x6, 0x8, 0xa, 0xe, 0x11, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x17, 0x14, 0x14, 0x11, 0x17, 0x16, 0x15, 0x15, 0x17, 0x10, 0x12, 0x15, 0x11, 0x18, 0x15, 0x14, 0x13, 0x14, 0x0, 0x12, 0x12, 0x15, 0x0, 0x16, 0x16, 0x15, 0x16, 0x15, 0x10, 0x12, 0x11, 0x17, 0x11, 0x13, 0x11, 0x15, 0x12, 0x15, 0x15, 0x11, 0x15, 0x11, 0x15, 0x11, 0x13, 0x10, 0xf, 0x12, 0x10, 0x18, 0x14, 0x16, 0x17, 0x15, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x17, 0x13, 0x12, 0x16, 0x13, 0x14, 0x12, 0x13, 0x16, 0x17, 0x15, 0x14, 0x12, 0x13, 0x12, 0x13, 0x12, 0x12, 0xe, 0xc, 0xb, 0xb, 0x10, 0x15, 0x13, 0x13, 0x18, 0x17, 0xe, 0xd, 0xf, 0x17, 0x18, 0x13, 0x12, 0x15, 0x14, 0x11, 0xf, 0xe, 0xd, 0xf, 0x11, 0xf, 0x10, 0x12, 0x14, 0xe, 0xe, 0xf, 0x13, 0x0, 0x0, 0x10, 0xd, 0xf, 0x11, 0xf, 0x10, 0xf, 0xe, 0x13, 0x10, 0xe, 0xf, 0xf, 0x12, 0x14, 0x18, 0x15, 0x14, 0x17, 0x16, 0x17, 0x16, 0x17, 0x17, 0x16, 0x15, 0x16, 0x13, 0x13, 0x14, 0x17, 0x17, 0x18, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78, 0x85, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x13, 0x16, 0x15, 0x13, 0x13, 0x14, 0x18, 0x17, 0x18, 0x16, 0x18, 0x0, 0x16, 0x15, 0x17, 0x0, 0x13, 0xa, 0x11, 0x17, 0x18, 0x15, 0x11, 0x14, 0x0, 0x16, 0x14, 0x15, 0x11, 0x13, 0x16, 0x12, 0xf, 0xe, 0xe, 0xd, 0xe, 0x10, 0xe, 0xe, 0xd, 0x13, 0x0, 0x18, 0x12, 0x10, 0xc, 0xd, 0xc, 0xd, 0xf, 0xd, 0xd, 0x11, 0x11, 0xf, 0xf, 0xd, 0xe, 0xe, 0x10, 0xe, 0x10, 0x12, 0xe, 0xd, 0xc, 0xd, 0xd, 0xe, 0xc, 0x9, 0xe, 0xe, 0xe, 0xe, 0xf, 0x10, 0x10, 0x9, 0x9, 0xe, 0x11, 0x11, 0x13, 0x11, 0x12, 0x10, 0x15, 0x15, 0x15, 0x13, 0x17, 0x15, 0x16, 0x14, 0x16, 0x15, 0x17, 0x14, 0x18, 0x16, 0x17, 0x15, 0x18, 0x15, 0x17, 0x17, 0x17, 0x16, 0x18, 0x16, 0x16, 0x17, 0x15, 0x17, 0x14, 0x12, 0x13, 0x15, 0x10, 0xf, 0xd, 0x11, 0x17, 0x16, 0x18, 0x17, 0x10, 0xf, 0x11, 0xa, 0x4, 0x3, 0x3, 0x4, 0x8, 0x11, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x14, 0x12, 0x14, 0x11, 0x13, 0x10, 0x15, 0x15, 0x18, 0x11, 0x12, 0x14, 0x11, 0x18, 0x14, 0x16, 0x11, 0xb, 0x12, 0xe, 0x11, 0x10, 0x18, 0x13, 0x10, 0x15, 0x16, 0x16, 0x12, 0x12, 0x14, 0x18, 0x14, 0x17, 0x15, 0x17, 0x16, 0x18, 0x18, 0x17, 0x16, 0x14, 0x17, 0x15, 0x17, 0x0, 0x17, 0x17, 0x13, 0x18, 0x16, 0x17, 0x16, 0x13, 0x16, 0x14, 0x17, 0x12, 0x17, 0x15, 0x16, 0x12, 0x14, 0x16, 0x10, 0x13, 0x15, 0x15, 0xd, 0x11, 0x18, 0x17, 0x17, 0x13, 0x14, 0x17, 0x11, 0xf, 0x14, 0x13, 0x15, 0x0, 0x18, 0x16, 0x15, 0x13, 0x12, 0x11, 0x10, 0x11, 0x13, 0x13, 0x12, 0x13, 0x11, 0xc, 0xe, 0x10, 0x15, 0x17, 0x13, 0x11, 0x15, 0x15, 0x12, 0xf, 0xf, 0xe, 0x10, 0x11, 0x10, 0x10, 0x10, 0x10, 0xe, 0xe, 0xf, 0x14, 0x17, 0x14, 0xf, 0xc, 0xe, 0x12, 0x11, 0xf, 0xd, 0xe, 0x15, 0x13, 0xe, 0xf, 0xe, 0xb, 0xc, 0x14, 0x13, 0x15, 0x16, 0x13, 0x16, 0x14, 0x15, 0x16, 0x15, 0x13, 0x16, 0x13, 0x14, 0x15, 0x16, 0x16, 0x18, 0x83, 0x78, 0x83, 0x83, 0x7a, 0x83, 0x7e, 0x16, 0x15, 0x17, 0x18, 0x17, 0x0, 0x0, 0x16, 0x13, 0x16, 0x15, 0x16, 0x11, 0x15, 0x16, 0x16, 0x15, 0x16, 0x17, 0x17, 0x18, 0x16, 0x17, 0x16, 0x15, 0x15, 0x16, 0x18, 0x12, 0x9, 0xc, 0x12, 0x18, 0x14, 0xf, 0x14, 0x0, 0x17, 0x17, 0x0, 0x12, 0x14, 0x17, 0x13, 0xf, 0xd, 0xd, 0xe, 0x10, 0x12, 0xf, 0xd, 0xd, 0x12, 0x16, 0x16, 0x13, 0xf, 0xb, 0xe, 0xd, 0xf, 0x10, 0x11, 0x11, 0x13, 0x13, 0x11, 0x11, 0x13, 0x14, 0x12, 0x11, 0x11, 0x12, 0x13, 0x11, 0x10, 0xf, 0x10, 0x12, 0x12, 0xd, 0xb, 0xc, 0xb, 0xc, 0xb, 0xc, 0xe, 0xe, 0xc, 0x9, 0xf, 0x15, 0x15, 0x16, 0x14, 0x12, 0x11, 0x15, 0x13, 0x14, 0xf, 0x15, 0x14, 0x14, 0x10, 0x12, 0x11, 0x13, 0xe, 0x14, 0x14, 0x16, 0x11, 0x17, 0x15, 0x18, 0x18, 0x17, 0x15, 0x15, 0x15, 0x16, 0x16, 0x15, 0x18, 0x17, 0x14, 0x10, 0x12, 0x12, 0x13, 0x10, 0x12, 0x16, 0x16, 0x15, 0x14, 0x14, 0x15, 0x11, 0xa, 0x4, 0x2, 0x5, 0xd, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x15, 0x14, 0x13, 0xf, 0x15, 0x12, 0x15, 0x12, 0x14, 0xe, 0xf, 0x14, 0x11, 0x16, 0x14, 0x13, 0x12, 0x11, 0x13, 0x12, 0x17, 0x16, 0x0, 0x15, 0x16, 0x0, 0x16, 0x17, 0x17, 0x15, 0x14, 0x17, 0x10, 0x15, 0x13, 0x14, 0x15, 0x17, 0x17, 0x12, 0x14, 0x11, 0x13, 0x12, 0x17, 0x18, 0x16, 0x15, 0x12, 0x17, 0x16, 0x17, 0x16, 0x12, 0x16, 0x15, 0x18, 0x14, 0x18, 0x16, 0x17, 0x15, 0x14, 0x17, 0x15, 0x18, 0x17, 0x0, 0x13, 0x11, 0x14, 0x16, 0x17, 0x12, 0x14, 0x16, 0x15, 0x16, 0x18, 0x13, 0x14, 0x18, 0x15, 0x16, 0x12, 0xc, 0xd, 0xd, 0xb, 0x10, 0x13, 0x14, 0x13, 0x11, 0x10, 0xe, 0x10, 0x10, 0x12, 0x13, 0x13, 0x12, 0x13, 0x15, 0x11, 0xf, 0x10, 0xe, 0xd, 0xe, 0xd, 0xc, 0xd, 0xe, 0xc, 0xb, 0xe, 0x14, 0x18, 0x17, 0xe, 0xa, 0xc, 0x10, 0xf, 0xf, 0xe, 0xc, 0x11, 0x13, 0x10, 0x11, 0x11, 0xa, 0x11, 0x18, 0x12, 0x11, 0x14, 0x15, 0x0, 0x16, 0x17, 0x16, 0x15, 0x14, 0x17, 0x13, 0x15, 0x14, 0x15, 0x12, 0x15, 0x7e, 0x78, 0x7a, 0x7a, 0x7e, 0x7a, 0x7e, 0x15, 0x15, 0x17, 0x17, 0x15, 0x17, 0x16, 0x15, 0x16, 0x0, 0x17, 0x17, 0x12, 0x15, 0x17, 0x17, 0x18, 0x17, 0x18, 0x15, 0x17, 0x16, 0x17, 0x16, 0x14, 0x14, 0x14, 0x16, 0x12, 0xc, 0xe, 0x16, 0x0, 0x17, 0x13, 0x16, 0x18, 0x15, 0x17, 0x0, 0x17, 0x16, 0x0, 0x0, 0x13, 0x12, 0x10, 0xe, 0xd, 0xd, 0xd, 0xd, 0xd, 0xe, 0x10, 0x11, 0x11, 0xd, 0xd, 0x11, 0xf, 0xe, 0xc, 0xc, 0xd, 0xe, 0x10, 0x10, 0xe, 0x13, 0x15, 0x10, 0xf, 0xf, 0xe, 0xf, 0xf, 0xf, 0xd, 0xc, 0xd, 0xc, 0xc, 0xe, 0x10, 0xd, 0xd, 0xe, 0xe, 0xf, 0xf, 0xd, 0x9, 0x13, 0x17, 0x14, 0x15, 0x11, 0x15, 0x11, 0x17, 0x14, 0x15, 0x14, 0x18, 0x14, 0x15, 0x14, 0x17, 0x15, 0x15, 0x11, 0x15, 0x17, 0x17, 0x12, 0x15, 0x15, 0x16, 0x16, 0x17, 0x16, 0x15, 0x16, 0x17, 0x17, 0x15, 0x17, 0x17, 0x12, 0x10, 0x12, 0x11, 0x11, 0x10, 0x13, 0x15, 0x11, 0x10, 0x11, 0xf, 0x12, 0xf, 0x8, 0x4, 0xb, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x5, 0xa, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x12, 0x11, 0x12, 0xe, 0x15, 0x11, 0x14, 0x12, 0x14, 0x10, 0x11, 0x14, 0xd, 0x12, 0xe, 0xe, 0x12, 0xf, 0xe, 0xe, 0x17, 0x17, 0x18, 0x14, 0x15, 0x17, 0x16, 0x15, 0x16, 0x16, 0x15, 0x17, 0x13, 0x17, 0x16, 0x16, 0x16, 0x16, 0x16, 0x13, 0x14, 0x11, 0x16, 0x12, 0x15, 0x11, 0x10, 0x13, 0x10, 0x16, 0x12, 0x16, 0x14, 0xf, 0x15, 0x14, 0x16, 0x10, 0x14, 0x12, 0x10, 0x11, 0x11, 0x17, 0x15, 0x0, 0x15, 0x0, 0x13, 0x11, 0x17, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x13, 0x14, 0x17, 0x17, 0x15, 0x12, 0xf, 0xf, 0xe, 0xd, 0x12, 0xf, 0xf, 0xf, 0xd, 0xc, 0xb, 0xd, 0xe, 0x16, 0x0, 0x0, 0x17, 0x11, 0x12, 0x13, 0x11, 0x12, 0xf, 0xd, 0xe, 0xd, 0xd, 0x12, 0x13, 0xd, 0xc, 0x10, 0x16, 0x18, 0x18, 0xf, 0xd, 0xd, 0xd, 0xd, 0xd, 0xb, 0xa, 0x10, 0x14, 0x12, 0x14, 0x14, 0xe, 0x10, 0x0, 0x13, 0x11, 0x15, 0x16, 0x0, 0x17, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x17, 0x16, 0x17, 0x14, 0x17, 0x83, 0x78, 0x85, 0x83, 0x7e, 0x85, 0x8a, 0x15, 0x12, 0x14, 0x14, 0x11, 0x14, 0x11, 0x14, 0x17, 0x0, 0x18, 0x18, 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x17, 0x16, 0x10, 0x12, 0x13, 0x13, 0x12, 0x10, 0x11, 0xf, 0xb, 0xe, 0x14, 0x0, 0x0, 0x17, 0x17, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x0, 0x17, 0x14, 0x13, 0x12, 0x11, 0x11, 0x10, 0x13, 0x12, 0x10, 0xf, 0x10, 0x13, 0x13, 0xe, 0xc, 0xd, 0xe, 0xf, 0xd, 0xd, 0xe, 0xe, 0xd, 0xd, 0xc, 0x10, 0x14, 0x12, 0xf, 0xf, 0xd, 0x10, 0x12, 0x10, 0xf, 0xf, 0xf, 0xd, 0xd, 0xb, 0xf, 0xd, 0xf, 0xf, 0xf, 0xd, 0xf, 0xd, 0xc, 0x17, 0x0, 0x18, 0x0, 0x16, 0x17, 0x16, 0x18, 0x16, 0x16, 0x16, 0x18, 0x16, 0x17, 0x15, 0x17, 0x14, 0x13, 0xf, 0x15, 0x17, 0x17, 0x11, 0x14, 0x14, 0x14, 0x14, 0x16, 0x14, 0x15, 0x16, 0x15, 0x17, 0xf, 0x10, 0x12, 0xd, 0xd, 0xf, 0xe, 0xf, 0xe, 0xc, 0x13, 0x13, 0x13, 0x12, 0xf, 0xe, 0xb, 0x4, 0x4, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x5, 0x5, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x15, 0x11, 0x12, 0x10, 0x16, 0x13, 0x15, 0x15, 0x17, 0x12, 0x13, 0x18, 0x12, 0x15, 0x13, 0x15, 0x0, 0x12, 0x11, 0x12, 0x14, 0x12, 0x17, 0x12, 0x15, 0x12, 0x12, 0x13, 0x11, 0x17, 0x14, 0x17, 0x11, 0x13, 0x12, 0x15, 0x13, 0x12, 0x13, 0x11, 0x15, 0x12, 0x16, 0x12, 0x16, 0x14, 0x13, 0x16, 0x15, 0x17, 0x13, 0x16, 0x17, 0x13, 0x18, 0x18, 0x0, 0x16, 0x18, 0x15, 0x15, 0x12, 0x13, 0x16, 0x14, 0x14, 0x12, 0x15, 0xe, 0x12, 0x16, 0x14, 0x18, 0x17, 0x0, 0x18, 0x14, 0x14, 0x0, 0x16, 0x12, 0x13, 0x16, 0x11, 0xd, 0xd, 0xd, 0xc, 0xe, 0x10, 0x11, 0x12, 0x12, 0x12, 0x11, 0xd, 0xd, 0xc, 0x12, 0x12, 0x13, 0x17, 0x15, 0x16, 0x13, 0x10, 0x11, 0xf, 0xe, 0xd, 0xf, 0x10, 0xf, 0x12, 0xd, 0xd, 0xf, 0x16, 0x18, 0x0, 0x17, 0x12, 0x12, 0x11, 0x11, 0x12, 0x11, 0xe, 0x11, 0x10, 0xe, 0xe, 0x10, 0xe, 0x11, 0x16, 0x13, 0x12, 0x17, 0x15, 0x18, 0x16, 0x17, 0x15, 0x17, 0x15, 0x17, 0x14, 0x14, 0x14, 0x17, 0x14, 0x17, 0x7a, 0x83, 0x7e, 0x7a, 0x85, 0x7a, 0x85, 0x17, 0x17, 0x16, 0x15, 0x17, 0x17, 0x15, 0x17, 0x16, 0x0, 0x16, 0x18, 0x15, 0x16, 0x16, 0x14, 0x17, 0x15, 0x17, 0x15, 0x16, 0x13, 0x16, 0x15, 0x16, 0x16, 0x15, 0x13, 0x10, 0xa, 0xf, 0x18, 0x0, 0x0, 0x15, 0x12, 0x18, 0x18, 0x18, 0x15, 0x15, 0x15, 0x0, 0x18, 0x14, 0xe, 0xd, 0xe, 0xd, 0xe, 0x11, 0x10, 0xf, 0xe, 0xd, 0x10, 0x13, 0xe, 0xb, 0xa, 0xb, 0xc, 0x10, 0x13, 0xe, 0xc, 0xc, 0xc, 0xd, 0xf, 0xf, 0xc, 0xd, 0x10, 0xf, 0xe, 0xe, 0x11, 0x12, 0xe, 0xd, 0xa, 0xa, 0xf, 0x18, 0x13, 0x10, 0x12, 0x13, 0x11, 0xe, 0xb, 0xc, 0x15, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x17, 0x16, 0x16, 0x13, 0x15, 0x13, 0x15, 0x14, 0x15, 0x16, 0x17, 0x11, 0x15, 0x14, 0x16, 0x12, 0x17, 0x16, 0x14, 0x14, 0x15, 0x14, 0x14, 0x16, 0x18, 0x18, 0x14, 0x13, 0x14, 0x13, 0x12, 0x15, 0x10, 0xf, 0xf, 0xc, 0xe, 0x12, 0x12, 0x13, 0x0, 0x0, 0x10, 0x5, 0x7, 0x11, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x6, 0x5, 0x8, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x15, 0x14, 0x12, 0x10, 0x16, 0x15, 0x16, 0x12, 0x14, 0x14, 0x16, 0x18, 0x11, 0x15, 0x18, 0x18, 0x15, 0xd, 0x12, 0x13, 0x15, 0x12, 0x18, 0x15, 0x15, 0x13, 0x14, 0x13, 0x11, 0x15, 0x12, 0x14, 0xf, 0x14, 0x13, 0x15, 0x12, 0x14, 0x15, 0x12, 0x17, 0x13, 0x17, 0x12, 0x11, 0xe, 0x13, 0x0, 0x15, 0x0, 0x14, 0x17, 0x0, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x16, 0x16, 0x18, 0x17, 0x17, 0x16, 0x17, 0x14, 0x14, 0x17, 0x16, 0x18, 0x15, 0x15, 0x17, 0x14, 0x16, 0x18, 0x13, 0x12, 0x15, 0x17, 0xe, 0xb, 0xa, 0xc, 0xd, 0xc, 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x10, 0x10, 0xf, 0x11, 0x13, 0x13, 0x17, 0x16, 0x17, 0x14, 0x12, 0x13, 0x11, 0xf, 0xf, 0xe, 0xe, 0xd, 0xe, 0xd, 0xc, 0xd, 0x13, 0x16, 0x16, 0x11, 0xe, 0xe, 0xe, 0xf, 0xf, 0x10, 0xf, 0x17, 0x17, 0x16, 0x10, 0xe, 0xc, 0xf, 0x16, 0x14, 0x2f, 0x4e, 0x68, 0x6b, 0x71, 0x71, 0x75, 0x7e, 0x6a, 0x71, 0x84, 0x68, 0x71, 0x6b, 0x6e, 0x71, 0x94, 0x98, 0x90, 0x94, 0x94, 0x98, 0x85, 0x6b, 0x6b, 0x6e, 0x71, 0x6b, 0x6b, 0x6e, 0x6e, 0x71, 0x6b, 0x71, 0x6e, 0x75, 0x75, 0x75, 0x79, 0x75, 0x6a, 0x71, 0x79, 0x6a, 0x75, 0x6b, 0x6e, 0x71, 0x65, 0x6e, 0x75, 0x79, 0x87, 0x7d, 0x6b, 0x6e, 0x75, 0x79, 0x79, 0x75, 0x75, 0x65, 0x71, 0x79, 0x75, 0x6b, 0x6b, 0x6e, 0x7d, 0x79, 0x75, 0x79, 0x7d, 0x7d, 0x7d, 0x79, 0x79, 0x7d, 0x7d, 0x75, 0x79, 0x7d, 0x87, 0x87, 0x7d, 0x6a, 0x71, 0x82, 0x82, 0x82, 0x72, 0x7d, 0x7d, 0x7d, 0x82, 0x89, 0x6a, 0x79, 0x7d, 0x82, 0x7d, 0x75, 0x79, 0x6f, 0x4a, 0xe, 0xf, 0x13, 0x12, 0xe, 0xf, 0x10, 0xf, 0xc, 0xc, 0xc, 0x13, 0x16, 0x14, 0x16, 0x13, 0x16, 0x12, 0x17, 0x16, 0x17, 0x15, 0x18, 0x16, 0x17, 0x16, 0x17, 0x17, 0x18, 0x15, 0x16, 0x15, 0x16, 0x15, 0x18, 0x17, 0x16, 0x15, 0x17, 0x15, 0x14, 0x15, 0x18, 0x17, 0x14, 0x14, 0x17, 0x16, 0x10, 0x14, 0xe, 0xc, 0xc, 0x8, 0xf, 0x15, 0x12, 0x13, 0x16, 0x18, 0x14, 0x12, 0x16, 0x18, 0x15, 0xc, 0x11, 0x11, 0x11, 0x13, 0x14, 0x13, 0x13, 0x13, 0x13, 0x12, 0x12, 0x13, 0x15, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xc, 0x9, 0x5, 0xe, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x13, 0x12, 0x12, 0xc, 0x14, 0x14, 0x17, 0x12, 0x15, 0x13, 0x13, 0x14, 0xc, 0x14, 0x17, 0x16, 0x17, 0x11, 0xf, 0x11, 0x15, 0x12, 0x18, 0x14, 0x11, 0x11, 0x13, 0x12, 0x12, 0x15, 0x12, 0x14, 0x13, 0x17, 0x15, 0x15, 0x14, 0x15, 0x15, 0x14, 0x18, 0x16, 0x18, 0x17, 0x16, 0x15, 0x17, 0x18, 0x17, 0x18, 0x15, 0x15, 0x16, 0x15, 0x17, 0x14, 0x17, 0x13, 0x17, 0x13, 0x16, 0x16, 0x15, 0x15, 0x13, 0x14, 0x16, 0x17, 0x10, 0x12, 0x15, 0x12, 0x16, 0x13, 0x13, 0x15, 0x14, 0x15, 0x17, 0x15, 0x12, 0x14, 0x18, 0x12, 0xd, 0xb, 0x10, 0x10, 0xe, 0x15, 0x14, 0x12, 0x11, 0x11, 0x10, 0xb, 0xb, 0xc, 0xe, 0x12, 0x14, 0x16, 0x11, 0x15, 0x13, 0x11, 0x10, 0xf, 0xf, 0xc, 0xb, 0xd, 0xc, 0xc, 0xe, 0xe, 0xe, 0x12, 0x17, 0x16, 0x12, 0x10, 0x11, 0x12, 0x12, 0x11, 0x11, 0x10, 0x15, 0x17, 0x16, 0x14, 0x13, 0xf, 0x13, 0x17, 0x42, 0x68, 0x6e, 0x6e, 0x6b, 0x6e, 0x6e, 0x71, 0x6e, 0x71, 0x65, 0x71, 0x6e, 0x6e, 0x6b, 0x6e, 0x6e, 0x94, 0x8d, 0x94, 0x98, 0x8d, 0x8d, 0x94, 0x6e, 0x65, 0x71, 0x63, 0x6e, 0x6b, 0x71, 0x6e, 0x68, 0x6b, 0x75, 0x65, 0x75, 0x71, 0x75, 0x75, 0x75, 0x79, 0x6e, 0x79, 0x75, 0x71, 0x6e, 0x75, 0x75, 0x75, 0x75, 0x71, 0x75, 0x7d, 0x6a, 0x6e, 0x6e, 0x65, 0x79, 0x75, 0x65, 0x71, 0x7a, 0x71, 0x79, 0x75, 0x63, 0x6e, 0x65, 0x79, 0x6f, 0x79, 0x7d, 0x72, 0x7d, 0x75, 0x7d, 0x77, 0x82, 0x82, 0x6f, 0x7d, 0x8c, 0x7c, 0x8c, 0x87, 0x82, 0x7d, 0x87, 0x87, 0x7c, 0x87, 0x87, 0x77, 0x72, 0x7d, 0x7d, 0x7d, 0x82, 0x7d, 0x7d, 0x79, 0x79, 0x7d, 0x79, 0x75, 0x59, 0xa, 0x10, 0xf, 0xd, 0x11, 0x11, 0xd, 0x9, 0xa, 0xa, 0x10, 0x16, 0x12, 0x15, 0x12, 0x12, 0xd, 0x14, 0x14, 0x14, 0x12, 0x17, 0x15, 0x16, 0x12, 0x12, 0x12, 0x14, 0x12, 0x16, 0x12, 0x13, 0x11, 0x15, 0x12, 0x11, 0x17, 0x17, 0x15, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 0x17, 0x13, 0x11, 0x12, 0xf, 0xe, 0xf, 0xa, 0x12, 0x16, 0xa, 0xa, 0xf, 0x12, 0x11, 0x11, 0x18, 0x0, 0x0, 0x15, 0x0, 0x16, 0x16, 0x18, 0x17, 0x15, 0xf, 0x9, 0x7, 0x7, 0x6, 0x6, 0x8, 0x9, 0x8, 0x9, 0xb, 0xc, 0xd, 0xe, 0x10, 0x10, 0x11, 0x11, 0x14, 0x15, 0x15, 0x12, 0xf, 0x10, 0x10, 0xd, 0xb, 0x7, 0x6, 0x6, 0x8, 0x10, 0xb, 0xc, 0xa, 0x8, 0x8, 0xb, 0xc, 0xc, 0xd, 0xd, 0xe, 0xf, 0x11, 0x12, 0x14, 0x12, 0x14, 0x10, 0x15, 0x13, 0x15, 0x13, 0x13, 0xc, 0x10, 0x10, 0xb, 0x14, 0x11, 0x14, 0x17, 0xe, 0xe, 0xf, 0x15, 0x10, 0x13, 0x15, 0x18, 0x16, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x16, 0x16, 0x13, 0x12, 0x16, 0x12, 0x15, 0x13, 0x16, 0x14, 0x14, 0x18, 0x16, 0x17, 0x13, 0x15, 0x17, 0x16, 0x18, 0x16, 0x18, 0x15, 0x18, 0x15, 0x18, 0x16, 0x16, 0x15, 0x13, 0x15, 0x16, 0x16, 0xc, 0x11, 0x15, 0x13, 0x14, 0x14, 0x15, 0x16, 0x11, 0x12, 0x17, 0x16, 0x10, 0x12, 0x18, 0x12, 0x11, 0x10, 0x14, 0x14, 0x13, 0x16, 0x16, 0x15, 0x13, 0x12, 0x12, 0xe, 0xd, 0xd, 0x10, 0x14, 0x16, 0x18, 0xf, 0x10, 0x17, 0x16, 0xf, 0xe, 0xd, 0xb, 0xa, 0xa, 0xa, 0xb, 0xe, 0xd, 0xd, 0x10, 0x13, 0x16, 0x12, 0x10, 0x11, 0x11, 0x12, 0x10, 0xf, 0xe, 0x10, 0x12, 0x13, 0x15, 0x17, 0x12, 0x11, 0x44, 0x75, 0x75, 0x71, 0x75, 0x75, 0x79, 0x68, 0x79, 0x71, 0x71, 0x6e, 0x68, 0x6e, 0x6e, 0x6b, 0x63, 0x6e, 0x98, 0x94, 0x98, 0x8d, 0x98, 0x8d, 0x98, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x63, 0x75, 0x71, 0x71, 0x6e, 0x79, 0x6e, 0x6e, 0x68, 0x75, 0x65, 0x71, 0x68, 0x7a, 0x71, 0x71, 0x71, 0x6b, 0x6e, 0x65, 0x71, 0x65, 0x6e, 0x71, 0x7d, 0x87, 0x75, 0x6e, 0x6e, 0x75, 0x75, 0x6e, 0x6e, 0x6e, 0x65, 0x79, 0x65, 0x6b, 0x6e, 0x6e, 0x75, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x82, 0x87, 0x7c, 0x87, 0x82, 0x82, 0x8c, 0x95, 0x87, 0x7c, 0x89, 0x75, 0x7d, 0x8c, 0x92, 0x8c, 0x8c, 0x87, 0x82, 0x87, 0x87, 0x82, 0x7d, 0x7d, 0x82, 0x82, 0x82, 0x72, 0x82, 0x6f, 0x7d, 0x25, 0x10, 0xf, 0x10, 0x14, 0x15, 0xd, 0xd, 0xf, 0xb, 0x13, 0x0, 0x13, 0x16, 0x16, 0x14, 0xe, 0x13, 0x14, 0x14, 0x13, 0x17, 0x0, 0x0, 0x17, 0x16, 0x16, 0x17, 0x17, 0x0, 0x17, 0x17, 0x17, 0x18, 0x16, 0x16, 0x17, 0x18, 0x17, 0x16, 0x16, 0x16, 0x17, 0x17, 0x18, 0x18, 0x16, 0x12, 0x13, 0x12, 0x12, 0x11, 0x7, 0x11, 0x0, 0x12, 0x13, 0x13, 0x12, 0x15, 0x18, 0x17, 0x18, 0x15, 0x16, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x14, 0x15, 0xd, 0x12, 0x13, 0x12, 0x11, 0x12, 0x10, 0xf, 0xe, 0xe, 0xd, 0xe, 0xb, 0xb, 0xc, 0xb, 0xe, 0xc, 0xa, 0x9, 0x7, 0x8, 0x9, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0xf, 0x13, 0x12, 0x15, 0x10, 0x15, 0x14, 0x16, 0x14, 0x14, 0x13, 0x14, 0xf, 0xc, 0x12, 0x14, 0x16, 0x17, 0xe, 0x11, 0x13, 0x16, 0x14, 0x16, 0x14, 0x16, 0x15, 0x15, 0x15, 0x17, 0x17, 0x15, 0x17, 0x13, 0x17, 0x13, 0x14, 0x13, 0x13, 0x13, 0x12, 0x16, 0x14, 0x16, 0x11, 0x13, 0x12, 0x14, 0x14, 0xf, 0x17, 0x11, 0x14, 0x16, 0x14, 0x17, 0x14, 0x12, 0x11, 0x17, 0x12, 0x14, 0x14, 0x12, 0x14, 0x13, 0x15, 0x15, 0x15, 0xf, 0x13, 0x16, 0x16, 0x16, 0x16, 0x17, 0x16, 0x11, 0x12, 0x15, 0x14, 0x13, 0x14, 0x17, 0x14, 0x11, 0xc, 0xd, 0xe, 0xe, 0x12, 0x14, 0x12, 0xe, 0x10, 0x13, 0xe, 0xb, 0xb, 0xe, 0x15, 0x15, 0x17, 0x10, 0x12, 0x18, 0x17, 0x11, 0xf, 0xf, 0xf, 0xc, 0xb, 0xa, 0xb, 0xf, 0xf, 0xe, 0x10, 0x13, 0x15, 0x15, 0x12, 0x12, 0x12, 0x11, 0x12, 0x10, 0xf, 0xf, 0x10, 0xf, 0x10, 0x13, 0xf, 0x24, 0x79, 0x71, 0x68, 0x6e, 0x71, 0x6e, 0x65, 0x6e, 0x71, 0x71, 0x71, 0x6e, 0x75, 0x65, 0x6e, 0x6b, 0x71, 0x6b, 0x94, 0x94, 0x94, 0x98, 0x8d, 0x98, 0x8d, 0x6b, 0x6b, 0x63, 0x6e, 0x65, 0x6e, 0x71, 0x6e, 0x63, 0x6b, 0x63, 0x6b, 0x6b, 0x6b, 0x65, 0x7e, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x63, 0x6e, 0x6e, 0x71, 0x75, 0x75, 0x71, 0x7d, 0x72, 0x6e, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x63, 0x6e, 0x6b, 0x75, 0x6e, 0x6e, 0x71, 0x71, 0x68, 0x7d, 0x7d, 0x7d, 0x7d, 0x79, 0x6a, 0x79, 0x82, 0x87, 0x87, 0x7d, 0x79, 0x77, 0x87, 0x82, 0x82, 0x72, 0x7d, 0x72, 0x87, 0x8c, 0x7c, 0x82, 0x7d, 0x7d, 0x72, 0x77, 0x82, 0x75, 0x68, 0x7d, 0x77, 0x87, 0x87, 0x82, 0x7d, 0x87, 0x6c, 0x11, 0x14, 0x14, 0x12, 0x11, 0xe, 0xe, 0x11, 0xf, 0x12, 0x0, 0x15, 0x15, 0x16, 0x16, 0x11, 0x13, 0x13, 0x13, 0x13, 0x17, 0x0, 0x0, 0x14, 0x15, 0x16, 0x0, 0x17, 0x17, 0x14, 0x16, 0x13, 0x16, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x17, 0x15, 0x14, 0x15, 0x14, 0x11, 0xf, 0x13, 0x13, 0x15, 0x15, 0x9, 0xe, 0x13, 0x15, 0x13, 0x10, 0x10, 0x16, 0x0, 0x18, 0x0, 0x14, 0x17, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x16, 0x18, 0x10, 0x17, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x16, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x18, 0x18, 0x17, 0x17, 0x10, 0x8, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0xd, 0x12, 0xf, 0x13, 0xd, 0x12, 0x12, 0x15, 0x10, 0x11, 0xf, 0x11, 0x16, 0x12, 0x14, 0x15, 0x17, 0x0, 0xe, 0x11, 0x12, 0x13, 0x11, 0x14, 0x13, 0x14, 0x15, 0x12, 0x13, 0x17, 0x17, 0x15, 0x16, 0x13, 0x15, 0x13, 0x14, 0x13, 0x13, 0x15, 0x12, 0x15, 0x14, 0x16, 0x12, 0x14, 0x14, 0x15, 0x17, 0x14, 0x17, 0x15, 0x15, 0x14, 0x13, 0x18, 0x14, 0x15, 0x13, 0x16, 0x13, 0x17, 0x14, 0x13, 0x16, 0x12, 0x15, 0x10, 0x16, 0x12, 0x11, 0x14, 0x14, 0x17, 0x18, 0x16, 0x15, 0x12, 0x13, 0x12, 0x12, 0xd, 0xf, 0x17, 0x16, 0x14, 0x10, 0xf, 0xf, 0xd, 0x10, 0x14, 0x10, 0xe, 0x10, 0x13, 0xf, 0xb, 0xa, 0xe, 0x14, 0x11, 0x14, 0x10, 0x13, 0x0, 0x17, 0x12, 0xf, 0x10, 0x10, 0xf, 0xd, 0xe, 0xf, 0xf, 0x11, 0xf, 0x13, 0x15, 0x17, 0x16, 0x12, 0x11, 0x11, 0x11, 0x12, 0x11, 0xf, 0x13, 0x14, 0x12, 0x14, 0x13, 0x11, 0x50, 0x75, 0x6e, 0x6e, 0x6e, 0x63, 0x6b, 0x71, 0x6e, 0x71, 0x65, 0x71, 0x6e, 0x65, 0x78, 0x63, 0x63, 0x6e, 0x63, 0x98, 0x8d, 0x94, 0x8d, 0x94, 0x98, 0x94, 0x6e, 0x63, 0x6b, 0x6b, 0x6b, 0x63, 0x75, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x6e, 0x65, 0x6e, 0x6e, 0x63, 0x75, 0x6e, 0x71, 0x6b, 0x6b, 0x6b, 0x6b, 0x75, 0x82, 0x82, 0x6f, 0x71, 0x6b, 0x6b, 0x65, 0x75, 0x71, 0x63, 0x75, 0x6e, 0x71, 0x7d, 0x79, 0x75, 0x6a, 0x79, 0x7d, 0x82, 0x7d, 0x82, 0x79, 0x6b, 0x71, 0x82, 0x82, 0x7d, 0x7d, 0x79, 0x71, 0x7d, 0x87, 0x82, 0x87, 0x89, 0x6f, 0x7d, 0x82, 0x82, 0x7d, 0x7d, 0x79, 0x6f, 0x7d, 0x82, 0x7d, 0x71, 0x6b, 0x75, 0x82, 0x82, 0x87, 0x77, 0x82, 0x87, 0x8c, 0x20, 0x13, 0x15, 0x15, 0x14, 0x12, 0x12, 0x12, 0xe, 0xf, 0x0, 0x16, 0x16, 0x17, 0x18, 0x11, 0x15, 0x13, 0x16, 0x10, 0x13, 0x11, 0x13, 0x12, 0x16, 0x17, 0x18, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x17, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x17, 0x14, 0x13, 0x15, 0x10, 0x13, 0xf, 0x9, 0xf, 0x15, 0x17, 0x12, 0x10, 0x11, 0x18, 0x0, 0x18, 0x18, 0x15, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x13, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x13, 0x17, 0x12, 0x14, 0x17, 0x12, 0x17, 0x11, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x15, 0x10, 0x12, 0x13, 0xf, 0xf, 0x10, 0x10, 0x11, 0x10, 0xd, 0xd, 0xc, 0xf, 0x10, 0xf, 0xe, 0xf, 0xd, 0x10, 0x13, 0xf, 0x14, 0xe, 0x13, 0x14, 0x16, 0x13, 0x17, 0x12, 0x10, 0x15, 0x10, 0x13, 0x16, 0x17, 0x0, 0x10, 0x12, 0x13, 0x15, 0x13, 0x15, 0x13, 0x13, 0x13, 0x13, 0x13, 0x15, 0x15, 0x14, 0x17, 0x12, 0x14, 0x13, 0x12, 0x13, 0x11, 0x13, 0x11, 0x13, 0x10, 0x15, 0x13, 0x16, 0x12, 0x11, 0x11, 0xf, 0x14, 0xf, 0x12, 0x12, 0x11, 0x18, 0x14, 0x16, 0x14, 0x16, 0x11, 0x14, 0x14, 0x14, 0x15, 0x13, 0x15, 0x13, 0x17, 0x18, 0x17, 0x15, 0x16, 0x18, 0x16, 0x18, 0x0, 0x12, 0x13, 0x13, 0x12, 0x12, 0x15, 0x18, 0x0, 0x15, 0xd, 0xd, 0xd, 0xb, 0xf, 0x13, 0x11, 0x10, 0x12, 0x12, 0x11, 0xe, 0xd, 0x11, 0x15, 0x13, 0x13, 0x13, 0x13, 0x11, 0x12, 0x12, 0x12, 0x11, 0x12, 0x10, 0xf, 0x10, 0xd, 0xd, 0xe, 0x10, 0x15, 0x17, 0x18, 0x17, 0x11, 0x13, 0x13, 0x11, 0x12, 0xf, 0x10, 0x16, 0x15, 0x12, 0x12, 0x12, 0xf, 0x72, 0x71, 0x63, 0x65, 0x6e, 0x75, 0x6e, 0x71, 0x65, 0x71, 0x71, 0x71, 0x6b, 0x6e, 0x6b, 0x6b, 0x78, 0x71, 0x6e, 0x98, 0x8d, 0x94, 0x98, 0x94, 0x8d, 0x98, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x6e, 0x6e, 0x71, 0x6e, 0x71, 0x65, 0x71, 0x65, 0x6b, 0x6e, 0x63, 0x71, 0x78, 0x71, 0x6e, 0x65, 0x6e, 0x63, 0x6b, 0x6b, 0x6e, 0x68, 0x75, 0x7d, 0x79, 0x6e, 0x6b, 0x71, 0x79, 0x71, 0x6e, 0x71, 0x6e, 0x6e, 0x68, 0x65, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x75, 0x7d, 0x79, 0x71, 0x6b, 0x68, 0x7d, 0x79, 0x79, 0x68, 0x71, 0x75, 0x72, 0x72, 0x7d, 0x7d, 0x79, 0x79, 0x82, 0x82, 0x6f, 0x79, 0x79, 0x75, 0x75, 0x79, 0x79, 0x6a, 0x75, 0x79, 0x7d, 0x6f, 0x7d, 0x7d, 0x7d, 0x82, 0x7c, 0x59, 0x12, 0x15, 0x15, 0x15, 0x15, 0x12, 0x16, 0xd, 0xd, 0x14, 0x12, 0x15, 0x15, 0x18, 0x16, 0x17, 0x16, 0x18, 0x14, 0x15, 0x14, 0x15, 0x13, 0x15, 0x16, 0x17, 0x11, 0x13, 0x12, 0x16, 0x12, 0x14, 0x13, 0x14, 0x15, 0x16, 0x15, 0x16, 0x15, 0x17, 0x16, 0x12, 0x14, 0x16, 0x12, 0x10, 0x17, 0x12, 0x10, 0xb, 0xa, 0xf, 0x18, 0x0, 0x12, 0x10, 0xf, 0x12, 0x15, 0x16, 0x17, 0x16, 0x16, 0x13, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x14, 0x13, 0x15, 0x16, 0x17, 0x17, 0x17, 0x18, 0x16, 0x17, 0x14, 0x13, 0x14, 0x12, 0x12, 0x16, 0x11, 0x16, 0x11, 0x17, 0x17, 0x16, 0x14, 0x15, 0x12, 0x16, 0x14, 0x14, 0x15, 0x14, 0x16, 0x15, 0x17, 0x0, 0x0, 0x16, 0x14, 0xf, 0x16, 0x12, 0x10, 0x16, 0x0, 0x15, 0xf, 0x12, 0x10, 0x15, 0xf, 0x13, 0x13, 0x16, 0x16, 0x18, 0x16, 0x11, 0x14, 0x10, 0x15, 0x17, 0x16, 0x0, 0x15, 0x14, 0xf, 0x14, 0x14, 0x15, 0x15, 0x14, 0x14, 0x15, 0x15, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x15, 0x16, 0x14, 0x16, 0x14, 0x17, 0x13, 0x16, 0x15, 0x15, 0x14, 0x13, 0x18, 0x14, 0x16, 0x16, 0x13, 0x16, 0x14, 0x17, 0x11, 0x13, 0xe, 0x12, 0x10, 0x10, 0x12, 0x12, 0x12, 0xf, 0x15, 0x14, 0x13, 0x17, 0x17, 0x18, 0x17, 0x18, 0x0, 0x14, 0x14, 0x12, 0x16, 0x16, 0x18, 0x18, 0x18, 0x12, 0xe, 0xe, 0xe, 0xc, 0x10, 0x14, 0x10, 0xe, 0xf, 0x10, 0xf, 0xa, 0xb, 0x10, 0x15, 0x12, 0x12, 0x12, 0x13, 0x11, 0x11, 0x12, 0x12, 0x10, 0xe, 0xf, 0x10, 0xd, 0xc, 0xb, 0xb, 0xd, 0x14, 0x15, 0x15, 0x12, 0xe, 0x14, 0x14, 0xf, 0xf, 0xe, 0x14, 0x0, 0x17, 0x12, 0x13, 0x15, 0x3d, 0x79, 0x6e, 0x6e, 0x71, 0x6e, 0x71, 0x6e, 0x6e, 0x65, 0x6e, 0x6e, 0x71, 0x58, 0x5d, 0x58, 0x5c, 0x57, 0x4e, 0x57, 0x85, 0x8d, 0x8d, 0x8d, 0x94, 0x8a, 0x8d, 0x55, 0x55, 0x4e, 0x55, 0x57, 0x57, 0x57, 0x57, 0x4e, 0x55, 0x5c, 0x58, 0x5d, 0x58, 0x55, 0x5c, 0x58, 0x5c, 0x5c, 0x60, 0x6a, 0x79, 0x79, 0x68, 0x71, 0x6e, 0x63, 0x6e, 0x75, 0x82, 0x77, 0x6e, 0x6b, 0x6b, 0x71, 0x71, 0x65, 0x6e, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x71, 0x79, 0x6f, 0x75, 0x65, 0x75, 0x6f, 0x79, 0x65, 0x78, 0x63, 0x71, 0x82, 0x7d, 0x68, 0x7d, 0x77, 0x77, 0x87, 0x82, 0x7d, 0x72, 0x6a, 0x71, 0x79, 0x6f, 0x7d, 0x7d, 0x79, 0x6f, 0x75, 0x75, 0x79, 0x75, 0x79, 0x7d, 0x7d, 0x77, 0x23, 0x10, 0x10, 0xe, 0xd, 0x10, 0xf, 0xb, 0xf, 0x16, 0x13, 0x16, 0x14, 0x17, 0x14, 0x15, 0xe, 0x12, 0x14, 0x17, 0x14, 0x13, 0x12, 0x16, 0x16, 0x17, 0x13, 0x16, 0x14, 0x18, 0x14, 0x15, 0x0, 0x16, 0x16, 0x16, 0x15, 0x15, 0x16, 0x17, 0x15, 0x11, 0x12, 0x13, 0x13, 0xd, 0x13, 0x12, 0xd, 0xa, 0xb, 0x13, 0x13, 0x13, 0x11, 0x10, 0x13, 0x17, 0x16, 0x18, 0x17, 0x18, 0x15, 0x17, 0x16, 0x18, 0x15, 0x18, 0x15, 0x18, 0x16, 0x17, 0x13, 0x17, 0x15, 0x17, 0x17, 0x0, 0x15, 0x18, 0x14, 0x12, 0x12, 0x11, 0x14, 0x17, 0x14, 0x17, 0x13, 0x17, 0x17, 0x16, 0x14, 0x17, 0x14, 0x16, 0x15, 0x13, 0x13, 0x14, 0x15, 0x13, 0x16, 0x15, 0x17, 0x12, 0xf, 0xc, 0x12, 0xd, 0xc, 0x12, 0x18, 0x13, 0x12, 0x18, 0x15, 0x16, 0x11, 0x14, 0x13, 0x16, 0x12, 0x15, 0x17, 0x11, 0x13, 0xf, 0x15, 0x17, 0x16, 0x16, 0x11, 0x14, 0x13, 0x15, 0x13, 0x14, 0x14, 0x15, 0x14, 0x17, 0x17, 0x14, 0x13, 0x13, 0x14, 0xd, 0x14, 0x12, 0x12, 0x15, 0x13, 0x15, 0x11, 0x14, 0x10, 0x13, 0xf, 0x14, 0x11, 0x12, 0x11, 0x10, 0x17, 0x12, 0x15, 0x16, 0x13, 0x16, 0x14, 0x17, 0x16, 0x17, 0x14, 0x17, 0x14, 0x14, 0x17, 0x14, 0x15, 0x13, 0x16, 0x13, 0x11, 0x16, 0x16, 0x17, 0x16, 0x16, 0x18, 0x15, 0x14, 0x16, 0x16, 0x11, 0x14, 0x16, 0x13, 0xe, 0xf, 0x10, 0xf, 0xe, 0x13, 0x17, 0x17, 0x13, 0x14, 0x13, 0x10, 0xe, 0xf, 0xf, 0x15, 0x12, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0xe, 0xe, 0xe, 0xf, 0xe, 0xd, 0xd, 0xf, 0x13, 0x15, 0x16, 0x14, 0x10, 0x12, 0x15, 0x11, 0x11, 0x12, 0xe, 0x13, 0x15, 0x13, 0x15, 0x13, 0x5c, 0x68, 0x6e, 0x6e, 0x75, 0x75, 0x71, 0x6e, 0x75, 0x75, 0x6e, 0x57, 0x14, 0x16, 0x12, 0x16, 0x16, 0x17, 0x15, 0x16, 0x85, 0x7a, 0x85, 0x7a, 0x7e, 0x7a, 0x7a, 0x17, 0x17, 0x16, 0x0, 0x0, 0x18, 0x13, 0x16, 0x16, 0x0, 0x14, 0x16, 0x15, 0x16, 0x18, 0x16, 0x18, 0x15, 0x16, 0x13, 0x15, 0x44, 0x71, 0x68, 0x6e, 0x6e, 0x7a, 0x75, 0x6a, 0x75, 0x79, 0x71, 0x63, 0x71, 0x6a, 0x3c, 0x2d, 0x2e, 0x2a, 0x2a, 0x30, 0x2a, 0x28, 0x28, 0x28, 0x2c, 0x13, 0x30, 0x1e, 0x32, 0x1f, 0x32, 0x32, 0x32, 0x2e, 0x1c, 0x2d, 0x30, 0x2f, 0x37, 0x35, 0x32, 0x32, 0x32, 0x32, 0x35, 0x32, 0x2f, 0x2e, 0x35, 0x1e, 0x30, 0x30, 0x3c, 0x5d, 0x75, 0x79, 0x75, 0x71, 0x79, 0x72, 0x82, 0x82, 0x77, 0x84, 0x51, 0x11, 0x10, 0x10, 0xe, 0x12, 0x10, 0xe, 0xf, 0x15, 0x12, 0x14, 0x17, 0x17, 0x13, 0x16, 0x16, 0x18, 0x18, 0x18, 0x16, 0x15, 0x13, 0x15, 0x17, 0x17, 0x15, 0x16, 0x16, 0x18, 0x18, 0x18, 0x18, 0x17, 0x17, 0x18, 0x15, 0x15, 0x16, 0x16, 0x15, 0x14, 0x14, 0x11, 0x12, 0xe, 0xf, 0xf, 0x11, 0xf, 0xf, 0x13, 0x11, 0xf, 0xd, 0xe, 0x15, 0x0, 0x17, 0x0, 0x16, 0x0, 0x13, 0x17, 0x14, 0x18, 0x15, 0x17, 0x11, 0x17, 0x16, 0x18, 0x14, 0x18, 0x13, 0x17, 0x14, 0x18, 0x12, 0x17, 0x11, 0x10, 0x11, 0x11, 0x11, 0x16, 0x13, 0x15, 0x13, 0x15, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x16, 0x13, 0x15, 0x15, 0x15, 0x17, 0x17, 0x18, 0x13, 0x10, 0xc, 0x10, 0xe, 0xd, 0x12, 0x17, 0x14, 0xc, 0x15, 0x14, 0x17, 0x15, 0x16, 0x13, 0x16, 0x14, 0x17, 0x18, 0x13, 0xe, 0xe, 0x16, 0x16, 0x13, 0x13, 0xd, 0x12, 0x13, 0x14, 0x13, 0x15, 0x16, 0x17, 0x16, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x18, 0x17, 0x16, 0x17, 0x17, 0x17, 0x14, 0x16, 0x13, 0x17, 0x15, 0x15, 0x12, 0x13, 0x11, 0xd, 0x16, 0x13, 0x17, 0x16, 0x10, 0x13, 0xf, 0x14, 0x15, 0x18, 0x12, 0x16, 0x14, 0x14, 0x16, 0x12, 0x13, 0x11, 0x15, 0x13, 0x16, 0x16, 0x14, 0x14, 0x12, 0x13, 0x15, 0x12, 0x12, 0x16, 0x18, 0x15, 0x15, 0x17, 0x14, 0xf, 0xb, 0xb, 0xb, 0xb, 0x12, 0x17, 0x16, 0x15, 0x16, 0x16, 0x13, 0x12, 0x13, 0x11, 0x16, 0x13, 0x13, 0x12, 0x11, 0x11, 0x10, 0xf, 0xe, 0xd, 0xd, 0xd, 0xe, 0xf, 0x10, 0xf, 0xd, 0xd, 0x10, 0x13, 0x14, 0x12, 0xf, 0x11, 0x17, 0x14, 0x13, 0x13, 0xf, 0x14, 0x14, 0x10, 0xf, 0x1f, 0x7d, 0x7d, 0x71, 0x71, 0x79, 0x68, 0x6f, 0x6a, 0x75, 0x65, 0x3b, 0x18, 0x12, 0x12, 0x13, 0x0, 0x0, 0x0, 0x16, 0x17, 0x7a, 0x83, 0x7e, 0x7a, 0x85, 0x7a, 0x83, 0x18, 0x18, 0x16, 0x17, 0x14, 0x17, 0x12, 0x14, 0x1c, 0x18, 0x0, 0x18, 0x18, 0x17, 0x16, 0x14, 0x18, 0x15, 0x16, 0x14, 0x17, 0x16, 0x42, 0x71, 0x63, 0x6e, 0x65, 0x71, 0x75, 0x75, 0x6a, 0x6e, 0x6b, 0x63, 0x19, 0x16, 0x17, 0x17, 0x18, 0x0, 0x17, 0x16, 0x0, 0x18, 0x12, 0xd, 0x24, 0x10, 0x13, 0x16, 0x15, 0x16, 0x17, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x15, 0x14, 0x13, 0x8, 0x8, 0x11, 0x13, 0x13, 0x21, 0x1e, 0x64, 0x75, 0x6e, 0x75, 0x82, 0x82, 0x72, 0x8f, 0x68, 0x6e, 0x1c, 0x11, 0x13, 0x13, 0x12, 0xe, 0x9, 0xa, 0x17, 0x16, 0x17, 0x17, 0x18, 0x14, 0x16, 0x17, 0x18, 0x17, 0x18, 0x15, 0x15, 0x12, 0x13, 0x13, 0x16, 0x12, 0x12, 0xf, 0x13, 0x17, 0x17, 0x14, 0x12, 0x16, 0x17, 0x0, 0x0, 0x15, 0x15, 0x13, 0x14, 0x15, 0x10, 0x11, 0x14, 0x16, 0x12, 0x11, 0x10, 0xe, 0x11, 0x11, 0xf, 0xd, 0xf, 0x16, 0x17, 0x0, 0x0, 0x18, 0x18, 0x13, 0x18, 0x14, 0x18, 0x18, 0x17, 0x11, 0x0, 0x17, 0x18, 0x17, 0x18, 0x12, 0x17, 0x13, 0x16, 0xf, 0x17, 0xc, 0x11, 0x13, 0x12, 0x10, 0x14, 0x12, 0x16, 0x15, 0x16, 0x18, 0x15, 0x14, 0x16, 0x14, 0x17, 0x16, 0x16, 0x13, 0x13, 0x15, 0x17, 0x18, 0x18, 0x18, 0x15, 0x13, 0xe, 0xf, 0xf, 0xe, 0x12, 0x18, 0x14, 0xf, 0x12, 0x10, 0x16, 0x16, 0x16, 0x11, 0x15, 0x13, 0x17, 0x17, 0x10, 0x14, 0x14, 0x16, 0x16, 0x13, 0x12, 0xd, 0x14, 0x13, 0x15, 0x10, 0x11, 0x13, 0x13, 0x12, 0x13, 0x14, 0x16, 0x16, 0x14, 0x14, 0x10, 0x15, 0x13, 0x11, 0x13, 0x12, 0x11, 0xf, 0x11, 0xc, 0x12, 0xf, 0x11, 0x10, 0x13, 0x15, 0x12, 0x17, 0x12, 0x15, 0x16, 0x15, 0x17, 0x13, 0x17, 0x14, 0x17, 0x10, 0x11, 0x12, 0x13, 0x16, 0x14, 0x0, 0x13, 0x16, 0x12, 0x14, 0x15, 0x15, 0x15, 0x13, 0x15, 0x15, 0x16, 0x16, 0x0, 0x0, 0x17, 0x16, 0x16, 0x15, 0x11, 0xd, 0xc, 0xd, 0xd, 0x12, 0x14, 0x15, 0x16, 0x12, 0x12, 0xd, 0xd, 0xe, 0xe, 0x13, 0x11, 0x11, 0x13, 0x13, 0x14, 0x14, 0x14, 0x12, 0x11, 0x11, 0x12, 0x11, 0x10, 0x11, 0x11, 0x10, 0xf, 0x10, 0x14, 0x18, 0x12, 0x10, 0x11, 0x15, 0x11, 0xf, 0x11, 0xe, 0x14, 0x11, 0xd, 0x10, 0x4a, 0x79, 0x79, 0x65, 0x6e, 0x71, 0x6e, 0x71, 0x6e, 0x6e, 0x27, 0x18, 0x17, 0x14, 0x14, 0x15, 0x18, 0x16, 0x17, 0x14, 0x16, 0x85, 0x78, 0x7a, 0x83, 0x78, 0x78, 0x83, 0x18, 0x17, 0x14, 0x15, 0x13, 0x16, 0x14, 0x15, 0x14, 0x17, 0x16, 0x16, 0x14, 0x14, 0x17, 0x15, 0x0, 0x18, 0x18, 0x14, 0x15, 0x15, 0x0, 0x58, 0x6b, 0x65, 0x7a, 0x65, 0x71, 0x72, 0x88, 0x63, 0x6b, 0x28, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0x12, 0x12, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x25, 0x9, 0xb, 0xd, 0xd, 0xd, 0xe, 0x5e, 0x82, 0x72, 0x7d, 0x7d, 0x87, 0x82, 0x79, 0x65, 0x54, 0xf, 0x12, 0x12, 0x14, 0x15, 0xe, 0xb, 0x14, 0x16, 0x17, 0x17, 0x17, 0x14, 0x16, 0x16, 0x17, 0x14, 0x16, 0x16, 0x16, 0x15, 0x16, 0x16, 0x18, 0x16, 0x16, 0x15, 0x17, 0x16, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x15, 0x10, 0x13, 0xd, 0xc, 0xb, 0xa, 0xe, 0xf, 0xe, 0xf, 0x12, 0x15, 0x16, 0x18, 0x18, 0x17, 0x0, 0x17, 0x0, 0x18, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x14, 0x17, 0x15, 0x17, 0x14, 0x16, 0xc, 0x12, 0x14, 0x13, 0x13, 0x13, 0x12, 0x15, 0x14, 0x16, 0x17, 0x15, 0x12, 0x15, 0x14, 0x15, 0x15, 0x15, 0x10, 0x10, 0x12, 0x15, 0x16, 0x17, 0x17, 0x14, 0xf, 0xd, 0x10, 0x12, 0x11, 0x10, 0x16, 0x14, 0x11, 0x13, 0xf, 0x12, 0x11, 0x13, 0x12, 0x16, 0x12, 0x14, 0x13, 0xd, 0x15, 0x14, 0x16, 0x14, 0x10, 0xf, 0xc, 0x11, 0xf, 0x13, 0x11, 0x13, 0x12, 0x14, 0x16, 0x17, 0x13, 0x13, 0x14, 0x13, 0x14, 0xf, 0x13, 0x15, 0x13, 0x14, 0x12, 0x15, 0x12, 0x14, 0x11, 0x14, 0x14, 0x17, 0x11, 0x15, 0x18, 0x15, 0x16, 0x12, 0x16, 0x15, 0x15, 0x16, 0x14, 0x17, 0x14, 0x17, 0x11, 0x12, 0x11, 0x12, 0x13, 0x10, 0x13, 0x12, 0x18, 0x12, 0xf, 0x15, 0x14, 0x18, 0x17, 0x17, 0x15, 0x14, 0x12, 0x16, 0x0, 0x0, 0x14, 0x15, 0x16, 0x12, 0x12, 0xf, 0xd, 0xd, 0x11, 0x13, 0x12, 0x13, 0x11, 0xf, 0xe, 0xe, 0xc, 0xf, 0x14, 0x12, 0x11, 0x13, 0x15, 0x13, 0x14, 0x15, 0x13, 0x13, 0x13, 0x14, 0x14, 0x11, 0x11, 0x13, 0x12, 0x10, 0x11, 0x15, 0x15, 0x12, 0x13, 0x16, 0x18, 0x17, 0x14, 0x17, 0x18, 0x0, 0x16, 0x11, 0x14, 0x58, 0x6e, 0x6e, 0x6e, 0x71, 0x75, 0x6b, 0x65, 0x63, 0x1d, 0x16, 0x18, 0x16, 0x14, 0x16, 0x15, 0x18, 0x16, 0x18, 0x15, 0x17, 0x7e, 0x7a, 0x7e, 0x7a, 0x85, 0x7a, 0x7a, 0x14, 0x17, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x16, 0x17, 0x15, 0x15, 0x13, 0x14, 0x16, 0x13, 0x17, 0x14, 0x17, 0x12, 0x16, 0x13, 0x14, 0x2a, 0x71, 0x79, 0x75, 0x75, 0x75, 0x72, 0x7d, 0x71, 0x5f, 0x0, 0x18, 0x17, 0x18, 0x16, 0x12, 0x12, 0x14, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xc, 0x5, 0x3, 0x8, 0x12, 0xd, 0x11, 0x12, 0x12, 0x3d, 0x79, 0x79, 0x79, 0x72, 0x82, 0x79, 0x71, 0x63, 0x1c, 0x12, 0x13, 0x14, 0x17, 0x12, 0xf, 0x15, 0x17, 0x17, 0x18, 0x18, 0x16, 0x16, 0x18, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x18, 0x15, 0x15, 0x14, 0x17, 0x14, 0x16, 0x16, 0x14, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x11, 0x8, 0xd, 0xf, 0xf, 0xf, 0xf, 0x10, 0x10, 0xe, 0xd, 0x12, 0x15, 0x17, 0x0, 0x17, 0x18, 0x15, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x15, 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x17, 0x0, 0x17, 0x15, 0xd, 0x12, 0x10, 0xf, 0x11, 0x11, 0x10, 0x12, 0x14, 0x16, 0x17, 0x15, 0x15, 0x17, 0x15, 0x17, 0x17, 0x15, 0xf, 0x10, 0x13, 0x15, 0x14, 0x0, 0x18, 0x14, 0xf, 0xd, 0x10, 0x10, 0xe, 0x14, 0x0, 0x16, 0x10, 0x15, 0x11, 0x13, 0x13, 0x15, 0x14, 0x16, 0x12, 0x15, 0x16, 0x13, 0x16, 0x12, 0x14, 0x12, 0xe, 0xe, 0xc, 0xf, 0xe, 0x13, 0x13, 0x14, 0x13, 0x15, 0x17, 0x18, 0x13, 0x12, 0x13, 0x12, 0x14, 0x10, 0x11, 0x14, 0x14, 0x14, 0x12, 0x14, 0x11, 0x15, 0x13, 0x14, 0x10, 0x13, 0x11, 0x15, 0x16, 0x12, 0x17, 0x10, 0x13, 0x10, 0xe, 0x13, 0x10, 0x14, 0x12, 0x16, 0x10, 0x12, 0x10, 0x10, 0x12, 0xf, 0x13, 0x13, 0x18, 0x12, 0x10, 0x16, 0x14, 0x0, 0x18, 0x15, 0x14, 0x13, 0x12, 0x16, 0x0, 0x16, 0x12, 0x15, 0x17, 0x15, 0x11, 0xf, 0xb, 0xb, 0xd, 0xc, 0xe, 0xf, 0xe, 0xb, 0xa, 0xb, 0xb, 0xd, 0x15, 0x14, 0x15, 0x15, 0x15, 0x16, 0x14, 0x14, 0x14, 0x15, 0x15, 0x13, 0x16, 0x14, 0x11, 0x13, 0x11, 0xb, 0xc, 0x13, 0x11, 0x11, 0x12, 0x16, 0x0, 0x0, 0x15, 0x15, 0x16, 0x16, 0x12, 0x10, 0x21, 0x65, 0x6b, 0x71, 0x71, 0x65, 0x71, 0x6e, 0x65, 0x28, 0x14, 0x16, 0x17, 0x15, 0x15, 0x0, 0x0, 0x17, 0x15, 0x0, 0x16, 0x18, 0x90, 0x7e, 0x84, 0x85, 0x7a, 0x7e, 0x83, 0x14, 0x17, 0x18, 0x0, 0x18, 0x18, 0x15, 0x17, 0x15, 0x13, 0x13, 0x17, 0x15, 0x12, 0x12, 0x11, 0x17, 0x13, 0x17, 0x16, 0x18, 0x15, 0x16, 0x16, 0x63, 0x65, 0x71, 0x71, 0x71, 0x79, 0x68, 0x6b, 0x49, 0x0, 0x18, 0x12, 0x14, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x16, 0x13, 0xf, 0x9, 0x3, 0x4, 0x3, 0x7, 0xd, 0x11, 0x15, 0x15, 0x14, 0x14, 0x3d, 0x79, 0x79, 0x79, 0x7d, 0x6f, 0x75, 0x6b, 0x46, 0x10, 0x10, 0x12, 0x16, 0xf, 0xc, 0x15, 0x17, 0x14, 0x15, 0x16, 0x13, 0x14, 0x15, 0x15, 0x16, 0x16, 0x15, 0x16, 0x14, 0x16, 0x17, 0x0, 0x13, 0x13, 0x12, 0x14, 0x14, 0x14, 0x17, 0x15, 0x16, 0x15, 0x14, 0x14, 0x14, 0x16, 0x15, 0x15, 0x15, 0x15, 0x12, 0xa, 0xa, 0xb, 0xa, 0x9, 0x7, 0xc, 0x12, 0xf, 0xb, 0x11, 0x16, 0x18, 0x0, 0x16, 0x17, 0x11, 0x17, 0x16, 0x0, 0x0, 0x0, 0x13, 0x17, 0xf, 0x17, 0x14, 0x17, 0xf, 0x13, 0xf, 0x15, 0x13, 0x16, 0x16, 0x13, 0x16, 0x14, 0x13, 0x16, 0x16, 0x17, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x16, 0x18, 0x18, 0x16, 0x11, 0x15, 0x16, 0x17, 0x17, 0x0, 0x18, 0x16, 0x13, 0xe, 0xf, 0xe, 0xb, 0x13, 0x0, 0x16, 0x10, 0x13, 0xf, 0x12, 0xe, 0xf, 0x11, 0x13, 0x11, 0x11, 0x10, 0x10, 0x14, 0xf, 0x14, 0x13, 0x13, 0x14, 0xe, 0x13, 0x13, 0x13, 0xf, 0x12, 0x16, 0x16, 0x15, 0x13, 0x13, 0x14, 0x15, 0x13, 0x14, 0xf, 0x13, 0x15, 0x14, 0x13, 0x12, 0x14, 0xe, 0x13, 0x10, 0x12, 0xf, 0x12, 0x12, 0x15, 0x16, 0x14, 0x18, 0x13, 0x15, 0x13, 0x11, 0x14, 0x11, 0x14, 0xe, 0x13, 0x11, 0x13, 0x12, 0x14, 0x15, 0x11, 0x12, 0x13, 0x0, 0x14, 0x12, 0x17, 0x14, 0x18, 0x15, 0x16, 0x18, 0x13, 0xf, 0x15, 0x17, 0x15, 0x10, 0x16, 0x17, 0x16, 0x10, 0xf, 0xd, 0xe, 0x11, 0x13, 0x12, 0x11, 0x11, 0xe, 0xc, 0xd, 0xe, 0x10, 0x17, 0x14, 0x12, 0xe, 0xe, 0xf, 0xe, 0xe, 0xf, 0x11, 0x11, 0xf, 0x10, 0x10, 0x12, 0x13, 0x12, 0x11, 0x11, 0x13, 0x14, 0x13, 0x12, 0x13, 0x0, 0x18, 0x13, 0x11, 0x13, 0x16, 0x14, 0x12, 0x3c, 0x6e, 0x6e, 0x68, 0x68, 0x65, 0x71, 0x6e, 0x2c, 0x18, 0x14, 0x14, 0x16, 0x16, 0x13, 0x18, 0x17, 0x18, 0x16, 0x17, 0x18, 0x18, 0x7e, 0x83, 0x78, 0x7a, 0x7a, 0x7a, 0x78, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x18, 0x15, 0x15, 0x15, 0x16, 0x16, 0x13, 0x15, 0x12, 0x18, 0x13, 0x12, 0x12, 0x13, 0x10, 0x14, 0x11, 0x54, 0x75, 0x79, 0x71, 0x71, 0x68, 0x6e, 0x6b, 0x27, 0x15, 0xc, 0xe, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x14, 0x12, 0x10, 0xf, 0xe, 0xb, 0x9, 0x7, 0x6, 0x6, 0x8, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x7, 0xc, 0x11, 0x11, 0xf, 0xf, 0xf, 0x50, 0x72, 0x79, 0x6f, 0x79, 0x7d, 0x6f, 0x72, 0xe, 0xd, 0xf, 0x13, 0xb, 0x9, 0x15, 0x15, 0x11, 0x12, 0x15, 0x15, 0x15, 0x15, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x17, 0x0, 0x15, 0x13, 0x12, 0x16, 0x14, 0x14, 0x16, 0x13, 0x16, 0x14, 0x13, 0x13, 0x12, 0x14, 0x14, 0x13, 0x11, 0x12, 0x10, 0xc, 0xf, 0xf, 0xd, 0xb, 0x6, 0x9, 0xc, 0xc, 0x10, 0x15, 0x14, 0x14, 0x17, 0x15, 0x14, 0x11, 0x18, 0x15, 0x18, 0x15, 0x16, 0x12, 0x15, 0x10, 0x17, 0x13, 0x15, 0xd, 0x15, 0x14, 0x17, 0x13, 0x17, 0x13, 0x13, 0x15, 0x12, 0x14, 0x18, 0x13, 0x15, 0x15, 0x17, 0x15, 0x17, 0x15, 0x16, 0x16, 0x15, 0x18, 0x18, 0x16, 0x13, 0x17, 0x16, 0x16, 0x17, 0x15, 0x12, 0x13, 0xd, 0xb, 0xc, 0xd, 0xb, 0xf, 0x16, 0x16, 0xe, 0x13, 0x10, 0x13, 0x10, 0x12, 0x12, 0x15, 0x13, 0x11, 0x11, 0x11, 0x17, 0x16, 0x14, 0x16, 0x16, 0x15, 0x12, 0x14, 0x13, 0x14, 0x12, 0x15, 0x17, 0x16, 0x16, 0x16, 0x15, 0x16, 0x16, 0x14, 0x16, 0x12, 0x16, 0x15, 0x16, 0x16, 0x14, 0x15, 0x15, 0x16, 0x12, 0x13, 0xf, 0x12, 0x10, 0x14, 0x10, 0xf, 0x16, 0xe, 0x12, 0x12, 0x10, 0x15, 0x11, 0x13, 0xf, 0x13, 0x11, 0x14, 0x13, 0x14, 0x15, 0x10, 0x13, 0x15, 0x18, 0x14, 0x15, 0x18, 0x14, 0x18, 0x13, 0x16, 0x18, 0x15, 0x13, 0x12, 0x12, 0x12, 0x11, 0x16, 0x18, 0x17, 0x12, 0xc, 0xa, 0xd, 0x10, 0x12, 0x12, 0x10, 0x10, 0x10, 0xc, 0xb, 0xc, 0xc, 0x14, 0x13, 0xf, 0xd, 0xd, 0xf, 0x10, 0x13, 0x13, 0x12, 0x13, 0x11, 0x15, 0x17, 0x15, 0x14, 0x13, 0x13, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x16, 0x13, 0x16, 0x17, 0x12, 0x51, 0x6b, 0x6b, 0x6e, 0x6b, 0x6b, 0x6b, 0x40, 0x17, 0x17, 0x15, 0x17, 0x17, 0x16, 0x12, 0x17, 0x15, 0x18, 0x17, 0x17, 0x18, 0x18, 0x85, 0x7a, 0x7a, 0x7a, 0x85, 0x85, 0x85, 0x16, 0x16, 0x15, 0x0, 0x18, 0x16, 0x12, 0x13, 0xf, 0x14, 0x13, 0x14, 0x15, 0x12, 0x13, 0x13, 0x17, 0x16, 0x15, 0x17, 0x16, 0x14, 0x15, 0x15, 0x3b, 0x6a, 0x75, 0x75, 0x68, 0x6b, 0x6b, 0x7d, 0x37, 0xa, 0x6, 0x9, 0xe, 0x12, 0x15, 0x16, 0x16, 0x18, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x16, 0x15, 0x12, 0x10, 0xc, 0x9, 0x8, 0x7, 0x4, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x5, 0x7, 0x6, 0x6, 0x3, 0x2, 0x3, 0x3, 0x5, 0x5, 0xa, 0xe, 0xb, 0xf, 0x11, 0xe, 0x59, 0x79, 0x79, 0x75, 0x79, 0x79, 0x88, 0x48, 0xf, 0xe, 0x11, 0xc, 0xb, 0x16, 0x14, 0x10, 0xe, 0x11, 0x13, 0x12, 0x11, 0x13, 0x14, 0x14, 0x15, 0x12, 0x10, 0x12, 0x12, 0x14, 0x10, 0x10, 0x12, 0x14, 0x12, 0x10, 0x13, 0x12, 0x15, 0x12, 0x12, 0x12, 0x12, 0x15, 0x15, 0x12, 0x10, 0xd, 0xc, 0x9, 0xe, 0xf, 0xa, 0xa, 0x7, 0xa, 0xf, 0xe, 0x13, 0x16, 0x14, 0x15, 0x13, 0x15, 0x15, 0x14, 0x16, 0x16, 0x18, 0x16, 0x14, 0x12, 0x15, 0x14, 0x16, 0x12, 0x15, 0xf, 0x16, 0x15, 0x18, 0x11, 0x18, 0x10, 0x14, 0x13, 0x12, 0x14, 0x18, 0x12, 0x15, 0x17, 0x0, 0x0, 0x0, 0x16, 0x18, 0x16, 0x17, 0x17, 0x18, 0x15, 0x13, 0x16, 0x17, 0x17, 0x17, 0x17, 0x15, 0x15, 0xf, 0xc, 0x11, 0x10, 0x10, 0x16, 0x0, 0x17, 0xe, 0x13, 0x10, 0x13, 0x10, 0x12, 0x12, 0x14, 0x12, 0x12, 0x15, 0x13, 0x18, 0x16, 0x12, 0x13, 0x15, 0x14, 0xc, 0xe, 0x10, 0x14, 0x11, 0x15, 0x16, 0x14, 0x14, 0x15, 0x13, 0x13, 0x15, 0x15, 0x17, 0xf, 0x10, 0x14, 0x16, 0x17, 0x13, 0x14, 0x15, 0x16, 0x11, 0x14, 0x12, 0x13, 0x11, 0x13, 0x12, 0x13, 0x16, 0xf, 0x14, 0x13, 0x10, 0x14, 0xe, 0x12, 0x10, 0x11, 0xe, 0x12, 0x11, 0x10, 0x12, 0x10, 0x12, 0xf, 0x14, 0x14, 0x14, 0x12, 0x11, 0x17, 0x13, 0x13, 0x17, 0x16, 0x12, 0x12, 0x15, 0x13, 0x11, 0x16, 0x18, 0x18, 0x15, 0x14, 0x16, 0x12, 0x13, 0xf, 0xc, 0xf, 0x13, 0x13, 0xe, 0xb, 0xd, 0xe, 0x14, 0x14, 0x11, 0x11, 0x15, 0x0, 0x17, 0x15, 0x14, 0x12, 0x12, 0x11, 0x15, 0x16, 0x11, 0xd, 0xc, 0xb, 0xe, 0xe, 0xe, 0xd, 0xc, 0xc, 0xe, 0xb, 0x9, 0xb, 0xa, 0x8, 0xa, 0x22, 0x82, 0x72, 0x82, 0x7d, 0x75, 0x71, 0x63, 0x18, 0x14, 0x17, 0x13, 0x17, 0x15, 0x17, 0x12, 0x17, 0x14, 0x15, 0x16, 0x18, 0x16, 0x17, 0x7e, 0x7e, 0x8a, 0x85, 0x7e, 0x7e, 0x7e, 0x16, 0x16, 0x16, 0x0, 0x17, 0x16, 0x15, 0x17, 0x16, 0x17, 0x16, 0x15, 0x16, 0x11, 0x12, 0x10, 0x14, 0x13, 0x18, 0x18, 0x15, 0x14, 0x14, 0x15, 0x2a, 0x75, 0x71, 0x71, 0x6e, 0x75, 0x7d, 0x92, 0x31, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x5, 0x6, 0x5, 0x6, 0x6, 0x5, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0xc, 0x12, 0x11, 0x10, 0xe, 0xf, 0x56, 0x79, 0x6a, 0x7d, 0x7d, 0x7d, 0x7d, 0x24, 0xb, 0xf, 0xb, 0xb, 0x14, 0x18, 0x17, 0x13, 0x12, 0x17, 0x15, 0x16, 0x15, 0x16, 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x17, 0x14, 0x13, 0x13, 0x15, 0x16, 0x15, 0x17, 0x16, 0x17, 0x14, 0x15, 0x15, 0x15, 0x17, 0x16, 0x15, 0x13, 0x10, 0xe, 0xd, 0xd, 0xe, 0xb, 0xa, 0x9, 0xe, 0xb, 0xd, 0x12, 0x14, 0x14, 0x17, 0x12, 0x16, 0x15, 0x18, 0x14, 0x17, 0x16, 0x17, 0x14, 0x15, 0x14, 0x16, 0x15, 0x16, 0x15, 0x15, 0x14, 0x13, 0x17, 0x13, 0x18, 0xf, 0x15, 0x11, 0x11, 0x10, 0x18, 0x11, 0x17, 0x14, 0x18, 0x16, 0x0, 0x16, 0x18, 0x17, 0x17, 0x18, 0x18, 0x14, 0x12, 0x16, 0x16, 0x17, 0x16, 0x17, 0x14, 0x14, 0xe, 0xd, 0x10, 0x10, 0xc, 0x16, 0x0, 0x17, 0x10, 0x13, 0xf, 0x11, 0xf, 0xf, 0xf, 0x12, 0x11, 0x12, 0x12, 0x10, 0x16, 0x14, 0x11, 0x12, 0x12, 0x16, 0xe, 0x13, 0x12, 0x12, 0xf, 0x12, 0x11, 0x11, 0xe, 0xf, 0xf, 0x13, 0x14, 0x15, 0x16, 0x10, 0x13, 0x14, 0x13, 0x13, 0x10, 0x13, 0x13, 0x15, 0xd, 0x13, 0xf, 0x14, 0xf, 0xf, 0x10, 0x13, 0x17, 0x11, 0x16, 0x16, 0x14, 0x16, 0x12, 0x15, 0x14, 0x16, 0x11, 0x15, 0x13, 0x13, 0x13, 0x11, 0x15, 0x16, 0x18, 0x17, 0x15, 0x16, 0x16, 0x18, 0x17, 0x18, 0x17, 0x15, 0x10, 0x12, 0x16, 0x15, 0x11, 0x16, 0x0, 0x14, 0x11, 0x14, 0x18, 0x15, 0x15, 0x12, 0x10, 0x12, 0x15, 0x18, 0x17, 0xb, 0xa, 0xc, 0x15, 0x14, 0x12, 0x12, 0x14, 0x0, 0x15, 0x12, 0xf, 0xd, 0xc, 0x9, 0x7, 0x7, 0x6, 0x5, 0x3, 0x4, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x61, 0x8b, 0x9a, 0x96, 0x92, 0x86, 0x8c, 0x24, 0x12, 0x11, 0x17, 0x13, 0x18, 0x17, 0x17, 0x14, 0x18, 0x17, 0x17, 0x16, 0x18, 0x15, 0x18, 0x7a, 0x83, 0x7a, 0x83, 0x78, 0x78, 0x7a, 0x17, 0x15, 0x12, 0x15, 0x12, 0x13, 0x11, 0x14, 0x13, 0x16, 0x15, 0x14, 0x17, 0x14, 0x16, 0x15, 0x16, 0x15, 0x16, 0x11, 0x14, 0x12, 0x13, 0x14, 0x1d, 0x82, 0x72, 0x68, 0x71, 0x87, 0x81, 0x96, 0x4, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x5, 0x6, 0x3, 0x3, 0x4, 0x4, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x5, 0xa, 0x5, 0x3, 0x6, 0x6, 0x3, 0x5, 0x4, 0xe, 0x11, 0x10, 0xf, 0xe, 0xe, 0x6f, 0x68, 0x79, 0x7d, 0x79, 0x6f, 0x32, 0xe, 0x12, 0xe, 0x9, 0x12, 0x0, 0x17, 0x13, 0x11, 0x14, 0x10, 0x12, 0x10, 0x11, 0xf, 0xf, 0x10, 0x12, 0x14, 0x14, 0x16, 0x12, 0x10, 0x11, 0x13, 0x10, 0x11, 0x16, 0xf, 0x16, 0x10, 0x10, 0xf, 0x10, 0x13, 0x13, 0x14, 0x11, 0xd, 0xb, 0xa, 0xe, 0x12, 0xc, 0xc, 0xb, 0xc, 0xa, 0xe, 0x14, 0x16, 0x18, 0x18, 0x13, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x0, 0x15, 0x18, 0x15, 0x0, 0x17, 0x0, 0x16, 0x17, 0x17, 0x17, 0x18, 0x16, 0x18, 0x12, 0x16, 0x10, 0x12, 0x11, 0x18, 0x11, 0x17, 0x13, 0x0, 0x15, 0x18, 0x17, 0x18, 0x17, 0x17, 0x18, 0x18, 0x15, 0x13, 0x17, 0x17, 0x18, 0x18, 0x0, 0x18, 0x16, 0xe, 0xb, 0xf, 0x10, 0xb, 0xd, 0x15, 0x17, 0xf, 0x13, 0x10, 0x13, 0x11, 0x10, 0xf, 0x14, 0x12, 0x12, 0x13, 0x11, 0x15, 0x12, 0xf, 0x12, 0x11, 0x13, 0xc, 0x12, 0x11, 0x12, 0xf, 0x12, 0x12, 0x12, 0x12, 0x11, 0x10, 0x13, 0x12, 0x13, 0x14, 0xf, 0x14, 0x13, 0x11, 0x14, 0x11, 0x14, 0x12, 0x14, 0x10, 0x15, 0x13, 0x16, 0x13, 0x17, 0x14, 0x12, 0x15, 0x10, 0x15, 0x16, 0x17, 0x16, 0x12, 0x14, 0x13, 0x16, 0x11, 0x14, 0x11, 0x12, 0x13, 0x10, 0x12, 0x14, 0x15, 0x15, 0x15, 0x18, 0x14, 0x18, 0x17, 0x17, 0x16, 0x16, 0x13, 0x11, 0x15, 0x14, 0xf, 0x10, 0x17, 0x16, 0x17, 0x0, 0x18, 0x15, 0x12, 0x10, 0xf, 0xf, 0x13, 0x16, 0x18, 0xf, 0x9, 0x10, 0x15, 0xe, 0x9, 0x7, 0x7, 0xa, 0x7, 0x4, 0x5, 0x7, 0x7, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x7, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x80, 0x9a, 0x9a, 0x96, 0x92, 0x96, 0x62, 0x6, 0x8, 0xf, 0x11, 0x12, 0x14, 0x10, 0x15, 0x11, 0x16, 0x13, 0x11, 0x12, 0x15, 0x13, 0x17, 0x7a, 0x7a, 0x7a, 0x7a, 0x83, 0x83, 0x85, 0x17, 0x17, 0x15, 0x17, 0x16, 0x17, 0x14, 0x15, 0x12, 0x12, 0x11, 0x15, 0x15, 0x13, 0x18, 0x13, 0x15, 0x15, 0x16, 0x14, 0x16, 0x15, 0x17, 0x15, 0x13, 0x88, 0x79, 0x75, 0x75, 0x7c, 0x92, 0x96, 0x5, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x6, 0x4, 0x8, 0xe, 0x11, 0x13, 0x12, 0xf, 0xf, 0x48, 0x6f, 0x79, 0x6f, 0x56, 0x10, 0x10, 0x16, 0x10, 0xa, 0x11, 0x18, 0x17, 0x16, 0x16, 0x17, 0x15, 0x17, 0x16, 0x15, 0x13, 0x13, 0x16, 0x17, 0x16, 0x16, 0x16, 0x13, 0x13, 0x13, 0x14, 0x13, 0x13, 0x17, 0x15, 0x17, 0x11, 0x13, 0x13, 0x13, 0x11, 0x11, 0x13, 0x11, 0xd, 0xd, 0xe, 0xe, 0xe, 0xb, 0xb, 0x9, 0xa, 0xa, 0xf, 0x13, 0x15, 0x18, 0x16, 0x13, 0x16, 0x15, 0x0, 0x17, 0x18, 0x14, 0x18, 0x11, 0x17, 0x13, 0x18, 0x16, 0x0, 0x15, 0x18, 0x15, 0x18, 0x0, 0x17, 0x18, 0x14, 0x18, 0x12, 0x16, 0x15, 0x0, 0x14, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x0, 0x16, 0x17, 0x18, 0x0, 0x15, 0x15, 0x18, 0x18, 0x16, 0x16, 0x18, 0x16, 0x16, 0xf, 0xc, 0x10, 0x13, 0x11, 0x15, 0x0, 0x0, 0x11, 0x13, 0x11, 0x14, 0x11, 0xf, 0x11, 0x15, 0x14, 0x15, 0x16, 0x14, 0x16, 0x14, 0xf, 0x11, 0x13, 0x13, 0xe, 0x14, 0x11, 0x14, 0x12, 0x14, 0x12, 0x12, 0x13, 0x15, 0x13, 0x17, 0x14, 0x10, 0x13, 0x10, 0x16, 0x13, 0x10, 0x14, 0x10, 0x11, 0xe, 0x13, 0x12, 0x16, 0x15, 0x17, 0x14, 0x17, 0x16, 0x15, 0x17, 0x15, 0x17, 0x17, 0x14, 0x14, 0x13, 0x14, 0xf, 0x14, 0xf, 0x13, 0xf, 0x12, 0x13, 0xe, 0x10, 0x12, 0x11, 0x10, 0x15, 0x15, 0xe, 0x13, 0x13, 0x16, 0x16, 0x15, 0x10, 0x14, 0x17, 0x17, 0xd, 0xd, 0x16, 0x18, 0x17, 0x15, 0x12, 0x11, 0x13, 0x13, 0x11, 0x12, 0x12, 0x13, 0x10, 0x9, 0x3, 0x5, 0x6, 0x4, 0x4, 0x3, 0x5, 0x8, 0x4, 0x3, 0x6, 0xa, 0x9, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x5, 0x9, 0x6, 0x91, 0x96, 0x8b, 0x9a, 0x8b, 0x7b, 0x5, 0x4, 0x8, 0xb, 0xe, 0x13, 0x15, 0x15, 0x17, 0x15, 0x18, 0x14, 0x15, 0x15, 0x16, 0x15, 0x17, 0x7e, 0x85, 0x85, 0x7e, 0x7a, 0x7e, 0x84, 0x13, 0x16, 0x14, 0x16, 0x15, 0x17, 0x16, 0x14, 0x13, 0x14, 0x16, 0x18, 0x18, 0x18, 0x18, 0x16, 0x16, 0x18, 0x18, 0x15, 0x14, 0x12, 0x14, 0x11, 0xc, 0x82, 0x77, 0x82, 0x82, 0x8c, 0x9a, 0x96, 0x7, 0x5, 0x5, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x6, 0x5, 0x8, 0x9, 0xf, 0x13, 0x10, 0xf, 0xf, 0x12, 0x13, 0x14, 0x11, 0x11, 0xe, 0x12, 0x0, 0x10, 0xe, 0x14, 0x18, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x14, 0x13, 0xf, 0xf, 0x14, 0x15, 0x13, 0x15, 0x15, 0x12, 0x14, 0x12, 0x13, 0x13, 0x12, 0x17, 0x14, 0x17, 0x11, 0x13, 0x15, 0x14, 0xf, 0xf, 0x12, 0x10, 0xd, 0xa, 0xb, 0xf, 0x10, 0xe, 0xa, 0x7, 0x8, 0xa, 0x10, 0x13, 0x14, 0x18, 0x14, 0x16, 0x13, 0x14, 0x17, 0x15, 0x17, 0x13, 0x17, 0x12, 0x16, 0x13, 0x17, 0x15, 0x0, 0x14, 0x0, 0x12, 0x18, 0x15, 0x17, 0x17, 0x16, 0x16, 0x10, 0x13, 0x14, 0x18, 0x15, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x16, 0x13, 0x18, 0x0, 0x17, 0x17, 0x18, 0x16, 0x16, 0x10, 0xe, 0x12, 0x14, 0x12, 0x17, 0x0, 0x0, 0xf, 0x10, 0xf, 0x13, 0xf, 0x10, 0xe, 0x12, 0x15, 0x12, 0x13, 0xe, 0x14, 0x10, 0x10, 0x12, 0x14, 0x14, 0xf, 0x14, 0x12, 0x14, 0x12, 0x14, 0x14, 0x14, 0x13, 0x17, 0x15, 0x13, 0x14, 0x14, 0x16, 0x10, 0x14, 0x16, 0x13, 0x14, 0x14, 0x16, 0x10, 0x11, 0x10, 0x15, 0x13, 0x16, 0x12, 0x15, 0x14, 0x12, 0x16, 0x13, 0x16, 0x16, 0x12, 0x12, 0x11, 0x13, 0x12, 0x14, 0x11, 0x14, 0x13, 0x12, 0x13, 0x10, 0x11, 0x15, 0x12, 0xe, 0x11, 0x17, 0x11, 0x13, 0x13, 0x15, 0x0, 0x14, 0x10, 0x15, 0x18, 0x17, 0x10, 0x13, 0x17, 0x18, 0x15, 0x13, 0x11, 0x10, 0x13, 0x16, 0x13, 0x11, 0x8, 0x5, 0x4, 0x4, 0x5, 0x3, 0x2, 0x3, 0x6, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x4, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x5, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x5, 0x3, 0x76, 0x9a, 0x9a, 0x8b, 0x8b, 0x31, 0x4, 0x6, 0x4, 0x5, 0xa, 0xf, 0x11, 0x11, 0x16, 0x15, 0x0, 0x16, 0x17, 0x16, 0x16, 0x16, 0x18, 0x85, 0x7a, 0x83, 0x7a, 0x85, 0x85, 0x7a, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x16, 0x14, 0x15, 0x17, 0x13, 0x15, 0x12, 0x14, 0x16, 0x18, 0x15, 0x15, 0x14, 0x17, 0x16, 0x17, 0x71, 0x75, 0x81, 0x96, 0x96, 0x86, 0x92, 0x4, 0x4, 0x3, 0x5, 0x5, 0x2, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x1, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x6, 0x8, 0x4, 0x7, 0xd, 0x11, 0xe, 0xc, 0x11, 0x16, 0x12, 0x10, 0xf, 0xe, 0xd, 0x15, 0xd, 0xa, 0x11, 0x15, 0x12, 0x13, 0x12, 0x16, 0x14, 0x16, 0x16, 0x0, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x15, 0x17, 0x15, 0x13, 0x14, 0x12, 0x12, 0x15, 0x12, 0x18, 0x13, 0x13, 0x12, 0x13, 0x15, 0xe, 0xd, 0xe, 0xc, 0xc, 0xa, 0x9, 0xf, 0x10, 0xc, 0x9, 0x9, 0xa, 0xc, 0x15, 0x17, 0x0, 0x14, 0x18, 0x14, 0x17, 0x16, 0x0, 0x17, 0x17, 0x17, 0x16, 0x18, 0x0, 0x17, 0x18, 0x18, 0x16, 0x0, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x17, 0x14, 0x16, 0x17, 0x18, 0x16, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x14, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x15, 0xe, 0xd, 0x13, 0x12, 0xc, 0x13, 0x18, 0x0, 0xe, 0x11, 0xe, 0x10, 0xd, 0x10, 0xf, 0x14, 0x16, 0x12, 0x14, 0xf, 0x14, 0x11, 0x11, 0x14, 0x11, 0x10, 0xe, 0x11, 0x11, 0x15, 0x15, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x16, 0x16, 0x15, 0x16, 0x12, 0x14, 0x16, 0x16, 0x16, 0x15, 0x17, 0x14, 0x15, 0x10, 0x13, 0x11, 0x11, 0xf, 0x12, 0xf, 0xd, 0x12, 0x13, 0x15, 0x12, 0xf, 0xf, 0xd, 0xd, 0x12, 0x13, 0xd, 0x13, 0x11, 0xf, 0x10, 0x12, 0x14, 0x15, 0x13, 0xe, 0x12, 0x0, 0x16, 0x17, 0x14, 0x14, 0x14, 0x13, 0xc, 0x14, 0x18, 0x17, 0x11, 0xf, 0x12, 0x15, 0x15, 0x17, 0x15, 0x12, 0x16, 0x18, 0xb, 0x6, 0x3, 0x6, 0x5, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x33, 0x73, 0x8e, 0x73, 0x31, 0x3, 0x4, 0x5, 0x3, 0x6, 0x7, 0x8, 0xf, 0x14, 0x15, 0x11, 0x16, 0x12, 0x14, 0x10, 0x12, 0x11, 0x15, 0x8a, 0x7e, 0x7e, 0x8a, 0x7e, 0x7e, 0x7e, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x16, 0x17, 0x16, 0x15, 0x16, 0x13, 0x0, 0x15, 0x17, 0x17, 0x18, 0x16, 0x16, 0x15, 0x16, 0x18, 0x0, 0x6e, 0x7d, 0x92, 0x8b, 0x96, 0x8c, 0x8c, 0x4, 0x3, 0x3, 0x5, 0x4, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x4, 0x3, 0x2, 0x4, 0x4, 0x4, 0x5, 0x5, 0xc, 0xe, 0xd, 0xf, 0x15, 0x11, 0x11, 0x13, 0x13, 0xf, 0x14, 0x10, 0x10, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x16, 0x16, 0x14, 0x14, 0x16, 0x14, 0x0, 0x15, 0x15, 0x14, 0x15, 0x15, 0x12, 0x12, 0x11, 0x11, 0x12, 0xf, 0x9, 0xd, 0xf, 0x11, 0xb, 0x9, 0xd, 0x10, 0x14, 0x17, 0x17, 0x13, 0x18, 0x17, 0x18, 0x15, 0x0, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x14, 0x15, 0x18, 0x17, 0x17, 0x17, 0x17, 0x15, 0x17, 0xf, 0xc, 0x10, 0x13, 0xd, 0x15, 0x0, 0x0, 0x14, 0x14, 0x10, 0x12, 0xc, 0xc, 0xf, 0x15, 0x17, 0x12, 0x15, 0x11, 0x14, 0x10, 0x11, 0x16, 0x13, 0x12, 0xe, 0xe, 0xf, 0x13, 0x14, 0x16, 0x15, 0x15, 0x12, 0x11, 0x13, 0x14, 0x14, 0x11, 0x13, 0xf, 0x13, 0x15, 0x15, 0x15, 0x14, 0x14, 0x12, 0x14, 0xe, 0x14, 0x11, 0x12, 0x12, 0x14, 0x13, 0x10, 0x15, 0x15, 0x17, 0x17, 0x14, 0x13, 0x11, 0x16, 0x0, 0x18, 0x11, 0x14, 0x15, 0x15, 0x13, 0x13, 0x16, 0x16, 0x16, 0x14, 0x13, 0x16, 0x16, 0x18, 0x14, 0x14, 0x13, 0x16, 0x13, 0x14, 0x18, 0x0, 0x14, 0x10, 0x14, 0x14, 0x16, 0x13, 0x12, 0x10, 0x15, 0x13, 0x8, 0x5, 0x6, 0x7, 0x4, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x6, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x3, 0x4, 0x4, 0x2, 0x3, 0x4, 0x3, 0x2, 0x2, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x5, 0x7, 0x5, 0x3, 0x5, 0x8, 0xd, 0x15, 0x14, 0x18, 0x16, 0x16, 0x14, 0x16, 0x18, 0x0, 0x7a, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x0, 0x18, 0x16, 0x0, 0x18, 0x16, 0x15, 0x18, 0x14, 0x15, 0x16, 0x13, 0x18, 0x16, 0x18, 0x16, 0x17, 0x15, 0x16, 0x18, 0x18, 0x16, 0x14, 0x11, 0x16, 0x79, 0x81, 0x9a, 0x9a, 0x9a, 0x8b, 0x8b, 0x3, 0x3, 0x4, 0x8, 0x5, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x5, 0x2, 0x3, 0x9, 0xa, 0x5, 0x5, 0x9, 0x14, 0x17, 0x11, 0x10, 0x11, 0x14, 0x15, 0x14, 0x10, 0x16, 0x10, 0xc, 0xf, 0x14, 0x13, 0x15, 0x14, 0x0, 0x14, 0x16, 0x15, 0x13, 0x11, 0x16, 0x12, 0x16, 0x0, 0x16, 0x15, 0x16, 0x12, 0x12, 0x13, 0x10, 0x10, 0x14, 0x11, 0x13, 0x11, 0x12, 0x10, 0x10, 0xe, 0xf, 0x11, 0x10, 0xf, 0xd, 0xa, 0x9, 0xc, 0xf, 0x12, 0xc, 0x8, 0xa, 0xf, 0x13, 0x17, 0x16, 0x13, 0x18, 0x16, 0x18, 0x14, 0x18, 0x13, 0x0, 0x15, 0x18, 0x15, 0x0, 0x17, 0x0, 0x16, 0x18, 0x14, 0x13, 0x0, 0x16, 0x0, 0x15, 0x0, 0x14, 0x17, 0x10, 0x17, 0x18, 0x0, 0x17, 0x16, 0x18, 0x17, 0x0, 0x0, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x11, 0xd, 0x10, 0x14, 0xf, 0x15, 0x18, 0x0, 0xd, 0x14, 0x13, 0x10, 0xb, 0xc, 0xf, 0x13, 0x0, 0x13, 0x15, 0x15, 0x17, 0x12, 0x12, 0x15, 0x13, 0x14, 0xa, 0xd, 0x11, 0x14, 0x10, 0x11, 0x10, 0x14, 0x12, 0x11, 0x11, 0x11, 0x12, 0x12, 0x15, 0x14, 0x16, 0x15, 0x14, 0x13, 0x10, 0x13, 0x10, 0x11, 0xb, 0x11, 0xd, 0x12, 0xd, 0x10, 0x16, 0x14, 0x15, 0x15, 0x17, 0x17, 0x14, 0x17, 0x14, 0x18, 0x18, 0x17, 0x12, 0x13, 0x12, 0x14, 0x13, 0x10, 0x13, 0x14, 0x16, 0x15, 0x13, 0x15, 0x13, 0x16, 0x10, 0x11, 0x12, 0x13, 0xd, 0x13, 0x15, 0x14, 0x12, 0x12, 0x15, 0x12, 0x17, 0x16, 0x13, 0x11, 0x16, 0xb, 0x7, 0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x5, 0x3, 0x3, 0x2, 0x4, 0x4, 0x5, 0x4, 0x5, 0x5, 0x5, 0x9, 0x16, 0x12, 0x15, 0x10, 0x13, 0x15, 0x17, 0x0, 0x0, 0x83, 0x78, 0x83, 0x78, 0x83, 0x78, 0x83, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x18, 0x0, 0x16, 0x14, 0x11, 0x17, 0x15, 0x17, 0x17, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0xe, 0x87, 0x92, 0x9a, 0x8b, 0x9a, 0x96, 0x96, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x4, 0x3, 0x3, 0x3, 0x5, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x6, 0x6, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x5, 0xc, 0x11, 0xf, 0x12, 0x14, 0x13, 0x12, 0x13, 0x14, 0x16, 0x11, 0x10, 0x15, 0x0, 0x18, 0x17, 0x15, 0x16, 0x15, 0x18, 0x17, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x17, 0x18, 0x17, 0x15, 0x16, 0x14, 0x14, 0x15, 0x12, 0x14, 0x12, 0x13, 0x14, 0x14, 0x15, 0x16, 0x13, 0x11, 0x10, 0xc, 0xa, 0x9, 0x7, 0x9, 0x9, 0x9, 0xa, 0xc, 0xf, 0x14, 0x0, 0x0, 0x0, 0x12, 0x16, 0x16, 0x17, 0x15, 0x13, 0x16, 0x13, 0x18, 0x17, 0x0, 0x17, 0x0, 0x15, 0x18, 0x14, 0x17, 0x18, 0x16, 0x18, 0x15, 0x0, 0x15, 0x18, 0x14, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x13, 0xf, 0x11, 0x15, 0x10, 0x15, 0x18, 0x0, 0xe, 0x16, 0x17, 0x17, 0x11, 0xf, 0x11, 0x12, 0x15, 0x12, 0x15, 0x13, 0x17, 0x16, 0x18, 0x17, 0x13, 0x11, 0xc, 0x14, 0xf, 0x11, 0xb, 0xa, 0xc, 0x11, 0xd, 0x10, 0xe, 0xc, 0xd, 0xe, 0x11, 0xd, 0x14, 0x12, 0xf, 0x12, 0xf, 0x12, 0xf, 0x11, 0xc, 0x12, 0xf, 0x14, 0x11, 0x16, 0x16, 0x17, 0x15, 0x12, 0x17, 0x17, 0x14, 0x17, 0x12, 0x14, 0x14, 0x13, 0xf, 0x11, 0xf, 0x11, 0x11, 0xf, 0x11, 0x13, 0x15, 0x15, 0x12, 0x14, 0x12, 0x16, 0x12, 0x12, 0x14, 0x10, 0xb, 0xf, 0x13, 0x13, 0x12, 0x14, 0x18, 0x13, 0x14, 0x18, 0x16, 0x14, 0xe, 0x5, 0x5, 0xa, 0x6, 0x4, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x5, 0x6, 0x3, 0x3, 0x5, 0x4, 0x6, 0x6, 0x3, 0x5, 0xe, 0x10, 0x17, 0x14, 0x17, 0x15, 0x16, 0x16, 0x16, 0x83, 0x78, 0x83, 0x85, 0x78, 0x83, 0x78, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x0, 0x16, 0x18, 0x18, 0x16, 0x13, 0x15, 0x16, 0x15, 0x14, 0x15, 0x15, 0x18, 0x15, 0x7, 0x9a, 0x8b, 0x92, 0x8b, 0x96, 0x8b, 0x92, 0x4, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x4, 0x8, 0x4, 0x4, 0x7, 0x5, 0x3, 0x3, 0x9, 0xe, 0x11, 0x10, 0xe, 0xe, 0xf, 0x11, 0x16, 0xe, 0xa, 0x10, 0x17, 0x16, 0x15, 0x11, 0x14, 0x12, 0x16, 0x12, 0x15, 0x13, 0x16, 0x16, 0x16, 0x12, 0x11, 0x12, 0x16, 0x14, 0x11, 0x12, 0x10, 0xf, 0x12, 0xf, 0x13, 0x10, 0xf, 0x12, 0x13, 0x14, 0x14, 0x12, 0x11, 0x12, 0x11, 0xf, 0xb, 0xb, 0x10, 0xc, 0x9, 0x10, 0x11, 0x13, 0x16, 0x0, 0x15, 0x18, 0x12, 0x18, 0x18, 0x0, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x14, 0x18, 0x13, 0x18, 0x17, 0x17, 0x18, 0x13, 0x18, 0x15, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x13, 0x13, 0x18, 0x13, 0x16, 0x0, 0x0, 0x12, 0x16, 0x15, 0x16, 0xc, 0xf, 0x14, 0x15, 0x15, 0x13, 0x16, 0x15, 0x18, 0x18, 0x0, 0x16, 0xc, 0xd, 0xf, 0x15, 0x10, 0x12, 0x12, 0x13, 0x13, 0x11, 0x13, 0x17, 0x17, 0x15, 0x16, 0x14, 0x14, 0x12, 0x16, 0x16, 0x14, 0x16, 0x14, 0x16, 0x14, 0x16, 0x15, 0x17, 0x18, 0x18, 0xe, 0x15, 0xb, 0x14, 0x18, 0x15, 0x17, 0x14, 0x15, 0x0, 0x14, 0x12, 0x12, 0x11, 0xd, 0x12, 0x11, 0x13, 0x10, 0xd, 0x10, 0x10, 0x10, 0x12, 0x15, 0x15, 0x17, 0x17, 0x11, 0x11, 0xf, 0x14, 0x13, 0x14, 0x15, 0x16, 0x14, 0x14, 0x14, 0x15, 0x14, 0x18, 0x0, 0x11, 0x9, 0x4, 0x4, 0x6, 0x5, 0x5, 0x5, 0x3, 0x3, 0x4, 0x7, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x8, 0x6, 0x2, 0x4, 0x5, 0x4, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x6, 0xb, 0xd, 0xe, 0x13, 0x12, 0x17, 0x17, 0x18, 0x17, 0x17, 0x83, 0x78, 0x7a, 0x7a, 0x7e, 0x7e, 0x85, 0x15, 0x18, 0x0, 0x0, 0x15, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x13, 0x12, 0x17, 0x16, 0x15, 0x14, 0x15, 0x15, 0xf, 0xb, 0x7, 0x9a, 0x8c, 0x7d, 0x81, 0x9a, 0x96, 0x96, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x1, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x6, 0xd, 0x14, 0x10, 0xe, 0xe, 0xf, 0xf, 0x15, 0xe, 0xa, 0xf, 0x17, 0x0, 0x18, 0x14, 0x16, 0x14, 0x18, 0x18, 0x18, 0x14, 0x18, 0x0, 0x17, 0x16, 0x14, 0x13, 0x17, 0x18, 0x13, 0x11, 0x10, 0xe, 0x15, 0x14, 0x15, 0x11, 0x12, 0x10, 0x11, 0xe, 0xe, 0xe, 0x10, 0x13, 0xe, 0x9, 0x7, 0x11, 0x11, 0xf, 0xa, 0x11, 0x14, 0x13, 0x16, 0x18, 0x15, 0x18, 0x14, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x17, 0x14, 0x0, 0x16, 0x18, 0x18, 0x18, 0x17, 0x15, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x16, 0x11, 0x12, 0x14, 0x10, 0x16, 0x18, 0x0, 0xe, 0x11, 0x12, 0x14, 0xd, 0x11, 0x17, 0x16, 0x17, 0x12, 0x16, 0x14, 0x17, 0x0, 0x0, 0x13, 0xd, 0x13, 0x13, 0x16, 0x14, 0x18, 0x17, 0x14, 0x16, 0x14, 0x14, 0x14, 0x15, 0x13, 0x15, 0x13, 0x14, 0x11, 0x15, 0x16, 0x13, 0x17, 0x16, 0x17, 0x14, 0x15, 0x14, 0x17, 0x15, 0x12, 0x10, 0x10, 0xa, 0x12, 0x18, 0x15, 0x16, 0x14, 0x13, 0x16, 0x14, 0x14, 0x13, 0x14, 0x13, 0x16, 0x15, 0x17, 0x15, 0x11, 0x14, 0x12, 0x10, 0x13, 0x15, 0x18, 0x0, 0x18, 0x15, 0x14, 0x14, 0x15, 0x12, 0x13, 0x15, 0x13, 0x12, 0x12, 0x17, 0x18, 0x0, 0x0, 0x0, 0x10, 0x6, 0x4, 0x6, 0x7, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x6, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x6, 0x4, 0x3, 0x5, 0x7, 0x6, 0x6, 0x8, 0xd, 0x12, 0x16, 0x15, 0x13, 0x15, 0x7a, 0x83, 0x7a, 0x83, 0x7a, 0x7a, 0x7a, 0x16, 0x16, 0x17, 0x18, 0x15, 0x15, 0x16, 0x15, 0x16, 0x16, 0x14, 0x13, 0x15, 0x14, 0x17, 0x11, 0x15, 0x13, 0x13, 0x15, 0x17, 0x13, 0x9, 0x8, 0x4, 0x96, 0x96, 0x96, 0x96, 0x96, 0x8b, 0x9a, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0x3, 0x2, 0x3, 0x2, 0x3, 0x4, 0x3, 0x7, 0xf, 0x12, 0x10, 0xf, 0x10, 0xf, 0x12, 0x10, 0xb, 0xf, 0x16, 0x18, 0x18, 0x12, 0x14, 0x11, 0x16, 0x15, 0x16, 0x12, 0x17, 0x18, 0x17, 0x15, 0x15, 0x13, 0x16, 0x18, 0x14, 0x12, 0x11, 0xf, 0x12, 0x13, 0x14, 0x11, 0x14, 0x12, 0x14, 0x14, 0x13, 0x14, 0x13, 0x16, 0x15, 0x12, 0xc, 0xf, 0xf, 0xe, 0xb, 0xe, 0x12, 0x10, 0x17, 0x13, 0x14, 0x14, 0x16, 0x17, 0x15, 0x18, 0x16, 0x0, 0x15, 0x0, 0x18, 0x0, 0x18, 0x0, 0x16, 0x14, 0x0, 0x18, 0x0, 0x15, 0x0, 0x18, 0x0, 0x15, 0x15, 0x17, 0x15, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x14, 0x11, 0x11, 0x13, 0xe, 0x14, 0x17, 0x0, 0x14, 0x17, 0x14, 0x17, 0x12, 0xf, 0xf, 0x10, 0x13, 0x11, 0x16, 0x10, 0x15, 0x15, 0x10, 0x11, 0xd, 0x15, 0x17, 0x0, 0x18, 0x18, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x16, 0x17, 0x16, 0x17, 0x16, 0x18, 0x17, 0x15, 0x14, 0x11, 0x13, 0xf, 0x12, 0xf, 0x12, 0xe, 0xf, 0xb, 0x10, 0xe, 0xe, 0x14, 0x12, 0x17, 0x15, 0x11, 0x14, 0x14, 0x16, 0x14, 0x16, 0x10, 0x15, 0x11, 0x13, 0x13, 0x11, 0x15, 0x11, 0x10, 0x15, 0x16, 0x0, 0x17, 0x15, 0xd, 0x14, 0x17, 0x14, 0xd, 0xd, 0x14, 0x15, 0x13, 0x14, 0x16, 0x17, 0x17, 0x16, 0x14, 0x8, 0x3, 0x2, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x6, 0x7, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x7, 0x7, 0x8, 0x8, 0xb, 0x13, 0x18, 0x15, 0x15, 0x7a, 0x7a, 0x78, 0x84, 0x83, 0x85, 0x7a, 0x11, 0x12, 0x13, 0x15, 0x14, 0x13, 0x15, 0x16, 0x17, 0x15, 0x14, 0x15, 0x18, 0x18, 0x0, 0x17, 0x17, 0x15, 0x15, 0x13, 0xc, 0x9, 0x7, 0x5, 0x3, 0x9a, 0x8b, 0x9a, 0x96, 0x8b, 0x9a, 0x9a, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0xb, 0x12, 0x11, 0x11, 0xf, 0x12, 0x14, 0xb, 0x10, 0x0, 0x18, 0x0, 0x17, 0x18, 0x13, 0x17, 0x15, 0x16, 0x13, 0x18, 0x15, 0x16, 0x12, 0x15, 0x14, 0x15, 0x11, 0x11, 0x14, 0x12, 0xe, 0xe, 0xd, 0x12, 0xd, 0xb, 0xf, 0x13, 0x10, 0x11, 0x13, 0x11, 0xe, 0xe, 0xf, 0xc, 0xd, 0xd, 0xd, 0x9, 0xb, 0x17, 0x15, 0x18, 0x14, 0x18, 0x15, 0x18, 0x17, 0x17, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x16, 0x17, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x15, 0x16, 0x17, 0x17, 0x18, 0x16, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x0, 0x18, 0x0, 0x0, 0x18, 0x15, 0x10, 0x14, 0x15, 0x11, 0x17, 0x0, 0x0, 0x13, 0x16, 0x12, 0x15, 0x11, 0xf, 0x10, 0x12, 0x15, 0x12, 0x16, 0x12, 0x15, 0x16, 0x14, 0x14, 0x9, 0xe, 0xe, 0x16, 0xe, 0xd, 0xc, 0xa, 0xd, 0x11, 0xd, 0xd, 0x10, 0xc, 0xe, 0x11, 0x16, 0x10, 0x12, 0x11, 0xe, 0x10, 0xb, 0xf, 0xa, 0xe, 0x9, 0xe, 0xc, 0xf, 0xe, 0x13, 0x11, 0xf, 0x17, 0x15, 0x17, 0x15, 0x11, 0x15, 0x12, 0x16, 0x15, 0x15, 0x13, 0x18, 0x16, 0x14, 0x12, 0x10, 0x14, 0x14, 0x13, 0x11, 0x11, 0x16, 0x11, 0x15, 0xe, 0x14, 0x14, 0x14, 0xe, 0x10, 0x14, 0x17, 0x12, 0x11, 0x14, 0x16, 0x17, 0x14, 0xe, 0x6, 0x6, 0x6, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x5, 0x5, 0x4, 0x5, 0x6, 0x4, 0x5, 0x5, 0x6, 0x9, 0x11, 0x13, 0x14, 0x7a, 0x7a, 0x7a, 0x85, 0x7a, 0x7a, 0x78, 0x18, 0x17, 0x17, 0x17, 0x14, 0x18, 0x0, 0x0, 0x15, 0x13, 0x14, 0x12, 0x15, 0x18, 0x14, 0x13, 0x16, 0x15, 0x13, 0x13, 0xc, 0x5, 0x4, 0x3, 0x5, 0x86, 0x9a, 0x9a, 0x8b, 0x9a, 0x9a, 0x9a, 0x2, 0x2, 0x2, 0x1, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x4, 0x4, 0x5, 0xa, 0xf, 0xf, 0xd, 0xd, 0xf, 0x10, 0xc, 0x10, 0x0, 0x0, 0x18, 0x17, 0x0, 0x16, 0x17, 0x16, 0x16, 0x16, 0x18, 0x16, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, 0x16, 0x17, 0x16, 0x13, 0x14, 0x14, 0x17, 0x13, 0x12, 0x13, 0x16, 0x16, 0x16, 0x16, 0x16, 0x14, 0x15, 0x14, 0xa, 0xa, 0xc, 0x7, 0x6, 0xb, 0x14, 0x14, 0x18, 0x11, 0x17, 0x11, 0x18, 0x13, 0x18, 0x15, 0x17, 0x17, 0x16, 0x18, 0x17, 0x0, 0x15, 0x0, 0x11, 0x16, 0x16, 0x18, 0x16, 0x15, 0x0, 0x14, 0x18, 0x16, 0x0, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0xf, 0x12, 0x16, 0x14, 0x18, 0x0, 0x0, 0x13, 0x17, 0x12, 0x15, 0x10, 0x13, 0x13, 0x14, 0x15, 0x10, 0x16, 0x14, 0x17, 0x14, 0x13, 0x0, 0x16, 0x16, 0x11, 0x12, 0xc, 0xd, 0xd, 0xc, 0xc, 0x11, 0xa, 0xb, 0xd, 0x7, 0xb, 0xe, 0x10, 0x8, 0xd, 0xd, 0xa, 0xe, 0xa, 0xf, 0xb, 0x10, 0xe, 0x13, 0x12, 0x13, 0x11, 0x12, 0x14, 0x14, 0x15, 0x13, 0x16, 0x16, 0x15, 0x16, 0x15, 0x16, 0x15, 0x17, 0x13, 0x17, 0x15, 0x14, 0x13, 0x10, 0x12, 0x14, 0x17, 0x15, 0x13, 0x14, 0x12, 0x15, 0x10, 0x17, 0x16, 0x18, 0x16, 0x14, 0x16, 0x16, 0x12, 0x12, 0x13, 0x15, 0x16, 0xd, 0x5, 0x4, 0x8, 0x8, 0x3, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x7, 0x7, 0x4, 0x6, 0x5, 0x5, 0x5, 0x6, 0xe, 0x14, 0x85, 0x84, 0x7e, 0x7e, 0x85, 0x7a, 0x78, 0x15, 0x13, 0x15, 0x16, 0x16, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x15, 0x16, 0x15, 0x9, 0x4, 0x3, 0x3, 0x3, 0x96, 0x9a, 0x9a, 0x96, 0x8b, 0x91, 0x9a, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x8, 0x10, 0x13, 0xf, 0xe, 0x10, 0xc, 0xe, 0x17, 0x14, 0x16, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x13, 0x15, 0x12, 0x14, 0xe, 0x10, 0x15, 0x15, 0x10, 0x15, 0x14, 0x17, 0x10, 0xe, 0xd, 0x10, 0x14, 0x14, 0x12, 0x12, 0x10, 0x14, 0x12, 0x9, 0x8, 0x9, 0x9, 0x8, 0x11, 0x12, 0x15, 0x15, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x15, 0x0, 0x16, 0x0, 0x16, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0xe, 0x7, 0x5, 0x5, 0x5, 0xc, 0x15, 0x18, 0x18, 0x0, 0x14, 0x17, 0x13, 0x14, 0xc, 0xf, 0x11, 0x12, 0x14, 0x10, 0x16, 0x13, 0x14, 0x12, 0x11, 0x15, 0x14, 0x16, 0x14, 0x16, 0xf, 0x13, 0x13, 0x12, 0x11, 0x11, 0xe, 0x10, 0x11, 0xf, 0x10, 0x10, 0x10, 0xb, 0x11, 0x10, 0xf, 0x12, 0x11, 0x15, 0x10, 0x12, 0xd, 0x11, 0xf, 0x10, 0xf, 0x12, 0x12, 0x14, 0x13, 0x11, 0x0, 0x17, 0x16, 0x17, 0x13, 0x15, 0x13, 0x16, 0x10, 0x15, 0x15, 0x15, 0x14, 0x11, 0x10, 0x11, 0x16, 0x0, 0x17, 0x13, 0x12, 0x16, 0xf, 0x16, 0x15, 0x18, 0x14, 0x13, 0x16, 0x15, 0x12, 0x13, 0x12, 0x18, 0x18, 0xc, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x7, 0x6, 0x8, 0xd, 0x13, 0x78, 0x83, 0x78, 0x83, 0x7a, 0x83, 0x83, 0x18, 0x0, 0x18, 0x15, 0x14, 0x0, 0x18, 0x13, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x15, 0x14, 0xf, 0x6, 0x6, 0x3, 0x4, 0x5, 0x9a, 0x9a, 0x9a, 0x96, 0x9a, 0x9a, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x5, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0xa, 0x12, 0x10, 0xe, 0xe, 0xa, 0xf, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x16, 0x17, 0x15, 0x18, 0x16, 0x16, 0x16, 0x16, 0x14, 0x16, 0x14, 0x16, 0x14, 0x16, 0x16, 0x17, 0x15, 0x15, 0x15, 0x16, 0x13, 0x12, 0x10, 0xe, 0x10, 0xb, 0xf, 0xc, 0x12, 0x16, 0x18, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x0, 0x14, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x14, 0x4, 0x2, 0x3, 0x2, 0x2, 0x7, 0x12, 0x15, 0x17, 0x17, 0x13, 0x16, 0x15, 0x15, 0xe, 0x10, 0x11, 0x13, 0x15, 0x12, 0x16, 0x14, 0x15, 0x13, 0x13, 0x16, 0x14, 0x15, 0x12, 0x16, 0x13, 0x15, 0x14, 0x13, 0x12, 0x11, 0x11, 0x10, 0x12, 0xf, 0xf, 0x10, 0x12, 0xe, 0x14, 0x14, 0x14, 0x15, 0x13, 0x16, 0x13, 0x12, 0xd, 0x10, 0xe, 0xe, 0x10, 0x15, 0xf, 0x13, 0x12, 0xd, 0x16, 0x16, 0x13, 0x16, 0x12, 0x15, 0x16, 0x17, 0x12, 0x15, 0x15, 0x17, 0x15, 0x12, 0x12, 0x11, 0x14, 0x18, 0x17, 0x15, 0x12, 0x16, 0x10, 0x12, 0xf, 0x14, 0x13, 0x12, 0x15, 0x13, 0x16, 0x15, 0x16, 0x0, 0x13, 0x9, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x6, 0x6, 0x3, 0x3, 0x4, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x7, 0xb, 0xf, 0x7a, 0x78, 0x83, 0x7a, 0x7a, 0x83, 0x78, 0x18, 0x18, 0x17, 0x17, 0x15, 0x18, 0x17, 0x14, 0x15, 0x18, 0x0, 0x14, 0x16, 0x13, 0x16, 0x17, 0x17, 0x15, 0xe, 0x9, 0x6, 0x2, 0x2, 0x3, 0x4, 0x9a, 0x9a, 0x9a, 0x91, 0x9a, 0x9a, 0x9a, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x7, 0x12, 0x16, 0x10, 0xf, 0xb, 0x10, 0x0, 0x18, 0x18, 0x15, 0x17, 0x14, 0x17, 0x15, 0x17, 0x16, 0x18, 0x16, 0x0, 0x16, 0x17, 0x14, 0x17, 0x16, 0x15, 0x15, 0x15, 0x12, 0x15, 0x12, 0x15, 0x12, 0x15, 0x17, 0x16, 0x14, 0x13, 0x13, 0x14, 0x11, 0x11, 0x11, 0x11, 0x11, 0xb, 0xe, 0xc, 0x15, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x12, 0xe, 0xf, 0xd, 0xc, 0x9, 0xc, 0xa, 0xa, 0x9, 0x9, 0xc, 0x10, 0x10, 0x11, 0xe, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x5, 0x6, 0x9, 0x12, 0x13, 0x12, 0x13, 0xd, 0x11, 0x12, 0x12, 0x12, 0x10, 0x13, 0xc, 0xf, 0x11, 0x10, 0x13, 0x10, 0x10, 0xa, 0x12, 0x10, 0xf, 0xe, 0x11, 0x10, 0x13, 0x15, 0x13, 0x18, 0x18, 0x17, 0x0, 0x15, 0x10, 0x14, 0x16, 0x12, 0x16, 0x12, 0x16, 0x14, 0x10, 0xc, 0x11, 0x12, 0x11, 0x13, 0x16, 0x12, 0x15, 0x12, 0xa, 0x14, 0x12, 0xf, 0x11, 0x10, 0x13, 0x15, 0x16, 0x10, 0x14, 0x15, 0x18, 0x17, 0x14, 0x13, 0x11, 0x11, 0x15, 0x13, 0x14, 0x10, 0x15, 0x12, 0x12, 0x12, 0x15, 0x12, 0x13, 0x15, 0x16, 0x0, 0x0, 0x0, 0x17, 0x6, 0x3, 0x5, 0x5, 0x2, 0x3, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x5, 0x4, 0x5, 0x5, 0x4, 0x6, 0x6, 0xa, 0x90, 0x83, 0x78, 0x7a, 0x85, 0x7e, 0x78, 0x17, 0x14, 0x13, 0x17, 0x15, 0x18, 0x17, 0x14, 0x15, 0x0, 0x18, 0x16, 0x17, 0x16, 0x17, 0x18, 0x18, 0x17, 0x11, 0xe, 0x6, 0x3, 0x4, 0x2, 0x3, 0x81, 0x8b, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x2, 0x5, 0x4, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x6, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x8, 0xb, 0x7, 0xd, 0x15, 0x17, 0x16, 0x15, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x16, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x17, 0x16, 0x18, 0x15, 0x17, 0x17, 0x17, 0x16, 0x18, 0x17, 0x15, 0x14, 0x13, 0x12, 0x12, 0xf, 0xe, 0xf, 0xc, 0x17, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x9, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x2, 0x4, 0x3, 0x3, 0x3, 0x7, 0x12, 0x13, 0x12, 0x14, 0x11, 0x13, 0x14, 0x14, 0x15, 0x14, 0x17, 0x12, 0x15, 0x17, 0x16, 0x18, 0x18, 0x18, 0x10, 0x13, 0x15, 0x15, 0x14, 0x14, 0x17, 0x15, 0x11, 0x13, 0x14, 0x13, 0x15, 0x15, 0x15, 0x11, 0x14, 0x13, 0x12, 0x14, 0x11, 0x13, 0xf, 0x13, 0x11, 0x12, 0x11, 0x13, 0x11, 0x14, 0x13, 0x15, 0x13, 0xb, 0x13, 0x18, 0x15, 0x14, 0x11, 0x15, 0x16, 0x18, 0x14, 0x16, 0x13, 0x15, 0x17, 0x15, 0x13, 0x15, 0x12, 0x11, 0x10, 0x15, 0x14, 0x17, 0x10, 0x15, 0x14, 0x16, 0x11, 0x13, 0x14, 0x12, 0x12, 0x13, 0x15, 0xf, 0x5, 0x4, 0x8, 0x7, 0x3, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x2, 0x3, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x7, 0x8f, 0x7e, 0x78, 0x85, 0x7e, 0x7a, 0x7a, 0x16, 0x17, 0x15, 0x0, 0x14, 0x17, 0x15, 0x12, 0x12, 0x10, 0x10, 0xf, 0x16, 0x13, 0x15, 0x14, 0x13, 0xf, 0x7, 0x4, 0x2, 0x3, 0x4, 0x2, 0x2, 0x9a, 0x9a, 0x91, 0x9a, 0x9a, 0x9a, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x6, 0x4, 0x4, 0x8, 0xf, 0x0, 0x17, 0x16, 0x7, 0x12, 0x0, 0x0, 0x17, 0x17, 0x14, 0x17, 0x17, 0x17, 0x16, 0x18, 0x18, 0x0, 0x17, 0x18, 0x16, 0x18, 0x18, 0x17, 0x17, 0x17, 0x17, 0x18, 0x15, 0x18, 0x15, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x15, 0x14, 0x14, 0x12, 0xe, 0xb, 0xd, 0xd, 0x12, 0x16, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x17, 0x0, 0x18, 0x0, 0x16, 0x16, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x14, 0x5, 0x3, 0x3, 0x3, 0x5, 0x5, 0x2, 0x3, 0x2, 0x3, 0x4, 0x5, 0x6, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0xe, 0xf, 0xf, 0x12, 0xd, 0x10, 0x10, 0x11, 0x14, 0x12, 0x15, 0xf, 0x12, 0x13, 0x10, 0x15, 0x15, 0x14, 0x10, 0x13, 0x12, 0x14, 0x15, 0x16, 0x16, 0x14, 0x11, 0x13, 0x13, 0x11, 0x13, 0xf, 0x12, 0xc, 0xf, 0x10, 0xe, 0x13, 0x10, 0x13, 0xf, 0x14, 0x14, 0x16, 0x15, 0x16, 0x15, 0x17, 0x15, 0x16, 0x16, 0xf, 0x12, 0x0, 0x17, 0x18, 0x14, 0x17, 0x17, 0x17, 0x13, 0x16, 0x16, 0x18, 0x18, 0x17, 0x14, 0x13, 0xf, 0xe, 0x12, 0x17, 0x15, 0x18, 0x13, 0x16, 0x16, 0x16, 0x11, 0x12, 0x10, 0x10, 0x11, 0x14, 0x14, 0xa, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x5, 0x3, 0x2, 0x7, 0x5, 0x3, 0x2, 0x2, 0x5, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x95, 0x7e, 0x83, 0x7e, 0x7e, 0x7e, 0x7a, 0x14, 0x17, 0x16, 0x0, 0x16, 0x17, 0x17, 0x15, 0x15, 0x14, 0x16, 0x15, 0x18, 0x16, 0x16, 0x17, 0x11, 0xb, 0x7, 0x3, 0x3, 0x4, 0x2, 0x2, 0x4, 0x8b, 0x9a, 0x9a, 0x9a, 0x8b, 0x9a, 0x9a, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x5, 0x3, 0x3, 0x2, 0x3, 0x2, 0x4, 0x5, 0x3, 0x3, 0x4, 0x5, 0x7, 0xf, 0x0, 0x0, 0x14, 0x7, 0x10, 0x16, 0x17, 0x15, 0x16, 0x15, 0x17, 0x0, 0x18, 0x14, 0x16, 0x15, 0x17, 0x12, 0x15, 0x11, 0x12, 0x12, 0x12, 0x14, 0x13, 0x10, 0x17, 0x13, 0x17, 0x13, 0x14, 0x13, 0x17, 0x18, 0x13, 0x12, 0x13, 0x10, 0x11, 0xd, 0x9, 0xc, 0xf, 0xb, 0x13, 0x15, 0x0, 0x16, 0x18, 0x18, 0x0, 0x18, 0x17, 0x18, 0x16, 0x0, 0x17, 0x0, 0x15, 0x16, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x11, 0xb, 0x6, 0x4, 0x3, 0x5, 0x9, 0x9, 0x4, 0x3, 0x2, 0x3, 0x3, 0x4, 0x6, 0x3, 0x4, 0x3, 0x2, 0x2, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x10, 0x11, 0x12, 0x15, 0x11, 0x12, 0x11, 0x12, 0x17, 0x12, 0x16, 0x11, 0x12, 0x12, 0xe, 0x14, 0x14, 0x13, 0xf, 0x11, 0xf, 0x10, 0x12, 0x13, 0x10, 0x12, 0x12, 0x11, 0x11, 0xe, 0xf, 0x13, 0x14, 0x10, 0x11, 0x10, 0xf, 0x14, 0xf, 0x10, 0xd, 0x11, 0xf, 0x12, 0xf, 0x12, 0x11, 0x13, 0x11, 0x13, 0x17, 0x12, 0x14, 0x17, 0x15, 0x14, 0x10, 0x11, 0x12, 0x13, 0xe, 0x11, 0x10, 0x15, 0x13, 0x11, 0x10, 0xa, 0xa, 0xf, 0x13, 0x15, 0x12, 0x17, 0x12, 0x15, 0x15, 0x16, 0x14, 0x18, 0x15, 0x13, 0x13, 0x14, 0xe, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x99, 0x99, 0x88, 0x7a, 0x83, 0x85, 0x83, 0x17, 0x0, 0x17, 0x13, 0x14, 0x16, 0x15, 0x14, 0x13, 0x11, 0x13, 0x11, 0x15, 0x13, 0x10, 0x14, 0xf, 0xb, 0x5, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x9a, 0x96, 0x8b, 0x9a, 0x9a, 0x8b, 0x3, 0x3, 0x3, 0x1, 0x2, 0x3, 0x3, 0x2, 0x7, 0x6, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x5, 0x3, 0x3, 0x6, 0x9, 0x5, 0x4, 0x4, 0x9, 0x11, 0x0, 0x17, 0x12, 0xd, 0x7, 0x14, 0x14, 0x16, 0x14, 0x15, 0x12, 0x15, 0x16, 0x14, 0x13, 0x15, 0x17, 0x18, 0x17, 0x17, 0x13, 0x16, 0x15, 0x14, 0x18, 0x15, 0xf, 0x14, 0x16, 0x18, 0x15, 0x12, 0x13, 0x16, 0x16, 0x14, 0x14, 0x14, 0x15, 0x14, 0x11, 0xd, 0xd, 0xe, 0xf, 0x16, 0x15, 0x0, 0x16, 0x0, 0x16, 0x0, 0x17, 0x0, 0x17, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xa, 0x5, 0x4, 0x5, 0x3, 0x3, 0x3, 0x5, 0x5, 0x4, 0x5, 0x3, 0x3, 0x9, 0xb, 0x7, 0x5, 0x4, 0x8, 0x6, 0x3, 0x3, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x5, 0x13, 0x14, 0x15, 0x16, 0x12, 0x10, 0xf, 0x12, 0x17, 0x13, 0x15, 0x11, 0x10, 0x12, 0x10, 0x13, 0x11, 0xe, 0x10, 0x15, 0x11, 0x12, 0x12, 0x12, 0x15, 0x15, 0x16, 0x12, 0x13, 0x11, 0x12, 0x13, 0x14, 0x11, 0x12, 0x12, 0x10, 0x14, 0x10, 0xf, 0xf, 0x13, 0x13, 0x15, 0x14, 0x15, 0x15, 0x17, 0x15, 0x16, 0x18, 0x18, 0x0, 0x14, 0x12, 0x15, 0x15, 0x15, 0x16, 0x17, 0x14, 0x16, 0x14, 0x15, 0x14, 0x14, 0x17, 0x14, 0x11, 0x14, 0x13, 0x15, 0x11, 0x15, 0x11, 0x13, 0xd, 0xe, 0x10, 0x16, 0x11, 0x12, 0x15, 0x13, 0xa, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x6, 0x6, 0x4, 0x4, 0x3, 0x3, 0x4, 0x9f, 0x9d, 0x9e, 0x8a, 0x78, 0x7a, 0x78, 0x18, 0x0, 0x18, 0x16, 0x17, 0x18, 0x0, 0x18, 0x16, 0x14, 0x18, 0x15, 0x18, 0x15, 0x16, 0x14, 0xd, 0x9, 0x4, 0x6, 0x8, 0x3, 0x3, 0x4, 0x2, 0x9a, 0x9a, 0x92, 0x9a, 0x9a, 0x91, 0x9a, 0x4, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x6, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x5, 0x9, 0x6, 0x3, 0x3, 0x5, 0x7, 0xd, 0xd, 0x10, 0x17, 0x0, 0x0, 0x0, 0x15, 0x14, 0xe, 0x13, 0x13, 0x15, 0x15, 0x14, 0x10, 0x11, 0x13, 0x14, 0x14, 0x16, 0x17, 0x0, 0x18, 0x18, 0x16, 0x18, 0x17, 0x17, 0x18, 0x16, 0x13, 0x17, 0x17, 0x18, 0x17, 0x16, 0x16, 0x17, 0x18, 0x17, 0x17, 0x16, 0x16, 0x15, 0x12, 0x11, 0x13, 0x13, 0x14, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x16, 0x0, 0x18, 0x0, 0x17, 0x10, 0xc, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x4, 0x5, 0x3, 0x3, 0xb, 0xa, 0x5, 0x4, 0x3, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x5, 0x5, 0x6, 0x4, 0x7, 0xf, 0x10, 0x11, 0x11, 0xf, 0xe, 0xf, 0x11, 0x15, 0xf, 0x11, 0xf, 0x12, 0x13, 0xf, 0x13, 0x12, 0x11, 0xe, 0x10, 0xf, 0x13, 0x13, 0x13, 0x14, 0x15, 0x15, 0x12, 0x13, 0x13, 0x14, 0x15, 0x0, 0x14, 0x12, 0xf, 0x10, 0x13, 0xf, 0x10, 0xf, 0x10, 0x10, 0x14, 0x14, 0x12, 0x11, 0x14, 0x11, 0x13, 0x14, 0x13, 0x18, 0x12, 0x13, 0x13, 0x11, 0x13, 0x11, 0x13, 0xf, 0x10, 0x10, 0x13, 0x12, 0x11, 0x15, 0x14, 0xf, 0x12, 0x12, 0x13, 0x11, 0x16, 0x16, 0x14, 0x11, 0x14, 0x11, 0x16, 0x12, 0x13, 0x18, 0xf, 0x4, 0x4, 0x5, 0x4, 0x6, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x3, 0x4, 0x4, 0x5, 0x6, 0x7, 0x8, 0xa, 0xc, 0xd, 0xd, 0xd, 0xc, 0xf, 0x11, 0x11, 0x11, 0x11, 0x13, 0x15, 0x13, 0x10, 0xf, 0xe, 0xa, 0x8f, 0x88, 0x95, 0x89, 0x83, 0x85, 0x83, 0x17, 0x0, 0x17, 0x18, 0x15, 0x18, 0x0, 0x0, 0x16, 0x14, 0x17, 0x14, 0x17, 0x14, 0x14, 0x12, 0xc, 0x5, 0x2, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x2, 0x4, 0x4, 0x6, 0xa, 0xe, 0xf, 0xe, 0x11, 0x13, 0x15, 0x18, 0x18, 0x14, 0x0, 0x0, 0x0, 0x0, 0x14, 0x14, 0x11, 0x15, 0x15, 0x13, 0x13, 0x16, 0x14, 0x12, 0x14, 0x16, 0x16, 0x15, 0x15, 0x17, 0x16, 0x18, 0x15, 0x18, 0x16, 0x15, 0x15, 0x14, 0x12, 0x16, 0x14, 0x16, 0x14, 0x17, 0x13, 0x13, 0x17, 0x17, 0x17, 0x15, 0x11, 0x10, 0x10, 0xf, 0x12, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x17, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x0, 0x18, 0x16, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x6, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x9, 0x8, 0x5, 0x5, 0x4, 0x6, 0x4, 0x4, 0x3, 0x5, 0x5, 0x3, 0x2, 0x3, 0x4, 0x8, 0x8, 0x7, 0x5, 0x3, 0x12, 0x12, 0x12, 0x13, 0x12, 0xf, 0x11, 0x11, 0x15, 0x12, 0x14, 0x12, 0x13, 0x13, 0xe, 0x11, 0x10, 0xf, 0xc, 0x10, 0xe, 0x11, 0x12, 0x12, 0x10, 0x11, 0xf, 0xc, 0xd, 0xe, 0xe, 0x10, 0x15, 0x11, 0x14, 0x14, 0x14, 0x15, 0x13, 0x15, 0x12, 0x14, 0x12, 0x15, 0x13, 0x14, 0x13, 0x14, 0x13, 0x15, 0x0, 0x16, 0x17, 0x12, 0x13, 0x14, 0x16, 0x17, 0x17, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x14, 0x15, 0x11, 0x10, 0x12, 0x16, 0x15, 0xd, 0x14, 0x14, 0xf, 0xf, 0x14, 0x14, 0x17, 0x0, 0x16, 0x12, 0x8, 0x4, 0x4, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x1, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x5, 0x4, 0x4, 0x7, 0x5, 0x5, 0x5, 0x8, 0x9, 0xf, 0xe, 0xf, 0x11, 0x13, 0x14, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x8a, 0x7e, 0x93, 0x90, 0x78, 0x7a, 0x78, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x17, 0x14, 0x16, 0x13, 0x17, 0x14, 0x16, 0xe, 0x6, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x8b, 0x8b, 0x9a, 0x8b, 0x9a, 0x9a, 0x8b, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x2, 0x3, 0x3, 0x5, 0xc, 0xc, 0xb, 0xf, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x17, 0x18, 0x13, 0xd, 0xc, 0x14, 0x16, 0x13, 0x12, 0x16, 0x14, 0x13, 0x14, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x0, 0x18, 0x17, 0x17, 0x17, 0x0, 0x16, 0x17, 0x14, 0x16, 0x16, 0x0, 0x0, 0x18, 0x18, 0x17, 0x15, 0x14, 0x15, 0x17, 0x0, 0x0, 0x0, 0x14, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x7, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x6, 0x7, 0x6, 0x7, 0x3, 0x1, 0x3, 0x3, 0x3, 0x5, 0x4, 0x2, 0x3, 0x1, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x10, 0xf, 0x11, 0x11, 0x15, 0x15, 0x12, 0xf, 0x12, 0xe, 0x13, 0x10, 0x10, 0x10, 0xd, 0xf, 0xd, 0x10, 0xd, 0x10, 0xf, 0x10, 0x12, 0x12, 0x12, 0x13, 0x12, 0x11, 0x11, 0x12, 0x10, 0xe, 0x11, 0xe, 0x12, 0x11, 0x11, 0x13, 0xf, 0x12, 0xf, 0x11, 0xe, 0x14, 0x12, 0x12, 0x10, 0x13, 0x11, 0x13, 0x16, 0x10, 0x14, 0x15, 0x13, 0x17, 0x12, 0x14, 0x11, 0x12, 0x10, 0x12, 0x11, 0x15, 0x16, 0x14, 0x14, 0xf, 0xf, 0x11, 0x13, 0x17, 0x15, 0x14, 0x12, 0x14, 0x12, 0x17, 0x12, 0x13, 0x15, 0x12, 0x7, 0x4, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x2, 0x3, 0x2, 0x2, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x6, 0x9, 0x10, 0xf, 0x11, 0x12, 0x12, 0x13, 0x14, 0x14, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x88, 0x90, 0x7a, 0x78, 0x7a, 0x85, 0x78, 0x17, 0x17, 0x16, 0x17, 0x15, 0x16, 0x17, 0x17, 0x17, 0x14, 0x15, 0x12, 0x15, 0x16, 0x12, 0xd, 0x9, 0x4, 0x3, 0x3, 0x2, 0x3, 0x5, 0x4, 0x3, 0x9a, 0x9a, 0x8b, 0x9a, 0x9a, 0x9a, 0x9a, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x7, 0x7, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x5, 0x6, 0x4, 0x2, 0x1, 0x3, 0x4, 0x6, 0xe, 0xb, 0x9, 0xc, 0xe, 0xe, 0xc, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x18, 0x0, 0x18, 0x16, 0x0, 0x18, 0x15, 0x12, 0x14, 0x16, 0x0, 0x0, 0x16, 0x15, 0x17, 0x14, 0x11, 0x14, 0x15, 0x15, 0x16, 0x15, 0x13, 0x18, 0x0, 0x18, 0x16, 0x17, 0x16, 0x18, 0x15, 0x15, 0x14, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x17, 0x15, 0x13, 0x13, 0x14, 0x18, 0x0, 0x18, 0x15, 0x0, 0x17, 0x0, 0x16, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x15, 0x15, 0xa, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x8, 0x7, 0x7, 0xa, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x6, 0x7, 0x6, 0xf, 0x12, 0x14, 0x10, 0x13, 0x15, 0x14, 0x11, 0x14, 0x12, 0x15, 0x12, 0x14, 0x14, 0x12, 0x15, 0x12, 0x11, 0xb, 0xf, 0xf, 0xe, 0x10, 0x12, 0x12, 0x14, 0x13, 0x14, 0x12, 0x13, 0x13, 0x14, 0x13, 0xb, 0xd, 0x11, 0x10, 0x12, 0xf, 0x15, 0xf, 0x11, 0x11, 0x15, 0x12, 0x10, 0xe, 0x13, 0xe, 0x11, 0x14, 0x12, 0x16, 0x14, 0x12, 0x17, 0x14, 0x15, 0x14, 0x17, 0x12, 0x12, 0xe, 0x12, 0x13, 0x13, 0x15, 0x15, 0x10, 0x13, 0x14, 0x17, 0x14, 0x13, 0x11, 0x14, 0x11, 0x14, 0xd, 0x14, 0x18, 0xd, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x6, 0x5, 0x5, 0x7, 0x8, 0xc, 0xd, 0x11, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x12, 0x16, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x11, 0x8a, 0x7a, 0x7a, 0x83, 0x7a, 0x84, 0x7a, 0x13, 0x14, 0xc, 0xb, 0xf, 0xa, 0x12, 0x13, 0xd, 0x14, 0x15, 0x14, 0x15, 0x14, 0x9, 0x5, 0x4, 0x3, 0x4, 0x7, 0x4, 0x3, 0x5, 0x5, 0x3, 0x8b, 0x96, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x5, 0x5, 0x4, 0x4, 0x2, 0x2, 0x3, 0x4, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x3, 0x5, 0x7, 0x11, 0x16, 0x16, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x18, 0x0, 0x16, 0xe, 0x16, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x17, 0x16, 0x17, 0x0, 0x0, 0x18, 0x18, 0x17, 0x13, 0x13, 0x12, 0x12, 0x10, 0x14, 0x11, 0x14, 0x10, 0x15, 0x13, 0x14, 0x11, 0x13, 0x15, 0x12, 0x14, 0x16, 0x11, 0xe, 0xf, 0x11, 0x18, 0x0, 0x17, 0x17, 0x18, 0x18, 0x17, 0x16, 0x0, 0x18, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x16, 0x0, 0x17, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x9, 0x6, 0x4, 0x4, 0x3, 0x4, 0x4, 0x5, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x7, 0x6, 0xa, 0x6, 0x6, 0x4, 0x4, 0x8, 0x9, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x4, 0x7, 0x9, 0xf, 0x10, 0x11, 0xf, 0x10, 0x12, 0x11, 0xe, 0x16, 0x11, 0x13, 0x11, 0x12, 0x14, 0xf, 0x14, 0x11, 0x10, 0x9, 0xe, 0xe, 0xd, 0xe, 0xe, 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x12, 0x14, 0xe, 0x10, 0x12, 0x10, 0x13, 0x11, 0x14, 0x10, 0x11, 0x11, 0x16, 0x14, 0x13, 0x11, 0x15, 0x11, 0x12, 0x14, 0x10, 0x16, 0x13, 0x10, 0x14, 0x13, 0x15, 0x13, 0x16, 0x12, 0x12, 0x11, 0x15, 0x14, 0x15, 0x17, 0x15, 0x15, 0x18, 0x0, 0x16, 0xe, 0x12, 0x12, 0x13, 0x13, 0x16, 0x11, 0x12, 0x12, 0x7, 0x3, 0x3, 0x4, 0x3, 0x4, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x6, 0x8, 0xb, 0xd, 0x11, 0x13, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x9, 0x9, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x13, 0x13, 0x16, 0x85, 0x78, 0x7a, 0x7a, 0x7a, 0x85, 0x7a, 0x17, 0x17, 0x8, 0x4, 0x4, 0x4, 0x6, 0xe, 0x10, 0x14, 0xf, 0x11, 0x10, 0xd, 0x6, 0x6, 0x3, 0x3, 0x5, 0x7, 0x4, 0x3, 0x3, 0x3, 0x3, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0xb, 0x7, 0x5, 0x7, 0xe, 0x8, 0x4, 0x9, 0xb, 0xd, 0xc, 0x9, 0xe, 0x13, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0x17, 0x0, 0x0, 0x14, 0x13, 0x14, 0x15, 0x15, 0x14, 0x16, 0x0, 0x18, 0x17, 0x15, 0x15, 0x10, 0xe, 0x11, 0x11, 0x10, 0x14, 0x12, 0x16, 0x12, 0x14, 0x12, 0x14, 0x12, 0x16, 0x0, 0x0, 0x18, 0x12, 0x13, 0x15, 0x13, 0x14, 0x16, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x12, 0x4, 0x3, 0x4, 0x6, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x3, 0x5, 0x4, 0x6, 0x4, 0x5, 0x5, 0x4, 0x8, 0xc, 0x5, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x11, 0xf, 0x10, 0xd, 0xf, 0x10, 0x14, 0x11, 0x15, 0xf, 0x12, 0x11, 0x12, 0x15, 0x10, 0x13, 0xf, 0x11, 0xe, 0x14, 0x12, 0x13, 0x12, 0x11, 0x13, 0x14, 0x12, 0x14, 0x14, 0x14, 0x14, 0x13, 0x16, 0x15, 0x15, 0x13, 0x13, 0x16, 0x12, 0x14, 0x11, 0x10, 0x10, 0x14, 0x14, 0x14, 0x13, 0x16, 0x12, 0x15, 0x17, 0x14, 0x18, 0x15, 0x13, 0x0, 0x0, 0x0, 0x13, 0x11, 0xd, 0x13, 0x11, 0x14, 0x12, 0x13, 0x13, 0x13, 0xf, 0x12, 0x15, 0x16, 0x10, 0x14, 0x14, 0x17, 0x14, 0x18, 0x13, 0x12, 0xd, 0x4, 0x4, 0x6, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x5, 0x8, 0xe, 0x12, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x5, 0x5, 0xf, 0x18, 0x15, 0x15, 0x17, 0x15, 0x16, 0x16, 0x16, 0x15, 0x13, 0x14, 0x13, 0x13, 0x13, 0x13, 0x11, 0x10, 0xf, 0xa, 0xd, 0xd, 0xc, 0xc, 0xa, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0x12, 0x88, 0x89, 0x93, 0x97, 0x89, 0x90, 0x93, 0xd, 0x11, 0x7, 0x3, 0x3, 0x6, 0xa, 0xd, 0x9, 0x9, 0x6, 0x7, 0x6, 0x6, 0x5, 0x3, 0x4, 0x4, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x8b, 0x96, 0x86, 0x92, 0x7c, 0x81, 0x81, 0xc, 0xd, 0x8, 0x6, 0x9, 0x9, 0xb, 0xe, 0xe, 0xd, 0xf, 0xe, 0xf, 0x12, 0x13, 0x13, 0x14, 0x15, 0x17, 0xf, 0x5, 0xe, 0xc, 0x12, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x13, 0x12, 0x15, 0x15, 0x11, 0x12, 0x16, 0x14, 0x15, 0x14, 0x10, 0x12, 0x13, 0xe, 0x11, 0xd, 0x10, 0x8, 0x8, 0x9, 0xa, 0xa, 0xc, 0xf, 0x10, 0x12, 0x13, 0x11, 0x15, 0x15, 0x15, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xe, 0x12, 0x11, 0x11, 0x13, 0x14, 0x15, 0x15, 0x0, 0xf, 0x5, 0x4, 0x4, 0x4, 0x5, 0x5, 0x7, 0x9, 0x5, 0x4, 0x4, 0x5, 0x7, 0x4, 0x3, 0x4, 0x4, 0x5, 0x5, 0x9, 0x9, 0x6, 0x9, 0xa, 0x7, 0x6, 0x6, 0x7, 0x3, 0x2, 0x3, 0x3, 0x3, 0x6, 0x13, 0xf, 0x13, 0x13, 0x14, 0x13, 0x12, 0xf, 0x13, 0x11, 0x14, 0x14, 0x14, 0x16, 0x12, 0x13, 0xf, 0x11, 0x10, 0x16, 0x12, 0x14, 0x13, 0x10, 0xf, 0x12, 0x11, 0x12, 0x11, 0xe, 0x10, 0x13, 0x14, 0x11, 0x12, 0x11, 0x14, 0x18, 0x14, 0x17, 0x11, 0x11, 0xf, 0x12, 0x11, 0x14, 0x13, 0x17, 0x14, 0x16, 0x16, 0x13, 0x18, 0x15, 0x15, 0x18, 0x18, 0x0, 0x15, 0x13, 0x10, 0x14, 0x13, 0x14, 0x12, 0x11, 0x14, 0x0, 0x0, 0x16, 0x12, 0x16, 0x12, 0x10, 0x10, 0x17, 0x11, 0x14, 0x11, 0xb, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x6, 0x5, 0x4, 0x4, 0x3, 0x5, 0xa, 0xf, 0x11, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x5, 0xd, 0x10, 0x8, 0x8, 0x9, 0x6, 0x7, 0x7, 0x7, 0x8, 0x8, 0x8, 0x6, 0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x9f, 0x9d, 0x99, 0x9d, 0x9d, 0x99, 0x9d, 0x5, 0x6, 0x4, 0x4, 0x3, 0x4, 0x6, 0x5, 0x3, 0x4, 0x4, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x6, 0x5, 0x3, 0x96, 0x96, 0x87, 0x8c, 0x8c, 0x92, 0x92, 0x8, 0x9, 0x6, 0x8, 0xa, 0xa, 0xb, 0xb, 0xa, 0xb, 0xa, 0xa, 0xb, 0xc, 0xa, 0x9, 0x9, 0xa, 0xd, 0x7, 0x5, 0x6, 0x6, 0x7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x15, 0x16, 0x0, 0x0, 0x17, 0x18, 0x18, 0xe, 0x9, 0xc, 0xc, 0xa, 0xa, 0xb, 0xb, 0xa, 0xa, 0xa, 0x8, 0x9, 0xc, 0x7, 0x6, 0x7, 0x5, 0x4, 0x9, 0x9, 0x5, 0x6, 0x5, 0x4, 0x6, 0xc, 0xf, 0x13, 0x15, 0x13, 0x0, 0x17, 0x16, 0x0, 0x17, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0xf, 0xf, 0xd, 0xf, 0x9, 0x3, 0x5, 0x8, 0x8, 0x6, 0x5, 0x9, 0x8, 0xd, 0x8, 0x4, 0x4, 0x3, 0x3, 0x3, 0x7, 0xc, 0x9, 0x5, 0x4, 0x8, 0xd, 0xb, 0x5, 0x4, 0x5, 0x6, 0x5, 0x4, 0x6, 0x6, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x10, 0xc, 0xd, 0xe, 0xd, 0xc, 0xd, 0xe, 0x13, 0xf, 0x13, 0x11, 0x11, 0x13, 0x12, 0x17, 0x12, 0x14, 0xf, 0x12, 0x10, 0x13, 0x18, 0x0, 0x15, 0x15, 0x15, 0x17, 0x15, 0x12, 0x14, 0x15, 0x17, 0x11, 0x14, 0x15, 0x14, 0x18, 0x18, 0x0, 0x17, 0x15, 0x12, 0x14, 0x12, 0x13, 0x10, 0x11, 0xf, 0x14, 0x16, 0x10, 0x13, 0x13, 0x14, 0x17, 0x16, 0x0, 0x17, 0x13, 0x11, 0x16, 0x15, 0x14, 0x13, 0x13, 0x14, 0x17, 0x0, 0x17, 0x11, 0x15, 0x12, 0x11, 0x12, 0x16, 0x11, 0x14, 0xf, 0x6, 0x3, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x6, 0xd, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xa, 0x6, 0x9, 0x6, 0x4, 0x4, 0x4, 0x7, 0x6, 0x6, 0x5, 0x5, 0x9, 0x6, 0x3, 0x4, 0x4, 0x4, 0x5, 0x5, 0x6, 0x7, 0x9, 0xb, 0xb, 0xe, 0x10, 0xf, 0x11, 0x12, 0xf, 0xb, 0xc, 0x97, 0x89, 0x93, 0x89, 0x89, 0x89, 0x89, 0xe, 0xe, 0x9, 0x7, 0x9, 0x7, 0x5, 0x6, 0x7, 0x9, 0x7, 0x7, 0x7, 0x7, 0x9, 0xd, 0x10, 0xa, 0x8, 0x8, 0x9, 0x8, 0x8, 0x9, 0x6, 0x92, 0x7c, 0x96, 0x96, 0x96, 0x96, 0x96, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x5, 0x3, 0x5, 0x4, 0x6, 0x7, 0x5, 0x7, 0x8, 0x6, 0x8, 0x15, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x15, 0x16, 0x12, 0x0, 0x16, 0x11, 0xa, 0x5, 0x6, 0x8, 0x6, 0x5, 0x5, 0x6, 0x7, 0x7, 0x4, 0x5, 0x8, 0xa, 0x6, 0x5, 0x7, 0x8, 0x6, 0xc, 0xf, 0x9, 0x9, 0x9, 0x6, 0x7, 0x6, 0x7, 0xf, 0xe, 0x11, 0x13, 0x16, 0x18, 0x17, 0x18, 0x16, 0x16, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0xa, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0xe, 0x10, 0x5, 0x4, 0x3, 0x8, 0x7, 0x4, 0x5, 0xa, 0x8, 0x8, 0xa, 0x6, 0x6, 0x5, 0x3, 0x4, 0x4, 0x5, 0x5, 0x4, 0x3, 0x6, 0x8, 0x7, 0x6, 0x4, 0x4, 0x5, 0x5, 0x5, 0x2, 0x3, 0x3, 0x5, 0x7, 0x8, 0xa, 0x9, 0xa, 0xa, 0xd, 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x11, 0x11, 0x14, 0x10, 0x11, 0x11, 0x12, 0x13, 0x10, 0x13, 0x11, 0x13, 0x10, 0x10, 0xf, 0x12, 0x13, 0x14, 0x14, 0x16, 0x15, 0x15, 0x14, 0x13, 0x12, 0x15, 0x16, 0x10, 0x13, 0x15, 0x13, 0x17, 0x17, 0x18, 0x17, 0x17, 0x13, 0x14, 0x12, 0x13, 0x11, 0x13, 0x12, 0x16, 0x18, 0x14, 0x16, 0x14, 0x14, 0x15, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x14, 0x15, 0x18, 0x16, 0x18, 0x18, 0x17, 0x11, 0x14, 0x10, 0x17, 0xf, 0x5, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0xb, 0x11, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x12, 0x10, 0xe, 0xc, 0xa, 0xb, 0x7, 0x5, 0x4, 0x6, 0x9, 0x7, 0x8, 0xf, 0xd, 0x11, 0x14, 0x15, 0x16, 0x18, 0x18, 0x0, 0x15, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x15, 0x0, 0x78, 0x78, 0x78, 0x78, 0x83, 0x8a, 0x83, 0x0, 0x17, 0xe, 0x8, 0xd, 0xe, 0xb, 0x13, 0x16, 0x17, 0x13, 0x12, 0x11, 0x11, 0x13, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x15, 0x15, 0x14, 0x71, 0x6e, 0x71, 0x75, 0x71, 0x71, 0x71, 0x13, 0x14, 0x13, 0x14, 0x13, 0x13, 0x13, 0x14, 0x13, 0x12, 0x11, 0x11, 0x12, 0x11, 0x10, 0x11, 0x11, 0x11, 0xf, 0xf, 0x13, 0x14, 0x14, 0x16, 0x16, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x16, 0xe, 0xc, 0x7, 0x5, 0x7, 0x8, 0xb, 0xb, 0xa, 0xa, 0xa, 0xc, 0xc, 0xa, 0x5, 0x4, 0x4, 0x5, 0x5, 0x3, 0x5, 0x5, 0x5, 0x6, 0x7, 0x6, 0x5, 0x5, 0x5, 0x6, 0x6, 0x3, 0x6, 0x10, 0x16, 0x13, 0x13, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x9, 0x6, 0x3, 0x5, 0x4, 0x5, 0x5, 0x9, 0xc, 0x16, 0x14, 0xc, 0xc, 0x6, 0x8, 0x8, 0x3, 0x3, 0x8, 0xe, 0x16, 0x0, 0x17, 0x15, 0x14, 0x13, 0x11, 0x11, 0x10, 0xf, 0x10, 0x10, 0x12, 0x13, 0x12, 0x14, 0x12, 0x11, 0x9, 0x5, 0xd, 0x11, 0x11, 0x13, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe, 0xe, 0xe, 0xf, 0xf, 0x10, 0xd, 0x12, 0x11, 0xf, 0x10, 0x13, 0x15, 0x12, 0x13, 0x13, 0x15, 0x13, 0x13, 0x12, 0x14, 0x10, 0x10, 0x12, 0x15, 0x13, 0x15, 0x14, 0x13, 0x12, 0x16, 0x17, 0x13, 0x16, 0x15, 0x12, 0x14, 0x11, 0x14, 0x11, 0x15, 0x11, 0x11, 0x11, 0x13, 0x13, 0x14, 0x14, 0x17, 0x18, 0x18, 0x18, 0x14, 0x11, 0xf, 0x10, 0x15, 0x12, 0x18, 0x16, 0x16, 0x14, 0x16, 0x14, 0x14, 0x15, 0x15, 0x18, 0x18, 0x11, 0x14, 0x10, 0x13, 0x10, 0x13, 0x11, 0x15, 0xa, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x6, 0xd, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0xd, 0xb, 0x8, 0xb, 0xc, 0xf, 0x15, 0x17, 0x15, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x16, 0x0, 0x78, 0x83, 0x78, 0x78, 0x7e, 0x88, 0x85, 0x15, 0x16, 0xc, 0x3, 0x9, 0xb, 0xb, 0x17, 0x18, 0x0, 0x17, 0x16, 0x16, 0x15, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x18, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x16, 0x12, 0x18, 0x0, 0x16, 0x12, 0x0, 0x14, 0xf, 0x10, 0x17, 0xf, 0xa, 0x9, 0xa, 0xa, 0xc, 0x9, 0x9, 0x9, 0x9, 0xd, 0x11, 0x11, 0x8, 0x8, 0xc, 0x6, 0x6, 0x6, 0x5, 0x8, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x7, 0x6, 0x6, 0x8, 0x8, 0x7, 0xb, 0x18, 0x0, 0x16, 0x0, 0x14, 0x0, 0x0, 0x0, 0x14, 0x16, 0x0, 0x18, 0x0, 0x15, 0xd, 0x7, 0x4, 0x3, 0x7, 0x5, 0x3, 0x5, 0xe, 0x10, 0x10, 0xf, 0x13, 0xe, 0xe, 0x10, 0xa, 0x4, 0x3, 0x3, 0x2, 0x7, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x6, 0x10, 0x17, 0x13, 0x13, 0x14, 0x16, 0x16, 0x14, 0x12, 0x13, 0x15, 0x14, 0x11, 0x10, 0x11, 0xf, 0x11, 0x12, 0x12, 0xf, 0x15, 0x13, 0x15, 0x14, 0x13, 0x17, 0x14, 0x17, 0x16, 0x17, 0x14, 0x16, 0x12, 0x13, 0x12, 0x13, 0x14, 0x12, 0x11, 0x13, 0x15, 0x18, 0x0, 0x0, 0x17, 0x12, 0x15, 0x14, 0x13, 0x16, 0x17, 0x16, 0x15, 0x16, 0x15, 0x17, 0x17, 0x14, 0x11, 0x11, 0x11, 0x14, 0x15, 0x12, 0x16, 0x16, 0x18, 0x14, 0x12, 0x15, 0x12, 0x18, 0x16, 0x17, 0x14, 0x14, 0x13, 0x13, 0x13, 0x14, 0x14, 0x16, 0x11, 0x12, 0x11, 0x13, 0x10, 0xf, 0xf, 0xc, 0x7, 0x4, 0x4, 0x3, 0x3, 0x3, 0x5, 0xb, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x13, 0x12, 0x15, 0x15, 0x16, 0x17, 0x11, 0x13, 0x14, 0x15, 0x14, 0x16, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x0, 0x17, 0x0, 0x16, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x78, 0x78, 0x83, 0x78, 0x8a, 0x84, 0x84, 0x11, 0x12, 0xf, 0x5, 0x8, 0xa, 0x12, 0x18, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b, 0x5f, 0x6b, 0x5f, 0x6b, 0x6b, 0x6b, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x15, 0x17, 0x0, 0x16, 0x12, 0x0, 0x15, 0x15, 0x11, 0xe, 0xd, 0xb, 0xa, 0xa, 0xa, 0xb, 0xd, 0xb, 0xc, 0xf, 0x11, 0xf, 0xd, 0x7, 0x7, 0xc, 0x6, 0x5, 0x8, 0x8, 0xa, 0x9, 0x8, 0x7, 0x7, 0x8, 0x7, 0x8, 0x7, 0x9, 0xa, 0x8, 0x6, 0x6, 0xa, 0xd, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x0, 0x18, 0x14, 0x8, 0x3, 0x3, 0x5, 0x5, 0xa, 0x5, 0x4, 0xe, 0x0, 0x15, 0xd, 0xc, 0xa, 0x9, 0x6, 0x6, 0x6, 0x3, 0x3, 0x3, 0x3, 0x5, 0x6, 0xf, 0x15, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0xe, 0x7, 0x9, 0x9, 0x6, 0x5, 0x7, 0x8, 0x8, 0x8, 0x6, 0x6, 0x7, 0x8, 0x12, 0x12, 0x14, 0x12, 0x13, 0x13, 0x14, 0x12, 0x16, 0x13, 0x17, 0x15, 0x15, 0x18, 0x13, 0x13, 0x12, 0x14, 0x11, 0x12, 0x13, 0x16, 0x14, 0x16, 0x18, 0x17, 0x14, 0x16, 0x13, 0xf, 0x10, 0x13, 0x13, 0x12, 0x14, 0x16, 0x16, 0x18, 0x17, 0x18, 0x16, 0x17, 0x14, 0x16, 0x17, 0x13, 0x11, 0x15, 0x11, 0x13, 0x14, 0x11, 0x15, 0x17, 0x17, 0x15, 0x13, 0x16, 0x16, 0x0, 0x16, 0x18, 0x15, 0x13, 0x12, 0x12, 0x12, 0x13, 0x15, 0x16, 0x12, 0x13, 0x11, 0x12, 0xd, 0x10, 0x11, 0x9, 0x6, 0x4, 0x4, 0x4, 0x4, 0xa, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x13, 0xd, 0xb, 0xb, 0xa, 0xd, 0x12, 0x13, 0x16, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x15, 0x18, 0x18, 0x0, 0x16, 0x18, 0x17, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x83, 0x83, 0x83, 0x78, 0x83, 0x7a, 0x90, 0x11, 0x15, 0x18, 0xb, 0x5, 0xa, 0x16, 0x17, 0x16, 0x15, 0x15, 0x12, 0x15, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x63, 0x6e, 0x6b, 0x18, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x11, 0xc, 0xe, 0xf, 0xe, 0xe, 0xe, 0xf, 0xf, 0xd, 0xc, 0xe, 0xe, 0xa, 0xb, 0xb, 0x8, 0x9, 0x7, 0x8, 0x9, 0x9, 0xa, 0x6, 0x4, 0x5, 0x6, 0x6, 0x6, 0x5, 0x5, 0x7, 0x8, 0x8, 0x7, 0x8, 0x8, 0xe, 0x16, 0x18, 0x18, 0x17, 0x18, 0x18, 0x17, 0x0, 0x15, 0xe, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0xb, 0x18, 0x15, 0xb, 0x6, 0x4, 0x4, 0xe, 0xd, 0x3, 0x7, 0xc, 0x8, 0x9, 0x4, 0x5, 0x6, 0x6, 0xd, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x16, 0x18, 0x18, 0x17, 0x13, 0x13, 0x14, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x16, 0x10, 0x10, 0x13, 0xf, 0xe, 0xc, 0x10, 0xd, 0x10, 0xd, 0x12, 0x10, 0x11, 0x17, 0x12, 0x12, 0x12, 0x14, 0x13, 0x15, 0x14, 0x14, 0x12, 0x12, 0x12, 0x14, 0x12, 0xd, 0xa, 0x9, 0xb, 0xd, 0xa, 0x8, 0x9, 0xc, 0x11, 0x12, 0x11, 0x14, 0x11, 0x13, 0x10, 0x14, 0x14, 0x14, 0x13, 0x18, 0x11, 0x13, 0x13, 0x10, 0x11, 0x12, 0x11, 0xf, 0xe, 0x14, 0x12, 0x14, 0xe, 0x12, 0x10, 0x14, 0x12, 0x10, 0x10, 0x12, 0x14, 0x16, 0x11, 0x14, 0x11, 0x11, 0xf, 0xe, 0xf, 0x5, 0x5, 0x5, 0x4, 0x8, 0xd, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x14, 0x11, 0xe, 0x11, 0x10, 0xc, 0xd, 0xe, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x16, 0x15, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x78, 0x83, 0x78, 0x83, 0x78, 0x7a, 0x90, 0x11, 0x14, 0x0, 0xd, 0x3, 0x8, 0x16, 0x17, 0x17, 0x16, 0x16, 0x13, 0x15, 0x0, 0x0, 0x15, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x6b, 0x6b, 0x5f, 0x6b, 0x78, 0x63, 0x6b, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x16, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x10, 0xc, 0xf, 0x10, 0x10, 0xe, 0xc, 0xb, 0xa, 0xc, 0xb, 0x6, 0x8, 0xe, 0x12, 0x13, 0xc, 0x7, 0x7, 0x9, 0xa, 0x8, 0x8, 0x8, 0xa, 0xa, 0x6, 0x6, 0x7, 0xa, 0x9, 0xa, 0x8, 0x9, 0xb, 0xb, 0xb, 0xc, 0xb, 0x14, 0x0, 0x16, 0x0, 0x18, 0x0, 0x0, 0x13, 0x7, 0x3, 0x4, 0x4, 0x4, 0x6, 0x3, 0x3, 0x7, 0x12, 0x0, 0x10, 0x3, 0xd, 0xb, 0x4, 0xd, 0xf, 0xb, 0x7, 0x11, 0x12, 0x6, 0x3, 0x3, 0x3, 0x5, 0x8, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0xf, 0x10, 0x10, 0xc, 0xd, 0xf, 0x10, 0xc, 0xf, 0x10, 0x15, 0x12, 0x10, 0x15, 0x13, 0x14, 0x13, 0x14, 0x13, 0x16, 0x14, 0x13, 0xe, 0xd, 0x12, 0x15, 0x12, 0x9, 0x5, 0x9, 0xf, 0x10, 0x11, 0xc, 0xa, 0x9, 0xc, 0xf, 0x10, 0x12, 0x14, 0x16, 0x12, 0x14, 0x15, 0x16, 0x13, 0x15, 0x13, 0x16, 0x16, 0x12, 0x15, 0x14, 0x15, 0x15, 0x13, 0x17, 0x15, 0x17, 0x11, 0x13, 0x15, 0x16, 0x14, 0x15, 0x14, 0x15, 0x12, 0x16, 0x13, 0x14, 0x11, 0x11, 0x11, 0x12, 0xb, 0x5, 0x4, 0x3, 0x9, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x15, 0x0, 0x0, 0x0, 0x15, 0x15, 0x16, 0x18, 0x18, 0x17, 0x15, 0x11, 0xe, 0xd, 0xd, 0xe, 0xf, 0x13, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x18, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x0, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x17, 0x18, 0x18, 0x17, 0x17, 0x18, 0x83, 0x78, 0x7a, 0x7a, 0x78, 0x7e, 0x88, 0x10, 0x14, 0x15, 0xe, 0x3, 0x8, 0x13, 0x18, 0x17, 0x14, 0x18, 0x16, 0x14, 0x13, 0x15, 0x17, 0x18, 0x16, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x6b, 0x6b, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x14, 0x14, 0x13, 0x11, 0xf, 0xc, 0xd, 0xb, 0x9, 0x9, 0x8, 0xb, 0xf, 0xa, 0xb, 0xc, 0x11, 0x15, 0x8, 0x4, 0xd, 0x11, 0xf, 0x5, 0x3, 0x4, 0x7, 0xe, 0xb, 0x9, 0xa, 0xb, 0xd, 0x9, 0x7, 0xa, 0xb, 0x9, 0x9, 0x7, 0x4, 0xa, 0xb, 0x6, 0x7, 0x8, 0x11, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x8, 0x2, 0x4, 0x4, 0x5, 0xc, 0xd, 0x3, 0x8, 0xa, 0xd, 0x11, 0x7, 0x4, 0x10, 0x14, 0x8, 0x7, 0x12, 0x12, 0x6, 0x6, 0x9, 0xb, 0x8, 0x3, 0x5, 0x5, 0x6, 0xf, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0xd, 0x10, 0xe, 0xe, 0x13, 0x13, 0xf, 0x11, 0x12, 0x14, 0x11, 0x12, 0x14, 0x11, 0x14, 0x13, 0x14, 0x12, 0x10, 0xc, 0xf, 0xb, 0x8, 0xb, 0xa, 0x5, 0x5, 0x5, 0x8, 0x8, 0xc, 0xf, 0x14, 0x12, 0xf, 0xf, 0x13, 0x12, 0xd, 0xb, 0x11, 0x11, 0x13, 0x12, 0x13, 0x12, 0x15, 0x11, 0x16, 0x16, 0x13, 0x15, 0x14, 0x17, 0x16, 0x14, 0x16, 0x16, 0x17, 0xf, 0x11, 0x12, 0x13, 0x12, 0x13, 0x13, 0x12, 0xf, 0x14, 0xf, 0x12, 0xd, 0xf, 0x13, 0x13, 0x9, 0x8, 0x5, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x14, 0x10, 0xe, 0x10, 0x13, 0x18, 0x0, 0x0, 0x18, 0x15, 0x12, 0x11, 0x10, 0xd, 0xb, 0xc, 0xf, 0x15, 0x15, 0x15, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x0, 0x15, 0x18, 0x17, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x18, 0x17, 0x15, 0x0, 0x17, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0x18, 0x15, 0x17, 0x17, 0x18, 0x17, 0x0, 0x83, 0x78, 0x78, 0x83, 0x78, 0x8a, 0x93, 0x10, 0x15, 0x16, 0x10, 0x5, 0xa, 0x17, 0x0, 0x18, 0x17, 0x16, 0x15, 0x13, 0x16, 0x16, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x6b, 0x5f, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x17, 0x0, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x15, 0x16, 0x15, 0x14, 0x16, 0x13, 0x11, 0x11, 0xf, 0xc, 0xc, 0xb, 0xc, 0xe, 0xd, 0xa, 0xc, 0xc, 0xb, 0xd, 0xf, 0x10, 0x13, 0x18, 0x16, 0x18, 0x0, 0x0, 0x14, 0x8, 0x7, 0x7, 0x11, 0x9, 0x6, 0x4, 0x7, 0xa, 0xe, 0xd, 0x7, 0xa, 0xb, 0xa, 0x7, 0x7, 0x9, 0x8, 0x8, 0x7, 0x7, 0x6, 0x8, 0xa, 0x5, 0x5, 0x5, 0x9, 0xe, 0x16, 0x0, 0x17, 0x0, 0x16, 0x6, 0x4, 0x5, 0x6, 0x8, 0x13, 0xa, 0x5, 0x9, 0x9, 0xd, 0x5, 0x2, 0x9, 0xf, 0x10, 0xf, 0x9, 0xe, 0x16, 0xe, 0x3, 0x7, 0xd, 0xd, 0x8, 0x5, 0x5, 0x9, 0xf, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x10, 0x12, 0x12, 0x14, 0x12, 0x14, 0x15, 0x0, 0x12, 0x11, 0x11, 0x14, 0x16, 0x16, 0x16, 0x11, 0xf, 0x9, 0x5, 0x6, 0x8, 0x5, 0x5, 0x5, 0x6, 0x5, 0x3, 0x5, 0xb, 0xa, 0x4, 0x4, 0x6, 0x8, 0xd, 0x17, 0x17, 0x11, 0xe, 0x14, 0x11, 0xe, 0x15, 0x11, 0xf, 0xe, 0x11, 0x13, 0x16, 0x15, 0x14, 0x17, 0x14, 0x12, 0x11, 0x11, 0x11, 0x12, 0x16, 0x11, 0x12, 0x12, 0x16, 0x13, 0x12, 0x13, 0x13, 0x11, 0x15, 0xf, 0x12, 0x11, 0x11, 0x13, 0x11, 0x8, 0x6, 0x4, 0xb, 0xe, 0x11, 0x0, 0x0, 0x18, 0x15, 0x14, 0x16, 0x12, 0x14, 0x13, 0xf, 0x13, 0x14, 0x13, 0xc, 0x10, 0xd, 0xe, 0xe, 0xd, 0xd, 0x11, 0x14, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x0, 0x17, 0x0, 0x0, 0x18, 0x16, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x17, 0x15, 0x0, 0x78, 0x78, 0x78, 0x83, 0x78, 0x78, 0x85, 0x11, 0xf, 0x16, 0x10, 0x4, 0x8, 0x17, 0x18, 0x17, 0x16, 0x15, 0x14, 0x14, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x0, 0x17, 0x6b, 0x6e, 0x65, 0x6b, 0x6e, 0x6b, 0x6e, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x16, 0x18, 0x18, 0x18, 0x17, 0x0, 0x18, 0x18, 0x17, 0x17, 0x18, 0x17, 0x18, 0x0, 0x18, 0x0, 0x18, 0x13, 0x16, 0x16, 0x15, 0x17, 0x10, 0xe, 0xd, 0xe, 0xc, 0xb, 0xb, 0x9, 0x9, 0xe, 0x11, 0x11, 0xf, 0x12, 0x16, 0x16, 0x16, 0x15, 0x14, 0x14, 0x18, 0x17, 0x12, 0x13, 0x10, 0x13, 0x0, 0x0, 0x0, 0x17, 0xb, 0x9, 0x8, 0x4, 0xc, 0x14, 0x13, 0x6, 0x6, 0xf, 0x8, 0x8, 0xb, 0xa, 0x9, 0x8, 0x6, 0x9, 0x8, 0x9, 0x9, 0xb, 0xb, 0x6, 0x5, 0x6, 0x7, 0xd, 0x9, 0x7, 0x9, 0x14, 0x0, 0x0, 0x18, 0xd, 0x6, 0x11, 0xe, 0xf, 0x9, 0xe, 0x5, 0x5, 0x7, 0x11, 0x14, 0x6, 0x7, 0xa, 0xe, 0x16, 0x18, 0xf, 0x6, 0x12, 0x10, 0x3, 0x6, 0x6, 0x4, 0x5, 0x4, 0x4, 0x6, 0x7, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x11, 0x13, 0x10, 0x11, 0x10, 0x14, 0x16, 0x0, 0x0, 0x0, 0x16, 0x17, 0x18, 0xf, 0xe, 0xe, 0x8, 0x5, 0xb, 0xa, 0x6, 0x3, 0x3, 0x4, 0x9, 0x9, 0x3, 0x5, 0x8, 0x6, 0x4, 0x4, 0x3, 0x4, 0x3, 0xb, 0x13, 0x16, 0x10, 0xd, 0x10, 0x13, 0x15, 0x12, 0x15, 0x14, 0x14, 0x16, 0x17, 0x16, 0x15, 0x17, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x17, 0x14, 0x14, 0x13, 0x15, 0x15, 0x15, 0x16, 0x15, 0x15, 0x18, 0x16, 0x16, 0x12, 0x14, 0x16, 0x10, 0x9, 0x6, 0x4, 0x9, 0xd, 0xb, 0xf, 0x13, 0x12, 0x10, 0xd, 0xc, 0x9, 0x11, 0x16, 0x11, 0x13, 0x16, 0x14, 0x10, 0x13, 0x10, 0x15, 0x18, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x17, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x18, 0x16, 0x17, 0x15, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x15, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x83, 0x83, 0x83, 0x78, 0x78, 0x78, 0x7a, 0x13, 0x11, 0x13, 0xa, 0x3, 0x9, 0x17, 0x16, 0x14, 0x15, 0x17, 0x12, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0x0, 0x16, 0x0, 0x18, 0x0, 0x18, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x5f, 0x6b, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x16, 0x18, 0x15, 0x18, 0x14, 0x18, 0x0, 0x0, 0x18, 0x14, 0x16, 0x13, 0xe, 0xb, 0x9, 0xd, 0xb, 0xc, 0x9, 0xc, 0xb, 0xe, 0xf, 0x10, 0x13, 0x15, 0x14, 0x16, 0x18, 0x12, 0x12, 0x11, 0x12, 0x11, 0x16, 0x18, 0x16, 0x16, 0x0, 0x13, 0xc, 0xa, 0x7, 0xe, 0x0, 0x0, 0x0, 0x12, 0x4, 0xc, 0x9, 0x2, 0x9, 0x17, 0x13, 0xb, 0x4, 0xd, 0x13, 0x9, 0xb, 0x9, 0x7, 0x6, 0x5, 0x9, 0x8, 0xd, 0xa, 0xc, 0x11, 0x8, 0x5, 0x6, 0x5, 0xb, 0x6, 0x7, 0x7, 0xf, 0x0, 0x0, 0x16, 0x6, 0xd, 0x18, 0xd, 0x10, 0xa, 0x9, 0x6, 0x3, 0x5, 0xf, 0xf, 0x6, 0x7, 0x3, 0xb, 0x0, 0x0, 0x13, 0x6, 0x10, 0xb, 0x3, 0x4, 0x9, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xd, 0x10, 0xf, 0x11, 0x10, 0x12, 0x11, 0x14, 0x10, 0x11, 0x10, 0x12, 0x15, 0xb, 0x8, 0x4, 0x4, 0x8, 0xb, 0x4, 0x5, 0x7, 0x4, 0x3, 0x4, 0x3, 0x8, 0xa, 0x6, 0x4, 0x4, 0x5, 0x9, 0xa, 0x6, 0x4, 0xd, 0x18, 0x18, 0x15, 0xd, 0x10, 0x18, 0x0, 0x14, 0xe, 0x14, 0x12, 0x15, 0x16, 0x13, 0x15, 0x12, 0x10, 0x11, 0x11, 0x13, 0x12, 0x16, 0x10, 0x12, 0x11, 0x12, 0x11, 0x11, 0x12, 0x11, 0x11, 0x17, 0x15, 0x16, 0xf, 0x13, 0x17, 0x13, 0xe, 0xa, 0xa, 0xd, 0xc, 0xd, 0xd, 0x15, 0x14, 0x13, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x17, 0x15, 0x18, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x18, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x0, 0x18, 0x16, 0x18, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x78, 0x78, 0x78, 0x78, 0x7a, 0x78, 0x83, 0x14, 0x10, 0x10, 0xc, 0x4, 0x7, 0x17, 0x18, 0x16, 0x16, 0x15, 0x16, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x6b, 0x18, 0x17, 0x18, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x15, 0x17, 0x16, 0x16, 0x12, 0x15, 0x15, 0x12, 0x15, 0x14, 0x11, 0x10, 0xc, 0xb, 0x14, 0x11, 0xc, 0xe, 0xf, 0x11, 0x14, 0x12, 0x12, 0x14, 0x14, 0x13, 0x13, 0x14, 0x13, 0x18, 0x16, 0x18, 0x13, 0x9, 0xc, 0x7, 0x6, 0xc, 0x15, 0x14, 0x14, 0x18, 0x18, 0xc, 0xe, 0x7, 0x7, 0x13, 0x0, 0x18, 0x18, 0xc, 0x8, 0xe, 0x7, 0x4, 0x10, 0x14, 0xc, 0xf, 0x6, 0x6, 0x15, 0x15, 0xd, 0xc, 0xb, 0x9, 0xa, 0x8, 0xe, 0x13, 0x10, 0x12, 0x12, 0x10, 0x10, 0x11, 0x12, 0x13, 0x13, 0x14, 0x13, 0x16, 0x0, 0x0, 0xe, 0x5, 0x14, 0x15, 0x10, 0x12, 0xe, 0x4, 0x4, 0x4, 0x5, 0xc, 0x6, 0x4, 0xa, 0x6, 0xf, 0x0, 0x18, 0xb, 0x5, 0xf, 0xb, 0x3, 0x4, 0xc, 0x7, 0x3, 0x2, 0x4, 0x4, 0x5, 0x9, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xa, 0xc, 0x11, 0x15, 0xd, 0xd, 0xb, 0xb, 0xf, 0x10, 0xc, 0xe, 0x13, 0xc, 0x5, 0x3, 0x5, 0x6, 0x3, 0xa, 0x11, 0xa, 0x8, 0x4, 0x3, 0x4, 0x11, 0xd, 0x7, 0x6, 0x8, 0x7, 0xe, 0x11, 0xd, 0x9, 0x7, 0x14, 0x18, 0x0, 0x10, 0x6, 0x10, 0x0, 0x17, 0xe, 0x15, 0x16, 0x17, 0x17, 0x16, 0x0, 0x0, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x13, 0x14, 0x14, 0x15, 0x14, 0x15, 0x13, 0x12, 0x13, 0x17, 0xf, 0x13, 0x10, 0x10, 0x13, 0x15, 0x0, 0x18, 0x15, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x15, 0x0, 0x17, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x17, 0x16, 0x18, 0x17, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x16, 0x18, 0x17, 0x17, 0x16, 0x18, 0x16, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x83, 0x78, 0x78, 0x78, 0x83, 0x78, 0x78, 0x18, 0x17, 0x14, 0xf, 0x5, 0x7, 0x16, 0x18, 0x15, 0x15, 0x15, 0x17, 0x17, 0x15, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x6b, 0x6e, 0x5f, 0x65, 0x6b, 0x71, 0x6e, 0x0, 0x18, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x13, 0x16, 0x18, 0x17, 0x15, 0x13, 0x12, 0x10, 0xe, 0xf, 0xc, 0xa, 0xa, 0xc, 0xb, 0x12, 0x12, 0x10, 0x10, 0x13, 0x15, 0x17, 0x17, 0x0, 0x17, 0x12, 0x10, 0x10, 0x11, 0x18, 0x14, 0xe, 0xc, 0x6, 0xc, 0xd, 0xf, 0x17, 0x14, 0x16, 0xd, 0xc, 0x9, 0x7, 0x7, 0x10, 0x18, 0x18, 0x17, 0x0, 0x13, 0xb, 0xd, 0xb, 0x13, 0x17, 0x18, 0x15, 0x10, 0x4, 0xb, 0xa, 0x5, 0x6, 0x14, 0x10, 0xc, 0xf, 0x8, 0x4, 0xe, 0x0, 0x10, 0xd, 0x14, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x8, 0x4, 0xb, 0x9, 0xa, 0x13, 0xf, 0x3, 0x4, 0x5, 0x8, 0xe, 0x5, 0x4, 0x11, 0xe, 0xf, 0x16, 0x17, 0xc, 0x3, 0xa, 0xa, 0x3, 0x4, 0x8, 0x6, 0x3, 0x3, 0x5, 0x5, 0x7, 0x6, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc, 0xd, 0x11, 0x14, 0x11, 0x11, 0xd, 0x11, 0x0, 0x0, 0xf, 0xa, 0x10, 0x7, 0x5, 0x4, 0x5, 0x8, 0xc, 0x12, 0x9, 0x9, 0x6, 0x7, 0x6, 0x9, 0x7, 0x4, 0x9, 0x9, 0x8, 0x7, 0x8, 0x6, 0x5, 0x7, 0x4, 0xd, 0x0, 0x0, 0x17, 0xc, 0xc, 0x0, 0x0, 0x15, 0x17, 0x14, 0x16, 0x15, 0x15, 0x18, 0x0, 0x17, 0x16, 0x13, 0x18, 0x15, 0x17, 0x12, 0x11, 0x10, 0x13, 0x11, 0x14, 0x11, 0x10, 0x13, 0x17, 0x11, 0x15, 0x11, 0xc, 0xe, 0x15, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x16, 0x17, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x18, 0x17, 0x16, 0x14, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x78, 0x78, 0x83, 0x78, 0x78, 0x83, 0x78, 0x0, 0x14, 0x12, 0xc, 0x3, 0x9, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x6b, 0x63, 0x6b, 0x6e, 0x6b, 0x71, 0x71, 0x16, 0x16, 0x16, 0x18, 0x0, 0x18, 0x18, 0x16, 0x15, 0x13, 0x13, 0x10, 0xf, 0xf, 0x11, 0xd, 0x9, 0x9, 0x9, 0xa, 0xb, 0xa, 0xc, 0xe, 0x12, 0x14, 0x16, 0x15, 0x15, 0x15, 0x13, 0x12, 0x15, 0x0, 0x13, 0xd, 0x12, 0xd, 0x7, 0x8, 0xb, 0x11, 0x0, 0x12, 0xd, 0xc, 0xa, 0xb, 0xa, 0x15, 0x18, 0x12, 0x10, 0x8, 0x9, 0x7, 0xa, 0x11, 0x15, 0x16, 0x17, 0x17, 0x0, 0x16, 0x14, 0x12, 0x17, 0x0, 0x0, 0x0, 0x18, 0xa, 0x6, 0xb, 0x4, 0x3, 0xb, 0x16, 0x10, 0xd, 0xa, 0xe, 0xa, 0xa, 0x11, 0x16, 0xc, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xc, 0x6, 0x8, 0x9, 0x6, 0x15, 0x14, 0x8, 0xb, 0x9, 0x12, 0xd, 0xb, 0x7, 0x6, 0x6, 0x10, 0x10, 0x10, 0x18, 0xa, 0x5, 0x4, 0x5, 0x6, 0x3, 0x4, 0x5, 0x5, 0x6, 0x5, 0x4, 0x6, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x11, 0x11, 0x10, 0xf, 0xd, 0xe, 0x12, 0x15, 0x14, 0x15, 0x13, 0x15, 0x18, 0x0, 0x17, 0x11, 0x7, 0x5, 0x5, 0x4, 0x4, 0x8, 0x15, 0xd, 0x3, 0x6, 0x5, 0x6, 0x6, 0xc, 0x5, 0x4, 0x7, 0x6, 0x9, 0x4, 0x4, 0x5, 0x6, 0x8, 0x4, 0x6, 0x15, 0x0, 0x17, 0x13, 0xe, 0x18, 0x0, 0x0, 0x0, 0x16, 0x14, 0x14, 0x14, 0x17, 0x13, 0x15, 0x13, 0x11, 0x13, 0x13, 0x17, 0x14, 0x15, 0x10, 0x10, 0x10, 0x15, 0x13, 0x12, 0x12, 0x18, 0x15, 0x16, 0x10, 0xa, 0xe, 0x15, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x15, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0, 0x16, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x78, 0x83, 0x78, 0x78, 0x78, 0x7e, 0x83, 0x0, 0x15, 0x14, 0xd, 0x4, 0xb, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x6e, 0x71, 0x6b, 0x68, 0x6e, 0x65, 0x71, 0x13, 0x10, 0x10, 0xe, 0xf, 0x16, 0x10, 0x9, 0xc, 0xc, 0x12, 0xb, 0xa, 0xe, 0x11, 0xd, 0xd, 0xf, 0x13, 0x14, 0x14, 0x14, 0x16, 0x0, 0x0, 0x0, 0x11, 0xc, 0xc, 0xc, 0xc, 0xc, 0x14, 0x15, 0xd, 0x9, 0xe, 0x8, 0x7, 0x9, 0xc, 0x17, 0x0, 0xf, 0xb, 0xb, 0xa, 0x12, 0x11, 0x16, 0x14, 0x10, 0x10, 0xe, 0xb, 0xc, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0xd, 0x4, 0xb, 0xb, 0x5, 0x4, 0x11, 0x14, 0xe, 0xe, 0xe, 0xe, 0xd, 0xc, 0xa, 0x17, 0x14, 0xa, 0x13, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0xe, 0x14, 0xe, 0x7, 0x13, 0x12, 0xa, 0x12, 0x12, 0x17, 0x13, 0x18, 0x16, 0xb, 0xb, 0x10, 0x13, 0x8, 0xc, 0x6, 0x2, 0x2, 0x6, 0x6, 0x3, 0x3, 0x4, 0x5, 0x9, 0x5, 0x3, 0x5, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x15, 0x10, 0xe, 0xd, 0x9, 0xd, 0xb, 0xf, 0xb, 0xe, 0xd, 0xf, 0xe, 0x13, 0x11, 0x12, 0x15, 0x18, 0x12, 0x8, 0x3, 0x4, 0x3, 0x4, 0x3, 0xc, 0x11, 0x4, 0x3, 0x4, 0x4, 0x3, 0x6, 0x10, 0x7, 0x4, 0x7, 0xc, 0x9, 0x3, 0x4, 0x6, 0x9, 0xd, 0x8, 0x4, 0xd, 0x17, 0x18, 0x18, 0xd, 0xa, 0x16, 0x0, 0x0, 0x15, 0x11, 0x12, 0x13, 0x17, 0x15, 0x15, 0x14, 0x15, 0x16, 0x15, 0x17, 0x14, 0x16, 0x15, 0x17, 0x16, 0x17, 0x16, 0x17, 0x15, 0x17, 0x11, 0x13, 0x12, 0xf, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x18, 0x17, 0x16, 0x17, 0x16, 0x16, 0x15, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x78, 0x83, 0x78, 0x83, 0x78, 0x83, 0x78, 0x0, 0x16, 0x16, 0x10, 0x4, 0x7, 0x14, 0x0, 0x18, 0x17, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x15, 0x14, 0x16, 0x18, 0x17, 0x13, 0xf, 0x7d, 0x82, 0x77, 0x87, 0x82, 0x87, 0x79, 0xe, 0x10, 0xd, 0xa, 0xc, 0xe, 0xe, 0xe, 0x12, 0x15, 0x17, 0x15, 0x13, 0x13, 0x17, 0x0, 0x0, 0x0, 0x12, 0x13, 0xf, 0xf, 0xe, 0x17, 0x0, 0x13, 0x9, 0xc, 0x9, 0xa, 0xc, 0x11, 0x0, 0x0, 0x12, 0xc, 0xd, 0x9, 0xa, 0xe, 0x10, 0x0, 0x17, 0x13, 0x12, 0x13, 0x14, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x17, 0x13, 0x17, 0x17, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x17, 0x0, 0x0, 0x0, 0x13, 0x6, 0x5, 0xd, 0x8, 0x8, 0xb, 0x16, 0xd, 0x11, 0x11, 0x12, 0x13, 0x13, 0x11, 0xd, 0x11, 0x17, 0x10, 0xa, 0x15, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x13, 0x13, 0x17, 0x0, 0x13, 0x13, 0x15, 0x10, 0xe, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x18, 0x17, 0xd, 0x10, 0x7, 0x2, 0x4, 0x5, 0x5, 0x4, 0x3, 0x4, 0x4, 0x7, 0x3, 0x4, 0x5, 0x4, 0x5, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x15, 0x16, 0x16, 0x13, 0x11, 0xe, 0x9, 0x12, 0xa, 0xd, 0xc, 0xf, 0xd, 0x16, 0x12, 0x14, 0xe, 0x11, 0xe, 0x4, 0x5, 0x5, 0x4, 0x3, 0x9, 0x9, 0x5, 0x5, 0x6, 0x4, 0x3, 0x3, 0xb, 0xc, 0x3, 0x8, 0x14, 0xf, 0x5, 0x4, 0xc, 0xf, 0x9, 0x6, 0x5, 0x5, 0x5, 0x10, 0x17, 0x0, 0x12, 0x6, 0x12, 0x0, 0x0, 0x16, 0x16, 0x11, 0xd, 0x12, 0x11, 0x10, 0x10, 0x11, 0x15, 0x11, 0x13, 0xd, 0x10, 0x11, 0x15, 0x15, 0x16, 0x13, 0x15, 0x12, 0x13, 0xe, 0x11, 0x10, 0x11, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x15, 0x18, 0x15, 0x0, 0x15, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x17, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x16, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x78, 0x83, 0x78, 0x78, 0x78, 0x78, 0x83, 0x0, 0x15, 0x16, 0x16, 0x8, 0x5, 0x13, 0x17, 0x15, 0x0, 0x0, 0x17, 0x0, 0x10, 0x15, 0x13, 0xc, 0xd, 0xd, 0x15, 0x14, 0xf, 0xb, 0xa, 0xd, 0x7d, 0x82, 0x87, 0x77, 0x82, 0x6a, 0x6e, 0x17, 0x17, 0x15, 0x13, 0x12, 0x0, 0x0, 0x0, 0x0, 0x11, 0x10, 0x11, 0xa, 0xb, 0x14, 0x0, 0x0, 0x13, 0x8, 0xb, 0x9, 0xc, 0xf, 0x0, 0x0, 0x15, 0xe, 0xc, 0x9, 0xb, 0x10, 0x16, 0x0, 0x11, 0xf, 0x14, 0x12, 0x13, 0x13, 0x17, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x16, 0x17, 0x16, 0x15, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x14, 0x15, 0x16, 0x14, 0x15, 0xb, 0xe, 0x17, 0x18, 0x0, 0xa, 0x4, 0xb, 0xc, 0xa, 0x6, 0x12, 0x15, 0xd, 0x12, 0x10, 0x10, 0x17, 0xf, 0xd, 0xf, 0x10, 0x15, 0x15, 0x10, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x10, 0x9, 0xe, 0x16, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x18, 0x0, 0x0, 0xe, 0xe, 0xa, 0x5, 0x3, 0xa, 0x10, 0x5, 0x3, 0x4, 0x6, 0x8, 0x4, 0x3, 0x4, 0x4, 0x3, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xf, 0x12, 0x17, 0x17, 0x13, 0x11, 0xf, 0x14, 0x11, 0x10, 0x11, 0xd, 0xe, 0xd, 0x11, 0xd, 0x11, 0xe, 0x10, 0x11, 0x14, 0x9, 0x3, 0x5, 0x5, 0x5, 0x5, 0xe, 0x5, 0x2, 0x8, 0x5, 0x3, 0x7, 0x5, 0x9, 0x6, 0x3, 0x5, 0xa, 0x7, 0x7, 0x7, 0xd, 0x17, 0x18, 0xf, 0x6, 0x9, 0x6, 0xc, 0x17, 0x17, 0x0, 0x11, 0x11, 0x0, 0x18, 0x15, 0x15, 0x14, 0x15, 0x16, 0x15, 0x14, 0x13, 0x15, 0x17, 0x14, 0x16, 0x13, 0x12, 0x11, 0x13, 0x0, 0x0, 0x0, 0x16, 0xf, 0x10, 0x10, 0x14, 0x15, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x7a, 0x83, 0x7a, 0x78, 0x78, 0x85, 0x85, 0x17, 0x10, 0x16, 0x18, 0xa, 0x6, 0x12, 0x16, 0x14, 0x17, 0x0, 0x17, 0x17, 0xd, 0x15, 0xc, 0xf, 0x12, 0x16, 0x0, 0x17, 0x18, 0x16, 0x16, 0x18, 0x6b, 0x75, 0x7d, 0x79, 0x6e, 0x6b, 0x6b, 0x0, 0x11, 0xe, 0x9, 0xc, 0x13, 0x0, 0x0, 0x0, 0x16, 0xc, 0x8, 0x8, 0xe, 0x18, 0x18, 0x17, 0xb, 0x7, 0x8, 0x9, 0xa, 0xe, 0x10, 0x17, 0x14, 0x12, 0x11, 0x11, 0x14, 0x16, 0x16, 0x17, 0x15, 0x16, 0x16, 0x15, 0x18, 0x17, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x16, 0x17, 0x17, 0x16, 0x15, 0x16, 0x16, 0x18, 0x10, 0xb, 0xe, 0xa, 0xa, 0xd, 0x13, 0x16, 0x18, 0x11, 0x5, 0x5, 0xe, 0x8, 0x5, 0x8, 0x18, 0x15, 0xe, 0xf, 0x10, 0x14, 0x16, 0xc, 0xa, 0xd, 0xc, 0x12, 0x0, 0x11, 0xe, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x16, 0xf, 0x7, 0x7, 0x12, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x0, 0x13, 0xf, 0x16, 0x17, 0x13, 0x15, 0xd, 0x4, 0x3, 0x7, 0xf, 0x7, 0x5, 0x5, 0xb, 0xb, 0x4, 0x3, 0x4, 0x4, 0x4, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xe, 0x6, 0xf, 0x11, 0x12, 0xf, 0xc, 0x9, 0xf, 0x17, 0x11, 0x11, 0xf, 0x10, 0xe, 0x13, 0xf, 0x11, 0xd, 0xf, 0x15, 0x16, 0x7, 0x3, 0x4, 0x7, 0x5, 0x9, 0x8, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x8, 0x9, 0x5, 0x4, 0x3, 0x3, 0x4, 0x8, 0x5, 0xb, 0x12, 0x10, 0x14, 0xc, 0x4, 0x5, 0x8, 0x11, 0x18, 0x0, 0x18, 0x12, 0x0, 0x0, 0x16, 0xe, 0xe, 0x10, 0x13, 0x13, 0x14, 0x12, 0x15, 0x18, 0x16, 0x17, 0x16, 0x15, 0x15, 0x18, 0x0, 0x0, 0x17, 0x17, 0x16, 0x17, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x18, 0x16, 0x18, 0x18, 0x17, 0x16, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x18, 0x17, 0x17, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x13, 0x13, 0x12, 0x12, 0x13, 0x15, 0x84, 0x85, 0x7a, 0x8a, 0x84, 0x89, 0x88, 0x13, 0xa, 0x13, 0x17, 0x7, 0x4, 0xf, 0x17, 0x16, 0x18, 0x0, 0x0, 0x12, 0x13, 0x10, 0xd, 0x0, 0x0, 0x17, 0xc, 0x10, 0x0, 0x0, 0x12, 0x10, 0x8c, 0x81, 0x81, 0x8c, 0x75, 0x6b, 0x6b, 0x12, 0xb, 0x9, 0x4, 0x10, 0x16, 0x0, 0x17, 0x14, 0x11, 0xa, 0x8, 0xe, 0x12, 0x17, 0x0, 0xe, 0x4, 0x5, 0x7, 0xb, 0xc, 0x11, 0x12, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x15, 0x14, 0x11, 0xf, 0x10, 0x11, 0x0, 0x0, 0x18, 0xe, 0xc, 0xd, 0xd, 0xa, 0xb, 0xe, 0x12, 0x13, 0xc, 0x8, 0x6, 0x6, 0x3, 0x10, 0x18, 0x16, 0x18, 0x9, 0x4, 0x9, 0xb, 0x5, 0x4, 0x11, 0x0, 0x13, 0x10, 0x11, 0x13, 0x18, 0x10, 0xa, 0xa, 0x9, 0xe, 0x11, 0x13, 0x15, 0xc, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x9, 0x4, 0x5, 0xe, 0x18, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x18, 0x15, 0xd, 0xb, 0x14, 0x0, 0x16, 0xe, 0x4, 0x3, 0x3, 0xa, 0xd, 0xb, 0xf, 0xa, 0x4, 0x2, 0x3, 0x6, 0x4, 0x7, 0xf, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0xf, 0x6, 0xc, 0xb, 0xb, 0xa, 0xb, 0xc, 0xb, 0xb, 0x13, 0xb, 0xc, 0xe, 0x10, 0xc, 0xd, 0xc, 0x12, 0xd, 0xf, 0x12, 0x14, 0x9, 0x4, 0x5, 0x5, 0x3, 0x6, 0x4, 0x5, 0x6, 0x3, 0x3, 0x4, 0x4, 0x9, 0x6, 0x5, 0x3, 0x3, 0x5, 0x5, 0x8, 0x5, 0x4, 0x6, 0x7, 0xf, 0x10, 0xc, 0x8, 0x5, 0x10, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x15, 0x17, 0x14, 0x14, 0x16, 0x13, 0x15, 0x13, 0x10, 0x14, 0x12, 0x16, 0x10, 0xf, 0x11, 0x13, 0x12, 0x10, 0x11, 0x17, 0x0, 0x0, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xf, 0x10, 0xf, 0xf, 0x10, 0xf, 0x12, 0x12, 0x11, 0x88, 0x84, 0x84, 0x90, 0x84, 0x84, 0x85, 0x12, 0xc, 0xf, 0x16, 0x8, 0x3, 0xe, 0x15, 0x16, 0x18, 0x13, 0x16, 0xd, 0x14, 0xd, 0x13, 0x0, 0x18, 0xe, 0x4, 0x12, 0x0, 0x16, 0xb, 0xb, 0x96, 0x81, 0x95, 0x79, 0x63, 0x5f, 0x6b, 0xe, 0xb, 0xa, 0xc, 0x13, 0x0, 0x0, 0x13, 0xe, 0xf, 0xf, 0x10, 0x14, 0x17, 0x18, 0x0, 0x16, 0x13, 0x14, 0x15, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x16, 0x10, 0x11, 0x17, 0x18, 0x18, 0x10, 0xa, 0x9, 0x9, 0x9, 0xb, 0x13, 0x17, 0x17, 0x13, 0xb, 0xa, 0xc, 0xa, 0x9, 0x12, 0x15, 0x17, 0x15, 0x9, 0x9, 0x4, 0x6, 0xa, 0x14, 0x16, 0x18, 0x18, 0x6, 0x4, 0xd, 0x9, 0x4, 0xb, 0x17, 0x18, 0x11, 0x10, 0x13, 0x14, 0x0, 0xe, 0xd, 0xa, 0xa, 0xb, 0xa, 0xc, 0x11, 0xc, 0xe, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x16, 0x7, 0x4, 0x8, 0xc, 0x17, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x11, 0x17, 0x0, 0x14, 0x13, 0x11, 0x16, 0x12, 0x8, 0x3, 0x6, 0x4, 0x8, 0xd, 0x9, 0xe, 0x14, 0x7, 0x3, 0x9, 0x12, 0x9, 0x9, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x11, 0x8, 0x9, 0xc, 0x8, 0x6, 0xa, 0xf, 0xc, 0xd, 0xe, 0x10, 0x6, 0xd, 0xe, 0x10, 0xd, 0xe, 0xc, 0x12, 0xc, 0xd, 0xd, 0xe, 0x7, 0x4, 0x4, 0x3, 0x4, 0x5, 0x5, 0xb, 0xa, 0x5, 0x6, 0x4, 0xb, 0x8, 0x4, 0x6, 0x5, 0x4, 0x6, 0x4, 0x3, 0x4, 0x3, 0x3, 0x6, 0xe, 0x8, 0x12, 0x11, 0x6, 0x13, 0x0, 0x0, 0x17, 0x14, 0x0, 0x18, 0x13, 0x0, 0x13, 0x12, 0x15, 0x15, 0x17, 0x16, 0x16, 0x17, 0x16, 0x17, 0x12, 0x14, 0x16, 0x16, 0xf, 0xf, 0x14, 0x17, 0x16, 0x18, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x17, 0x17, 0x0, 0x17, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x18, 0x0, 0x16, 0x18, 0x16, 0x18, 0x16, 0x18, 0x18, 0x17, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x12, 0x13, 0x15, 0x18, 0x0, 0x16, 0x14, 0x14, 0x12, 0xd, 0x9, 0xc, 0xd, 0x10, 0x12, 0x13, 0x15, 0x17, 0x17, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7a, 0x12, 0x9, 0x12, 0x14, 0x7, 0x3, 0xc, 0x15, 0x17, 0x18, 0x10, 0x11, 0x11, 0x14, 0xe, 0x0, 0x18, 0xf, 0x6, 0x7, 0x18, 0x0, 0xf, 0xa, 0x9, 0x81, 0x8c, 0x7c, 0x6a, 0x6b, 0x6b, 0x6b, 0x11, 0x11, 0x15, 0x0, 0x17, 0x18, 0x0, 0x18, 0x18, 0x17, 0x17, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x15, 0x12, 0x13, 0x17, 0x0, 0x14, 0xc, 0xc, 0xc, 0x6, 0xa, 0x14, 0x15, 0x17, 0xa, 0x6, 0x9, 0xa, 0x9, 0xb, 0x15, 0x0, 0x0, 0x10, 0xb, 0xb, 0xb, 0x9, 0xc, 0x14, 0x18, 0x18, 0x10, 0xa, 0x8, 0x9, 0xf, 0x0, 0x0, 0x16, 0x0, 0x17, 0x8, 0x8, 0xf, 0x5, 0x8, 0x13, 0x15, 0x11, 0xd, 0x12, 0x11, 0x14, 0x14, 0xe, 0xe, 0xd, 0xc, 0xc, 0xd, 0xb, 0xe, 0x14, 0xc, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x16, 0x7, 0x9, 0xd, 0x8, 0xc, 0x14, 0x0, 0x0, 0x18, 0x18, 0x14, 0xf, 0x12, 0xf, 0xe, 0x11, 0xe, 0xa, 0x7, 0x7, 0x7, 0x6, 0x4, 0x6, 0xa, 0x8, 0xe, 0x18, 0x9, 0x2, 0x9, 0x10, 0x7, 0x6, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x4, 0x7, 0xb, 0x7, 0xc, 0xe, 0x13, 0x10, 0xe, 0xd, 0xb, 0xf, 0xa, 0xd, 0xd, 0xf, 0xd, 0xe, 0xc, 0x10, 0xc, 0xc, 0xd, 0xf, 0x7, 0x3, 0x4, 0x7, 0x3, 0x3, 0x4, 0x5, 0x6, 0xa, 0x8, 0xa, 0xf, 0x4, 0x3, 0x7, 0x6, 0x3, 0x4, 0x5, 0x4, 0x3, 0x6, 0x9, 0x7, 0xf, 0xd, 0xe, 0x10, 0xb, 0xc, 0x15, 0x0, 0x14, 0x10, 0x18, 0x0, 0x15, 0x0, 0x0, 0x18, 0x18, 0x15, 0x18, 0x0, 0x16, 0x18, 0x17, 0x17, 0x11, 0x15, 0x0, 0x0, 0x10, 0x12, 0x15, 0x18, 0x17, 0x0, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x17, 0x16, 0x14, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x17, 0x13, 0xf, 0xf, 0x10, 0x13, 0x12, 0x10, 0x10, 0x12, 0x13, 0x13, 0x14, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x83, 0x78, 0x78, 0x85, 0x7a, 0x7a, 0x93, 0xc, 0x5, 0xe, 0x16, 0xb, 0x4, 0x6, 0x10, 0x15, 0x16, 0x16, 0x14, 0x18, 0x11, 0x12, 0x0, 0x12, 0x9, 0x5, 0xe, 0x0, 0x18, 0xc, 0xc, 0x8, 0x7c, 0x87, 0x82, 0x79, 0x6e, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x18, 0x18, 0x17, 0x14, 0x18, 0x18, 0x18, 0x0, 0x18, 0x16, 0x14, 0x13, 0x14, 0x17, 0x18, 0x17, 0x11, 0x11, 0xc, 0xb, 0xc, 0x12, 0x0, 0x15, 0xb, 0xa, 0xf, 0x9, 0x9, 0xf, 0x18, 0x17, 0x12, 0xa, 0xa, 0xc, 0xc, 0xa, 0xf, 0x14, 0x0, 0x18, 0xe, 0xa, 0xb, 0xc, 0x13, 0x16, 0x0, 0x0, 0x0, 0x16, 0x15, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x14, 0x8, 0x4, 0xe, 0xa, 0x3, 0xe, 0x17, 0x16, 0x11, 0x11, 0x16, 0x11, 0x12, 0xa, 0x10, 0xc, 0xd, 0xd, 0xe, 0xd, 0xc, 0xa, 0xd, 0xb, 0x7, 0x13, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x17, 0x12, 0xd, 0x10, 0x17, 0x13, 0xa, 0xf, 0x15, 0x0, 0x18, 0x12, 0x10, 0xb, 0x7, 0x9, 0xa, 0x12, 0x10, 0x5, 0x6, 0xa, 0xa, 0x5, 0x7, 0x7, 0x7, 0x6, 0xb, 0x0, 0xd, 0x2, 0x3, 0x5, 0x5, 0x7, 0xb, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x8, 0x8, 0xc, 0x5, 0xd, 0x0, 0x17, 0x11, 0x12, 0x10, 0x6, 0xc, 0xe, 0xc, 0xe, 0x11, 0xe, 0xe, 0xd, 0xf, 0xc, 0xe, 0xe, 0xe, 0x7, 0x2, 0x6, 0xe, 0x6, 0x4, 0x4, 0x6, 0x9, 0x7, 0x9, 0xe, 0x7, 0x4, 0x4, 0x7, 0x5, 0x3, 0x3, 0x7, 0x6, 0x4, 0x4, 0x7, 0x4, 0x9, 0xc, 0x8, 0x9, 0x8, 0x8, 0x13, 0x0, 0x14, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x15, 0x12, 0x12, 0x12, 0x12, 0x11, 0x16, 0x10, 0x13, 0x13, 0x18, 0x17, 0x17, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x15, 0x17, 0x12, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x0, 0x18, 0x0, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x12, 0xd, 0xc, 0xb, 0xb, 0xd, 0xe, 0x13, 0x13, 0x14, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x16, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x83, 0x83, 0x7a, 0x78, 0x83, 0x90, 0x88, 0x7, 0x4, 0x8, 0x10, 0xc, 0xa, 0x5, 0x8, 0xb, 0xf, 0x10, 0x13, 0xe, 0x10, 0x16, 0x16, 0x13, 0xe, 0x10, 0x18, 0x18, 0x17, 0x15, 0x15, 0x14, 0x6e, 0x71, 0x71, 0x6b, 0x71, 0x65, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x13, 0x15, 0x0, 0x0, 0x0, 0x15, 0xd, 0xb, 0xb, 0x9, 0xd, 0x18, 0x18, 0x14, 0x9, 0xb, 0xa, 0xa, 0x14, 0x18, 0x0, 0xf, 0x7, 0xb, 0xb, 0x8, 0xa, 0x13, 0x17, 0x17, 0xa, 0x9, 0xd, 0xa, 0xd, 0xd, 0x15, 0x17, 0x17, 0x17, 0x13, 0x13, 0x15, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x17, 0x0, 0x9, 0x2, 0x6, 0xf, 0x5, 0x3, 0x14, 0x0, 0x17, 0x11, 0x12, 0x14, 0x14, 0xc, 0x8, 0xe, 0xe, 0xb, 0xd, 0xf, 0x15, 0xb, 0x6, 0xa, 0xc, 0x5, 0x7, 0x16, 0x0, 0x0, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x14, 0x6, 0x9, 0x18, 0x0, 0x12, 0xc, 0x7, 0xd, 0x12, 0x11, 0xf, 0xf, 0xe, 0xa, 0x9, 0x8, 0x9, 0xa, 0x8, 0x8, 0x4, 0xf, 0x13, 0xc, 0x4, 0x4, 0x7, 0xd, 0xa, 0x6, 0xa, 0xd, 0x11, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x8, 0x8, 0x4, 0xd, 0x0, 0x12, 0xd, 0x15, 0x16, 0x6, 0xb, 0x15, 0xd, 0xd, 0x11, 0xc, 0xc, 0xc, 0xd, 0xb, 0x10, 0xf, 0x13, 0x9, 0x4, 0x4, 0x6, 0x7, 0x9, 0x5, 0x9, 0x4, 0x7, 0xe, 0x5, 0x6, 0x5, 0x4, 0x4, 0x3, 0x6, 0x6, 0x4, 0xa, 0x9, 0x9, 0x6, 0x4, 0x9, 0x9, 0x9, 0xa, 0x7, 0x8, 0x14, 0x0, 0x0, 0x17, 0x0, 0x0, 0x17, 0x0, 0x16, 0x16, 0x0, 0x13, 0x12, 0x13, 0x14, 0x12, 0x11, 0x17, 0x13, 0x15, 0x13, 0x18, 0x11, 0x10, 0x12, 0x16, 0x10, 0x16, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x16, 0x13, 0x10, 0xf, 0xc, 0xc, 0xc, 0x10, 0x10, 0x12, 0x14, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x17, 0x17, 0x14, 0x15, 0x16, 0x16, 0x16, 0x15, 0x12, 0xc, 0xb, 0x89, 0x88, 0x85, 0x78, 0x7e, 0x89, 0x9c, 0x4, 0x4, 0x5, 0x9, 0x9, 0xb, 0x7, 0x13, 0x15, 0x18, 0x17, 0x14, 0xb, 0x14, 0x18, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x6b, 0x6e, 0x6e, 0x6b, 0x5f, 0x6e, 0x6e, 0x14, 0x11, 0x15, 0x0, 0x16, 0x14, 0x0, 0x11, 0xa, 0x9, 0xd, 0x16, 0x17, 0x10, 0xa, 0x9, 0x9, 0xa, 0x8, 0x10, 0x0, 0x0, 0xc, 0xb, 0xb, 0x9, 0x10, 0x0, 0x0, 0x17, 0xb, 0x8, 0xe, 0x7, 0x4, 0xe, 0x12, 0x11, 0x12, 0xc, 0x10, 0x14, 0x12, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x5, 0x2, 0xa, 0xa, 0x3, 0xb, 0x0, 0x0, 0x16, 0xc, 0xf, 0x12, 0x13, 0xd, 0x10, 0xa, 0xb, 0xb, 0xc, 0xe, 0x14, 0x11, 0x7, 0x5, 0xc, 0x7, 0x5, 0xf, 0x17, 0x0, 0x18, 0x17, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x6, 0xe, 0x13, 0x0, 0x15, 0x11, 0x10, 0x7, 0x8, 0x6, 0x5, 0x7, 0xc, 0xb, 0x5, 0x5, 0x9, 0x9, 0x6, 0x7, 0x15, 0x11, 0xb, 0x7, 0x5, 0x8, 0x7, 0x6, 0x6, 0x9, 0x7, 0x6, 0xb, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xe, 0x7, 0x7, 0x15, 0x17, 0xa, 0x9, 0x10, 0x18, 0xd, 0xb, 0x16, 0x11, 0xc, 0xd, 0xb, 0xd, 0x10, 0x14, 0xd, 0xb, 0xe, 0x15, 0x9, 0x3, 0x3, 0x3, 0x6, 0x6, 0x8, 0x7, 0x4, 0x6, 0x7, 0x4, 0x5, 0x3, 0x4, 0x4, 0x4, 0x8, 0x7, 0x4, 0x6, 0xb, 0xf, 0x5, 0x9, 0xb, 0x6, 0xb, 0xf, 0xc, 0xd, 0x15, 0x0, 0x18, 0x0, 0x0, 0x18, 0x16, 0x18, 0x13, 0x12, 0x16, 0x13, 0x16, 0x16, 0x15, 0x14, 0x10, 0x14, 0x11, 0x15, 0x13, 0x12, 0xf, 0xf, 0xf, 0x12, 0x13, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x15, 0x18, 0x0, 0x0, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x0, 0x16, 0x18, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x17, 0x16, 0x16, 0x18, 0x0, 0x16, 0x13, 0x15, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x13, 0x10, 0x13, 0x10, 0xd, 0xc, 0xc, 0x10, 0xf, 0x11, 0x12, 0xf, 0x10, 0x12, 0x14, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x16, 0x12, 0x11, 0x16, 0x0, 0x17, 0x11, 0x14, 0x14, 0x16, 0x17, 0x13, 0xd, 0x11, 0x6, 0x5, 0x9e, 0x8f, 0x85, 0x7a, 0x88, 0x93, 0x99, 0x6, 0x7, 0x4, 0x9, 0x9, 0xa, 0x9, 0x17, 0x0, 0x17, 0x16, 0xa, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x18, 0x16, 0x11, 0x14, 0x71, 0x6e, 0x63, 0x6b, 0x71, 0x87, 0x7c, 0x9, 0xd, 0xf, 0x0, 0xe, 0x10, 0x16, 0xd, 0xb, 0xb, 0xf, 0x18, 0x16, 0xd, 0x7, 0x9, 0x9, 0x9, 0x9, 0x12, 0x17, 0x12, 0xb, 0xa, 0x8, 0x8, 0x16, 0x0, 0x18, 0x16, 0xe, 0xc, 0x10, 0xc, 0x10, 0x14, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x15, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0xb, 0x3, 0x6, 0xc, 0x5, 0x6, 0x16, 0x13, 0x16, 0x10, 0xd, 0x14, 0x15, 0xc, 0xb, 0x9, 0x5, 0x8, 0xf, 0xb, 0xc, 0xe, 0xe, 0xc, 0x8, 0x9, 0x12, 0xd, 0xa, 0x12, 0x0, 0x0, 0x0, 0x16, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xd, 0xb, 0x15, 0x0, 0x0, 0x14, 0x9, 0x4, 0x7, 0x9, 0xf, 0xd, 0x12, 0x13, 0x8, 0x7, 0x6, 0x9, 0x7, 0x7, 0xe, 0x7, 0x6, 0x5, 0x4, 0x2, 0x2, 0x7, 0xc, 0x9, 0x4, 0x4, 0x6, 0xa, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xa, 0xa, 0x11, 0x10, 0x5, 0x6, 0x7, 0xd, 0xb, 0xb, 0x10, 0x13, 0xb, 0xc, 0xd, 0x10, 0xf, 0x14, 0xd, 0xb, 0x11, 0x15, 0x9, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x6, 0xa, 0x7, 0x4, 0x3, 0x5, 0x5, 0x3, 0x8, 0xd, 0x5, 0xb, 0xe, 0xc, 0x6, 0xe, 0x10, 0x13, 0x17, 0x18, 0x18, 0x0, 0x0, 0x15, 0x12, 0x0, 0x15, 0x13, 0x18, 0x16, 0x17, 0x0, 0x18, 0x17, 0x11, 0x14, 0xf, 0x13, 0x17, 0x16, 0x11, 0x12, 0xf, 0x10, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x18, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x17, 0x11, 0x13, 0x15, 0x16, 0x16, 0x11, 0x10, 0x10, 0x10, 0x10, 0xf, 0xd, 0x10, 0x10, 0x10, 0xf, 0x14, 0x11, 0x12, 0x13, 0x16, 0x17, 0x0, 0x18, 0x15, 0x13, 0x13, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0xe, 0xb, 0xa, 0xb, 0xd, 0x13, 0xb, 0x7, 0x13, 0x0, 0x0, 0x0, 0x14, 0xf, 0x13, 0xe, 0x8, 0x97, 0x89, 0x78, 0x85, 0x88, 0x8f, 0x9d, 0x6, 0x4, 0x4, 0xd, 0xc, 0xb, 0x9, 0x18, 0x0, 0x0, 0x13, 0xd, 0x17, 0x0, 0x0, 0x16, 0xc, 0x11, 0x18, 0x15, 0xb, 0x10, 0xd, 0xa, 0xb, 0x8c, 0x75, 0x6b, 0x79, 0x87, 0x92, 0x96, 0x7, 0x9, 0x14, 0x18, 0xd, 0x14, 0xd, 0xa, 0x9, 0x13, 0x16, 0x14, 0x14, 0xb, 0xb, 0xa, 0x9, 0xc, 0xf, 0x12, 0x17, 0x15, 0x12, 0xe, 0xf, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x17, 0x16, 0x16, 0x18, 0x0, 0x0, 0x0, 0xf, 0xe, 0xd, 0x10, 0x18, 0x18, 0x16, 0x17, 0x13, 0x5, 0x4, 0x6, 0x6, 0x3, 0xe, 0x0, 0x12, 0x14, 0xd, 0x13, 0x14, 0x12, 0x5, 0x2, 0x2, 0x3, 0x5, 0xb, 0xb, 0x9, 0xf, 0xc, 0xe, 0xf, 0x6, 0x10, 0x13, 0x8, 0xa, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x16, 0x11, 0x0, 0x18, 0x15, 0xe, 0x8, 0x8, 0xf, 0x17, 0x0, 0x14, 0x15, 0x18, 0xf, 0xf, 0xc, 0xa, 0x6, 0x8, 0x9, 0x4, 0x6, 0x7, 0xa, 0x7, 0x4, 0xf, 0xa, 0x2, 0x2, 0x3, 0x4, 0x4, 0xb, 0x15, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0xd, 0x8, 0x11, 0xe, 0x5, 0x11, 0x11, 0x7, 0xb, 0xc, 0xb, 0x12, 0xd, 0xf, 0xf, 0x12, 0xe, 0x12, 0xf, 0x10, 0x13, 0x16, 0xe, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0xb, 0xa, 0x4, 0x5, 0x7, 0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x9, 0x5, 0x9, 0xb, 0xa, 0x8, 0x8, 0xc, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x14, 0x0, 0x17, 0x15, 0x18, 0x14, 0x16, 0x14, 0x13, 0x15, 0x15, 0x17, 0x15, 0x16, 0x15, 0x17, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x15, 0x18, 0x15, 0x18, 0x16, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x14, 0x11, 0x10, 0x11, 0x11, 0x10, 0x13, 0x13, 0x15, 0x14, 0x12, 0x13, 0x14, 0x15, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x16, 0x15, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x17, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x0, 0x0, 0x0, 0x15, 0xd, 0x7, 0x5, 0xa, 0xe, 0x12, 0x16, 0x16, 0x14, 0x10, 0xf, 0xf, 0x11, 0x14, 0x0, 0x13, 0x11, 0x11, 0x15, 0x12, 0x7e, 0x83, 0x7a, 0x88, 0x8f, 0x99, 0x9e, 0x6, 0x9, 0xf, 0x15, 0x7, 0xa, 0x9, 0x16, 0x0, 0x15, 0xe, 0xe, 0x0, 0x18, 0xe, 0xb, 0x5, 0x11, 0x0, 0x10, 0x8, 0xb, 0xb, 0xe, 0xc, 0x77, 0x6e, 0x63, 0x7d, 0x8c, 0x8c, 0x96, 0x9, 0xc, 0x17, 0x14, 0xb, 0x12, 0xf, 0xe, 0xf, 0x0, 0x18, 0x16, 0x18, 0x11, 0x15, 0x15, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x16, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x16, 0x10, 0xc, 0xd, 0xc, 0xd, 0x13, 0x18, 0x16, 0x15, 0x8, 0x8, 0x8, 0x7, 0xf, 0x17, 0x16, 0x17, 0xc, 0x3, 0x4, 0x8, 0x6, 0xa, 0x16, 0x18, 0x18, 0x15, 0x11, 0x15, 0x15, 0xd, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0xa, 0xb, 0xd, 0xd, 0xe, 0xe, 0xb, 0xb, 0x12, 0xd, 0x9, 0x16, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x12, 0x0, 0x0, 0x15, 0x14, 0x16, 0x12, 0x12, 0x17, 0x18, 0x16, 0x16, 0x17, 0x14, 0x14, 0xe, 0x8, 0x9, 0x12, 0x9, 0x4, 0x8, 0x8, 0xf, 0xc, 0x8, 0x7, 0x5, 0x6, 0x4, 0x9, 0x8, 0x5, 0x5, 0x6, 0x8, 0xa, 0xd, 0x15, 0x18, 0x17, 0x0, 0x0, 0xf, 0xa, 0x10, 0xc, 0x3, 0x11, 0x0, 0x11, 0xc, 0xf, 0xb, 0xc, 0xc, 0xf, 0xf, 0x12, 0xe, 0x14, 0x10, 0x11, 0xe, 0x17, 0x14, 0x6, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x3, 0x5, 0x6, 0xd, 0xd, 0x3, 0x3, 0x5, 0x6, 0xb, 0x4, 0x6, 0x8, 0x5, 0x9, 0x7, 0x4, 0xa, 0x10, 0xe, 0x8, 0xb, 0x15, 0x18, 0x0, 0x18, 0x0, 0x17, 0xe, 0x17, 0x0, 0x15, 0x15, 0x16, 0x11, 0x14, 0x13, 0x13, 0x16, 0x17, 0x17, 0x17, 0x16, 0x12, 0x15, 0x11, 0xf, 0x10, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x18, 0x0, 0x10, 0x9, 0xd, 0x11, 0xe, 0x13, 0x15, 0x17, 0x16, 0x18, 0x17, 0x18, 0x17, 0x14, 0x16, 0x0, 0x0, 0x18, 0x17, 0x17, 0x15, 0x15, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x14, 0x12, 0x14, 0x15, 0xe, 0xf, 0xf, 0xe, 0x13, 0x0, 0x0, 0x12, 0x7, 0x4, 0x2, 0x2, 0x9, 0xc, 0xa, 0xe, 0x11, 0x15, 0x0, 0x0, 0x16, 0xb, 0x8, 0x10, 0x17, 0x18, 0x15, 0x16, 0x16, 0x7a, 0x78, 0x8a, 0x88, 0x9e, 0x9c, 0x8f, 0x9, 0x17, 0x0, 0x14, 0x8, 0x9, 0x8, 0xe, 0xe, 0x6, 0xe, 0x11, 0x16, 0x11, 0xb, 0x9, 0x9, 0x12, 0x17, 0x9, 0xc, 0xa, 0xb, 0xb, 0xd, 0x75, 0x6b, 0x6b, 0x7d, 0x87, 0x87, 0x87, 0xe, 0x11, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x13, 0x16, 0x17, 0x17, 0x0, 0x16, 0xc, 0xc, 0x11, 0xe, 0xf, 0x13, 0x0, 0x18, 0x17, 0xd, 0x9, 0xa, 0xd, 0xf, 0x10, 0x17, 0x18, 0x15, 0xd, 0x7, 0x7, 0x6, 0x4, 0xc, 0x17, 0x17, 0x14, 0x5, 0x3, 0x9, 0x8, 0x9, 0x12, 0x18, 0x12, 0x16, 0x13, 0x17, 0x14, 0x15, 0x7, 0x4, 0x3, 0x3, 0x4, 0x4, 0x2, 0x7, 0xd, 0xb, 0xd, 0xd, 0xd, 0xd, 0x7, 0xb, 0x11, 0x6, 0xc, 0x13, 0x16, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x13, 0x0, 0x0, 0x18, 0x15, 0x0, 0x16, 0x15, 0x15, 0x16, 0x17, 0x17, 0x12, 0xc, 0xe, 0xf, 0xa, 0xb, 0xc, 0xa, 0xa, 0xa, 0x8, 0x9, 0xf, 0x10, 0x6, 0x7, 0xc, 0x9, 0x10, 0xc, 0x6, 0x5, 0x9, 0x9, 0x11, 0xf, 0x9, 0xd, 0x8, 0xf, 0x16, 0x18, 0x15, 0xd, 0x10, 0xc, 0xe, 0x13, 0xf, 0x12, 0xe, 0x11, 0x11, 0xd, 0x13, 0xd, 0xc, 0xc, 0x12, 0x16, 0x14, 0x11, 0x13, 0x11, 0x9, 0x3, 0x5, 0x5, 0x8, 0x6, 0x4, 0x4, 0x8, 0x7, 0x6, 0x5, 0x4, 0x6, 0x8, 0x6, 0xe, 0xa, 0x5, 0x5, 0x4, 0xe, 0x13, 0xb, 0x7, 0xf, 0x14, 0xe, 0x12, 0x16, 0x18, 0x0, 0x0, 0x0, 0x16, 0x14, 0x14, 0x17, 0x12, 0x12, 0x16, 0x15, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x18, 0x17, 0x12, 0x15, 0x10, 0x10, 0x14, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x15, 0x13, 0x10, 0xd, 0xe, 0xe, 0xd, 0x8, 0x9, 0x13, 0x0, 0x0, 0x10, 0xb, 0x13, 0x0, 0x16, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x17, 0x0, 0x14, 0x16, 0x17, 0x15, 0xd, 0xb, 0x10, 0xc, 0xa, 0xe, 0x17, 0x14, 0x9, 0xe, 0xe, 0x15, 0x15, 0xf, 0x11, 0x9, 0x8, 0x6, 0x6, 0x6, 0x3, 0x5, 0x7, 0x6, 0x7, 0x9, 0xc, 0x11, 0x18, 0x15, 0x14, 0x13, 0x14, 0x17, 0x13, 0x16, 0x15, 0x83, 0x7e, 0x89, 0x8f, 0x99, 0x88, 0x9c, 0x13, 0x0, 0x0, 0xe, 0x8, 0x9, 0x9, 0x7, 0x5, 0x6, 0x14, 0x0, 0x18, 0xd, 0xa, 0x9, 0x15, 0x0, 0x12, 0x8, 0xc, 0x9, 0x9, 0x8, 0xd, 0x6e, 0x6b, 0x6b, 0x79, 0x71, 0x65, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x18, 0x0, 0x0, 0x0, 0xe, 0xf, 0xb, 0xf, 0x7, 0xe, 0x17, 0x0, 0x0, 0xe, 0x6, 0xd, 0xb, 0x8, 0xa, 0x17, 0x0, 0x15, 0xf, 0x9, 0x8, 0xd, 0xd, 0xa, 0x10, 0x0, 0x18, 0x15, 0x9, 0x8, 0x5, 0x5, 0x7, 0x12, 0x0, 0x18, 0xd, 0x3, 0x4, 0x6, 0x5, 0xe, 0x17, 0xf, 0xf, 0x10, 0x15, 0x15, 0x15, 0xf, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x2, 0x4, 0xb, 0xb, 0xb, 0xe, 0xe, 0xd, 0xb, 0x7, 0x10, 0x10, 0x7, 0x10, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x18, 0xf, 0x13, 0x16, 0x13, 0x18, 0x0, 0x18, 0x15, 0x11, 0xc, 0xa, 0xd, 0xc, 0xc, 0x7, 0x7, 0xd, 0xb, 0xa, 0x12, 0xd, 0x6, 0x4, 0x6, 0x6, 0x5, 0xf, 0xd, 0x3, 0x5, 0xb, 0xb, 0x18, 0x11, 0x4, 0x3, 0x3, 0x3, 0x7, 0xc, 0xd, 0xf, 0xd, 0xc, 0x8, 0x8, 0xa, 0x10, 0x11, 0xf, 0x12, 0xe, 0x10, 0xc, 0xf, 0xe, 0x14, 0x12, 0xe, 0xd, 0x15, 0x14, 0x7, 0x4, 0x3, 0x7, 0x15, 0xe, 0x8, 0x6, 0xb, 0x5, 0x4, 0x4, 0x5, 0xa, 0x4, 0x4, 0xd, 0xb, 0x8, 0x6, 0x4, 0x11, 0x0, 0x14, 0x9, 0x6, 0x12, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x12, 0x16, 0x13, 0x11, 0x16, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x11, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x14, 0x12, 0x11, 0xc, 0xc, 0x9, 0x6, 0x7, 0x7, 0x9, 0xb, 0xa, 0x5, 0x6, 0xe, 0x18, 0x18, 0x16, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x18, 0x17, 0x15, 0x12, 0x17, 0x13, 0x12, 0x17, 0x18, 0xd, 0xd, 0xf, 0x13, 0xe, 0x13, 0x18, 0x16, 0xb, 0xf, 0xf, 0xa, 0x9, 0x15, 0x0, 0x11, 0x10, 0x15, 0x15, 0x12, 0x7, 0x5, 0x6, 0x9, 0x8, 0x8, 0xc, 0xe, 0xa, 0xc, 0x10, 0xc, 0xa, 0xa, 0xb, 0x9, 0x8, 0x7, 0x11, 0x0, 0x12, 0x14, 0x0, 0x16, 0x17, 0x83, 0x85, 0x88, 0x99, 0x95, 0x8f, 0x89, 0x0, 0x0, 0x15, 0x9, 0x5, 0x6, 0x8, 0x4, 0x3, 0xc, 0x0, 0x0, 0x11, 0x8, 0x7, 0xe, 0x0, 0x0, 0x16, 0x14, 0x10, 0xf, 0xe, 0x11, 0x14, 0x6b, 0x6b, 0x6b, 0x63, 0x71, 0x71, 0x6b, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x16, 0x15, 0x17, 0x14, 0x12, 0x16, 0x18, 0x0, 0x14, 0xe, 0xb, 0xc, 0xe, 0x0, 0x15, 0x12, 0x9, 0xb, 0xc, 0xb, 0x7, 0xd, 0x0, 0x0, 0x15, 0xb, 0xa, 0xc, 0x7, 0xa, 0xf, 0x0, 0x0, 0x17, 0xb, 0xb, 0xb, 0xe, 0xa, 0x9, 0x14, 0x18, 0x17, 0x10, 0x8, 0x8, 0x6, 0xa, 0x12, 0x17, 0x18, 0x14, 0x8, 0x5, 0x5, 0x5, 0x3, 0x10, 0x18, 0x12, 0x12, 0xe, 0x13, 0x12, 0x15, 0x8, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x1, 0x4, 0xc, 0xd, 0xc, 0xf, 0xf, 0xe, 0x6, 0xa, 0x13, 0xa, 0xc, 0x13, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x0, 0x0, 0x15, 0x9, 0xe, 0xf, 0x10, 0x18, 0x18, 0x16, 0xf, 0xe, 0x9, 0x9, 0x10, 0x15, 0xd, 0x6, 0x8, 0xc, 0xd, 0xc, 0x12, 0xe, 0x4, 0x3, 0x3, 0x3, 0x3, 0x7, 0x9, 0x3, 0x4, 0x4, 0x11, 0x0, 0xa, 0x2, 0x6, 0xb, 0xf, 0xa, 0x4, 0x2, 0x7, 0xb, 0xd, 0xf, 0xd, 0x9, 0xe, 0x14, 0x16, 0x10, 0xe, 0x12, 0x11, 0x14, 0x11, 0x15, 0xe, 0xd, 0xd, 0x16, 0x12, 0xb, 0x5, 0x3, 0x5, 0xb, 0x11, 0x13, 0xe, 0x9, 0x3, 0x5, 0x5, 0x5, 0x5, 0x8, 0x4, 0xc, 0xa, 0x8, 0x5, 0x7, 0x17, 0x0, 0x10, 0x7, 0x9, 0x15, 0x16, 0x0, 0x0, 0x17, 0x17, 0x16, 0xf, 0x12, 0x0, 0x16, 0x17, 0x17, 0x0, 0x18, 0x12, 0x15, 0x12, 0x11, 0x12, 0x18, 0x18, 0x13, 0x16, 0x16, 0x15, 0x12, 0x10, 0x14, 0x12, 0x11, 0x12, 0xc, 0xc, 0xb, 0xc, 0xb, 0xd, 0x8, 0xa, 0x9, 0xa, 0xb, 0xd, 0x10, 0x13, 0x13, 0x9, 0x5, 0x9, 0xc, 0xc, 0x12, 0x14, 0x11, 0xe, 0x12, 0x17, 0x15, 0xc, 0xb, 0x15, 0x16, 0x16, 0xd, 0xd, 0xf, 0xa, 0xd, 0x11, 0xd, 0xd, 0x14, 0xe, 0xc, 0x10, 0x14, 0x18, 0x14, 0xc, 0xf, 0xe, 0xc, 0x14, 0x17, 0x17, 0xf, 0x11, 0x0, 0x13, 0x9, 0x8, 0x5, 0x4, 0x4, 0x8, 0xc, 0x8, 0xa, 0x9, 0x6, 0x4, 0x7, 0xe, 0x10, 0xc, 0x7, 0xa, 0xb, 0x9, 0xa, 0xa, 0x12, 0x0, 0x16, 0xd, 0x7e, 0x7a, 0x97, 0x99, 0x99, 0x9e, 0x7e, 0x18, 0x0, 0xf, 0x7, 0x4, 0x8, 0x9, 0x3, 0x3, 0x11, 0x0, 0x0, 0x10, 0xd, 0xe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x6b, 0x6b, 0x6e, 0x71, 0x6e, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x18, 0x16, 0x14, 0xa, 0x9, 0xb, 0xa, 0xd, 0x11, 0x13, 0xf, 0xa, 0xa, 0x7, 0x9, 0x13, 0x0, 0x15, 0xc, 0xc, 0xb, 0xe, 0x5, 0x6, 0x13, 0x0, 0x0, 0xf, 0xc, 0xc, 0x9, 0x8, 0x9, 0x14, 0x0, 0x0, 0x13, 0x9, 0x9, 0xf, 0xd, 0xf, 0x12, 0x16, 0x14, 0x11, 0x10, 0x10, 0xf, 0x11, 0x15, 0x17, 0x18, 0x17, 0x10, 0x4, 0x6, 0xd, 0x6, 0x3, 0x12, 0x14, 0xd, 0x11, 0x14, 0x15, 0x13, 0xd, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x7, 0xb, 0xd, 0x11, 0xf, 0xe, 0x9, 0x5, 0xf, 0x15, 0xc, 0xf, 0x17, 0x0, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xf, 0x0, 0x15, 0xb, 0x5, 0x5, 0xe, 0x16, 0x17, 0x18, 0x18, 0x14, 0xe, 0xc, 0xe, 0x11, 0x11, 0xa, 0x5, 0x9, 0xf, 0x10, 0xb, 0x14, 0xc, 0x3, 0x2, 0x3, 0x4, 0x3, 0x4, 0x3, 0x5, 0x6, 0xa, 0x18, 0x14, 0x5, 0xa, 0xd, 0xc, 0x17, 0x0, 0x14, 0x9, 0x7, 0x6, 0xa, 0xe, 0xe, 0xf, 0x14, 0x0, 0x0, 0x16, 0x10, 0x0, 0x14, 0xe, 0xd, 0x10, 0xc, 0x10, 0x11, 0x16, 0xf, 0x12, 0xd, 0x8, 0x4, 0x2, 0xd, 0xf, 0x8, 0x7, 0x6, 0x8, 0x8, 0x6, 0x5, 0x9, 0x7, 0xf, 0xf, 0x5, 0x3, 0x7, 0x12, 0x14, 0xd, 0x6, 0x9, 0x17, 0x17, 0x0, 0x0, 0x0, 0x17, 0x11, 0xb, 0x17, 0x18, 0x15, 0x17, 0x18, 0x0, 0x17, 0x16, 0x18, 0x18, 0x18, 0x18, 0x16, 0x16, 0x14, 0x14, 0xf, 0xa, 0xb, 0x9, 0xa, 0x8, 0xa, 0xd, 0xa, 0x9, 0xc, 0xe, 0xb, 0xf, 0xf, 0x11, 0x12, 0x15, 0x16, 0x16, 0x17, 0x18, 0x11, 0x8, 0x8, 0x9, 0x6, 0xf, 0x15, 0x14, 0xc, 0xd, 0x15, 0x16, 0x15, 0xc, 0xd, 0x14, 0x16, 0x14, 0xc, 0x16, 0x13, 0xf, 0x13, 0x13, 0xb, 0x11, 0x16, 0xe, 0xb, 0x14, 0x18, 0x18, 0x0, 0xe, 0xe, 0xc, 0xf, 0x14, 0x12, 0x17, 0x16, 0x15, 0x14, 0x9, 0x6, 0x4, 0x4, 0x3, 0x5, 0xc, 0x8, 0x5, 0x3, 0x2, 0x3, 0x5, 0xf, 0x10, 0x7, 0xb, 0x12, 0xf, 0xe, 0x8, 0x5, 0xd, 0x11, 0x18, 0x0, 0x14, 0x88, 0x8a, 0x99, 0x9e, 0x99, 0x93, 0x7a, 0x17, 0x14, 0x8, 0x7, 0x5, 0x9, 0x4, 0x2, 0x7, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b, 0x63, 0x6e, 0x71, 0x6e, 0x68, 0x65, 0x0, 0x16, 0x15, 0x11, 0x15, 0x16, 0x14, 0x16, 0x0, 0x15, 0xe, 0x8, 0xb, 0x7, 0xc, 0x16, 0x18, 0x14, 0xb, 0x8, 0x8, 0x8, 0xd, 0x18, 0x0, 0x18, 0xc, 0xe, 0xd, 0xa, 0x6, 0xb, 0x18, 0x0, 0x17, 0xb, 0xf, 0xf, 0x8, 0xb, 0xb, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x16, 0x0, 0x10, 0x3, 0x6, 0x8, 0x3, 0x5, 0x16, 0x17, 0xf, 0x11, 0x17, 0x11, 0x14, 0x6, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x7, 0xa, 0xd, 0xd, 0x8, 0xa, 0xc, 0x9, 0xa, 0x13, 0x14, 0xd, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xc, 0x14, 0xf, 0x5, 0x3, 0x6, 0xf, 0x13, 0x18, 0x0, 0x0, 0x15, 0xd, 0x11, 0x11, 0xa, 0x6, 0xa, 0x7, 0xb, 0x15, 0xf, 0x15, 0x16, 0x7, 0x2, 0x3, 0x4, 0x6, 0x7, 0x9, 0xd, 0x8, 0x5, 0x12, 0x16, 0x8, 0x4, 0x12, 0x12, 0x11, 0x14, 0x17, 0x0, 0xc, 0xd, 0x9, 0xa, 0x6, 0x8, 0xa, 0xf, 0x0, 0x0, 0x12, 0xe, 0x12, 0xf, 0xd, 0xd, 0x13, 0x12, 0x13, 0x16, 0x18, 0x12, 0x14, 0xf, 0x9, 0x5, 0x5, 0x7, 0x7, 0x4, 0x5, 0x7, 0xa, 0x5, 0x3, 0x5, 0xa, 0xe, 0xe, 0xf, 0x7, 0x4, 0x4, 0x10, 0x17, 0x14, 0x10, 0x10, 0x13, 0x13, 0x0, 0x0, 0x0, 0x17, 0x8, 0xa, 0x18, 0x14, 0x11, 0x10, 0x12, 0xe, 0xc, 0x11, 0x13, 0x14, 0x13, 0xd, 0xc, 0xa, 0xd, 0xb, 0x7, 0xe, 0x10, 0x10, 0xf, 0x10, 0x13, 0x14, 0x13, 0x15, 0x16, 0x15, 0x17, 0x18, 0x17, 0x18, 0x13, 0x16, 0x16, 0x15, 0x17, 0x13, 0x8, 0x9, 0xb, 0xa, 0xd, 0x18, 0x15, 0x13, 0xe, 0xf, 0x13, 0x14, 0x12, 0x10, 0x11, 0x15, 0x16, 0xe, 0x10, 0x0, 0x13, 0x12, 0x15, 0x16, 0xf, 0x11, 0xd, 0xd, 0x10, 0x17, 0x18, 0x17, 0x0, 0x13, 0x14, 0x14, 0x13, 0x12, 0x14, 0x0, 0x16, 0xe, 0x7, 0xb, 0x6, 0x5, 0x6, 0x3, 0x8, 0x9, 0x5, 0x3, 0x6, 0x4, 0x4, 0xd, 0xb, 0x5, 0x6, 0x11, 0x10, 0xf, 0xc, 0x13, 0x16, 0x12, 0xd, 0x17, 0x0, 0x0, 0x88, 0x95, 0x99, 0x99, 0x8f, 0x7a, 0x78, 0x0, 0xc, 0x6, 0x3, 0x5, 0x7, 0x5, 0x4, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xd, 0xc, 0xd, 0xe, 0xf, 0x13, 0x0, 0x18, 0x75, 0x87, 0x82, 0x8c, 0x82, 0x82, 0x6b, 0x15, 0xd, 0x8, 0x5, 0xa, 0xb, 0x9, 0x16, 0x0, 0xe, 0x6, 0x8, 0x9, 0xa, 0x11, 0x17, 0x0, 0x16, 0xa, 0x7, 0x6, 0x7, 0x13, 0x0, 0x12, 0x11, 0xf, 0xe, 0x13, 0x10, 0x13, 0x15, 0x18, 0x18, 0x16, 0x14, 0x17, 0x17, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x16, 0x18, 0x17, 0x15, 0x0, 0x0, 0x17, 0x14, 0x7, 0x4, 0x7, 0x5, 0x8, 0x10, 0x0, 0x11, 0xb, 0x14, 0x14, 0x13, 0x11, 0x6, 0x7, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x5, 0x3, 0x4, 0xa, 0xd, 0x8, 0x9, 0xf, 0x10, 0x10, 0x6, 0xd, 0x13, 0xd, 0xd, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0xe, 0x7, 0x6, 0x4, 0x4, 0x7, 0xd, 0xf, 0x18, 0x0, 0x0, 0x14, 0xc, 0xd, 0xf, 0xb, 0x3, 0x6, 0x5, 0x9, 0x11, 0x17, 0x14, 0xb, 0x3, 0x3, 0x3, 0x4, 0x5, 0x7, 0x8, 0xc, 0x5, 0x7, 0x16, 0xb, 0x3, 0x5, 0x11, 0x14, 0x11, 0x11, 0xe, 0x9, 0x3, 0x7, 0x7, 0x12, 0x10, 0x9, 0x8, 0xa, 0xc, 0x14, 0x13, 0x10, 0x10, 0xf, 0xd, 0xd, 0x14, 0x13, 0x16, 0x12, 0x13, 0xb, 0x8, 0x9, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x5, 0x6, 0x7, 0x5, 0x3, 0x2, 0x7, 0xb, 0x9, 0x8, 0x6, 0x3, 0x3, 0xe, 0x0, 0x0, 0x0, 0x18, 0x11, 0x16, 0x0, 0x0, 0x0, 0x17, 0x9, 0x5, 0x10, 0x16, 0x14, 0x11, 0xa, 0x8, 0xc, 0xc, 0xd, 0xe, 0xa, 0xb, 0xf, 0x10, 0x14, 0x12, 0x13, 0x15, 0x17, 0x17, 0x16, 0x17, 0x17, 0x17, 0x12, 0x0, 0x18, 0x15, 0x0, 0x18, 0x17, 0x15, 0x14, 0x13, 0xf, 0x11, 0x11, 0x8, 0x7, 0xa, 0xc, 0xa, 0x15, 0x0, 0x17, 0x13, 0xe, 0xd, 0x15, 0x18, 0x13, 0x15, 0x17, 0x0, 0x18, 0x13, 0x17, 0x0, 0x17, 0x15, 0x16, 0x0, 0x18, 0x18, 0x16, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x11, 0x6, 0x8, 0xc, 0x4, 0x5, 0x6, 0x5, 0x8, 0x4, 0x3, 0x4, 0x6, 0x4, 0x3, 0x4, 0x4, 0x9, 0x14, 0x13, 0x10, 0xf, 0x15, 0x18, 0x17, 0x10, 0x6, 0xf, 0x16, 0x18, 0x84, 0x9e, 0x95, 0x9e, 0x8a, 0x78, 0x78, 0x17, 0x9, 0x5, 0x3, 0x6, 0x4, 0x4, 0x8, 0x17, 0x0, 0x0, 0x18, 0x13, 0x13, 0x18, 0x0, 0xf, 0xa, 0x9, 0x9, 0x8, 0xa, 0x13, 0x0, 0x16, 0x77, 0x8c, 0x7c, 0x8c, 0x7c, 0x79, 0x6b, 0xf, 0xa, 0x8, 0xb, 0x9, 0x8, 0xc, 0x0, 0x0, 0xd, 0x4, 0x8, 0xb, 0xd, 0x18, 0x18, 0x0, 0x0, 0xc, 0x9, 0xa, 0xb, 0x17, 0x0, 0x13, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x15, 0xb, 0x2, 0x8, 0x9, 0x3, 0xe, 0x0, 0x14, 0xb, 0xc, 0x16, 0x11, 0x13, 0x8, 0x4, 0x5, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x5, 0x3, 0x7, 0xc, 0xc, 0xa, 0x11, 0x12, 0xf, 0x6, 0x6, 0xe, 0xa, 0x7, 0xd, 0x17, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x13, 0x12, 0x13, 0x13, 0x10, 0xf, 0xd, 0xc, 0xc, 0xd, 0xe, 0x6, 0x9, 0xa, 0x16, 0x0, 0x0, 0x13, 0xb, 0x8, 0xc, 0xa, 0x9, 0xa, 0x8, 0x10, 0x16, 0xe, 0x6, 0x6, 0x6, 0x9, 0x5, 0x4, 0x9, 0x7, 0x7, 0x6, 0x2, 0xe, 0xf, 0x6, 0x5, 0x6, 0x11, 0x12, 0x8, 0x6, 0x4, 0x3, 0x7, 0x5, 0x4, 0x12, 0xd, 0xa, 0xe, 0xc, 0xb, 0xd, 0xf, 0xd, 0xd, 0xd, 0x10, 0xd, 0x10, 0xf, 0x10, 0xf, 0x13, 0xd, 0xb, 0xa, 0x8, 0x5, 0x7, 0x6, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x6, 0xa, 0x9, 0xb, 0xb, 0xb, 0xb, 0xb, 0x6, 0xa, 0x17, 0x0, 0x18, 0x18, 0x13, 0x18, 0x0, 0x0, 0x0, 0x18, 0x11, 0x8, 0x9, 0x15, 0x17, 0x16, 0xd, 0xe, 0xf, 0x10, 0x12, 0x14, 0x13, 0x15, 0x17, 0x18, 0x13, 0xf, 0x13, 0x14, 0x14, 0x15, 0x15, 0x14, 0x16, 0x14, 0x12, 0x10, 0x12, 0x0, 0x18, 0xd, 0xe, 0xf, 0xa, 0x10, 0x8, 0xf, 0x11, 0x7, 0x9, 0xd, 0xb, 0xf, 0x17, 0x16, 0x0, 0x0, 0x14, 0x16, 0x0, 0x18, 0x18, 0x0, 0x17, 0x0, 0x18, 0x18, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x15, 0x9, 0xc, 0x14, 0xd, 0x3, 0x3, 0x4, 0x6, 0x2, 0x1, 0x2, 0x5, 0x5, 0x3, 0x4, 0x7, 0x8, 0xc, 0xf, 0xb, 0x7, 0x11, 0x17, 0xc, 0x6, 0x9, 0x6, 0x8, 0xb, 0x2a, 0x7a, 0x97, 0x99, 0x8f, 0x83, 0x83, 0x78, 0x3f, 0xa, 0x7, 0x9, 0x9, 0x5, 0x6, 0x12, 0x0, 0x18, 0x10, 0xe, 0x7, 0x9, 0x14, 0x18, 0xa, 0xb, 0xd, 0xc, 0xa, 0xd, 0x0, 0x18, 0xe, 0x8c, 0x8c, 0x7c, 0x82, 0x71, 0x6b, 0x6b, 0xe, 0x8, 0xe, 0xf, 0xa, 0xd, 0x16, 0x0, 0x12, 0xc, 0x9, 0xa, 0x11, 0x13, 0x15, 0x18, 0x0, 0x0, 0x16, 0x16, 0x17, 0x18, 0x0, 0x17, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x17, 0x18, 0x0, 0x0, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x11, 0x12, 0x14, 0x10, 0xe, 0x12, 0x17, 0x16, 0x17, 0xf, 0x10, 0x10, 0xe, 0x12, 0x18, 0x0, 0x16, 0x10, 0x9, 0x5, 0xc, 0x5, 0x4, 0x12, 0x16, 0xb, 0x9, 0xd, 0x13, 0x12, 0xe, 0x2, 0x2, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x3, 0x9, 0x11, 0xc, 0x11, 0x16, 0xf, 0xb, 0x4, 0x7, 0xe, 0xc, 0xa, 0x16, 0x17, 0x11, 0x11, 0x16, 0x15, 0x10, 0xd, 0x12, 0x11, 0x14, 0x14, 0x13, 0x14, 0x16, 0x18, 0x18, 0x18, 0x10, 0x3, 0x6, 0x13, 0x14, 0x13, 0xe, 0xa, 0x7, 0x9, 0xb, 0xb, 0x4, 0x9, 0x11, 0xb, 0x4, 0x5, 0x5, 0x7, 0xb, 0x4, 0x7, 0x14, 0xd, 0x5, 0x7, 0x7, 0x10, 0x8, 0x6, 0x6, 0xa, 0x10, 0xf, 0x3, 0x2, 0x3, 0x6, 0xd, 0xb, 0x7, 0xa, 0x6, 0x6, 0x6, 0xe, 0xd, 0x7, 0xb, 0xa, 0xe, 0x11, 0x14, 0xa, 0xd, 0xd, 0xf, 0x10, 0x14, 0xe, 0xf, 0xe, 0xd, 0x8, 0x6, 0x8, 0xb, 0x5, 0x3, 0x3, 0x5, 0x8, 0x8, 0xb, 0x8, 0x8, 0x13, 0x0, 0x15, 0x15, 0xa, 0x5, 0xc, 0x13, 0x0, 0x16, 0x11, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x10, 0x0, 0x0, 0x16, 0x16, 0x16, 0x12, 0x15, 0x13, 0x15, 0x17, 0x0, 0x18, 0x0, 0x17, 0x13, 0x15, 0x12, 0x12, 0x16, 0x17, 0x9, 0xc, 0x14, 0xf, 0x8, 0x14, 0x0, 0x14, 0x9, 0xc, 0x8, 0x10, 0xe, 0xd, 0x14, 0x9, 0x7, 0xe, 0x14, 0xc, 0x15, 0x18, 0x17, 0x0, 0x0, 0x16, 0x16, 0x17, 0x12, 0x15, 0x16, 0x14, 0x17, 0x15, 0x18, 0x0, 0x16, 0x15, 0x14, 0x10, 0x15, 0x0, 0x0, 0x13, 0x14, 0x16, 0x13, 0x11, 0xe, 0xf, 0x17, 0x0, 0x0, 0x12, 0x13, 0x0, 0xa, 0x7, 0xd, 0x12, 0xc, 0x3, 0x2, 0x7, 0x8, 0x2, 0x3, 0x6, 0x6, 0x3, 0x3, 0x6, 0xd, 0x8, 0x6, 0x9, 0xb, 0x7, 0xc, 0x14, 0xd, 0x7, 0x7, 0x7, 0x7, 0x13, 0x34, 0x78, 0x88, 0x95, 0x7a, 0x78, 0x78, 0x83, 0x4f, 0x9, 0x5, 0xb, 0x8, 0x7, 0x10, 0x0, 0x0, 0x13, 0xb, 0xa, 0x8, 0xd, 0x0, 0x11, 0x9, 0x8, 0xd, 0xa, 0xa, 0x13, 0x0, 0x0, 0xe, 0x8c, 0x8c, 0x87, 0x75, 0x6b, 0x6e, 0x6b, 0xf, 0x7, 0xc, 0xa, 0x10, 0x18, 0x0, 0x0, 0x16, 0x16, 0x18, 0x17, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x18, 0x18, 0x15, 0x17, 0x16, 0x14, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0xe, 0x10, 0x14, 0xd, 0x11, 0x10, 0x17, 0x16, 0xd, 0xc, 0x8, 0x7, 0xa, 0x6, 0x8, 0xf, 0x14, 0x15, 0x13, 0x9, 0x11, 0xf, 0xa, 0x13, 0x16, 0x0, 0x15, 0xb, 0x6, 0x9, 0xa, 0x4, 0x5, 0x13, 0xf, 0x8, 0xa, 0x10, 0xd, 0x14, 0x7, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x6, 0xf, 0x12, 0xf, 0x13, 0x18, 0xc, 0xc, 0x5, 0xa, 0x10, 0xb, 0xe, 0x18, 0xf, 0xe, 0x10, 0xd, 0xb, 0x8, 0xc, 0xf, 0xe, 0xc, 0xd, 0xe, 0x13, 0x13, 0x14, 0x0, 0x14, 0x6, 0x6, 0xf, 0x10, 0x11, 0xc, 0x8, 0x8, 0xc, 0x9, 0x5, 0x6, 0xe, 0x7, 0x4, 0xd, 0xc, 0x5, 0x8, 0x5, 0x2, 0x7, 0x10, 0x5, 0x3, 0x3, 0xf, 0xe, 0x6, 0x6, 0xd, 0x12, 0x14, 0x9, 0x3, 0xa, 0xa, 0x8, 0x9, 0xb, 0x10, 0x10, 0xb, 0x5, 0x4, 0x4, 0xf, 0xe, 0xc, 0xa, 0xc, 0xe, 0xe, 0xc, 0x11, 0x10, 0x10, 0x11, 0x12, 0xd, 0xc, 0xb, 0xb, 0x7, 0x5, 0x4, 0x6, 0x4, 0x4, 0x4, 0x8, 0x5, 0xa, 0xe, 0xb, 0x12, 0x15, 0x12, 0x12, 0x13, 0xd, 0x11, 0xe, 0xa, 0x17, 0x15, 0x14, 0x18, 0x17, 0x0, 0x0, 0x0, 0x17, 0x16, 0xb, 0x12, 0x13, 0xf, 0x15, 0x15, 0x16, 0x18, 0x15, 0x11, 0x12, 0x11, 0x10, 0x17, 0x18, 0x11, 0xc, 0xb, 0x14, 0x0, 0x11, 0x4, 0x9, 0x12, 0xb, 0x8, 0x14, 0x18, 0x13, 0xf, 0x10, 0x8, 0x11, 0xc, 0xd, 0x11, 0x6, 0x8, 0x13, 0xe, 0x8, 0x14, 0x17, 0x12, 0xf, 0x12, 0xf, 0x11, 0x13, 0xe, 0xe, 0xe, 0xe, 0x11, 0xf, 0x0, 0x15, 0xe, 0xe, 0xb, 0xa, 0x16, 0x15, 0x12, 0xd, 0x12, 0x14, 0xb, 0xe, 0xe, 0x10, 0x18, 0x0, 0x17, 0x13, 0x18, 0x13, 0x5, 0x8, 0xe, 0xf, 0x7, 0x4, 0x3, 0xa, 0x8, 0x3, 0x5, 0xb, 0x5, 0x4, 0x3, 0x4, 0x5, 0x5, 0x7, 0xa, 0x6, 0x5, 0xb, 0x14, 0xf, 0x7, 0x3, 0x5, 0x8, 0x15, 0x55, 0x78, 0x8a, 0x8f, 0x85, 0x83, 0x83, 0x84, 0x8c, 0x6, 0x4, 0x7, 0x6, 0x9, 0x14, 0x0, 0x0, 0xf, 0xb, 0xa, 0xe, 0x14, 0x18, 0xb, 0x8, 0x9, 0xd, 0xe, 0x10, 0x15, 0x18, 0x0, 0xd, 0x8c, 0x82, 0x7d, 0x71, 0x75, 0x68, 0x6b, 0x13, 0x11, 0x12, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x15, 0x14, 0x16, 0x14, 0x15, 0x17, 0x18, 0x18, 0x18, 0x0, 0x17, 0x0, 0x17, 0x15, 0x16, 0x14, 0x15, 0x14, 0x0, 0x0, 0x13, 0x9, 0xf, 0xe, 0x8, 0xb, 0x10, 0x13, 0x12, 0xc, 0x9, 0x8, 0xa, 0x9, 0x7, 0xa, 0x15, 0x18, 0x0, 0xf, 0x9, 0x12, 0xd, 0xc, 0x14, 0x17, 0x16, 0x10, 0x5, 0x6, 0x9, 0x6, 0x7, 0xa, 0x13, 0x9, 0x8, 0x11, 0x12, 0xf, 0x11, 0x4, 0x4, 0x3, 0x2, 0x5, 0xa, 0x6, 0x3, 0x3, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0x10, 0xf, 0xf, 0x17, 0x13, 0xb, 0x9, 0x5, 0x12, 0xf, 0x9, 0x14, 0x13, 0x14, 0x17, 0x15, 0x16, 0x14, 0x12, 0x0, 0x18, 0x0, 0x18, 0x0, 0x17, 0x15, 0x18, 0x18, 0x16, 0x12, 0x7, 0x9, 0x9, 0xe, 0xb, 0xa, 0xe, 0xb, 0x6, 0x3, 0x9, 0xd, 0x6, 0x9, 0x11, 0x8, 0x3, 0x8, 0xb, 0x6, 0x8, 0xf, 0x4, 0x3, 0x7, 0x14, 0x9, 0x4, 0x4, 0xc, 0xc, 0xa, 0x5, 0xe, 0x14, 0x18, 0xf, 0xe, 0xd, 0x14, 0x13, 0xc, 0x6, 0x9, 0x4, 0x8, 0x11, 0xe, 0xb, 0xb, 0xc, 0xf, 0xa, 0x11, 0xe, 0xf, 0x11, 0xc, 0x6, 0x6, 0x4, 0x4, 0x4, 0x6, 0x4, 0x3, 0x8, 0x9, 0x7, 0x9, 0x4, 0x5, 0xd, 0x12, 0x13, 0xe, 0xe, 0x12, 0x13, 0x14, 0x18, 0x17, 0x10, 0x15, 0x17, 0x18, 0x18, 0x16, 0x0, 0x0, 0x18, 0x11, 0x18, 0xe, 0x10, 0x12, 0x12, 0x16, 0xe, 0x18, 0x18, 0x15, 0xe, 0xd, 0xb, 0xa, 0x12, 0x15, 0xf, 0xb, 0xb, 0x14, 0x0, 0x10, 0x7, 0xc, 0xf, 0xb, 0xe, 0x16, 0x15, 0x13, 0x18, 0x14, 0xf, 0x12, 0x15, 0x17, 0xc, 0x3, 0xb, 0x12, 0x7, 0xb, 0x16, 0x15, 0xe, 0x10, 0xe, 0xb, 0x11, 0xf, 0x10, 0xf, 0xe, 0x16, 0xf, 0x13, 0x0, 0xf, 0xc, 0xc, 0xb, 0x10, 0x18, 0xd, 0xb, 0xe, 0x16, 0x13, 0xc, 0xd, 0xf, 0x13, 0x17, 0x16, 0x10, 0x13, 0x18, 0xd, 0x5, 0x10, 0x14, 0xe, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0xa, 0x6, 0x2, 0x3, 0x3, 0x5, 0x3, 0x4, 0xc, 0xb, 0x9, 0x9, 0xf, 0x0, 0xf, 0x6, 0x4, 0x6, 0x12, 0x15, 0x78, 0x78, 0x7a, 0x95, 0x88, 0x78, 0x83, 0x95, 0x99, 0x80, 0x4, 0x33, 0x4, 0xc, 0x0, 0x0, 0x14, 0xd, 0xa, 0xf, 0x0, 0x0, 0x0, 0x14, 0x12, 0x14, 0x17, 0x18, 0x0, 0x18, 0x18, 0x18, 0x16, 0x79, 0x6e, 0x6b, 0x63, 0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x12, 0xe, 0x9, 0xd, 0x8, 0xd, 0x17, 0x0, 0x0, 0xc, 0x8, 0xd, 0x8, 0xa, 0xa, 0x13, 0x17, 0x11, 0x7, 0x7, 0x8, 0xc, 0x7, 0x12, 0x13, 0x16, 0x0, 0x18, 0xb, 0xc, 0xd, 0xb, 0x14, 0x16, 0x18, 0x13, 0xb, 0x4, 0x8, 0x9, 0x3, 0x5, 0x11, 0x14, 0x7, 0xa, 0x10, 0x10, 0x14, 0xa, 0x3, 0x9, 0x8, 0x2, 0x5, 0xb, 0x8, 0x2, 0x3, 0x4, 0x4, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0xb, 0x13, 0xd, 0xd, 0x0, 0x11, 0xd, 0x5, 0xc, 0x12, 0x8, 0xb, 0x11, 0xe, 0x15, 0x11, 0x12, 0x11, 0xb, 0x13, 0x14, 0x12, 0x11, 0x12, 0x11, 0x12, 0x18, 0x16, 0x0, 0x0, 0x13, 0x4, 0x7, 0xa, 0xa, 0xe, 0x10, 0xb, 0xa, 0x5, 0x3, 0x3, 0x2, 0x4, 0xa, 0xd, 0x5, 0x9, 0x13, 0x5, 0x7, 0x6, 0x7, 0x8, 0xe, 0xf, 0x4, 0x3, 0x3, 0x9, 0x6, 0x3, 0x9, 0x17, 0x17, 0x0, 0x16, 0x12, 0x9, 0x11, 0x0, 0x9, 0x4, 0xd, 0x7, 0x8, 0xc, 0xd, 0x8, 0x9, 0x8, 0xe, 0x7, 0x9, 0xa, 0xa, 0xa, 0x7, 0x5, 0x8, 0xd, 0xc, 0xb, 0x9, 0x5, 0x3, 0x4, 0x5, 0x4, 0x5, 0x5, 0x3, 0x8, 0x11, 0x7, 0x6, 0xf, 0xe, 0xf, 0x16, 0x18, 0x0, 0x0, 0x0, 0x15, 0x18, 0x17, 0x17, 0x0, 0x0, 0x16, 0xe, 0x18, 0x10, 0x10, 0x13, 0x17, 0xe, 0xe, 0x18, 0x14, 0x17, 0xf, 0xb, 0xa, 0xd, 0x13, 0x14, 0x12, 0x10, 0xc, 0xf, 0x17, 0x16, 0x11, 0x14, 0x13, 0x15, 0x18, 0x13, 0x13, 0x14, 0x14, 0x12, 0x11, 0x11, 0x16, 0x17, 0xa, 0x8, 0x11, 0xb, 0xa, 0x14, 0x13, 0x10, 0xe, 0x11, 0xc, 0xf, 0xf, 0xa, 0xc, 0xf, 0x13, 0x0, 0x14, 0x15, 0x15, 0xe, 0xc, 0xc, 0x10, 0x17, 0x14, 0xa, 0xd, 0x15, 0x17, 0x10, 0xf, 0xe, 0x13, 0x17, 0x15, 0x13, 0x10, 0x17, 0x18, 0x8, 0x9, 0x15, 0x12, 0xb, 0x3, 0x3, 0x3, 0x3, 0x2, 0x7, 0xa, 0x2, 0x2, 0x4, 0x5, 0x4, 0x5, 0xa, 0xd, 0x6, 0x4, 0x6, 0x12, 0x0, 0x0, 0xe, 0x7, 0x11, 0x11, 0x3d, 0x83, 0x7a, 0x83, 0x95, 0x90, 0x78, 0x84, 0x99, 0x99, 0x95, 0x26, 0x4, 0x5, 0xf, 0x0, 0x0, 0x10, 0xb, 0xc, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x0, 0x0, 0x63, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x15, 0x13, 0x15, 0x13, 0x13, 0x13, 0x16, 0x17, 0x14, 0x13, 0xf, 0x12, 0x13, 0x16, 0x17, 0x18, 0x15, 0xc, 0xa, 0xa, 0x9, 0xa, 0xe, 0x0, 0x0, 0x16, 0xb, 0xc, 0xc, 0x8, 0xc, 0x10, 0x17, 0x18, 0x17, 0xc, 0xa, 0xb, 0xa, 0xe, 0x0, 0x18, 0x18, 0x18, 0x18, 0x13, 0x18, 0x18, 0x17, 0x18, 0x0, 0x0, 0x12, 0x6, 0x5, 0x7, 0x6, 0x5, 0x9, 0x17, 0x12, 0xb, 0xd, 0xf, 0x10, 0x12, 0x5, 0x3, 0x7, 0x9, 0x6, 0x3, 0xa, 0xf, 0x5, 0x4, 0x3, 0x2, 0x4, 0x6, 0x3, 0x2, 0x4, 0x3, 0x7, 0x13, 0x10, 0xd, 0x11, 0x15, 0x11, 0xd, 0x7, 0xd, 0xc, 0x7, 0x8, 0x7, 0x11, 0x17, 0x14, 0xd, 0xc, 0x9, 0xf, 0xe, 0xf, 0xd, 0xc, 0x13, 0x15, 0x10, 0x17, 0x16, 0x0, 0xb, 0x6, 0x8, 0xc, 0xc, 0xc, 0xc, 0xc, 0xb, 0x7, 0x6, 0x3, 0x5, 0xd, 0xf, 0xb, 0x12, 0x10, 0x3, 0x3, 0x3, 0x7, 0x6, 0xd, 0x8, 0x4, 0x5, 0xa, 0xa, 0x4, 0x6, 0x11, 0x0, 0x0, 0x0, 0x0, 0x16, 0x10, 0xe, 0x18, 0x12, 0x8, 0x10, 0xb, 0xa, 0x7, 0xf, 0xc, 0xa, 0x6, 0x8, 0xb, 0xc, 0xc, 0xb, 0x10, 0x11, 0xe, 0x13, 0x18, 0x16, 0x12, 0xf, 0xd, 0x8, 0x8, 0x4, 0x3, 0x3, 0x4, 0x6, 0x7, 0x4, 0x4, 0x6, 0x6, 0x9, 0x10, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xb, 0x17, 0x12, 0xe, 0x11, 0x16, 0x10, 0x18, 0x13, 0xe, 0x13, 0x11, 0x15, 0x18, 0x16, 0x13, 0x16, 0x14, 0x12, 0xd, 0xe, 0x13, 0x15, 0x13, 0x11, 0x12, 0x17, 0x18, 0x12, 0x15, 0x14, 0x14, 0x14, 0x13, 0x15, 0x18, 0xf, 0x9, 0x11, 0x12, 0x9, 0x11, 0x17, 0xf, 0xe, 0xe, 0xd, 0x9, 0x10, 0xc, 0xa, 0xe, 0xe, 0x18, 0x17, 0x16, 0x0, 0x11, 0x10, 0x13, 0x10, 0x12, 0x0, 0x11, 0xc, 0xf, 0x16, 0x18, 0x15, 0x13, 0x14, 0x18, 0x0, 0x0, 0x14, 0x15, 0x0, 0x17, 0x8, 0xb, 0xe, 0x7, 0x6, 0x7, 0xa, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x2, 0x5, 0xd, 0x5, 0xd, 0xb, 0x5, 0x5, 0x4, 0x5, 0x16, 0x0, 0x0, 0x0, 0x10, 0xa, 0x6, 0x5e, 0x84, 0x85, 0x7e, 0x89, 0x93, 0x7a, 0x9c, 0x95, 0x99, 0x8f, 0x62, 0x4, 0x6, 0x16, 0x0, 0x0, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x0, 0x18, 0x0, 0x18, 0x63, 0x6b, 0x6b, 0x63, 0x71, 0x71, 0x63, 0x17, 0x17, 0x15, 0x10, 0x0, 0x18, 0xe, 0xd, 0xd, 0xc, 0xa, 0x13, 0x0, 0x0, 0xd, 0x8, 0x9, 0xc, 0x9, 0x14, 0x0, 0x0, 0xf, 0xa, 0xa, 0xd, 0xa, 0xf, 0x15, 0x0, 0x0, 0x0, 0x10, 0x12, 0xb, 0x10, 0x16, 0x16, 0x16, 0x0, 0x0, 0x18, 0x13, 0x15, 0x13, 0x13, 0x15, 0x0, 0x18, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0xc, 0x3, 0x6, 0x7, 0x5, 0x5, 0x10, 0x0, 0xe, 0xc, 0xe, 0xf, 0x15, 0xc, 0x4, 0x4, 0x5, 0xf, 0xf, 0x3, 0x7, 0xa, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x4, 0x5, 0x3, 0xd, 0x17, 0x14, 0xd, 0xf, 0x17, 0x13, 0x9, 0x4, 0xc, 0x7, 0x8, 0xf, 0xa, 0x11, 0x0, 0x0, 0x17, 0xb, 0xd, 0x12, 0x12, 0xc, 0x11, 0x17, 0xc, 0x14, 0x17, 0x15, 0x17, 0x14, 0xc, 0x6, 0x8, 0xa, 0x7, 0xf, 0x13, 0xa, 0xa, 0xc, 0x9, 0xe, 0xb, 0x5, 0x7, 0x10, 0x7, 0x3, 0x8, 0x4, 0x3, 0x9, 0xb, 0x4, 0x3, 0x7, 0xf, 0x8, 0xa, 0x6, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x11, 0x18, 0x0, 0xe, 0xa, 0xd, 0xf, 0x9, 0x11, 0x11, 0x12, 0xd, 0xe, 0xd, 0x15, 0x17, 0x16, 0x18, 0x14, 0x16, 0x16, 0x17, 0x16, 0x10, 0x12, 0x12, 0x10, 0x14, 0xf, 0x10, 0xb, 0x4, 0x5, 0x8, 0x4, 0x8, 0xc, 0x9, 0xa, 0x13, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x14, 0xf, 0xc, 0xe, 0x10, 0xf, 0x18, 0x0, 0x0, 0x17, 0x14, 0x18, 0x0, 0x0, 0x0, 0x13, 0x12, 0x18, 0x14, 0x14, 0x13, 0x12, 0x16, 0x17, 0x17, 0x16, 0x17, 0x17, 0x15, 0x13, 0x12, 0x11, 0x14, 0x12, 0x12, 0x18, 0x15, 0x8, 0xb, 0x16, 0xe, 0xf, 0x17, 0x15, 0x13, 0x12, 0x11, 0xc, 0xc, 0x13, 0x13, 0x12, 0x13, 0x13, 0x0, 0x13, 0x11, 0x17, 0x16, 0x18, 0x0, 0x15, 0x13, 0x18, 0x16, 0x14, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x16, 0x0, 0x0, 0xa, 0x6, 0x9, 0x5, 0x5, 0x9, 0xb, 0x8, 0x3, 0x3, 0x3, 0x4, 0x7, 0x3, 0x7, 0xa, 0x6, 0x8, 0x5, 0x7, 0x7, 0x4, 0xb, 0x15, 0x10, 0x15, 0x18, 0xa, 0x2, 0x4, 0x9d, 0x8f, 0x7e, 0x7a, 0x93, 0x88, 0x90, 0x95, 0x8f, 0x89, 0x8f, 0x86, 0x6, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x15, 0x18, 0x0, 0x17, 0x10, 0xf, 0xe, 0x82, 0x6f, 0x7a, 0x65, 0x87, 0x7c, 0x82, 0xb, 0xa, 0xf, 0x12, 0x17, 0x18, 0xd, 0xd, 0xc, 0x9, 0xa, 0x18, 0x18, 0x15, 0xb, 0xa, 0xb, 0xa, 0xe, 0x18, 0x17, 0x15, 0x10, 0x12, 0xe, 0x10, 0x12, 0x17, 0x0, 0x18, 0x18, 0x0, 0x17, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x16, 0x7, 0x4, 0x6, 0x6, 0x4, 0x8, 0x17, 0x12, 0xd, 0xc, 0xf, 0x10, 0x14, 0x7, 0x6, 0x4, 0x4, 0x7, 0x7, 0x3, 0x2, 0x5, 0x7, 0x3, 0x3, 0x5, 0x5, 0x5, 0x6, 0x5, 0x6, 0x6, 0x3, 0x7, 0x16, 0x17, 0xe, 0xa, 0x17, 0x14, 0xb, 0x4, 0xa, 0x8, 0xa, 0x12, 0x15, 0x12, 0xf, 0x13, 0x0, 0x15, 0xe, 0x15, 0xd, 0xd, 0x18, 0x11, 0x10, 0x11, 0x14, 0x18, 0x18, 0x17, 0x18, 0x10, 0xd, 0x13, 0x14, 0x17, 0xe, 0x4, 0x7, 0x6, 0xd, 0x11, 0x5, 0x2, 0x8, 0xb, 0x4, 0x3, 0x3, 0x2, 0x6, 0x12, 0x9, 0x4, 0x3, 0xc, 0xd, 0x6, 0x8, 0x4, 0x8, 0x16, 0x0, 0x0, 0x0, 0x17, 0x11, 0x17, 0x0, 0x0, 0x14, 0xa, 0xb, 0xf, 0x9, 0x14, 0x11, 0x12, 0xf, 0x10, 0x14, 0x0, 0x18, 0x0, 0x14, 0x14, 0x14, 0x15, 0x12, 0x13, 0x14, 0xe, 0xd, 0x8, 0xb, 0xf, 0xc, 0xd, 0x7, 0x4, 0x4, 0x3, 0x7, 0xa, 0xa, 0x6, 0x9, 0xe, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x15, 0x13, 0xd, 0xc, 0x12, 0x17, 0x17, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x15, 0x14, 0x16, 0x13, 0x13, 0x13, 0x16, 0x16, 0x16, 0x14, 0x12, 0x14, 0x18, 0x12, 0x13, 0x0, 0x10, 0x14, 0x0, 0xc, 0xa, 0x16, 0x13, 0x12, 0x17, 0x0, 0x14, 0x16, 0x16, 0x16, 0x15, 0x17, 0x13, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x10, 0x16, 0x18, 0x16, 0x0, 0x14, 0x11, 0x12, 0x18, 0x11, 0x11, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x8, 0x3, 0x5, 0xd, 0x6, 0x5, 0x9, 0xa, 0x4, 0x8, 0x5, 0x3, 0x6, 0x6, 0x9, 0x5, 0x2, 0x5, 0x4, 0xa, 0x9, 0x4, 0x10, 0x10, 0xf, 0xf, 0x12, 0x8, 0xa, 0x4, 0x9f, 0x8f, 0x8a, 0x7a, 0x8a, 0x89, 0x89, 0x93, 0x9c, 0x8f, 0x9c, 0x9e, 0x9, 0x15, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x14, 0x10, 0xf, 0xd, 0xc, 0x9, 0x11, 0x18, 0x0, 0x11, 0x9, 0x8, 0x7, 0x8c, 0x87, 0x6f, 0x7d, 0x8c, 0x8c, 0x92, 0x7, 0xa, 0x10, 0x16, 0x16, 0x0, 0xd, 0x9, 0xa, 0x9, 0xf, 0x0, 0x16, 0x13, 0x14, 0x16, 0x17, 0x16, 0x17, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x13, 0x13, 0x13, 0x14, 0x18, 0x0, 0x14, 0x12, 0xf, 0xf, 0x14, 0x18, 0x0, 0x0, 0x11, 0x3, 0x5, 0x7, 0x6, 0x5, 0x10, 0x17, 0xe, 0xe, 0x11, 0x10, 0x15, 0xc, 0x4, 0x5, 0x3, 0x4, 0x6, 0xa, 0x9, 0x3, 0xc, 0xf, 0x5, 0x3, 0x4, 0x4, 0x6, 0x3, 0x4, 0x5, 0x7, 0x4, 0x4, 0xa, 0x16, 0x15, 0xa, 0x14, 0x17, 0xe, 0xc, 0xb, 0xd, 0x8, 0xf, 0x0, 0x0, 0x14, 0x9, 0xe, 0x0, 0x0, 0x17, 0x12, 0x14, 0x11, 0xe, 0x10, 0xd, 0x13, 0x12, 0x14, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0xf, 0x11, 0x11, 0xe, 0xe, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x10, 0x11, 0x5, 0x4, 0x3, 0x8, 0x8, 0x9, 0x5, 0x8, 0xc, 0x15, 0x18, 0x0, 0x0, 0x17, 0xc, 0x16, 0x0, 0x18, 0x12, 0x8, 0x5, 0x10, 0xe, 0xe, 0xd, 0x12, 0x11, 0xd, 0x18, 0x17, 0x10, 0x18, 0x15, 0x15, 0x13, 0x12, 0x13, 0x14, 0x16, 0x11, 0x13, 0x9, 0xd, 0xb, 0x8, 0xa, 0xb, 0x5, 0x6, 0x8, 0x6, 0xc, 0xa, 0x5, 0xb, 0x15, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x12, 0xf, 0xc, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x16, 0x14, 0x18, 0x18, 0x16, 0x14, 0x12, 0x15, 0x13, 0xe, 0x12, 0x17, 0x10, 0xe, 0x14, 0x9, 0x7, 0x13, 0x0, 0xd, 0xc, 0x14, 0xe, 0x14, 0x16, 0x8, 0xb, 0x12, 0xa, 0xf, 0x15, 0x12, 0x11, 0x13, 0x14, 0x15, 0x18, 0x18, 0xe, 0x15, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x15, 0x18, 0x17, 0x17, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x15, 0x13, 0x16, 0x17, 0x0, 0x0, 0x15, 0x16, 0x14, 0xd, 0x13, 0x11, 0x9, 0x4, 0x5, 0xe, 0xd, 0x9, 0x9, 0x6, 0x5, 0xa, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x5, 0x6, 0x4, 0xb, 0xb, 0x8, 0xf, 0xb, 0x8, 0x7, 0xa, 0xb, 0x10, 0x6, 0x95, 0x85, 0x7a, 0x78, 0x7a, 0x8f, 0x88, 0x88, 0x9c, 0x8f, 0x9e, 0x99, 0x24, 0x0, 0x0, 0x17, 0xf, 0xe, 0x11, 0x0, 0x17, 0xd, 0xb, 0xb, 0xa, 0x7, 0x9, 0x14, 0x17, 0x13, 0xc, 0xa, 0x8, 0x29, 0x7c, 0x87, 0x71, 0x7d, 0x86, 0x81, 0x87, 0xb, 0xc, 0x11, 0x11, 0x14, 0x0, 0x11, 0x12, 0x12, 0x11, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0xf, 0x10, 0x10, 0x11, 0xd, 0xe, 0x12, 0x17, 0x0, 0x15, 0x9, 0x9, 0xc, 0xc, 0x16, 0x0, 0x0, 0x0, 0xd, 0x3, 0x5, 0x7, 0x6, 0x6, 0x14, 0x10, 0xa, 0x10, 0x10, 0xf, 0x12, 0x6, 0x3, 0x5, 0x6, 0x4, 0x3, 0x6, 0x5, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0x5, 0x5, 0x6, 0x7, 0x3, 0x3, 0x5, 0x10, 0x17, 0x10, 0x16, 0x0, 0x12, 0xe, 0x9, 0x8, 0x7, 0xe, 0x18, 0x0, 0x0, 0x13, 0xd, 0x18, 0x0, 0x11, 0x13, 0x17, 0x13, 0x14, 0xb, 0x11, 0x16, 0x14, 0x16, 0x15, 0x15, 0x18, 0x14, 0x17, 0x18, 0xc, 0xa, 0x10, 0x13, 0xf, 0x9, 0x6, 0x4, 0x4, 0x7, 0xb, 0x9, 0x4, 0x4, 0xb, 0x16, 0x9, 0x3, 0x3, 0x4, 0x4, 0x6, 0x9, 0x8, 0x11, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x17, 0x0, 0x17, 0x9, 0x8, 0x8, 0xe, 0x10, 0x10, 0x11, 0x16, 0x15, 0x14, 0x17, 0x10, 0x11, 0x15, 0x12, 0xd, 0x12, 0x15, 0xd, 0x13, 0x12, 0x16, 0x18, 0xb, 0x13, 0xa, 0x7, 0x6, 0x5, 0x4, 0x5, 0x6, 0x7, 0x8, 0x3, 0x5, 0xc, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x12, 0xa, 0x8, 0xd, 0x12, 0x18, 0x17, 0x13, 0x17, 0x18, 0x11, 0x12, 0x0, 0x13, 0xb, 0x11, 0x15, 0x17, 0x0, 0x11, 0xe, 0x13, 0x5, 0x7, 0x14, 0x15, 0xb, 0x11, 0x13, 0x5, 0xc, 0x15, 0x14, 0xd, 0x10, 0x12, 0xf, 0x16, 0xc, 0x9, 0x10, 0xb, 0xa, 0x11, 0x12, 0x11, 0x15, 0x16, 0x16, 0x13, 0x15, 0x11, 0xe, 0xd, 0xe, 0x13, 0x18, 0x17, 0x11, 0x12, 0x10, 0x15, 0x18, 0x12, 0xe, 0x10, 0x15, 0x18, 0x16, 0x15, 0xf, 0xf, 0x12, 0x15, 0x18, 0x14, 0xb, 0x10, 0x10, 0x9, 0xa, 0x10, 0xb, 0x3, 0x5, 0xc, 0xa, 0x8, 0x6, 0x6, 0x7, 0x5, 0x7, 0x5, 0x3, 0x2, 0x3, 0x3, 0x8, 0x8, 0x4, 0x5, 0xa, 0x9, 0x6, 0x5, 0x7, 0x6, 0x3, 0xa, 0x14, 0xd, 0x89, 0x83, 0x83, 0x78, 0x7a, 0x88, 0x90, 0x95, 0x99, 0x95, 0x99, 0x95, 0x1d, 0x0, 0x16, 0xf, 0x11, 0x11, 0x18, 0x0, 0x15, 0xb, 0x9, 0xe, 0xc, 0xb, 0x10, 0x0, 0x18, 0xd, 0x9, 0xc, 0xc, 0x11, 0x71, 0x79, 0x71, 0x65, 0x75, 0x75, 0x71, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x0, 0x0, 0x18, 0x0, 0x13, 0x12, 0x12, 0xe, 0xe, 0xd, 0x17, 0x0, 0x16, 0x12, 0x9, 0xa, 0xe, 0xb, 0xb, 0xc, 0x12, 0x17, 0x18, 0xb, 0x9, 0x8, 0xd, 0x12, 0x0, 0x18, 0x17, 0x15, 0x6, 0x8, 0x8, 0x5, 0x5, 0xc, 0x17, 0xb, 0x8, 0xd, 0x10, 0x13, 0xd, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x2, 0x6, 0xc, 0x7, 0x2, 0x9, 0x9, 0x3, 0x3, 0x5, 0x5, 0x7, 0x7, 0x5, 0x5, 0x6, 0x3, 0x8, 0x10, 0x10, 0x0, 0x18, 0x0, 0x11, 0xf, 0x6, 0x9, 0x9, 0x11, 0x17, 0x0, 0x13, 0x12, 0x0, 0x0, 0x16, 0xf, 0x18, 0x0, 0x11, 0xe, 0x16, 0xd, 0x11, 0x11, 0x14, 0x17, 0x12, 0x8, 0x10, 0x12, 0xa, 0x10, 0xf, 0x7, 0x4, 0xb, 0xb, 0xb, 0xa, 0x7, 0xb, 0x5, 0x3, 0xa, 0x16, 0x10, 0x3, 0x3, 0x8, 0xc, 0x5, 0x4, 0x4, 0xe, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0xf, 0xe, 0xb, 0x10, 0x16, 0xf, 0xe, 0xf, 0xe, 0x13, 0x10, 0xb, 0x16, 0x12, 0xb, 0xd, 0x0, 0x17, 0x10, 0x12, 0x12, 0x0, 0x17, 0xa, 0xa, 0x8, 0x4, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, 0x4, 0x7, 0x7, 0x6, 0xb, 0x14, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x11, 0xf, 0xf, 0xe, 0x14, 0x0, 0x16, 0xb, 0x17, 0x13, 0xd, 0x17, 0x0, 0x10, 0x7, 0x17, 0x16, 0x12, 0x14, 0xc, 0x14, 0x12, 0x8, 0x10, 0x14, 0x14, 0x13, 0x18, 0x18, 0x13, 0x16, 0x0, 0x17, 0x15, 0x0, 0x0, 0x0, 0x13, 0x5, 0xd, 0x15, 0xa, 0xc, 0x13, 0x15, 0x15, 0x11, 0xd, 0xe, 0x13, 0x16, 0xd, 0xb, 0xa, 0xd, 0x11, 0x12, 0x11, 0xf, 0xb, 0xb, 0x10, 0x10, 0xc, 0xd, 0x11, 0x16, 0x16, 0xd, 0xe, 0xd, 0x11, 0x18, 0x0, 0x18, 0x10, 0xb, 0x11, 0xa, 0xa, 0xc, 0x10, 0x10, 0x5, 0x3, 0xb, 0x8, 0x7, 0x5, 0x8, 0x8, 0x6, 0x9, 0x3, 0x3, 0x3, 0x3, 0x3, 0x9, 0x9, 0x5, 0xd, 0xd, 0x4, 0x6, 0x11, 0x15, 0xb, 0x3, 0x5, 0x11, 0x15, 0x79, 0x7a, 0x7e, 0x78, 0x78, 0x83, 0x89, 0x99, 0x99, 0x99, 0x9c, 0x82, 0x0, 0x0, 0x13, 0x14, 0x0, 0x0, 0x18, 0x18, 0x18, 0xa, 0x7, 0xe, 0xc, 0x15, 0x17, 0x17, 0x18, 0x14, 0x14, 0x16, 0x17, 0x18, 0x6b, 0x6b, 0x63, 0x6b, 0x78, 0x63, 0x6b, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x18, 0x0, 0x17, 0x11, 0xe, 0xd, 0xc, 0xf, 0x0, 0x18, 0x0, 0x17, 0xb, 0xb, 0xb, 0x8, 0x8, 0xb, 0x0, 0x0, 0x16, 0xa, 0x5, 0x6, 0xa, 0x7, 0xa, 0xc, 0x11, 0x13, 0x12, 0x8, 0xc, 0xc, 0xe, 0x16, 0x0, 0x18, 0x14, 0x8, 0x4, 0xb, 0xa, 0x4, 0x4, 0x13, 0x17, 0xc, 0xa, 0xe, 0x10, 0x13, 0x7, 0x3, 0x5, 0x4, 0x4, 0x7, 0x5, 0x3, 0x8, 0x11, 0xc, 0x3, 0x6, 0xb, 0x5, 0x2, 0x2, 0x6, 0x4, 0x6, 0x6, 0x6, 0x7, 0x3, 0x3, 0xb, 0x14, 0x15, 0x10, 0x15, 0x17, 0x13, 0xa, 0xa, 0xc, 0xc, 0xf, 0x12, 0x17, 0x15, 0x18, 0x0, 0x0, 0x11, 0x13, 0x18, 0xd, 0x10, 0xf, 0xa, 0xf, 0xd, 0xb, 0x13, 0xb, 0x3, 0x6, 0xd, 0x15, 0x0, 0xd, 0x2, 0x7, 0x14, 0x14, 0x10, 0x8, 0x8, 0x9, 0x5, 0xe, 0x18, 0x12, 0x5, 0x3, 0x3, 0xe, 0xe, 0x5, 0x7, 0x6, 0x12, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x13, 0x18, 0x0, 0x0, 0x0, 0x18, 0x10, 0xd, 0x17, 0x11, 0xd, 0xc, 0xe, 0x10, 0xc, 0xe, 0x14, 0xe, 0xd, 0x18, 0x17, 0xf, 0x18, 0x12, 0x14, 0x17, 0x14, 0x7, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x4, 0x4, 0x7, 0xc, 0xe, 0x8, 0x7, 0xb, 0x9, 0xf, 0x17, 0x0, 0x18, 0x14, 0xa, 0xc, 0x11, 0x13, 0x18, 0x0, 0x10, 0xc, 0x14, 0xd, 0xf, 0x14, 0x16, 0x17, 0x15, 0x0, 0x15, 0x13, 0x15, 0x15, 0x18, 0x16, 0x18, 0x0, 0x18, 0x15, 0x0, 0x0, 0x17, 0x18, 0x18, 0x16, 0x18, 0x15, 0x18, 0x0, 0x18, 0xc, 0x5, 0xd, 0x10, 0xc, 0x12, 0x13, 0x14, 0x12, 0xd, 0x9, 0xd, 0x13, 0x13, 0xd, 0xe, 0xc, 0x13, 0x17, 0x10, 0xd, 0x11, 0xd, 0xa, 0xe, 0x12, 0xd, 0xe, 0x17, 0x16, 0x11, 0xb, 0xd, 0xa, 0x11, 0x18, 0x18, 0x18, 0x13, 0xd, 0x10, 0x10, 0x13, 0x15, 0x17, 0x17, 0xc, 0x3, 0x5, 0x7, 0x4, 0xe, 0x8, 0x7, 0x10, 0x6, 0x3, 0x2, 0x3, 0x5, 0x6, 0x5, 0xa, 0x14, 0x14, 0x9, 0x3, 0x9, 0x18, 0x0, 0xd, 0x4, 0x3, 0x9, 0x16, 0x57, 0x78, 0x78, 0x78, 0x84, 0x84, 0x97, 0x97, 0x9f, 0x99, 0x89, 0x65, 0x0, 0x0, 0x18, 0x18, 0x11, 0x13, 0x16, 0x15, 0x18, 0x17, 0x13, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x13, 0x0, 0x6e, 0x6e, 0x78, 0x6b, 0x65, 0x6e, 0x6b, 0x0, 0x18, 0x0, 0x18, 0x15, 0x13, 0x13, 0x11, 0x13, 0x0, 0x0, 0x15, 0x12, 0x11, 0xe, 0xb, 0x8, 0x12, 0x0, 0x15, 0xa, 0x9, 0xb, 0x9, 0x14, 0x0, 0x16, 0x18, 0x14, 0xb, 0x9, 0xa, 0x8, 0x8, 0x10, 0x0, 0x13, 0x13, 0xd, 0x9, 0xe, 0xe, 0x10, 0x12, 0x13, 0x13, 0x13, 0x16, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0xf, 0x3, 0x6, 0xb, 0x5, 0x4, 0x8, 0x15, 0xf, 0xb, 0x10, 0x10, 0x12, 0xe, 0x4, 0x7, 0x4, 0x3, 0x3, 0x9, 0xb, 0x7, 0x3, 0x6, 0x9, 0x4, 0x4, 0xb, 0x8, 0x3, 0x3, 0xd, 0x9, 0x4, 0x4, 0x5, 0x7, 0x4, 0x2, 0x9, 0x17, 0x18, 0xf, 0xb, 0x14, 0x12, 0x12, 0x9, 0x9, 0x7, 0x7, 0xb, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0xf, 0x18, 0x0, 0x13, 0xa, 0xe, 0xf, 0x13, 0x14, 0x14, 0x8, 0x4, 0x7, 0x11, 0x18, 0x17, 0xe, 0x6, 0xa, 0x18, 0x13, 0x7, 0x7, 0x11, 0xb, 0x12, 0x0, 0x18, 0x15, 0x8, 0x3, 0x4, 0xd, 0xb, 0x3, 0x3, 0xb, 0x16, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x12, 0x18, 0x0, 0x0, 0x0, 0x15, 0x17, 0xf, 0x14, 0x12, 0x10, 0x10, 0x11, 0xe, 0xa, 0x14, 0x17, 0x11, 0xf, 0x0, 0x16, 0xc, 0x12, 0x10, 0x12, 0xb, 0x8, 0x4, 0x4, 0x6, 0x4, 0x5, 0x4, 0x3, 0x4, 0x3, 0x5, 0xd, 0x15, 0x18, 0x11, 0x8, 0x8, 0x6, 0x4, 0x8, 0xd, 0xd, 0xb, 0x7, 0x9, 0xc, 0x13, 0x11, 0x15, 0x16, 0xf, 0x10, 0x15, 0x0, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x18, 0x17, 0x16, 0x16, 0x0, 0x16, 0x13, 0x13, 0x12, 0x14, 0x15, 0x18, 0x0, 0x14, 0x6, 0xb, 0xe, 0x9, 0x12, 0x17, 0x14, 0x12, 0x10, 0x9, 0xa, 0x11, 0x14, 0x16, 0x15, 0xe, 0xb, 0x15, 0x14, 0x10, 0xf, 0xe, 0xf, 0x11, 0x13, 0x17, 0xc, 0x12, 0x14, 0xd, 0xb, 0xf, 0xd, 0x10, 0x17, 0x0, 0x14, 0x15, 0x16, 0x15, 0x17, 0x15, 0x17, 0x0, 0x18, 0x17, 0x13, 0x6, 0x3, 0xa, 0x5, 0xe, 0xb, 0x9, 0x14, 0xc, 0x4, 0x3, 0x2, 0x9, 0xf, 0x7, 0xb, 0x16, 0x18, 0x9, 0x3, 0xc, 0x0, 0x0, 0x12, 0xf, 0x5, 0x5, 0xd, 0x27, 0x78, 0x78, 0x83, 0x89, 0x84, 0x84, 0x88, 0x9f, 0x95, 0x90, 0x28, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x6b, 0x6b, 0x63, 0x6e, 0x6b, 0x6e, 0x6e, 0x14, 0x18, 0x0, 0x10, 0xc, 0xa, 0xa, 0xb, 0x15, 0x0, 0x17, 0xc, 0xb, 0xd, 0x8, 0x7, 0xa, 0x10, 0x0, 0x13, 0x9, 0x9, 0xb, 0xd, 0x13, 0x14, 0x13, 0x10, 0x15, 0x12, 0x11, 0x11, 0x12, 0x13, 0x18, 0x18, 0x16, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x9, 0x3, 0x8, 0x7, 0x5, 0x4, 0xe, 0x12, 0x7, 0xc, 0x16, 0x12, 0x15, 0x8, 0x3, 0x8, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x7, 0xb, 0x5, 0x4, 0x3, 0x7, 0xb, 0x5, 0x3, 0xb, 0x17, 0x14, 0xe, 0x11, 0x12, 0x13, 0x10, 0x5, 0x7, 0x7, 0x9, 0x14, 0x0, 0x18, 0x0, 0x0, 0x0, 0x10, 0x13, 0x0, 0x12, 0x10, 0xf, 0x11, 0x14, 0x15, 0xd, 0xb, 0xc, 0xb, 0x11, 0x0, 0x18, 0x15, 0xd, 0x9, 0x17, 0x12, 0x3, 0x5, 0xb, 0x14, 0x0, 0x0, 0x0, 0x13, 0x9, 0x2, 0x7, 0xe, 0xa, 0x5, 0x4, 0xf, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0x0, 0x0, 0x0, 0x18, 0x10, 0x15, 0xc, 0x10, 0xf, 0xf, 0xd, 0xe, 0xc, 0x10, 0x17, 0x12, 0xb, 0x14, 0x0, 0x17, 0x13, 0x16, 0x18, 0xd, 0x2, 0x4, 0x4, 0x5, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x7, 0x6, 0x7, 0xd, 0x11, 0x14, 0x18, 0x11, 0x9, 0x6, 0x8, 0x12, 0x11, 0xf, 0xf, 0x9, 0xa, 0x10, 0xb, 0x16, 0x0, 0x15, 0x16, 0x0, 0x0, 0x18, 0x14, 0x14, 0x15, 0x15, 0x14, 0x14, 0x15, 0x15, 0xd, 0xc, 0xf, 0x14, 0x17, 0x14, 0xb, 0x14, 0x12, 0xa, 0x14, 0x13, 0x13, 0x18, 0x0, 0x17, 0xb, 0xa, 0x12, 0xe, 0x10, 0x18, 0x17, 0x13, 0x11, 0xf, 0xc, 0x10, 0x18, 0x18, 0x13, 0x14, 0x10, 0x12, 0x18, 0x13, 0x10, 0x15, 0x11, 0x11, 0x0, 0x0, 0x17, 0x12, 0x17, 0x16, 0x14, 0x15, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x17, 0x15, 0x0, 0x0, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x9, 0x4, 0xc, 0xa, 0x9, 0x5, 0xa, 0x17, 0x12, 0x9, 0x2, 0x4, 0xf, 0xe, 0x6, 0x7, 0x15, 0x0, 0xa, 0x4, 0x12, 0x17, 0x16, 0x0, 0x0, 0xc, 0x4, 0xb, 0x18, 0x5f, 0x78, 0x8a, 0x88, 0x85, 0x84, 0x8f, 0x99, 0x95, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x16, 0x12, 0x13, 0x11, 0x12, 0x0, 0x0, 0x6b, 0x6e, 0x7d, 0x7d, 0x7d, 0x72, 0x87, 0xb, 0x18, 0x18, 0xe, 0x9, 0xa, 0xc, 0xd, 0x0, 0x0, 0x14, 0xb, 0xe, 0xc, 0xb, 0xb, 0x10, 0x16, 0x0, 0x14, 0x13, 0x12, 0x14, 0x16, 0x16, 0x17, 0x16, 0x18, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x12, 0x7, 0x8, 0xc, 0x6, 0x5, 0x5, 0x10, 0xf, 0x9, 0x11, 0x16, 0x14, 0x12, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x9, 0x9, 0x4, 0x5, 0xb, 0x5, 0x2, 0x3, 0x3, 0x3, 0x5, 0x7, 0xb, 0x9, 0x3, 0x6, 0x11, 0x11, 0xd, 0xd, 0xf, 0x13, 0x13, 0x8, 0x7, 0x5, 0x7, 0xb, 0x18, 0x18, 0x17, 0x17, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x12, 0x15, 0x13, 0xc, 0x14, 0x12, 0x18, 0x11, 0x14, 0x14, 0x11, 0x9, 0x5, 0xa, 0xb, 0x7, 0xc, 0x17, 0x0, 0x0, 0x18, 0x17, 0x17, 0xa, 0x3, 0x6, 0xd, 0xa, 0x5, 0xc, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x15, 0x0, 0x0, 0x0, 0x0, 0xe, 0xc, 0xa, 0xc, 0xf, 0xb, 0xa, 0x11, 0xb, 0x13, 0x12, 0x10, 0xb, 0x0, 0x0, 0x17, 0x13, 0x14, 0x16, 0x9, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x5, 0x4, 0x3, 0x8, 0x13, 0xf, 0xc, 0x13, 0x14, 0x16, 0x0, 0x0, 0x16, 0x16, 0x17, 0x18, 0x14, 0xf, 0xd, 0xb, 0x13, 0x17, 0x10, 0x11, 0xe, 0x14, 0xf, 0x12, 0x14, 0xc, 0xf, 0xb, 0xc, 0xc, 0xe, 0xe, 0x15, 0xe, 0x9, 0xe, 0xf, 0x14, 0x17, 0x18, 0xd, 0x15, 0xd, 0x10, 0x18, 0xe, 0xc, 0x18, 0x0, 0x11, 0x8, 0xe, 0xf, 0xa, 0x12, 0x15, 0x14, 0x15, 0x15, 0x17, 0x13, 0x12, 0x0, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x14, 0x0, 0x17, 0x18, 0x18, 0x14, 0x0, 0x0, 0x17, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x0, 0x12, 0x6, 0x6, 0x14, 0xf, 0xa, 0x5, 0xc, 0x13, 0x12, 0x9, 0x3, 0x6, 0x10, 0x9, 0x4, 0x7, 0x17, 0x18, 0x8, 0x6, 0x12, 0xb, 0xb, 0x0, 0x0, 0x17, 0xb, 0x13, 0x0, 0x0, 0x63, 0x88, 0x7e, 0x7e, 0x88, 0x9c, 0x89, 0x5e, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x14, 0x13, 0x12, 0xf, 0x10, 0x16, 0x0, 0x14, 0xb, 0xb, 0xa, 0x9, 0x10, 0x0, 0x0, 0x5f, 0x75, 0x7d, 0x82, 0x72, 0x79, 0x87, 0xe, 0x0, 0x0, 0xc, 0xc, 0xf, 0x12, 0x14, 0x0, 0x0, 0x17, 0x14, 0x16, 0x14, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x15, 0x13, 0x16, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x9, 0x5, 0xb, 0x8, 0x6, 0x4, 0x9, 0x11, 0xd, 0xc, 0x17, 0x14, 0x14, 0xa, 0x3, 0x3, 0x4, 0x7, 0x7, 0x4, 0x3, 0x3, 0xa, 0x9, 0x3, 0x4, 0x7, 0xd, 0x7, 0x6, 0x8, 0x3, 0x2, 0x3, 0x8, 0x7, 0x4, 0x4, 0x7, 0x6, 0x3, 0x3, 0x9, 0x10, 0xc, 0xe, 0xf, 0x11, 0x10, 0xf, 0x4, 0x5, 0x5, 0x6, 0xf, 0x16, 0x14, 0x15, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0xe, 0x12, 0x13, 0x10, 0x0, 0x14, 0xd, 0xd, 0x9, 0x7, 0x6, 0x5, 0xe, 0x18, 0x0, 0x0, 0x0, 0x18, 0x15, 0x13, 0x16, 0xa, 0x5, 0xa, 0xb, 0xd, 0x4, 0x7, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x13, 0x18, 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x9, 0xb, 0xd, 0xf, 0xf, 0x11, 0xf, 0x11, 0x11, 0xd, 0x10, 0x12, 0xe, 0x12, 0x14, 0xe, 0x7, 0x6, 0x5, 0x3, 0x4, 0x5, 0x4, 0x4, 0x6, 0x7, 0xa, 0xc, 0xf, 0x8, 0xe, 0x16, 0x17, 0x16, 0x15, 0x10, 0xb, 0x12, 0x14, 0xc, 0x5, 0x5, 0x9, 0x15, 0x16, 0x15, 0x15, 0xd, 0x9, 0x12, 0xf, 0x14, 0x15, 0x9, 0xb, 0xe, 0xf, 0x7, 0x8, 0xe, 0x12, 0xa, 0xd, 0xc, 0xd, 0x16, 0x15, 0x10, 0x8, 0x12, 0xb, 0x10, 0x18, 0xc, 0x13, 0x18, 0x16, 0xb, 0xb, 0x11, 0xd, 0xb, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x15, 0x12, 0x12, 0x15, 0x17, 0x0, 0x18, 0x17, 0x15, 0x17, 0x16, 0x13, 0x16, 0x0, 0x0, 0x0, 0x11, 0x10, 0x16, 0x12, 0xf, 0xe, 0xe, 0x11, 0x16, 0xa, 0x7, 0x5, 0xd, 0x9, 0xe, 0x11, 0xb, 0xd, 0xa, 0x5, 0x6, 0x5, 0xa, 0x7, 0xb, 0x14, 0x0, 0x18, 0xb, 0x5, 0x10, 0xe, 0x11, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x16, 0x9, 0x3f, 0x65, 0x5d, 0x72, 0x67, 0x21, 0x11, 0x0, 0x17, 0x15, 0x10, 0xa, 0xe, 0x17, 0x14, 0xb, 0x8, 0x8, 0xa, 0x9, 0xd, 0x17, 0x16, 0xc, 0xa, 0xd, 0x9, 0xa, 0x16, 0x0, 0x0, 0x6b, 0x6b, 0x75, 0x72, 0x82, 0x75, 0x79, 0x13, 0x0, 0x0, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x14, 0x14, 0x18, 0x15, 0x17, 0x16, 0x16, 0x14, 0x10, 0x10, 0x11, 0x18, 0x0, 0x0, 0x13, 0x8, 0x6, 0x9, 0x6, 0x5, 0x6, 0xe, 0xc, 0x8, 0xe, 0x14, 0x11, 0x12, 0x5, 0x6, 0x3, 0x3, 0x5, 0x8, 0x5, 0x3, 0x4, 0x4, 0x6, 0x4, 0x2, 0x4, 0x3, 0x2, 0x2, 0x2, 0x4, 0x4, 0x3, 0x5, 0x6, 0x6, 0x3, 0x2, 0x7, 0x5, 0x2, 0x5, 0x7, 0x10, 0x15, 0x11, 0x12, 0x15, 0x18, 0xd, 0x6, 0x7, 0x8, 0x7, 0xe, 0x15, 0x0, 0x18, 0x17, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xb, 0x16, 0x12, 0x12, 0x0, 0x0, 0x0, 0x15, 0x17, 0x18, 0x16, 0x12, 0x17, 0x0, 0x0, 0x16, 0x17, 0x18, 0x13, 0x13, 0x17, 0xa, 0x5, 0x8, 0xc, 0x8, 0x4, 0x3, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xb, 0x8, 0xd, 0xd, 0xf, 0x13, 0xf, 0x12, 0xe, 0x10, 0x11, 0x16, 0x11, 0xa, 0x11, 0x11, 0x9, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x2, 0x9, 0xc, 0xe, 0xb, 0x8, 0x9, 0x6, 0x9, 0xa, 0xb, 0x8, 0x7, 0x4, 0x3, 0x7, 0x5, 0x7, 0x7, 0x8, 0x8, 0x11, 0x11, 0xf, 0x15, 0x15, 0x14, 0x17, 0x0, 0x0, 0x0, 0x10, 0x6, 0xc, 0x11, 0xa, 0xe, 0x14, 0xd, 0xc, 0xf, 0xb, 0xd, 0x15, 0x17, 0xd, 0x11, 0x18, 0x13, 0x13, 0x17, 0x12, 0x0, 0x0, 0x12, 0xa, 0xe, 0x10, 0x9, 0xf, 0x0, 0x15, 0x16, 0x0, 0x16, 0x16, 0x18, 0x0, 0x15, 0x14, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x14, 0xc, 0xf, 0x16, 0x10, 0xd, 0x14, 0x17, 0xf, 0xf, 0xb, 0x10, 0x16, 0xe, 0xe, 0x18, 0x0, 0x17, 0xd, 0x12, 0x12, 0xd, 0xe, 0xe, 0x10, 0x14, 0x14, 0x6, 0x4, 0x4, 0xa, 0x6, 0x9, 0xf, 0x9, 0x8, 0x8, 0x6, 0xa, 0x7, 0x10, 0x6, 0xd, 0x0, 0x18, 0x18, 0xe, 0x3, 0xf, 0x0, 0x17, 0x10, 0x0, 0x17, 0x0, 0x0, 0x0, 0xd, 0xb, 0x17, 0x18, 0x12, 0x9, 0x12, 0x10, 0x17, 0x0, 0x12, 0x10, 0xc, 0x8, 0xc, 0x14, 0xe, 0x8, 0x8, 0x8, 0x8, 0xb, 0x15, 0x0, 0x18, 0x11, 0x10, 0xe, 0xd, 0xf, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6e, 0x71, 0x6e, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x15, 0x14, 0x16, 0x15, 0x16, 0x0, 0x14, 0x11, 0xf, 0xc, 0xe, 0x9, 0xa, 0x14, 0x15, 0x13, 0xe, 0xc, 0xb, 0x8, 0xb, 0xf, 0x0, 0x18, 0x14, 0xe, 0x6, 0x7, 0x6, 0x5, 0x7, 0xc, 0x11, 0x9, 0x7, 0x12, 0x10, 0x13, 0xd, 0x3, 0x6, 0x3, 0x3, 0x2, 0x3, 0x5, 0x6, 0x3, 0x3, 0x3, 0x2, 0x4, 0x3, 0x5, 0x8, 0x5, 0x4, 0xb, 0xc, 0x3, 0x2, 0x8, 0xb, 0x6, 0x3, 0x3, 0x6, 0x4, 0x3, 0x3, 0xd, 0x14, 0x11, 0x16, 0x16, 0x16, 0x14, 0x5, 0x5, 0x5, 0x8, 0x6, 0x12, 0x16, 0x15, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x12, 0x7, 0x12, 0x10, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x16, 0x14, 0x18, 0x15, 0x6, 0x5, 0x8, 0xc, 0x5, 0x6, 0x4, 0xc, 0x17, 0x0, 0x0, 0x0, 0x0, 0x15, 0x14, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xa, 0x7, 0xb, 0x11, 0x11, 0x11, 0x12, 0x11, 0x12, 0x10, 0x16, 0x10, 0x12, 0xe, 0x11, 0xd, 0x6, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0xe, 0xc, 0xe, 0x7, 0x4, 0x8, 0x8, 0x5, 0x3, 0x7, 0x4, 0x5, 0x7, 0x7, 0x4, 0x4, 0x9, 0xb, 0xf, 0x4, 0x6, 0xb, 0x8, 0x8, 0x13, 0x0, 0x16, 0x11, 0xe, 0x17, 0x14, 0xa, 0xf, 0x16, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x18, 0x0, 0x18, 0x17, 0x17, 0x17, 0x16, 0x0, 0x0, 0x13, 0x17, 0x15, 0x14, 0xb, 0xc, 0x10, 0xd, 0xa, 0x14, 0x18, 0x11, 0x13, 0x0, 0xe, 0x11, 0x18, 0x18, 0xd, 0x13, 0x15, 0x11, 0x11, 0xe, 0x11, 0x0, 0x14, 0xb, 0xd, 0xe, 0xf, 0x13, 0x17, 0x12, 0x10, 0xb, 0xb, 0x11, 0x13, 0x12, 0x18, 0x0, 0x0, 0x13, 0xb, 0x15, 0x14, 0x10, 0x18, 0x18, 0x17, 0x18, 0x16, 0x6, 0x3, 0x6, 0x5, 0x4, 0x4, 0x5, 0x3, 0x3, 0x4, 0x8, 0x9, 0x5, 0xc, 0x5, 0xa, 0x13, 0xe, 0x14, 0x11, 0x5, 0xd, 0x17, 0xe, 0xa, 0x16, 0x17, 0x0, 0x0, 0x0, 0xb, 0x12, 0x18, 0x0, 0xe, 0xa, 0xe, 0x11, 0x18, 0x16, 0xd, 0xb, 0x6, 0x9, 0x11, 0x15, 0x10, 0x10, 0x12, 0x12, 0x13, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x15, 0x17, 0x6e, 0x68, 0x6b, 0x6e, 0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x15, 0x12, 0x14, 0x14, 0x11, 0x13, 0x0, 0x17, 0x0, 0x14, 0xd, 0xb, 0xa, 0xa, 0xa, 0xc, 0xf, 0x18, 0x13, 0x8, 0xb, 0x8, 0xd, 0x9, 0xb, 0x15, 0x14, 0x12, 0x6, 0x8, 0xd, 0xa, 0xb, 0x13, 0x0, 0x18, 0x11, 0x7, 0x8, 0x7, 0x4, 0x7, 0x9, 0x15, 0x11, 0xc, 0xe, 0x10, 0x12, 0x14, 0x7, 0x8, 0x8, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x7, 0x9, 0x4, 0x6, 0x9, 0x6, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x8, 0x4, 0x4, 0x7, 0x6, 0x3, 0x3, 0xb, 0x14, 0x13, 0x11, 0x18, 0x15, 0x15, 0x9, 0x3, 0x5, 0x8, 0x5, 0xd, 0x15, 0x17, 0x0, 0x18, 0x15, 0x0, 0x0, 0x0, 0x16, 0x13, 0x8, 0x8, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0xf, 0x4, 0x4, 0x5, 0x7, 0x4, 0x4, 0x8, 0xc, 0xd, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0xf, 0x17, 0x0, 0x0, 0x0, 0x0, 0x13, 0xc, 0x8, 0x6, 0x11, 0x10, 0x10, 0x13, 0x12, 0x11, 0x11, 0x12, 0x16, 0x12, 0xf, 0xd, 0x8, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0x9, 0xd, 0x12, 0xb, 0x6, 0x6, 0x5, 0x7, 0xa, 0x8, 0x8, 0xc, 0xc, 0xb, 0x3, 0x5, 0x7, 0xa, 0xf, 0x4, 0x6, 0x8, 0x6, 0x5, 0xa, 0x14, 0x14, 0xa, 0xd, 0x18, 0x14, 0x14, 0x18, 0x18, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x14, 0x15, 0x12, 0x17, 0x18, 0x15, 0x18, 0x18, 0xd, 0x9, 0xd, 0xe, 0x9, 0xd, 0x18, 0x0, 0x10, 0x17, 0x18, 0x11, 0x16, 0x18, 0x12, 0xc, 0x13, 0xf, 0x12, 0x10, 0xa, 0x15, 0x0, 0x14, 0xd, 0x15, 0xc, 0xe, 0x15, 0x18, 0xf, 0x15, 0x10, 0xf, 0x18, 0x16, 0x15, 0x0, 0x0, 0x0, 0x13, 0x13, 0x17, 0x13, 0x15, 0x17, 0x0, 0x0, 0x18, 0x17, 0xa, 0x3, 0x5, 0x4, 0x4, 0x7, 0x5, 0x4, 0x8, 0xc, 0x11, 0xd, 0x3, 0x8, 0x5, 0x9, 0x14, 0x13, 0x17, 0x13, 0x7, 0xa, 0x13, 0xf, 0x13, 0x18, 0x16, 0x0, 0x0, 0x0, 0x11, 0x13, 0x0, 0x14, 0xa, 0xe, 0xb, 0x16, 0x0, 0x16, 0x15, 0x12, 0x10, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x18, 0x0, 0x16, 0x17, 0x17, 0x18, 0x0, 0x18, 0xf, 0x18, 0x6b, 0x6e, 0x71, 0x68, 0x6e, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x18, 0x18, 0x13, 0x10, 0xf, 0x0, 0x18, 0x13, 0xa, 0xc, 0xc, 0x9, 0x14, 0x17, 0x15, 0x16, 0x10, 0x8, 0x9, 0xb, 0xa, 0x9, 0xb, 0x13, 0x0, 0xf, 0x8, 0xa, 0xc, 0xd, 0x8, 0xc, 0x0, 0x0, 0x17, 0x9, 0xb, 0xa, 0xc, 0x9, 0x18, 0x0, 0x16, 0xc, 0x4, 0xb, 0xa, 0x5, 0x6, 0xa, 0x15, 0x10, 0x10, 0xf, 0xe, 0x15, 0x10, 0x6, 0x9, 0x7, 0x4, 0x4, 0x7, 0x4, 0x4, 0x4, 0x4, 0x2, 0x5, 0xa, 0x7, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x8, 0x6, 0x2, 0x3, 0x8, 0x6, 0x3, 0x7, 0x7, 0x4, 0x2, 0x6, 0x13, 0x12, 0xe, 0x15, 0x12, 0x12, 0x11, 0x6, 0x8, 0x9, 0x9, 0x9, 0x14, 0x17, 0x0, 0x18, 0x11, 0x18, 0x0, 0x17, 0x12, 0xd, 0x7, 0x9, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x15, 0x0, 0x16, 0xb, 0x3, 0x3, 0x4, 0x5, 0x3, 0x6, 0x15, 0x0, 0xd, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x18, 0x0, 0x15, 0x15, 0x0, 0x16, 0x13, 0xc, 0x6, 0xe, 0x12, 0xe, 0x12, 0x13, 0x12, 0x13, 0x13, 0x13, 0x11, 0x8, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x9, 0x6, 0x11, 0x12, 0x8, 0x3, 0x3, 0x3, 0xa, 0xb, 0x9, 0xa, 0xa, 0x9, 0xa, 0x7, 0x5, 0x5, 0x8, 0x9, 0x4, 0x4, 0x7, 0x14, 0x12, 0x5, 0x8, 0xb, 0xd, 0xc, 0x13, 0x12, 0x17, 0x16, 0x15, 0x15, 0x15, 0x15, 0x18, 0x18, 0x17, 0x18, 0x16, 0x12, 0x11, 0x15, 0x10, 0xc, 0x11, 0x14, 0x0, 0x0, 0x15, 0xa, 0xd, 0xd, 0xb, 0xd, 0x14, 0x18, 0x15, 0x12, 0x16, 0x14, 0x13, 0x17, 0x17, 0x10, 0x11, 0x13, 0x18, 0x15, 0x10, 0x11, 0x0, 0x0, 0x13, 0x14, 0x0, 0x16, 0x17, 0x18, 0x17, 0x17, 0x0, 0x13, 0xf, 0x17, 0x16, 0x18, 0x14, 0x0, 0x0, 0x14, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x16, 0x16, 0x17, 0x13, 0x5, 0x3, 0x4, 0x4, 0x6, 0x4, 0xb, 0x15, 0x17, 0x16, 0xc, 0x6, 0xc, 0xa, 0xc, 0x12, 0x12, 0x16, 0x16, 0xf, 0xc, 0x11, 0x15, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x12, 0x11, 0x18, 0xd, 0xc, 0xb, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x15, 0x18, 0x13, 0x12, 0x12, 0x0, 0x6e, 0x72, 0x79, 0x7d, 0x7d, 0x71, 0x5f, 0x0, 0x11, 0x11, 0xf, 0xd, 0x11, 0x15, 0x0, 0x14, 0xd, 0xc, 0xa, 0xb, 0xf, 0x15, 0x16, 0x12, 0xc, 0xb, 0xc, 0xe, 0x0, 0x18, 0x18, 0x13, 0xa, 0x8, 0xc, 0xd, 0xd, 0xb, 0xb, 0x18, 0x17, 0xc, 0x11, 0xc, 0xf, 0xd, 0xa, 0x10, 0x18, 0x18, 0x16, 0xb, 0x12, 0xe, 0x13, 0x13, 0x0, 0x0, 0x17, 0x7, 0x5, 0x9, 0x6, 0x8, 0x3, 0xc, 0x10, 0xf, 0x11, 0x13, 0x10, 0x14, 0x8, 0x3, 0x4, 0xb, 0xa, 0x5, 0x8, 0x5, 0x3, 0x6, 0x9, 0x8, 0x5, 0x3, 0x3, 0x3, 0x2, 0x2, 0x6, 0xc, 0x5, 0x3, 0x9, 0x8, 0x3, 0x3, 0x5, 0x8, 0x5, 0x3, 0x9, 0xa, 0x2, 0x3, 0xb, 0xe, 0xd, 0x11, 0x12, 0x11, 0x15, 0xe, 0x4, 0x7, 0x8, 0x9, 0x10, 0x0, 0x0, 0x0, 0xf, 0x11, 0xf, 0xc, 0x18, 0xe, 0x9, 0x11, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0xa, 0x4, 0x5, 0x5, 0x4, 0x3, 0x7, 0x16, 0x18, 0x9, 0x9, 0x17, 0x0, 0x0, 0x17, 0xe, 0x14, 0x0, 0x0, 0x17, 0x10, 0x16, 0x0, 0x0, 0x14, 0xd, 0x11, 0xe, 0x12, 0x13, 0x14, 0x16, 0x12, 0x14, 0xc, 0x7, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x7, 0xe, 0x5, 0x7, 0x6, 0x8, 0x9, 0x6, 0x6, 0x8, 0x7, 0x7, 0x7, 0x8, 0x8, 0x7, 0x8, 0x8, 0x5, 0x7, 0x7, 0x7, 0x4, 0x5, 0x4, 0x6, 0x17, 0x0, 0xf, 0x9, 0xb, 0x6, 0x5, 0xc, 0x17, 0x17, 0xe, 0x15, 0x16, 0xd, 0xc, 0x16, 0x12, 0xf, 0x17, 0x15, 0x7, 0xb, 0x11, 0x6, 0x8, 0xd, 0xc, 0x18, 0x0, 0xe, 0xc, 0xd, 0x9, 0x8, 0x11, 0x17, 0x18, 0x11, 0x14, 0x18, 0x17, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0xf, 0x13, 0x17, 0x10, 0x11, 0x18, 0x0, 0x11, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x8, 0xc, 0xe, 0x10, 0xe, 0xd, 0x10, 0x11, 0x10, 0x11, 0x10, 0xe, 0x15, 0x11, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0xd, 0x11, 0x12, 0x6, 0xe, 0xf, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x13, 0x12, 0x11, 0xd, 0xe, 0x17, 0x0, 0x0, 0x13, 0xc, 0xf, 0x17, 0x18, 0x12, 0x9, 0x9, 0x11, 0x0, 0x79, 0x79, 0x5f, 0x6e, 0x77, 0x82, 0x6b, 0x18, 0xa, 0xc, 0xb, 0x7, 0xe, 0x0, 0x18, 0x13, 0xb, 0xd, 0x9, 0xb, 0x15, 0x15, 0x13, 0x8, 0xb, 0xd, 0xd, 0x17, 0x0, 0x0, 0x0, 0x10, 0x8, 0xd, 0x11, 0xf, 0xb, 0x12, 0x14, 0x0, 0x15, 0x12, 0x17, 0x14, 0x17, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x5, 0x7, 0x4, 0x4, 0x7, 0xc, 0x10, 0xa, 0xd, 0x12, 0x13, 0x11, 0xf, 0x3, 0x5, 0x6, 0x6, 0xb, 0x6, 0x3, 0x5, 0x4, 0x2, 0x4, 0x8, 0x6, 0x3, 0x3, 0x4, 0x7, 0x3, 0x5, 0x6, 0x4, 0x5, 0x3, 0x2, 0x2, 0x3, 0x2, 0x5, 0x5, 0x3, 0x6, 0xa, 0x5, 0x2, 0x3, 0xa, 0x10, 0xd, 0xe, 0xb, 0x12, 0xf, 0x7, 0x2, 0x5, 0x6, 0x6, 0x13, 0x0, 0x0, 0x12, 0xc, 0x11, 0xf, 0x0, 0xf, 0xa, 0x14, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xd, 0x16, 0xd, 0xd, 0xd, 0x3, 0x4, 0x3, 0x8, 0x13, 0x14, 0x9, 0x13, 0x0, 0x0, 0x0, 0x16, 0x11, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x15, 0x14, 0x11, 0x14, 0xc, 0xf, 0x10, 0x13, 0x15, 0x16, 0x12, 0x8, 0x5, 0x5, 0x7, 0x6, 0x4, 0x3, 0x3, 0x3, 0x9, 0xd, 0x5, 0x3, 0x6, 0x6, 0x3, 0x5, 0x10, 0x18, 0xf, 0x5, 0x6, 0xa, 0x9, 0x9, 0xb, 0x7, 0x3, 0x4, 0x5, 0x5, 0x4, 0x9, 0x7, 0x5, 0xc, 0x15, 0x15, 0x11, 0xc, 0x13, 0xd, 0x9, 0xf, 0x11, 0xd, 0x11, 0x18, 0x10, 0x10, 0x12, 0xb, 0x7, 0xd, 0xb, 0x8, 0x12, 0x15, 0xb, 0x10, 0x11, 0x14, 0x18, 0x14, 0xc, 0xf, 0x9, 0x9, 0xd, 0x13, 0x18, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x17, 0x11, 0x12, 0x15, 0x0, 0x0, 0x18, 0x16, 0x18, 0x18, 0x17, 0x17, 0x15, 0x17, 0x16, 0x18, 0x14, 0x10, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0x18, 0x0, 0x18, 0x17, 0xd, 0x16, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0xd, 0x3, 0x5, 0x3, 0x5, 0x5, 0x2, 0x5, 0x5, 0x5, 0x7, 0x7, 0x10, 0xf, 0xf, 0x14, 0x16, 0x13, 0x15, 0x15, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x13, 0xb, 0x8, 0x12, 0x16, 0x0, 0x18, 0x15, 0x13, 0xf, 0x12, 0x18, 0x17, 0x16, 0xb, 0x9, 0xa, 0x8, 0xe, 0x14, 0x18, 0x0, 0xc, 0xa, 0xd, 0x0, 0x0, 0x10, 0x14, 0xe, 0x12, 0x18, 0x82, 0x71, 0x6b, 0x71, 0x75, 0x6b, 0x6b, 0x16, 0xd, 0xe, 0xb, 0x7, 0x11, 0x0, 0x0, 0x12, 0xe, 0xc, 0xb, 0xe, 0x0, 0x0, 0x13, 0xb, 0xc, 0xb, 0x10, 0x18, 0x16, 0x17, 0x17, 0x12, 0xf, 0x14, 0x17, 0x15, 0x15, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x17, 0x16, 0x18, 0x15, 0x0, 0x15, 0x16, 0x16, 0x0, 0x18, 0x0, 0xb, 0x4, 0x5, 0x3, 0x6, 0x11, 0x17, 0xf, 0xa, 0x11, 0x14, 0xf, 0x13, 0xa, 0x2, 0x7, 0x6, 0x1, 0x3, 0x3, 0x4, 0xb, 0x9, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb, 0x4, 0x2, 0x2, 0x3, 0x4, 0x3, 0x5, 0x6, 0x2, 0x3, 0x5, 0x6, 0x3, 0x3, 0x8, 0x6, 0x2, 0x2, 0x8, 0xe, 0xe, 0xc, 0x9, 0xb, 0xf, 0xe, 0x6, 0x4, 0x5, 0x7, 0xc, 0x0, 0x0, 0x18, 0x14, 0x16, 0x17, 0x0, 0x11, 0xa, 0x13, 0x10, 0x17, 0x0, 0x0, 0x0, 0x16, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x17, 0x9, 0x9, 0x13, 0x5, 0x4, 0x3, 0x7, 0xf, 0x13, 0xb, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0x13, 0x11, 0xb, 0xe, 0xb, 0x11, 0x12, 0x10, 0xe, 0x9, 0x4, 0x6, 0x3, 0x9, 0x9, 0x4, 0x6, 0x7, 0x4, 0xa, 0x4, 0x5, 0x5, 0x5, 0x4, 0x3, 0x9, 0x16, 0x0, 0x10, 0x4, 0x6, 0x9, 0x8, 0xc, 0xf, 0x4, 0x3, 0x3, 0x4, 0xc, 0x10, 0x13, 0x12, 0x12, 0x8, 0x11, 0x0, 0x0, 0x14, 0x17, 0x0, 0x16, 0x12, 0x9, 0xc, 0x12, 0x15, 0x15, 0x18, 0x15, 0x13, 0x12, 0x12, 0x12, 0x18, 0x18, 0x13, 0x15, 0x17, 0x18, 0x17, 0x14, 0xe, 0xf, 0x13, 0xa, 0x9, 0x13, 0x18, 0x15, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x15, 0x10, 0x14, 0x17, 0x0, 0x0, 0x13, 0x18, 0x0, 0x14, 0xd, 0x10, 0x15, 0x18, 0x17, 0x0, 0x13, 0x12, 0x11, 0xf, 0x14, 0x15, 0x0, 0x0, 0x0, 0x0, 0x14, 0xd, 0x15, 0x16, 0x17, 0x16, 0xf, 0x16, 0x17, 0x0, 0x17, 0x18, 0x0, 0x0, 0x15, 0x8, 0x8, 0x8, 0xe, 0xf, 0xc, 0xe, 0xb, 0x9, 0x6, 0x4, 0xf, 0xc, 0x10, 0x17, 0x0, 0x0, 0x15, 0x17, 0x17, 0x18, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0x9, 0xa, 0xd, 0x17, 0x0, 0x10, 0xc, 0x7, 0x6, 0xf, 0x0, 0x0, 0x16, 0x8, 0x9, 0xa, 0x7, 0x10, 0x0, 0x18, 0x12, 0x9, 0xb, 0xf, 0x18, 0x16, 0x11, 0x0, 0x0, 0x12, 0x12, 0x82, 0x75, 0x6b, 0x71, 0x63, 0x6b, 0x68, 0xe, 0x14, 0xd, 0x7, 0xe, 0x0, 0x0, 0x0, 0x11, 0xf, 0xb, 0xe, 0x12, 0x14, 0x13, 0x11, 0x15, 0x14, 0x14, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x15, 0x15, 0x15, 0x16, 0x17, 0x14, 0x17, 0x16, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x5, 0x3, 0x5, 0x5, 0x8, 0x15, 0x14, 0xd, 0xe, 0x12, 0x11, 0x10, 0x12, 0x6, 0x8, 0x9, 0x4, 0x2, 0x7, 0x7, 0x2, 0x3, 0x3, 0x4, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x2, 0x2, 0x2, 0x5, 0x7, 0x3, 0x9, 0xd, 0x5, 0x2, 0x3, 0x7, 0x8, 0x3, 0x4, 0x4, 0x2, 0x3, 0x6, 0xc, 0xc, 0xb, 0x9, 0x7, 0xf, 0xe, 0xe, 0x2, 0x4, 0x8, 0x9, 0x17, 0x0, 0x17, 0x16, 0x11, 0x16, 0x0, 0x12, 0xa, 0xc, 0xd, 0x17, 0x0, 0x0, 0x14, 0xf, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x11, 0x3, 0x5, 0xd, 0x5, 0x6, 0x4, 0x6, 0xe, 0x15, 0xf, 0x18, 0x0, 0x16, 0x14, 0x13, 0x13, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x10, 0x15, 0x17, 0x11, 0x17, 0x16, 0x16, 0x11, 0xa, 0x5, 0x6, 0x4, 0x3, 0x3, 0x6, 0x5, 0x3, 0xa, 0x13, 0x7, 0x8, 0x5, 0x4, 0x4, 0x3, 0x3, 0x9, 0x10, 0x16, 0x16, 0xa, 0x4, 0x8, 0x8, 0x7, 0x9, 0xa, 0x6, 0x9, 0xa, 0x8, 0x16, 0x0, 0x0, 0x0, 0x0, 0x12, 0x16, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x11, 0x9, 0x7, 0xb, 0xf, 0x11, 0x13, 0x18, 0x0, 0x18, 0x15, 0x0, 0x18, 0x15, 0x17, 0x18, 0x0, 0x18, 0x10, 0xa, 0x11, 0x14, 0xb, 0xe, 0x0, 0x14, 0xe, 0x18, 0x0, 0x18, 0x17, 0x16, 0x0, 0x12, 0x13, 0x17, 0x14, 0x15, 0x11, 0xe, 0x18, 0x17, 0xe, 0xa, 0xb, 0xf, 0xf, 0x12, 0x0, 0x17, 0x18, 0x14, 0xb, 0xe, 0x15, 0x16, 0x14, 0x18, 0x18, 0xf, 0xf, 0x14, 0x0, 0x18, 0xf, 0x12, 0x10, 0xf, 0x17, 0x17, 0x0, 0x0, 0x18, 0x12, 0x7, 0x5, 0x4, 0x5, 0x8, 0x8, 0xa, 0xa, 0x11, 0xb, 0x7, 0xb, 0xc, 0x11, 0x11, 0x12, 0x16, 0x18, 0x17, 0x17, 0x18, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x10, 0xa, 0x7, 0x9, 0x12, 0x0, 0x17, 0xd, 0xd, 0x8, 0x9, 0x11, 0x0, 0x0, 0xe, 0x6, 0xa, 0xa, 0xb, 0x12, 0x18, 0x15, 0xa, 0xa, 0xc, 0xe, 0x16, 0xf, 0x13, 0x16, 0x16, 0x16, 0x17, 0x65, 0x63, 0x6b, 0x71, 0x6e, 0x6b, 0x7d, 0x11, 0x11, 0x8, 0x8, 0x16, 0x17, 0x17, 0x17, 0x15, 0x16, 0x16, 0x17, 0x17, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x18, 0x0, 0x18, 0x17, 0x18, 0x17, 0x16, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x17, 0x16, 0x15, 0x14, 0x14, 0x13, 0x11, 0x12, 0x12, 0x9, 0x7, 0x4, 0x7, 0x4, 0x9, 0x14, 0x10, 0xd, 0x10, 0x10, 0xf, 0x12, 0xd, 0x6, 0xa, 0x6, 0x3, 0x3, 0x5, 0x8, 0x4, 0x2, 0x5, 0xe, 0xd, 0x3, 0x4, 0x8, 0x8, 0x3, 0x2, 0x2, 0x3, 0x2, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x6, 0xa, 0xd, 0xb, 0x9, 0xc, 0xe, 0x10, 0x8, 0x3, 0x6, 0xd, 0x17, 0x0, 0x17, 0xe, 0xd, 0x17, 0x18, 0x11, 0xb, 0x8, 0xa, 0x18, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x16, 0x12, 0x8, 0x5, 0x7, 0x4, 0xe, 0x8, 0x6, 0x12, 0x11, 0xc, 0xc, 0xb, 0x8, 0x5, 0x7, 0x8, 0x7, 0x9, 0x14, 0x0, 0x0, 0x0, 0x15, 0xf, 0x11, 0x0, 0x18, 0x0, 0x18, 0xe, 0x7, 0x9, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x5, 0xb, 0x6, 0xc, 0x7, 0x6, 0x4, 0x4, 0x4, 0x3, 0x3, 0x8, 0xb, 0xd, 0xb, 0x4, 0x4, 0x8, 0x7, 0x6, 0x8, 0x7, 0x8, 0xb, 0xb, 0x9, 0x14, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x11, 0xc, 0x9, 0x12, 0x0, 0x0, 0x14, 0x13, 0x16, 0x15, 0x13, 0xb, 0xe, 0x18, 0x0, 0xe, 0xc, 0xf, 0xe, 0x8, 0x14, 0x0, 0x11, 0x11, 0x16, 0x18, 0xf, 0x14, 0x18, 0x0, 0x16, 0x18, 0x18, 0x12, 0x14, 0xc, 0xe, 0x10, 0x12, 0xc, 0xd, 0x10, 0x16, 0x10, 0x16, 0x0, 0x18, 0x0, 0x10, 0xc, 0xf, 0x0, 0x18, 0x14, 0x18, 0x18, 0xe, 0x17, 0x16, 0x11, 0x12, 0xb, 0x11, 0x9, 0x9, 0x14, 0x16, 0x0, 0x17, 0x10, 0x8, 0x4, 0x3, 0x3, 0x3, 0x4, 0x2, 0x5, 0x6, 0x7, 0x8, 0x8, 0xa, 0xd, 0x12, 0xc, 0x9, 0xa, 0x14, 0x17, 0x16, 0x18, 0x11, 0x16, 0x18, 0x0, 0x0, 0x16, 0x10, 0x9, 0x8, 0xb, 0x12, 0x0, 0x12, 0xb, 0xb, 0x9, 0x7, 0xf, 0x0, 0x15, 0xa, 0x8, 0xa, 0xa, 0x12, 0x0, 0x0, 0x15, 0x7, 0xb, 0x8, 0xf, 0x15, 0x7, 0xb, 0x16, 0x16, 0x0, 0x0, 0x6b, 0x6b, 0x5f, 0x6e, 0x71, 0x68, 0x6e, 0x18, 0xd, 0x9, 0x11, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x14, 0xf, 0x11, 0x11, 0xf, 0x10, 0xe, 0xd, 0xa, 0xc, 0xd, 0xb, 0xe, 0xa, 0xc, 0xd, 0xc, 0xf, 0xb, 0x9, 0xb, 0x3, 0x5, 0x5, 0xf, 0x11, 0xa, 0xe, 0x11, 0xd, 0xd, 0x11, 0x6, 0x8, 0xc, 0x8, 0x4, 0x3, 0x2, 0x3, 0x5, 0x3, 0x3, 0x8, 0xa, 0x4, 0x2, 0x6, 0xc, 0x7, 0x2, 0x3, 0xb, 0xd, 0x4, 0x1, 0x3, 0x2, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x3, 0x4, 0x8, 0x4, 0x3, 0x9, 0x8, 0x9, 0xf, 0x10, 0x13, 0x10, 0x12, 0x6, 0x4, 0xb, 0xc, 0x13, 0x0, 0x12, 0x12, 0x18, 0x14, 0xf, 0xc, 0x10, 0x10, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x13, 0x8, 0xe, 0x16, 0x8, 0x3, 0x7, 0x4, 0x8, 0x4, 0x4, 0x8, 0x7, 0x4, 0x9, 0x11, 0xe, 0xf, 0x12, 0x17, 0x15, 0xe, 0x9, 0xd, 0x15, 0x0, 0x16, 0x16, 0xd, 0x17, 0x13, 0x11, 0xe, 0x7, 0x6, 0x6, 0x4, 0x3, 0x3, 0x4, 0x5, 0x9, 0x6, 0xd, 0xa, 0x4, 0x4, 0x3, 0x3, 0x3, 0x7, 0x5, 0x3, 0x3, 0x5, 0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x4, 0x8, 0x5, 0x8, 0x5, 0x4, 0x4, 0xe, 0x0, 0x0, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x10, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xc, 0xe, 0x18, 0x17, 0x8, 0xa, 0x13, 0x15, 0x11, 0x8, 0x11, 0x0, 0x14, 0xa, 0x10, 0xd, 0x9, 0xc, 0x18, 0x15, 0xf, 0x12, 0x0, 0x16, 0x11, 0x18, 0x11, 0x17, 0x18, 0x0, 0x13, 0x13, 0x10, 0xf, 0x14, 0x13, 0x18, 0x16, 0xe, 0x11, 0x14, 0x12, 0x0, 0x0, 0x0, 0x17, 0x15, 0x11, 0x15, 0x17, 0x18, 0x17, 0x0, 0x13, 0xe, 0x18, 0x13, 0xc, 0x13, 0x11, 0x15, 0xf, 0x12, 0x0, 0x0, 0x0, 0x13, 0xd, 0x7, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0xd, 0x16, 0x13, 0xe, 0x11, 0x15, 0x10, 0x10, 0x10, 0x12, 0x16, 0x16, 0x0, 0x17, 0x0, 0x0, 0xd, 0xc, 0x8, 0xa, 0xd, 0x12, 0x0, 0xf, 0x9, 0x9, 0xa, 0xa, 0x10, 0x18, 0x12, 0xc, 0xa, 0xa, 0xf, 0x16, 0x18, 0x0, 0x14, 0xe, 0xc, 0xf, 0x12, 0x13, 0xa, 0x13, 0x0, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x75, 0x18, 0x14, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x12, 0x13, 0x11, 0xe, 0xe, 0x11, 0xf, 0x10, 0xf, 0xd, 0xf, 0x10, 0xd, 0xb, 0xb, 0xa, 0x9, 0x9, 0x9, 0x8, 0xa, 0xa, 0xc, 0xc, 0xf, 0x10, 0xc, 0xe, 0xf, 0xf, 0xf, 0xb, 0x9, 0x9, 0x3, 0x4, 0xe, 0x13, 0xa, 0x9, 0xf, 0xf, 0xd, 0x11, 0xf, 0x3, 0x7, 0xb, 0x7, 0x3, 0x2, 0x3, 0x6, 0x8, 0x7, 0x3, 0x2, 0x4, 0x8, 0x5, 0x4, 0x5, 0x6, 0x3, 0x3, 0xa, 0xc, 0x5, 0x2, 0x3, 0x4, 0x3, 0x4, 0x6, 0x4, 0x3, 0x3, 0x6, 0x8, 0x4, 0x4, 0xc, 0x7, 0x3, 0x7, 0x9, 0xb, 0xc, 0x13, 0xf, 0xc, 0x14, 0xe, 0x5, 0x6, 0x5, 0xa, 0x17, 0x0, 0x0, 0x0, 0x17, 0xc, 0x5, 0x14, 0xf, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x10, 0xb, 0xa, 0x15, 0x9, 0x2, 0x4, 0x4, 0x3, 0x3, 0x2, 0xa, 0x10, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x10, 0xd, 0x17, 0x0, 0x17, 0xf, 0x13, 0x11, 0xe, 0xc, 0x9, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0xa, 0xf, 0xc, 0x8, 0xb, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x4, 0x4, 0x4, 0x3, 0x5, 0xf, 0x9, 0x3, 0x5, 0x5, 0x5, 0x6, 0x6, 0xb, 0x7, 0xa, 0x9, 0x10, 0x0, 0x0, 0x15, 0x12, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x13, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf, 0x17, 0x11, 0x15, 0x17, 0x18, 0x0, 0x17, 0x0, 0x0, 0xc, 0xa, 0x14, 0xf, 0x9, 0x12, 0x0, 0x11, 0xf, 0x15, 0x0, 0x14, 0x16, 0x0, 0x16, 0x18, 0x0, 0x0, 0x12, 0x18, 0xf, 0x10, 0x16, 0x0, 0x17, 0x14, 0x10, 0x12, 0x12, 0x18, 0x18, 0x17, 0x14, 0x14, 0x15, 0x16, 0x0, 0x0, 0x0, 0x17, 0x15, 0x10, 0x12, 0x14, 0x17, 0x16, 0x12, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0x6, 0x5, 0x4, 0x3, 0x4, 0x6, 0x4, 0x2, 0x3, 0x4, 0x3, 0x5, 0xa, 0xd, 0x18, 0x16, 0x13, 0x16, 0x0, 0x0, 0xf, 0xb, 0xa, 0xf, 0x16, 0x18, 0x0, 0x11, 0x9, 0x9, 0x8, 0xa, 0x10, 0x18, 0x18, 0xc, 0x9, 0xa, 0xc, 0x13, 0x15, 0x16, 0x18, 0x13, 0x13, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x11, 0x13, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x6b, 0x5f, 0x6b, 0x5f, 0x6e, 0x77, 0x14, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x11, 0xf, 0xb, 0xc, 0xd, 0xc, 0xa, 0xa, 0xa, 0x7, 0x6, 0x8, 0x8, 0x7, 0xa, 0xd, 0xc, 0xa, 0x9, 0x7, 0x9, 0xa, 0xb, 0xb, 0xa, 0xb, 0xb, 0xe, 0xf, 0x10, 0x12, 0x13, 0x15, 0x15, 0x14, 0x15, 0x11, 0x11, 0x11, 0x0, 0x15, 0x8, 0x5, 0x4, 0x2, 0x6, 0xe, 0xe, 0x7, 0xb, 0xd, 0xb, 0x10, 0x15, 0x9, 0x3, 0x3, 0x8, 0xa, 0x5, 0x2, 0x3, 0x6, 0x5, 0x4, 0x3, 0x2, 0x6, 0xf, 0xd, 0x5, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x7, 0x5, 0x5, 0xa, 0x6, 0x4, 0x3, 0x9, 0xd, 0xa, 0xe, 0xd, 0xd, 0x16, 0x15, 0x7, 0x6, 0x9, 0x4, 0xc, 0x0, 0x17, 0x0, 0x18, 0xe, 0x6, 0xd, 0x8, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x9, 0xc, 0x15, 0x8, 0x3, 0x3, 0x4, 0x9, 0xf, 0xf, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x16, 0xd, 0xc, 0x14, 0x17, 0x17, 0x18, 0xb, 0xa, 0x9, 0x8, 0xe, 0xc, 0x7, 0x4, 0x3, 0x3, 0x4, 0xb, 0xf, 0x5, 0x4, 0x4, 0x3, 0x3, 0x6, 0xb, 0x4, 0x2, 0x3, 0x3, 0x3, 0x8, 0x13, 0x9, 0x3, 0x3, 0x4, 0x4, 0x3, 0x5, 0x8, 0x6, 0x10, 0xd, 0x13, 0x0, 0x0, 0x15, 0x13, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x14, 0x10, 0x16, 0x0, 0x0, 0x0, 0x0, 0xd, 0x9, 0x17, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x14, 0xa, 0xd, 0x11, 0xc, 0x12, 0x18, 0x0, 0x17, 0x16, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x16, 0x18, 0x13, 0x18, 0x18, 0x16, 0x16, 0x15, 0x17, 0x18, 0x0, 0x0, 0x12, 0x10, 0x12, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x13, 0x18, 0x0, 0x0, 0x0, 0x15, 0x15, 0x0, 0x0, 0x18, 0x13, 0xd, 0xb, 0xa, 0x4, 0x7, 0xd, 0xb, 0x9, 0xa, 0x6, 0x6, 0x5, 0x3, 0x2, 0xb, 0x11, 0x6, 0xd, 0x18, 0x12, 0x16, 0x14, 0x0, 0x17, 0x13, 0xf, 0xd, 0xe, 0x16, 0x14, 0x9, 0xa, 0x6, 0x9, 0xe, 0x10, 0x0, 0x18, 0x13, 0x13, 0x14, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x17, 0x0, 0x0, 0x18, 0x18, 0xd, 0xf, 0x18, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x8c, 0x9, 0xf, 0xe, 0xb, 0xd, 0xe, 0xe, 0xf, 0xe, 0x10, 0x11, 0x11, 0xe, 0xb, 0xc, 0xe, 0xf, 0x10, 0xf, 0x10, 0x11, 0xf, 0xf, 0xf, 0x11, 0x12, 0x12, 0x13, 0x14, 0x16, 0x16, 0x15, 0x16, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x17, 0x15, 0x16, 0xd, 0x5, 0x3, 0x5, 0x4, 0xa, 0x10, 0xb, 0x9, 0xc, 0xb, 0xd, 0x10, 0x14, 0x6, 0x3, 0x3, 0x4, 0x7, 0x4, 0x2, 0x3, 0x3, 0x5, 0x6, 0x7, 0x5, 0x2, 0x4, 0x5, 0x5, 0x3, 0x2, 0x6, 0xc, 0x5, 0x2, 0x4, 0x7, 0x5, 0x3, 0x4, 0x3, 0x2, 0x8, 0x7, 0x2, 0x2, 0x6, 0x7, 0x4, 0x2, 0x6, 0x7, 0x2, 0x5, 0xc, 0x9, 0xb, 0xb, 0xe, 0x11, 0x14, 0xe, 0x5, 0x5, 0x4, 0x6, 0x14, 0x17, 0x18, 0x12, 0x6, 0xc, 0x15, 0xd, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xa, 0xe, 0x14, 0xb, 0x3, 0x5, 0x4, 0x9, 0x12, 0x17, 0x15, 0x10, 0x12, 0x17, 0x0, 0x17, 0x16, 0x17, 0x13, 0x15, 0x18, 0x15, 0x13, 0x16, 0x12, 0x13, 0x17, 0x0, 0x17, 0xa, 0xa, 0xa, 0x10, 0xa, 0xb, 0x9, 0x6, 0x4, 0x4, 0x4, 0xc, 0xe, 0x4, 0x4, 0x4, 0x4, 0x8, 0x7, 0x8, 0x3, 0x8, 0x4, 0x3, 0x5, 0x7, 0x6, 0x5, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x7, 0xf, 0xf, 0x16, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x11, 0x18, 0x0, 0x0, 0x0, 0x10, 0xe, 0x16, 0x18, 0x17, 0x0, 0x16, 0x16, 0x0, 0x0, 0xe, 0x9, 0xd, 0xb, 0xb, 0x16, 0x17, 0x16, 0x16, 0x17, 0x0, 0x17, 0x18, 0x17, 0x15, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x18, 0x0, 0x15, 0x16, 0x17, 0x16, 0x0, 0x0, 0x16, 0x10, 0x10, 0x10, 0x18, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x14, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x14, 0xd, 0x7, 0x3, 0x8, 0x9, 0x5, 0x8, 0x10, 0xb, 0x8, 0xc, 0xa, 0xb, 0x7, 0x4, 0x4, 0x6, 0xe, 0xb, 0xf, 0x15, 0xc, 0xe, 0xa, 0x13, 0x0, 0x18, 0x18, 0x18, 0x12, 0x10, 0x8, 0xe, 0x9, 0x7, 0xc, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x18, 0x0, 0x0, 0x6b, 0x5f, 0x6b, 0x5f, 0x6b, 0x6e, 0x8c, 0xb, 0xd, 0xe, 0xc, 0xe, 0x10, 0x10, 0x12, 0x17, 0x0, 0x0, 0x0, 0x16, 0x15, 0x15, 0x17, 0x0, 0x0, 0x18, 0x17, 0x16, 0x14, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x11, 0x11, 0x15, 0xf, 0xd, 0xd, 0x11, 0x17, 0x16, 0xd, 0x8, 0x10, 0x16, 0x17, 0x0, 0x14, 0xe, 0x7, 0x6, 0x6, 0x3, 0x5, 0xf, 0x15, 0xd, 0x8, 0x9, 0xc, 0xe, 0xf, 0x10, 0xa, 0x4, 0x4, 0x3, 0x2, 0x4, 0xb, 0x8, 0x3, 0x3, 0x5, 0x7, 0x8, 0x7, 0x5, 0x1, 0x3, 0x6, 0xa, 0x6, 0x4, 0xb, 0xa, 0x3, 0x4, 0x9, 0xd, 0x4, 0x4, 0x5, 0x2, 0x5, 0x4, 0x2, 0x2, 0x4, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0xb, 0xe, 0xa, 0xa, 0xa, 0x9, 0xd, 0x14, 0xa, 0x2, 0x4, 0x6, 0xd, 0x0, 0x0, 0x15, 0x6, 0xb, 0xd, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0xf, 0x11, 0x14, 0x9, 0x5, 0x6, 0x6, 0xc, 0x10, 0xd, 0x10, 0x13, 0x13, 0x18, 0x0, 0x16, 0x14, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x18, 0x18, 0x11, 0x14, 0x15, 0xc, 0xf, 0xc, 0xd, 0x6, 0xb, 0xc, 0x8, 0xa, 0x9, 0x6, 0xe, 0xd, 0x4, 0x4, 0x3, 0x5, 0xb, 0x6, 0x2, 0x3, 0x5, 0x4, 0x9, 0x5, 0x4, 0x6, 0x8, 0x4, 0x8, 0x8, 0x9, 0x8, 0x7, 0x5, 0xf, 0x16, 0x10, 0x17, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0x16, 0x12, 0x18, 0x0, 0x0, 0x17, 0x11, 0x17, 0x14, 0xb, 0xb, 0xb, 0xb, 0xe, 0x17, 0x0, 0x0, 0x16, 0x18, 0x0, 0x18, 0x18, 0x17, 0x18, 0x0, 0x17, 0x18, 0x17, 0x0, 0x17, 0x0, 0x17, 0x17, 0x18, 0x17, 0x0, 0x17, 0x17, 0x12, 0x11, 0x11, 0xe, 0x10, 0x9, 0x11, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x7, 0x3, 0x4, 0x3, 0x9, 0x9, 0x6, 0x9, 0xe, 0x5, 0x6, 0xa, 0xb, 0xa, 0x4, 0x3, 0x9, 0xb, 0x10, 0x18, 0x0, 0x15, 0x15, 0xd, 0xb, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x11, 0x15, 0xc, 0x7, 0x10, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x17, 0x15, 0x13, 0x13, 0x11, 0xe, 0xf, 0xf, 0x10, 0x10, 0x17, 0x17, 0x0, 0x0, 0x5f, 0x6b, 0x6b, 0x6b, 0x6b, 0x79, 0x87, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x4, 0x5, 0xb, 0xf, 0xc, 0x8, 0xd, 0x15, 0x18, 0xd, 0x2, 0x9, 0x12, 0x10, 0xd, 0x11, 0xa, 0x9, 0x3, 0x3, 0x7, 0x6, 0x12, 0x0, 0xf, 0xa, 0xc, 0xa, 0xc, 0xf, 0x10, 0x10, 0x4, 0x5, 0x5, 0x3, 0x3, 0x7, 0xe, 0x9, 0x2, 0x3, 0x2, 0x4, 0x5, 0x4, 0x3, 0x6, 0x5, 0x2, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x1, 0x3, 0x5, 0x3, 0x3, 0x3, 0x2, 0x1, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x6, 0x5, 0x4, 0x5, 0x2, 0x6, 0xc, 0x8, 0xa, 0x9, 0xa, 0xd, 0xf, 0xf, 0x4, 0x4, 0x6, 0x9, 0x15, 0x16, 0x17, 0x8, 0x8, 0xc, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0xc, 0xf, 0x7, 0x7, 0x4, 0x7, 0xc, 0x14, 0x17, 0x18, 0x16, 0x11, 0xe, 0xf, 0xf, 0x10, 0xc, 0x10, 0x18, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x13, 0xd, 0x13, 0xc, 0xa, 0x7, 0x5, 0x5, 0xa, 0x7, 0x4, 0xc, 0xc, 0x4, 0xb, 0xc, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x4, 0x3, 0xb, 0xf, 0x5, 0x3, 0x10, 0xd, 0x4, 0x5, 0x4, 0xa, 0xc, 0x7, 0x4, 0x8, 0x13, 0x10, 0x16, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x18, 0xd, 0x17, 0x15, 0x11, 0xf, 0xf, 0x15, 0xc, 0xb, 0xc, 0x9, 0xd, 0x14, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x17, 0x0, 0x17, 0x16, 0x17, 0x17, 0x13, 0xd, 0xd, 0x10, 0x14, 0x10, 0x8, 0x5, 0x4, 0x9, 0x11, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0xc, 0xb, 0x6, 0x5, 0x6, 0x7, 0x8, 0x8, 0x7, 0xa, 0x9, 0x6, 0x4, 0x4, 0x9, 0x9, 0x6, 0x5, 0xb, 0x9, 0xa, 0xf, 0x18, 0x0, 0x11, 0xc, 0xf, 0xa, 0xb, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xe, 0xc, 0xd, 0x11, 0x12, 0x10, 0x10, 0x10, 0xd, 0xc, 0xd, 0xf, 0x13, 0x11, 0x12, 0x12, 0x13, 0x12, 0x12, 0xe, 0xe, 0xe, 0xd, 0x11, 0xa, 0xf, 0x14, 0x12, 0xf, 0x18, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x72, 0x82, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x17, 0x0, 0x18, 0x15, 0x15, 0x14, 0x12, 0x13, 0x18, 0x18, 0x14, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x13, 0x9, 0x6, 0xe, 0x12, 0x18, 0x10, 0xf, 0x10, 0x11, 0xf, 0x7, 0xb, 0x13, 0xd, 0xb, 0xc, 0x8, 0x6, 0x5, 0x3, 0x3, 0x4, 0x11, 0x16, 0xc, 0x5, 0x13, 0x11, 0xe, 0xe, 0xe, 0x14, 0xd, 0x2, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x6, 0x6, 0x2, 0x4, 0x4, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x6, 0x5, 0x5, 0x7, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x6, 0x4, 0x2, 0x6, 0x9, 0x5, 0x4, 0x4, 0x4, 0x3, 0xa, 0xc, 0x9, 0xc, 0xa, 0xc, 0xb, 0xe, 0xa, 0x6, 0x4, 0x7, 0x12, 0x0, 0x11, 0x7, 0xa, 0x7, 0x8, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x14, 0x14, 0x11, 0xf, 0xd, 0x4, 0x8, 0x7, 0x3, 0x8, 0x13, 0x16, 0xf, 0x6, 0x5, 0x8, 0x4, 0x5, 0x3, 0x3, 0x9, 0x13, 0x17, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0xd, 0x16, 0x7, 0x4, 0xb, 0xc, 0x9, 0x4, 0x3, 0x3, 0x7, 0xa, 0x3, 0x4, 0x4, 0x4, 0x4, 0x6, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x8, 0x7, 0x5, 0x5, 0xd, 0x5, 0x3, 0x3, 0x3, 0x8, 0x7, 0x4, 0x5, 0x5, 0x7, 0xb, 0x12, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x13, 0x16, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x13, 0x18, 0x18, 0x17, 0x15, 0x0, 0x12, 0xb, 0xe, 0xb, 0x8, 0xd, 0x16, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x15, 0x17, 0x15, 0x13, 0x10, 0x14, 0x14, 0x16, 0x15, 0x16, 0x16, 0x18, 0x0, 0xd, 0x10, 0x12, 0x12, 0xc, 0x10, 0x16, 0x12, 0x10, 0xd, 0x10, 0x0, 0x14, 0x15, 0x18, 0x0, 0x18, 0x0, 0x0, 0x15, 0xc, 0x6, 0x5, 0x5, 0x7, 0x6, 0xb, 0xa, 0x6, 0x7, 0xb, 0xb, 0x8, 0x3, 0x3, 0x4, 0x7, 0x8, 0x7, 0x4, 0x4, 0x4, 0x5, 0x7, 0xd, 0x12, 0x9, 0x5, 0x4, 0x4, 0xa, 0x11, 0x12, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xf, 0x7, 0x8, 0x8, 0xb, 0xd, 0xe, 0x10, 0xd, 0xe, 0xf, 0x12, 0x10, 0x10, 0xf, 0x15, 0x16, 0xe, 0xf, 0x12, 0x12, 0x11, 0xd, 0x10, 0x12, 0xe, 0x10, 0x18, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x75, 0x87, 0x7d, 0x17, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0xf, 0xf, 0x13, 0x12, 0xf, 0xe, 0xe, 0xf, 0x12, 0x15, 0x11, 0xe, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x14, 0xa, 0x5, 0x8, 0xe, 0x14, 0x0, 0x14, 0xc, 0xf, 0x12, 0xf, 0x6, 0x9, 0xf, 0xb, 0xd, 0xd, 0x8, 0x5, 0x3, 0x3, 0x3, 0x4, 0x10, 0x16, 0xa, 0x2, 0x9, 0x17, 0x12, 0xf, 0xf, 0xf, 0x15, 0x9, 0x1, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0x8, 0x8, 0x9, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x4, 0x5, 0x4, 0x3, 0x3, 0x6, 0x4, 0x3, 0x6, 0x5, 0x2, 0x4, 0xc, 0xa, 0xc, 0x9, 0xc, 0xa, 0x8, 0xa, 0x4, 0x4, 0x8, 0x13, 0x0, 0x18, 0x13, 0xf, 0xc, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x18, 0x17, 0x0, 0x16, 0x16, 0x14, 0x16, 0x13, 0x4, 0x4, 0x4, 0x5, 0x13, 0x0, 0xe, 0x4, 0x3, 0xc, 0x17, 0x9, 0x3, 0x8, 0x7, 0x5, 0xa, 0x10, 0x18, 0x0, 0x17, 0x13, 0xe, 0x13, 0xf, 0x10, 0xb, 0x8, 0x5, 0xc, 0x9, 0x3, 0x3, 0x3, 0x6, 0x7, 0x2, 0x3, 0x2, 0x6, 0x7, 0x3, 0x2, 0x5, 0x4, 0x2, 0x8, 0x7, 0x3, 0xa, 0xd, 0x3, 0x4, 0x4, 0x6, 0x8, 0x6, 0x3, 0x2, 0x6, 0xc, 0x10, 0xa, 0xa, 0x9, 0x16, 0x0, 0x16, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x11, 0x17, 0x18, 0x0, 0x0, 0x18, 0xf, 0x13, 0x16, 0xd, 0xc, 0x10, 0x11, 0x11, 0x11, 0x10, 0xf, 0xe, 0xc, 0xd, 0xd, 0xf, 0x11, 0x11, 0x12, 0x10, 0x11, 0x10, 0xe, 0xf, 0xe, 0x10, 0x14, 0x16, 0x10, 0x13, 0x15, 0x10, 0x8, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x9, 0x5, 0xd, 0x18, 0x18, 0x17, 0xf, 0xb, 0x6, 0x7, 0xe, 0x8, 0x9, 0x7, 0xa, 0xc, 0x8, 0xa, 0x8, 0x7, 0x4, 0x5, 0x4, 0x6, 0xb, 0x7, 0x7, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x6, 0xc, 0x7, 0xd, 0xe, 0x16, 0x0, 0x0, 0x17, 0x10, 0x14, 0x18, 0x16, 0x12, 0x10, 0x10, 0x15, 0xf, 0x10, 0xe, 0x9, 0xa, 0xa, 0xc, 0xf, 0xf, 0xe, 0x11, 0x11, 0x11, 0xf, 0xc, 0xe, 0xe, 0x11, 0xc, 0xc, 0xe, 0x13, 0x0, 0x16, 0x0, 0x0, 0x6b, 0x5f, 0x6b, 0x6e, 0x8c, 0x72, 0x71, 0x13, 0x15, 0x18, 0x18, 0x0, 0x0, 0x18, 0x15, 0xf, 0xe, 0xd, 0xd, 0x9, 0x10, 0x11, 0x10, 0xf, 0xc, 0x13, 0x18, 0x0, 0x0, 0x0, 0x16, 0xe, 0xa, 0x5, 0x5, 0xc, 0x16, 0x17, 0x11, 0xa, 0xa, 0x10, 0xb, 0x7, 0xd, 0xd, 0xb, 0xf, 0x11, 0x9, 0x4, 0x4, 0x5, 0x4, 0x9, 0x12, 0x13, 0x7, 0x4, 0xb, 0xd, 0x11, 0x13, 0x12, 0x11, 0x13, 0x10, 0x2, 0x2, 0x4, 0x3, 0x2, 0x3, 0x5, 0x7, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x5, 0x5, 0x6, 0x4, 0x2, 0x4, 0x5, 0x4, 0x6, 0x8, 0x4, 0x2, 0x8, 0xd, 0xa, 0xd, 0xa, 0xc, 0xb, 0x7, 0x5, 0x3, 0x7, 0x12, 0x17, 0x18, 0x17, 0x14, 0x15, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x18, 0x11, 0x6, 0x7, 0x5, 0xe, 0xf, 0x5, 0x6, 0xe, 0x16, 0x17, 0xf, 0x3, 0x8, 0xa, 0x7, 0x5, 0xa, 0xc, 0x11, 0x18, 0x11, 0x11, 0x18, 0x17, 0xc, 0x5, 0x11, 0x6, 0x2, 0x4, 0x3, 0x3, 0x4, 0x9, 0x6, 0x3, 0x4, 0x5, 0x5, 0x6, 0x3, 0x2, 0x3, 0x2, 0x3, 0x6, 0x5, 0x5, 0xf, 0xf, 0x3, 0x4, 0x6, 0x8, 0xb, 0x12, 0xe, 0x5, 0x7, 0xb, 0x10, 0xe, 0xd, 0x7, 0xe, 0x18, 0x15, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x12, 0x17, 0x0, 0x0, 0x10, 0xb, 0x16, 0x17, 0x13, 0x17, 0x0, 0x14, 0x12, 0x11, 0xf, 0x12, 0x10, 0x10, 0xe, 0xd, 0x12, 0x14, 0x14, 0x15, 0x15, 0x16, 0x16, 0x14, 0x15, 0x15, 0x16, 0x0, 0x11, 0xf, 0x14, 0x0, 0x10, 0xa, 0x18, 0x0, 0xe, 0x10, 0x18, 0x18, 0x14, 0xa, 0xa, 0x7, 0xe, 0x18, 0x12, 0xe, 0x9, 0x4, 0xb, 0x10, 0x6, 0x4, 0x3, 0x9, 0x9, 0x6, 0x5, 0x5, 0x6, 0x3, 0x9, 0x8, 0x4, 0x6, 0x9, 0x6, 0x6, 0x4, 0x4, 0xc, 0x8, 0x4, 0x5, 0x4, 0x4, 0x3, 0x6, 0xa, 0x7, 0x9, 0xf, 0x0, 0x0, 0x15, 0x9, 0xa, 0x16, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0xb, 0x8, 0x9, 0xb, 0x10, 0x12, 0xe, 0x10, 0xe, 0x9, 0xd, 0xf, 0xf, 0xb, 0xa, 0xd, 0x10, 0x14, 0xe, 0x11, 0xd, 0x11, 0x0, 0x18, 0x0, 0x0, 0x6b, 0x6b, 0x6e, 0x7c, 0x8c, 0x7d, 0x7d, 0x13, 0x17, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x17, 0x17, 0x16, 0x17, 0x15, 0x18, 0x18, 0x17, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x12, 0x7, 0x7, 0x7, 0x9, 0xb, 0x15, 0x18, 0xe, 0x5, 0x6, 0xf, 0xf, 0x7, 0xc, 0xb, 0xd, 0x10, 0x11, 0x6, 0x5, 0x6, 0x7, 0x4, 0xa, 0x17, 0x13, 0x6, 0x4, 0xb, 0xb, 0xd, 0xe, 0xf, 0x0, 0x12, 0x14, 0x9, 0x1, 0x2, 0x4, 0x3, 0x4, 0x6, 0x7, 0x6, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x4, 0x6, 0x3, 0x3, 0x5, 0x3, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x2, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x2, 0x5, 0x11, 0x9, 0xc, 0x9, 0xc, 0xf, 0xb, 0xa, 0x8, 0x3, 0x5, 0x9, 0xe, 0x12, 0x16, 0x0, 0x14, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x13, 0x12, 0x16, 0x0, 0x14, 0x8, 0x3, 0x8, 0x6, 0x9, 0x11, 0x18, 0x0, 0x0, 0x14, 0x9, 0x3, 0x5, 0x8, 0x7, 0xb, 0xc, 0x5, 0xc, 0x11, 0xa, 0xa, 0xf, 0xf, 0x10, 0x15, 0xb, 0x3, 0x3, 0x3, 0x4, 0x6, 0xa, 0x4, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0xa, 0xc, 0x7, 0x4, 0xd, 0x10, 0x7, 0x5, 0xf, 0x15, 0xa, 0x3, 0x5, 0x9, 0xf, 0xd, 0x5, 0xc, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x8, 0x15, 0x0, 0x18, 0xa, 0xa, 0x14, 0x17, 0x17, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x12, 0x13, 0x16, 0x15, 0x15, 0x17, 0x16, 0x18, 0x17, 0x17, 0x16, 0x16, 0x17, 0x0, 0xe, 0x10, 0x13, 0x15, 0xe, 0x10, 0x15, 0x16, 0xe, 0xf, 0x14, 0x13, 0xc, 0x9, 0x15, 0x16, 0x13, 0x18, 0x18, 0x11, 0x6, 0x7, 0x9, 0x5, 0x2, 0x4, 0x4, 0x6, 0x3, 0x4, 0x4, 0x3, 0x2, 0x7, 0xc, 0x9, 0x9, 0x3, 0x4, 0x3, 0x2, 0x7, 0x11, 0x15, 0xd, 0x4, 0x7, 0x8, 0x5, 0x5, 0x7, 0xb, 0x10, 0xb, 0x13, 0x0, 0x16, 0xa, 0x10, 0x0, 0x0, 0x0, 0x14, 0x18, 0x0, 0x0, 0x11, 0x13, 0x11, 0x14, 0x12, 0xa, 0xb, 0xf, 0xf, 0xb, 0xa, 0xc, 0xd, 0xd, 0xc, 0xe, 0xe, 0x13, 0xf, 0x11, 0x18, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x6b, 0x5f, 0x71, 0x92, 0x87, 0x72, 0x79, 0x14, 0x18, 0x0, 0x17, 0xd, 0x11, 0x17, 0x15, 0x15, 0x16, 0x18, 0x13, 0x11, 0x11, 0x15, 0x0, 0x16, 0x17, 0x0, 0x15, 0x11, 0x16, 0x11, 0x9, 0x8, 0xb, 0x17, 0x17, 0x15, 0xb, 0x3, 0x6, 0xe, 0xd, 0xb, 0x13, 0x10, 0xb, 0xf, 0xb, 0x4, 0x3, 0x3, 0x7, 0x4, 0xe, 0x14, 0xc, 0x4, 0x8, 0xb, 0xd, 0xf, 0xd, 0xa, 0xd, 0x13, 0x13, 0x10, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x2, 0x3, 0x2, 0x7, 0xa, 0x3, 0x4, 0x6, 0x3, 0x8, 0x6, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x5, 0x3, 0x3, 0x11, 0xd, 0x7, 0x8, 0x6, 0x7, 0xa, 0x8, 0xa, 0xb, 0x9, 0x4, 0x8, 0x14, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x0, 0x0, 0x13, 0x11, 0x13, 0x0, 0x0, 0x16, 0xa, 0x6, 0x6, 0xe, 0x12, 0x18, 0x0, 0x0, 0x0, 0x18, 0xe, 0x5, 0x5, 0x6, 0x5, 0xa, 0xa, 0x6, 0x5, 0x6, 0x4, 0x9, 0x15, 0x18, 0x15, 0x15, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x3, 0x4, 0x2, 0x5, 0x5, 0x7, 0x6, 0x3, 0x4, 0xf, 0x12, 0x6, 0x3, 0x5, 0xb, 0xa, 0x3, 0x3, 0x4, 0xa, 0x10, 0xc, 0xc, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x14, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x15, 0xd, 0xe, 0x0, 0x13, 0x8, 0x12, 0x0, 0x0, 0x18, 0x15, 0x17, 0x0, 0x18, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x16, 0xc, 0x11, 0x17, 0x17, 0xe, 0xa, 0x12, 0xc, 0x12, 0x13, 0x11, 0xe, 0x9, 0xd, 0x0, 0x0, 0x0, 0x18, 0x13, 0x8, 0xa, 0xa, 0x8, 0x4, 0x6, 0x12, 0x9, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x7, 0x7, 0xd, 0xc, 0x3, 0x2, 0x7, 0xa, 0x10, 0x16, 0xd, 0x8, 0x3, 0x4, 0x9, 0x8, 0xe, 0xb, 0xc, 0xd, 0x5, 0x13, 0x0, 0x17, 0x14, 0x18, 0x16, 0x0, 0x17, 0x13, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0xa, 0xb, 0x14, 0x18, 0x15, 0xe, 0xd, 0xd, 0xe, 0xe, 0xe, 0xf, 0x10, 0xb, 0x9, 0xd, 0x10, 0x12, 0x18, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x7d, 0x82, 0x79, 0x75, 0x12, 0x0, 0x0, 0x0, 0x15, 0x16, 0x0, 0x17, 0x16, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x14, 0x10, 0xa, 0x10, 0x14, 0x15, 0x13, 0x12, 0x13, 0x13, 0xb, 0x3, 0x8, 0x11, 0xb, 0x6, 0x13, 0x16, 0xc, 0xa, 0x8, 0x5, 0x4, 0x5, 0x3, 0x7, 0x10, 0x14, 0xb, 0x2, 0x6, 0xc, 0xd, 0xf, 0xc, 0xa, 0xa, 0xf, 0xd, 0xf, 0x8, 0x2, 0x2, 0x2, 0x4, 0x4, 0x3, 0x4, 0x5, 0x5, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x5, 0x5, 0x2, 0x2, 0x3, 0x3, 0x4, 0x2, 0x2, 0x2, 0x3, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x4, 0x6, 0x4, 0x3, 0x4, 0x6, 0x4, 0x4, 0x4, 0x3, 0x3, 0xa, 0x11, 0xe, 0xa, 0x8, 0xa, 0x8, 0xa, 0x7, 0x6, 0x9, 0x8, 0x6, 0x8, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x17, 0xe, 0x16, 0x0, 0x0, 0x14, 0xf, 0x5, 0xc, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x2, 0x2, 0x2, 0x8, 0x13, 0xc, 0x4, 0xa, 0xa, 0xc, 0x0, 0x14, 0x11, 0x17, 0x7, 0x4, 0x6, 0x7, 0x3, 0x3, 0x3, 0x3, 0x5, 0x6, 0x3, 0x3, 0x4, 0x6, 0x5, 0x2, 0x5, 0xd, 0x9, 0x4, 0x3, 0x4, 0x9, 0x7, 0x6, 0x3, 0x3, 0x2, 0x4, 0x4, 0x3, 0x3, 0x4, 0x8, 0x12, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x0, 0x18, 0x12, 0xd, 0x12, 0xe, 0xc, 0x16, 0x0, 0x18, 0x13, 0xe, 0x13, 0x16, 0x10, 0x11, 0x17, 0x17, 0x0, 0x18, 0x15, 0x14, 0x17, 0x15, 0x18, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x14, 0xe, 0xf, 0x14, 0x16, 0x10, 0x6, 0xc, 0x9, 0x15, 0x11, 0xe, 0x7, 0x9, 0x15, 0x0, 0x0, 0x15, 0x14, 0xa, 0x7, 0x11, 0xb, 0xa, 0xb, 0xc, 0xd, 0xa, 0xa, 0x7, 0x4, 0x3, 0x6, 0xa, 0xf, 0x8, 0x4, 0x5, 0x4, 0x3, 0x7, 0x7, 0xa, 0xd, 0x5, 0xa, 0xf, 0x7, 0x5, 0x7, 0x9, 0x6, 0x8, 0x8, 0x4, 0xe, 0x16, 0x13, 0x17, 0x15, 0x11, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x14, 0x15, 0x16, 0x12, 0x12, 0xd, 0xb, 0xe, 0xe, 0x10, 0x15, 0x13, 0x11, 0xe, 0xb, 0xc, 0x10, 0x10, 0x15, 0x0, 0x6b, 0x5f, 0x6b, 0x63, 0x72, 0x7d, 0x75, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x16, 0xc, 0xb, 0x9, 0x8, 0x6, 0x5, 0x5, 0x5, 0x4, 0xb, 0xf, 0x9, 0x5, 0x11, 0x16, 0x12, 0xb, 0x5, 0x3, 0x4, 0x4, 0x8, 0xb, 0x14, 0x14, 0x7, 0x4, 0xa, 0xb, 0xd, 0xd, 0xc, 0xc, 0xb, 0xe, 0xd, 0x9, 0x6, 0x3, 0x3, 0x3, 0x5, 0x9, 0x5, 0x3, 0x4, 0x6, 0x6, 0x2, 0x3, 0x3, 0x2, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x2, 0x2, 0x3, 0x4, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x4, 0x6, 0x8, 0x6, 0x2, 0x2, 0xf, 0x14, 0x8, 0x8, 0xa, 0x9, 0xa, 0x8, 0x5, 0x6, 0xc, 0xa, 0x4, 0x6, 0x11, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x17, 0x14, 0x14, 0x0, 0x0, 0x15, 0x16, 0x0, 0x0, 0x0, 0x13, 0x5, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0xb, 0x7, 0x4, 0x4, 0xe, 0xb, 0xb, 0x12, 0x12, 0xc, 0x0, 0x14, 0x11, 0x18, 0x10, 0x5, 0x6, 0x6, 0x3, 0x2, 0x3, 0x3, 0x7, 0x5, 0x3, 0x6, 0x5, 0x9, 0xf, 0x4, 0x4, 0x6, 0x4, 0x5, 0x4, 0x4, 0xb, 0x5, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x8, 0x4, 0x4, 0x7, 0x13, 0x11, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x11, 0x6, 0xb, 0x12, 0x18, 0x0, 0x17, 0x12, 0x11, 0x10, 0x11, 0xe, 0xf, 0x11, 0x10, 0x14, 0x10, 0x11, 0x11, 0x14, 0xf, 0x11, 0x11, 0x15, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x13, 0x10, 0x13, 0x18, 0x0, 0x15, 0x8, 0xb, 0xe, 0x16, 0x14, 0xf, 0x8, 0xe, 0x0, 0x0, 0x17, 0x12, 0x13, 0x5, 0xa, 0x9, 0x4, 0x4, 0x5, 0x6, 0x4, 0x8, 0x7, 0x4, 0x4, 0x3, 0x7, 0xa, 0xf, 0x6, 0x4, 0x3, 0x8, 0xf, 0xe, 0xb, 0xe, 0xb, 0x4, 0xd, 0x13, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x4, 0x6, 0x4, 0x6, 0x8, 0xe, 0x10, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x12, 0x10, 0x13, 0x11, 0x12, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0xe, 0x8, 0xc, 0x14, 0x6b, 0x6b, 0x6b, 0x6b, 0x75, 0x72, 0x79, 0x16, 0x16, 0x17, 0x17, 0x0, 0x18, 0x0, 0x17, 0x15, 0x17, 0x15, 0x14, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x17, 0xe, 0x8, 0x6, 0x6, 0x8, 0x8, 0x9, 0xc, 0xa, 0xc, 0xf, 0xb, 0x9, 0x10, 0x17, 0x12, 0x9, 0x6, 0x4, 0x5, 0x3, 0x3, 0x10, 0x0, 0x13, 0x6, 0x4, 0x7, 0xd, 0x11, 0xc, 0xb, 0xb, 0xc, 0xc, 0xe, 0xa, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x2, 0x3, 0x4, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x8, 0x8, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x5, 0x3, 0x2, 0x4, 0x5, 0x6, 0x8, 0x5, 0x1, 0x6, 0x10, 0xf, 0x5, 0x8, 0x8, 0x8, 0xc, 0xc, 0x6, 0xb, 0xa, 0x8, 0x6, 0x5, 0x9, 0xf, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x16, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x6, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x12, 0x14, 0xc, 0x9, 0x4, 0x8, 0xe, 0x17, 0x0, 0x10, 0xb, 0x15, 0x11, 0xf, 0x17, 0x15, 0xd, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x5, 0x4, 0x5, 0x10, 0xd, 0x4, 0x8, 0xb, 0x4, 0x2, 0x3, 0x2, 0x3, 0xa, 0xc, 0x5, 0x3, 0x4, 0x4, 0x4, 0x4, 0x7, 0xa, 0x5, 0x3, 0x6, 0x13, 0x12, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x10, 0xe, 0xa, 0x10, 0x12, 0x0, 0x0, 0x16, 0x12, 0x13, 0x12, 0x11, 0x14, 0x13, 0x15, 0x16, 0x15, 0x15, 0x15, 0x14, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x13, 0x11, 0x13, 0x17, 0x0, 0x14, 0x8, 0xb, 0x13, 0x18, 0x18, 0xc, 0x8, 0x14, 0x0, 0x0, 0x11, 0x11, 0xb, 0x7, 0xd, 0x5, 0x3, 0x4, 0x3, 0x5, 0x4, 0x4, 0x4, 0x6, 0x5, 0x4, 0x4, 0x7, 0xd, 0x8, 0x5, 0x4, 0xd, 0x13, 0xc, 0x9, 0x11, 0x8, 0x4, 0xc, 0xd, 0x4, 0x3, 0x4, 0x4, 0x5, 0x4, 0xb, 0x9, 0x6, 0xe, 0x13, 0x13, 0x15, 0x16, 0x17, 0x12, 0x17, 0x17, 0x13, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x17, 0x11, 0x68, 0x71, 0x6b, 0x5f, 0x7d, 0x82, 0x6b, 0x18, 0x12, 0x9, 0xb, 0xe, 0xc, 0xd, 0xa, 0xa, 0xb, 0xc, 0xf, 0x16, 0x12, 0xb, 0x13, 0x0, 0x0, 0x17, 0xe, 0xd, 0xf, 0x11, 0x13, 0xf, 0xf, 0x14, 0xc, 0x10, 0x12, 0x10, 0x18, 0x0, 0x14, 0xb, 0x5, 0x5, 0x5, 0x4, 0x5, 0xe, 0x15, 0x10, 0x7, 0x8, 0x8, 0xa, 0xe, 0xe, 0xb, 0xb, 0xe, 0xf, 0xd, 0x8, 0x4, 0x2, 0x2, 0x3, 0x3, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x1, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x7, 0x9, 0x7, 0x5, 0x3, 0x4, 0xd, 0xf, 0xa, 0x6, 0x6, 0x8, 0xc, 0xf, 0xb, 0x5, 0x9, 0xb, 0x9, 0x5, 0x3, 0x8, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x17, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x9, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x11, 0xd, 0x14, 0xc, 0xc, 0x9, 0x5, 0xc, 0x18, 0x16, 0xd, 0x8, 0x8, 0x14, 0x10, 0x15, 0x15, 0x18, 0x8, 0x3, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x7, 0x8, 0x7, 0xf, 0x8, 0x2, 0x6, 0x6, 0x3, 0x7, 0x6, 0x4, 0x3, 0x5, 0x5, 0x2, 0x6, 0xe, 0x6, 0x2, 0x3, 0x7, 0x16, 0x15, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x12, 0xa, 0x6, 0xf, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x14, 0x15, 0x15, 0x13, 0x16, 0xe, 0x14, 0x18, 0x0, 0x15, 0x16, 0xe, 0x12, 0x0, 0x0, 0x18, 0x11, 0x10, 0xe, 0x17, 0x0, 0x17, 0x10, 0x12, 0x14, 0x11, 0x11, 0xd, 0xe, 0x18, 0x0, 0x15, 0xf, 0xf, 0x5, 0x7, 0x4, 0x4, 0x5, 0x7, 0x8, 0x9, 0x7, 0x4, 0x2, 0x7, 0x7, 0x5, 0x8, 0x8, 0x7, 0x4, 0x5, 0xb, 0xb, 0x6, 0x7, 0x6, 0x6, 0x3, 0x4, 0x8, 0x8, 0x5, 0x5, 0x5, 0x8, 0xb, 0x7, 0x12, 0x12, 0x14, 0x0, 0x16, 0x13, 0x0, 0x17, 0x18, 0xa, 0x13, 0x15, 0x11, 0x10, 0x10, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71, 0x7d, 0x75, 0x71, 0x75, 0x75, 0x6e, 0x12, 0xa, 0x6, 0xb, 0x9, 0x8, 0x5, 0x8, 0xa, 0xe, 0x16, 0xb, 0x9, 0x7, 0xf, 0x17, 0x10, 0xb, 0x8, 0x9, 0xd, 0xe, 0x0, 0x0, 0x16, 0x17, 0x10, 0xf, 0x14, 0x17, 0x11, 0x11, 0xe, 0xa, 0x6, 0x3, 0x4, 0x3, 0x7, 0x13, 0x14, 0x9, 0x5, 0xc, 0xb, 0xb, 0xc, 0xb, 0x9, 0xe, 0xd, 0xe, 0xb, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x6, 0x4, 0x6, 0x4, 0x6, 0x7, 0x4, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x2, 0x4, 0x5, 0x4, 0x5, 0x3, 0x3, 0x2, 0x6, 0xe, 0xb, 0x5, 0x5, 0x6, 0xe, 0xe, 0x6, 0x6, 0xb, 0xc, 0x6, 0x3, 0x4, 0x5, 0xb, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xa, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x8, 0x14, 0x16, 0x9, 0xe, 0xd, 0x7, 0x4, 0xc, 0x13, 0xf, 0x5, 0x3, 0x13, 0x11, 0x12, 0x14, 0x17, 0x7, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0xb, 0x5, 0x2, 0x4, 0x13, 0x13, 0xc, 0x7, 0x3, 0x5, 0x9, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x4, 0x5, 0x6, 0x5, 0x4, 0x5, 0x7, 0x15, 0x14, 0x12, 0x10, 0x11, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xd, 0xa, 0x15, 0x18, 0x0, 0x0, 0x18, 0x0, 0x16, 0x12, 0x13, 0x13, 0x13, 0x11, 0xb, 0x16, 0x16, 0x10, 0x11, 0x17, 0x10, 0x12, 0x18, 0x0, 0x16, 0x10, 0x11, 0xb, 0xf, 0x16, 0x18, 0x16, 0x17, 0x11, 0xd, 0xe, 0xf, 0xe, 0x0, 0x0, 0x16, 0x15, 0xb, 0x4, 0x8, 0xa, 0x7, 0x3, 0x6, 0xc, 0xc, 0x7, 0x4, 0xc, 0xf, 0x5, 0x5, 0x7, 0x5, 0x4, 0x2, 0x4, 0x8, 0x8, 0x5, 0x4, 0x3, 0x2, 0x5, 0xa, 0x5, 0x3, 0x5, 0xd, 0x6, 0xd, 0xf, 0x5, 0xe, 0x10, 0x17, 0x0, 0x17, 0x17, 0x0, 0x0, 0x18, 0xb, 0x12, 0x11, 0xe, 0x12, 0x15, 0x13, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0x71, 0x75, 0x82, 0x7d, 0x7d, 0x72, 0xb, 0x8, 0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0xe, 0x16, 0x12, 0x8, 0xb, 0x14, 0x15, 0xd, 0x7, 0x4, 0x6, 0x6, 0xa, 0x13, 0x0, 0x0, 0x13, 0xa, 0x6, 0x8, 0x14, 0x16, 0x12, 0xc, 0x4, 0x7, 0x6, 0x3, 0x4, 0xc, 0x14, 0x12, 0x7, 0x8, 0xe, 0xc, 0xe, 0xf, 0xc, 0xb, 0xb, 0xf, 0xe, 0xb, 0x4, 0x2, 0x2, 0x4, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x5, 0x4, 0x6, 0x6, 0x4, 0x3, 0x3, 0x6, 0x9, 0x3, 0x3, 0x3, 0x5, 0x9, 0x9, 0x4, 0x3, 0x2, 0x5, 0xd, 0xf, 0x8, 0x6, 0x9, 0xa, 0xb, 0xa, 0xa, 0xb, 0x9, 0x4, 0x7, 0x7, 0x6, 0x8, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x12, 0xf, 0xc, 0x9, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x14, 0x11, 0xe, 0xc, 0x8, 0xb, 0x5, 0x3, 0x7, 0x6, 0x4, 0x8, 0x10, 0xe, 0xc, 0xf, 0x15, 0x8, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x9, 0x8, 0xc, 0x7, 0xc, 0x15, 0x9, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x5, 0x4, 0x4, 0x3, 0x2, 0x8, 0x6, 0x3, 0x6, 0x5, 0x5, 0x4, 0xa, 0x9, 0x13, 0x12, 0x6, 0x7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x9, 0x10, 0x0, 0x0, 0x0, 0x0, 0x18, 0xf, 0xc, 0x18, 0x15, 0xa, 0x16, 0x0, 0x10, 0xf, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x12, 0x12, 0x9, 0xa, 0x15, 0x0, 0x17, 0x0, 0x13, 0x13, 0x11, 0xb, 0x10, 0x0, 0x0, 0x17, 0x11, 0x6, 0xf, 0x18, 0x0, 0xc, 0x2, 0x7, 0x9, 0xa, 0x6, 0x9, 0xd, 0x6, 0x2, 0x5, 0x4, 0x7, 0x5, 0x4, 0x5, 0x6, 0x5, 0x5, 0x9, 0x7, 0xb, 0x14, 0x18, 0x9, 0x2, 0x4, 0x6, 0x4, 0x6, 0x6, 0x6, 0x14, 0xe, 0xe, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x17, 0x10, 0xc, 0xf, 0x11, 0x17, 0x12, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x6b, 0x6b, 0x63, 0x75, 0x87, 0x79, 0xa, 0x6, 0x6, 0x5, 0x7, 0x9, 0x11, 0xf, 0x9, 0xd, 0x10, 0xc, 0x17, 0x12, 0x7, 0x4, 0x6, 0x8, 0x8, 0xa, 0x12, 0x0, 0x0, 0x13, 0x7, 0xa, 0x15, 0x12, 0xf, 0x10, 0x7, 0x4, 0x5, 0x7, 0x6, 0x7, 0xe, 0x17, 0xf, 0x4, 0x7, 0xc, 0xb, 0xa, 0xe, 0xc, 0xd, 0xf, 0xd, 0xf, 0x7, 0x3, 0x2, 0x4, 0x5, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x4, 0x8, 0xa, 0x5, 0x2, 0x3, 0x4, 0x5, 0x4, 0x4, 0x5, 0x4, 0x3, 0x2, 0x2, 0x3, 0x5, 0x3, 0x2, 0x1, 0x4, 0x9, 0xa, 0x7, 0x5, 0x3, 0x3, 0x3, 0xa, 0x11, 0xe, 0x9, 0x6, 0x9, 0x8, 0xc, 0xa, 0xc, 0x6, 0x5, 0xa, 0xb, 0x8, 0x7, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0xc, 0x9, 0x9, 0xb, 0xa, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xe, 0x14, 0x12, 0x14, 0xb, 0x5, 0x8, 0x6, 0x6, 0x9, 0x6, 0x3, 0x5, 0x11, 0x10, 0xe, 0x10, 0x16, 0x11, 0x5, 0x3, 0x4, 0xd, 0x10, 0x6, 0x3, 0x5, 0x8, 0x6, 0x6, 0xb, 0x5, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x7, 0x9, 0x5, 0x3, 0x3, 0x8, 0x8, 0x5, 0x8, 0x4, 0x6, 0x6, 0x3, 0x5, 0x15, 0x13, 0x6, 0xa, 0xe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x16, 0x0, 0x0, 0x0, 0x0, 0x17, 0xc, 0x10, 0x0, 0xf, 0xf, 0x0, 0x12, 0xc, 0x16, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x10, 0x15, 0xf, 0xa, 0xd, 0x16, 0x0, 0x15, 0x11, 0xd, 0x14, 0x11, 0xd, 0x17, 0x0, 0x16, 0x16, 0x9, 0x9, 0x18, 0x18, 0x0, 0xd, 0x4, 0x10, 0xa, 0x4, 0x4, 0x8, 0x3, 0x1, 0x5, 0x7, 0x3, 0x2, 0x6, 0xa, 0x9, 0x8, 0x3, 0x9, 0xe, 0x6, 0xf, 0x15, 0x14, 0x8, 0x4, 0x5, 0xa, 0x4, 0x7, 0x6, 0x9, 0x14, 0x8, 0x9, 0x18, 0x0, 0x18, 0x14, 0x17, 0x18, 0x14, 0x14, 0x12, 0x10, 0x17, 0x16, 0x15, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x17, 0x0, 0x18, 0x18, 0x0, 0x0, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x6b, 0x75, 0x9, 0x6, 0x9, 0x9, 0xd, 0x12, 0x18, 0xe, 0x5, 0xd, 0x0, 0x14, 0xf, 0x7, 0x4, 0x6, 0x7, 0x7, 0xd, 0x13, 0x17, 0x18, 0x14, 0xa, 0xd, 0x16, 0x16, 0x13, 0xd, 0x7, 0x4, 0x4, 0x6, 0x3, 0x5, 0x10, 0x13, 0xb, 0x5, 0x7, 0x9, 0xd, 0x10, 0xc, 0xb, 0xc, 0xe, 0xe, 0xd, 0x6, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x6, 0x6, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x2, 0x3, 0x9, 0xc, 0x7, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x4, 0x6, 0x5, 0x3, 0x3, 0x3, 0x5, 0x6, 0x6, 0x5, 0x8, 0x6, 0x2, 0x3, 0x7, 0xe, 0xe, 0x7, 0x8, 0x7, 0x9, 0xb, 0xc, 0x9, 0xb, 0x8, 0x6, 0x8, 0xa, 0x6, 0xb, 0x16, 0x0, 0x0, 0x0, 0x18, 0x15, 0x11, 0xd, 0x11, 0xc, 0xd, 0x12, 0x14, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xf, 0x14, 0x12, 0xf, 0x7, 0xc, 0xf, 0x7, 0x5, 0x7, 0x6, 0x3, 0x3, 0x12, 0x13, 0x10, 0x14, 0x12, 0x11, 0x6, 0x3, 0x4, 0xc, 0xf, 0x9, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x6, 0xc, 0xb, 0x7, 0x5, 0x5, 0x3, 0x4, 0x8, 0x4, 0x4, 0xa, 0xb, 0x4, 0x5, 0x15, 0x17, 0x14, 0xe, 0x6, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x14, 0x15, 0x18, 0x17, 0x15, 0x13, 0x9, 0x10, 0x0, 0x14, 0x0, 0x13, 0x9, 0x12, 0xf, 0x17, 0x0, 0x18, 0x0, 0x0, 0x13, 0xd, 0x17, 0xa, 0xc, 0xf, 0x12, 0x13, 0xe, 0x10, 0x18, 0x0, 0x13, 0x14, 0x0, 0x15, 0x11, 0x16, 0x7, 0xc, 0x16, 0x18, 0x10, 0x5, 0x5, 0xb, 0x8, 0x3, 0x3, 0x8, 0x9, 0x6, 0x7, 0x8, 0x3, 0x4, 0x7, 0x4, 0x3, 0x3, 0x4, 0xb, 0x8, 0x3, 0xc, 0x10, 0x9, 0x3, 0x3, 0x6, 0xb, 0x7, 0x5, 0x5, 0xf, 0x15, 0x13, 0xb, 0x15, 0x0, 0x0, 0x18, 0x17, 0x17, 0xf, 0x16, 0x18, 0x15, 0x18, 0x18, 0x13, 0x13, 0x14, 0x11, 0x15, 0x13, 0x18, 0x0, 0x17, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x14, 0x11, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x18, 0x14, 0xf, 0x10, 0x18, 0x14, 0xc, 0xa, 0xc, 0x10, 0x10, 0xa, 0x7, 0x7, 0x7, 0x7, 0x5, 0x9, 0x14, 0x0, 0xf, 0x9, 0xe, 0xe, 0xd, 0xe, 0xf, 0x8, 0x8, 0x5, 0x5, 0x6, 0x6, 0x9, 0x12, 0x11, 0x6, 0x4, 0xb, 0xc, 0xb, 0xe, 0xe, 0xb, 0xe, 0xb, 0xd, 0x9, 0x3, 0x2, 0x3, 0x2, 0x4, 0x4, 0x2, 0x4, 0x6, 0x4, 0x3, 0x3, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x5, 0x9, 0x7, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x4, 0x5, 0x4, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x5, 0x3, 0x6, 0x5, 0x7, 0x5, 0x2, 0x3, 0xa, 0xe, 0x10, 0xd, 0x8, 0xa, 0xa, 0xc, 0xa, 0xa, 0x7, 0x4, 0x9, 0x8, 0x4, 0x7, 0xd, 0x17, 0x0, 0x17, 0x10, 0xf, 0x12, 0x12, 0x16, 0x14, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x14, 0x11, 0x15, 0x11, 0x9, 0x4, 0x6, 0xe, 0xb, 0x8, 0x4, 0x4, 0x3, 0x3, 0x11, 0x10, 0xd, 0x13, 0x11, 0xc, 0x6, 0x3, 0x3, 0x4, 0x5, 0x7, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0x9, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x5, 0x7, 0x3, 0xa, 0xd, 0xa, 0x4, 0x6, 0x11, 0x0, 0x0, 0x16, 0x8, 0x7, 0xe, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x17, 0x18, 0x14, 0x16, 0x0, 0x14, 0x12, 0x17, 0x18, 0x18, 0x15, 0xc, 0x12, 0x0, 0x0, 0x18, 0xe, 0x13, 0x17, 0x17, 0x13, 0x17, 0x18, 0x0, 0x16, 0xe, 0x17, 0x13, 0x9, 0x10, 0xa, 0x8, 0xb, 0xc, 0x11, 0x0, 0x0, 0x14, 0x18, 0x18, 0xf, 0x17, 0x14, 0xc, 0xb, 0xd, 0x12, 0x7, 0x2, 0x4, 0xa, 0x7, 0x2, 0x3, 0x10, 0xc, 0x8, 0x6, 0x5, 0x8, 0x8, 0x5, 0x3, 0x3, 0x6, 0x5, 0x3, 0x4, 0x4, 0xc, 0xf, 0x6, 0x4, 0x5, 0x4, 0x7, 0x7, 0x2, 0x7, 0x16, 0x0, 0x0, 0xe, 0xb, 0x18, 0x16, 0x12, 0x18, 0x16, 0x9, 0xa, 0x10, 0x11, 0x13, 0x15, 0x12, 0xa, 0xe, 0x18, 0x18, 0x17, 0x0, 0x14, 0xd, 0x14, 0x0, 0x18, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0xd, 0xa, 0x14, 0x5f, 0x6b, 0x5f, 0x6b, 0x6b, 0x6b, 0x6b, 0x0, 0x16, 0x18, 0x18, 0x12, 0xa, 0x8, 0x14, 0x14, 0xa, 0x6, 0x8, 0x8, 0x9, 0x7, 0x8, 0xf, 0x14, 0x17, 0xf, 0x8, 0xe, 0x17, 0x0, 0x10, 0x9, 0x6, 0x4, 0x5, 0x4, 0x4, 0x9, 0x10, 0x15, 0xe, 0x4, 0x8, 0xc, 0xc, 0xc, 0xb, 0x9, 0x9, 0xc, 0xd, 0xd, 0x9, 0x6, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x2, 0x5, 0x8, 0x9, 0x7, 0x4, 0x7, 0x4, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x4, 0x8, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x5, 0x7, 0x5, 0x2, 0x2, 0x2, 0x5, 0x5, 0x7, 0x7, 0x6, 0x3, 0x2, 0x5, 0xf, 0x12, 0x8, 0x9, 0xb, 0xa, 0x8, 0x8, 0xa, 0x9, 0x8, 0x7, 0x7, 0x7, 0x7, 0xa, 0x13, 0x14, 0x12, 0x15, 0x18, 0x14, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x18, 0x17, 0x10, 0x10, 0x16, 0xb, 0x7, 0x7, 0x8, 0x9, 0xd, 0x16, 0xb, 0x4, 0x6, 0x3, 0x13, 0x12, 0x12, 0x15, 0x13, 0x7, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x5, 0x4, 0x2, 0x5, 0x9, 0x6, 0x5, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x7, 0x7, 0x4, 0x6, 0xc, 0xe, 0x6, 0x5, 0xd, 0xe, 0xf, 0xc, 0x13, 0x12, 0xc, 0x7, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x17, 0x16, 0x0, 0x0, 0x18, 0x0, 0x13, 0x15, 0x14, 0x13, 0x0, 0x14, 0x10, 0x18, 0x0, 0x18, 0x18, 0x0, 0x14, 0x13, 0x17, 0xb, 0x11, 0x0, 0x16, 0x18, 0x17, 0x0, 0x0, 0x14, 0xc, 0x17, 0x17, 0x9, 0x4, 0x7, 0x6, 0x8, 0xf, 0x12, 0xb, 0xf, 0x11, 0x17, 0x0, 0x16, 0x15, 0x18, 0x9, 0x7, 0x3, 0xa, 0x11, 0x4, 0x3, 0x5, 0x12, 0xb, 0x3, 0x7, 0xd, 0x6, 0x6, 0x2, 0x9, 0x10, 0x6, 0x3, 0x5, 0x6, 0x5, 0x7, 0x3, 0xb, 0x10, 0x9, 0x3, 0x4, 0x4, 0x4, 0x3, 0x9, 0x7, 0x3, 0x4, 0xd, 0x17, 0x0, 0x15, 0x9, 0x17, 0x14, 0xd, 0xa, 0xc, 0x5, 0x8, 0x14, 0x11, 0x12, 0x17, 0x11, 0xb, 0x8, 0x14, 0x0, 0x0, 0x10, 0xc, 0x16, 0x0, 0x16, 0xc, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x0, 0x16, 0xe, 0x13, 0x6b, 0x6b, 0x6b, 0x6b, 0x6e, 0x5f, 0x6b, 0x18, 0x15, 0x18, 0x18, 0x16, 0x11, 0xb, 0xd, 0x7, 0x4, 0x5, 0x4, 0x5, 0x5, 0x9, 0x11, 0x17, 0x10, 0x9, 0x6, 0xc, 0x16, 0x0, 0x16, 0x9, 0x3, 0x4, 0x4, 0x3, 0x3, 0x6, 0x13, 0x0, 0xc, 0x3, 0x9, 0xb, 0xc, 0xc, 0xc, 0x8, 0xc, 0xd, 0xd, 0xd, 0x6, 0x2, 0x8, 0x7, 0x3, 0x4, 0x5, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x4, 0x4, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x2, 0x7, 0x9, 0x6, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x3, 0x2, 0x3, 0xa, 0xe, 0x8, 0x5, 0xb, 0xb, 0x7, 0x9, 0x9, 0xa, 0x9, 0xb, 0xb, 0xa, 0x7, 0x9, 0x10, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x0, 0x12, 0xb, 0x11, 0x10, 0x5, 0x6, 0xb, 0xa, 0x7, 0x10, 0x17, 0xa, 0x3, 0x4, 0x7, 0x15, 0x12, 0x12, 0x17, 0x15, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x7, 0x7, 0x6, 0x3, 0x6, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x7, 0xa, 0x6, 0xa, 0x9, 0x6, 0x6, 0x4, 0x6, 0xa, 0x8, 0x6, 0x5, 0x10, 0x0, 0x13, 0xc, 0xf, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x15, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x13, 0x13, 0x18, 0x18, 0x10, 0x12, 0x17, 0x0, 0x16, 0x17, 0x15, 0x17, 0x13, 0xb, 0x15, 0x0, 0x0, 0x18, 0x17, 0x0, 0x13, 0x9, 0x12, 0x0, 0x14, 0x8, 0x4, 0x4, 0x4, 0x9, 0xf, 0x10, 0x8, 0xa, 0xb, 0x18, 0x17, 0x18, 0x0, 0x13, 0x8, 0xb, 0x5, 0x9, 0xb, 0x9, 0xa, 0xb, 0x15, 0xb, 0x3, 0x5, 0x4, 0x4, 0x3, 0x3, 0x6, 0x6, 0x2, 0x5, 0x6, 0x7, 0xd, 0x10, 0x4, 0xe, 0x17, 0xa, 0x3, 0x5, 0x4, 0x4, 0x4, 0x9, 0xb, 0x5, 0x3, 0x5, 0x13, 0x0, 0x13, 0xa, 0x18, 0x18, 0xe, 0x6, 0x9, 0x6, 0xe, 0x17, 0x16, 0x13, 0x10, 0x15, 0x12, 0x8, 0xb, 0x14, 0x12, 0x10, 0x0, 0x0, 0x15, 0xe, 0x13, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0xf, 0x17, 0x16, 0x10, 0x18, 0x0, 0x12, 0xc, 0x6b, 0x6b, 0x5f, 0x6b, 0x63, 0x6b, 0x6b, 0x0, 0x0, 0x11, 0x11, 0x0, 0x15, 0xb, 0x5, 0x4, 0x5, 0x5, 0x7, 0xb, 0xf, 0x14, 0x14, 0xa, 0x4, 0x6, 0xa, 0x13, 0x14, 0xf, 0x7, 0x3, 0x4, 0x6, 0x3, 0x3, 0x4, 0x10, 0x15, 0xb, 0x4, 0xa, 0xa, 0xa, 0xe, 0x9, 0x9, 0xe, 0xf, 0xd, 0xb, 0x4, 0x2, 0x3, 0x4, 0x5, 0x5, 0x4, 0x3, 0x2, 0x3, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x7, 0x9, 0x2, 0x3, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x4, 0x3, 0x2, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x4, 0x2, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x6, 0xa, 0x6, 0x4, 0x2, 0x3, 0x7, 0xe, 0xb, 0x9, 0xc, 0xd, 0xc, 0x8, 0x7, 0x9, 0xa, 0xe, 0xc, 0x6, 0x7, 0xc, 0xe, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x18, 0x17, 0x17, 0x17, 0x18, 0x17, 0xe, 0xe, 0x13, 0xc, 0x3, 0x5, 0x8, 0x5, 0x6, 0x16, 0x17, 0x7, 0x6, 0x2, 0xa, 0x13, 0x10, 0x12, 0x14, 0x15, 0x7, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x5, 0x5, 0x3, 0x4, 0x4, 0x7, 0x7, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x5, 0x5, 0x6, 0x10, 0x8, 0x3, 0x6, 0xc, 0xe, 0xe, 0x5, 0x4, 0x5, 0x9, 0xd, 0xf, 0x14, 0x14, 0xa, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x17, 0x10, 0x10, 0x18, 0x0, 0x18, 0x0, 0x17, 0x16, 0x13, 0x10, 0x17, 0x17, 0x0, 0x0, 0x18, 0xf, 0xf, 0x16, 0x0, 0x0, 0x0, 0x10, 0x4, 0xa, 0xf, 0xb, 0xc, 0xe, 0x5, 0xa, 0x16, 0x16, 0x12, 0x18, 0x13, 0xa, 0xf, 0x15, 0x12, 0x8, 0x4, 0xa, 0xb, 0xb, 0x10, 0x5, 0x4, 0x6, 0x4, 0x3, 0x3, 0x7, 0x8, 0xb, 0xd, 0xb, 0x5, 0xa, 0x13, 0xb, 0x7, 0xf, 0xd, 0x6, 0x7, 0x5, 0x4, 0x4, 0x3, 0x5, 0x8, 0x6, 0x7, 0x4, 0xc, 0x18, 0xf, 0x13, 0x0, 0x0, 0x14, 0xe, 0x9, 0x4, 0xa, 0x12, 0x11, 0xd, 0x14, 0x12, 0x15, 0xd, 0x7, 0x8, 0x6, 0xc, 0x12, 0x13, 0x10, 0x12, 0x16, 0x17, 0x14, 0x16, 0x12, 0x18, 0x18, 0x17, 0x0, 0x14, 0x17, 0x0, 0x0, 0x17, 0xe, 0x79, 0x6b, 0x6b, 0x6b, 0x6b, 0x5f, 0x63, 0x1a, 0xe, 0x6, 0xc, 0x11, 0x9, 0x5, 0x5, 0x5, 0x4, 0x7, 0x12, 0x0, 0x18, 0xf, 0x5, 0x6, 0xe, 0x11, 0x16, 0x15, 0xb, 0x3, 0x5, 0x5, 0x4, 0x3, 0x3, 0x9, 0x11, 0xc, 0x5, 0x6, 0xc, 0xd, 0xa, 0xd, 0x9, 0x9, 0xd, 0xb, 0xc, 0x9, 0x4, 0x6, 0x5, 0x3, 0x3, 0x3, 0x5, 0x3, 0x5, 0x4, 0x4, 0x6, 0x6, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x3, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x2, 0x2, 0x1, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x5, 0x8, 0x6, 0x2, 0x2, 0x3, 0x6, 0x4, 0x2, 0x3, 0x3, 0x6, 0x6, 0x5, 0x6, 0x5, 0x4, 0x9, 0xe, 0xb, 0xa, 0x10, 0xf, 0xa, 0x7, 0xa, 0xa, 0xa, 0x9, 0x6, 0x6, 0x6, 0x8, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x12, 0x15, 0x15, 0xf, 0x9, 0x8, 0xc, 0xd, 0x8, 0x4, 0x6, 0x9, 0x4, 0xe, 0x0, 0x11, 0xc, 0xc, 0x7, 0x8, 0x11, 0xe, 0xd, 0x17, 0x18, 0x9, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x6, 0x8, 0x3, 0x2, 0x3, 0x8, 0xb, 0x5, 0x3, 0xa, 0xa, 0xd, 0xc, 0x4, 0x4, 0x4, 0x3, 0x3, 0xa, 0x15, 0x13, 0x9, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x14, 0x10, 0xd, 0x15, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x0, 0x16, 0x15, 0x13, 0xe, 0xf, 0x18, 0x0, 0x0, 0x18, 0x14, 0xc, 0x9, 0x10, 0x13, 0x14, 0x16, 0xd, 0x3, 0x10, 0x0, 0x12, 0x15, 0x17, 0xc, 0x6, 0xb, 0xa, 0xa, 0x4, 0x3, 0x4, 0x4, 0x5, 0xd, 0x3, 0xb, 0x12, 0x6, 0x3, 0x2, 0x6, 0xc, 0x11, 0x11, 0x6, 0x4, 0x5, 0x6, 0x6, 0xb, 0xd, 0x6, 0x2, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x6, 0x4, 0x6, 0x11, 0x11, 0x0, 0x0, 0x13, 0x12, 0x17, 0x9, 0x2, 0x9, 0xb, 0xa, 0x15, 0x12, 0x12, 0x0, 0x18, 0x10, 0x7, 0x8, 0x7, 0x7, 0xa, 0x12, 0xf, 0x14, 0xf, 0x15, 0x10, 0x12, 0x16, 0x15, 0x17, 0x16, 0x0, 0x16, 0x16, 0x17, 0x15, 0x8, 0x81, 0x63, 0x6b, 0x6b, 0x6b, 0x6b, 0x71, 0x17, 0x16, 0xe, 0x8, 0xb, 0x9, 0x5, 0x4, 0x5, 0xe, 0xc, 0xd, 0x12, 0xa, 0x3, 0x6, 0xc, 0x17, 0x0, 0x11, 0x8, 0x5, 0x4, 0x7, 0x5, 0x3, 0x7, 0xe, 0x13, 0xb, 0x3, 0x4, 0xd, 0xa, 0xd, 0xd, 0x9, 0xa, 0xd, 0xa, 0xc, 0x6, 0x4, 0x6, 0xb, 0x7, 0x4, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x6, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0x8, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x7, 0x8, 0x7, 0x6, 0x6, 0x2, 0x2, 0x5, 0xd, 0xc, 0xe, 0xe, 0x10, 0xb, 0xb, 0xb, 0x9, 0x8, 0x8, 0x7, 0x6, 0x5, 0x5, 0xc, 0x15, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x13, 0x8, 0x6, 0xe, 0x12, 0x11, 0x5, 0x4, 0x8, 0x6, 0x4, 0x15, 0x0, 0x13, 0x16, 0x10, 0xb, 0x4, 0x15, 0x15, 0xc, 0x18, 0x17, 0x9, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x5, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x7, 0x7, 0x5, 0x3, 0x5, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x8, 0x6, 0x3, 0x5, 0x5, 0x7, 0x11, 0x14, 0x14, 0x10, 0x15, 0x17, 0x18, 0x0, 0x15, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x18, 0x16, 0x13, 0x10, 0x16, 0x10, 0x10, 0x17, 0x0, 0x18, 0x11, 0x13, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x14, 0x13, 0xc, 0xc, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0xf, 0x9, 0x8, 0xf, 0x10, 0xb, 0xf, 0x14, 0xe, 0x9, 0x17, 0x18, 0x15, 0x0, 0x18, 0xe, 0x7, 0xe, 0x8, 0x3, 0x4, 0x5, 0x2, 0x4, 0xc, 0xf, 0x3, 0x9, 0xa, 0x4, 0x7, 0x8, 0x8, 0xe, 0xb, 0xb, 0x4, 0x5, 0xd, 0x8, 0xb, 0x18, 0x10, 0x5, 0x5, 0x8, 0x8, 0x3, 0x5, 0x6, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x7, 0x16, 0x0, 0x15, 0xe, 0x17, 0x17, 0xa, 0x9, 0xb, 0xf, 0x13, 0x11, 0x14, 0x18, 0x14, 0x0, 0x18, 0xb, 0x8, 0x9, 0x8, 0x9, 0xa, 0x10, 0xf, 0x10, 0x12, 0x13, 0x18, 0x15, 0x8, 0xa, 0x11, 0x15, 0x9, 0x7, 0x7, 0x8, 0x7, 0x82, 0x71, 0x6b, 0x63, 0x65, 0x79, 0x6b, 0x0, 0x0, 0x17, 0x7, 0x7, 0x8, 0x6, 0x5, 0x9, 0x18, 0x15, 0xb, 0x5, 0x7, 0xd, 0x15, 0x17, 0x14, 0xc, 0x5, 0x4, 0x3, 0x4, 0x5, 0x7, 0x5, 0x12, 0x18, 0x8, 0x3, 0x8, 0xb, 0xb, 0x9, 0xa, 0x7, 0xc, 0xe, 0xe, 0xc, 0x7, 0x3, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x5, 0x5, 0x3, 0x3, 0x2, 0x2, 0x6, 0x7, 0x8, 0x3, 0x3, 0x7, 0x7, 0x4, 0x2, 0x2, 0x3, 0x4, 0x5, 0x5, 0x3, 0x6, 0x8, 0x4, 0x5, 0x5, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x1, 0x1, 0x2, 0x2, 0x2, 0x3, 0x2, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x7, 0x8, 0x6, 0x6, 0x5, 0x3, 0xb, 0xd, 0xa, 0xd, 0xe, 0xc, 0xc, 0xc, 0xa, 0x7, 0x7, 0x6, 0x8, 0x5, 0x5, 0x6, 0xe, 0x16, 0x18, 0x0, 0x0, 0x0, 0x14, 0x12, 0xb, 0xc, 0xd, 0xc, 0xd, 0x6, 0x3, 0x8, 0x5, 0xb, 0x0, 0x15, 0xd, 0x14, 0xe, 0x5, 0x3, 0x17, 0x16, 0xb, 0x15, 0x12, 0x7, 0x3, 0x4, 0x5, 0x3, 0x8, 0x6, 0x4, 0x3, 0x3, 0x6, 0x8, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x6, 0x6, 0x2, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0xa, 0xc, 0x5, 0x3, 0x4, 0x4, 0xb, 0x18, 0x0, 0x11, 0xe, 0x18, 0x0, 0x15, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x10, 0x10, 0x11, 0xd, 0xe, 0x10, 0xf, 0x11, 0xb, 0x9, 0x11, 0xd, 0xc, 0xe, 0x13, 0x13, 0x10, 0x15, 0x12, 0x14, 0xf, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xb, 0xd, 0xa, 0xc, 0xd, 0x9, 0x10, 0xd, 0xa, 0x13, 0x0, 0x13, 0x15, 0x18, 0x13, 0x5, 0x5, 0x7, 0x4, 0x3, 0x3, 0x3, 0x4, 0xa, 0x15, 0xd, 0x3, 0x5, 0x3, 0x3, 0x9, 0x10, 0xd, 0xf, 0x6, 0xb, 0xd, 0xd, 0x11, 0x7, 0xe, 0x15, 0x6, 0x2, 0x8, 0x9, 0x4, 0x5, 0x6, 0x4, 0x3, 0x5, 0x8, 0x4, 0x3, 0x4, 0x4, 0x12, 0x0, 0x18, 0x18, 0x0, 0x17, 0xa, 0x12, 0x16, 0x0, 0x0, 0x17, 0x0, 0x10, 0xd, 0x0, 0x15, 0x15, 0xe, 0x10, 0x13, 0x8, 0xc, 0xd, 0x9, 0xc, 0x16, 0x0, 0x18, 0x16, 0xc, 0x13, 0x12, 0x15, 0x16, 0x14, 0xb, 0x5, 0x7, 0x8c, 0x87, 0x6b, 0x71, 0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x18, 0x6, 0x7, 0x6, 0x5, 0x8, 0x10, 0x17, 0xd, 0x5, 0xa, 0x15, 0x0, 0x0, 0x13, 0xc, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x10, 0x17, 0xe, 0x5, 0xb, 0xe, 0xa, 0x8, 0xa, 0x7, 0xb, 0xf, 0xe, 0xd, 0x5, 0x3, 0x5, 0x6, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x4, 0x7, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x2, 0x2, 0x7, 0x8, 0x3, 0x5, 0x7, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x8, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x8, 0x4, 0x3, 0x7, 0x10, 0x11, 0x8, 0x9, 0xc, 0xb, 0xa, 0x9, 0xa, 0x7, 0x7, 0x5, 0x4, 0x5, 0x6, 0xb, 0x14, 0x17, 0x18, 0x18, 0x17, 0x13, 0xa, 0xb, 0xe, 0xf, 0x9, 0x6, 0xa, 0x5, 0x5, 0x10, 0x0, 0xf, 0xb, 0x11, 0xb, 0x4, 0x4, 0xf, 0x17, 0x12, 0x16, 0x14, 0x9, 0x3, 0x4, 0x4, 0x5, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x5, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x7, 0x6, 0x3, 0x3, 0x5, 0xc, 0xc, 0x6, 0x4, 0x4, 0x8, 0x16, 0x17, 0x0, 0x0, 0x18, 0x14, 0xd, 0x17, 0x0, 0x0, 0x0, 0x0, 0x15, 0x11, 0xb, 0xf, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x12, 0x12, 0x11, 0x15, 0x16, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x14, 0x13, 0x12, 0x15, 0xb, 0x7, 0x6, 0x9, 0xf, 0x7, 0x12, 0x0, 0x17, 0x13, 0x18, 0x0, 0x16, 0x11, 0x7, 0x3, 0x3, 0x4, 0x4, 0x4, 0x7, 0x6, 0xf, 0xc, 0x4, 0x3, 0x3, 0x3, 0xc, 0x11, 0x6, 0x7, 0x6, 0xa, 0xc, 0x7, 0x6, 0x4, 0x7, 0x9, 0x7, 0x6, 0x4, 0x6, 0x4, 0x4, 0x5, 0x3, 0x5, 0x12, 0xf, 0x3, 0xa, 0xa, 0x4, 0xe, 0x0, 0x0, 0x0, 0x0, 0x18, 0xe, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x12, 0x15, 0x18, 0x0, 0x17, 0x18, 0x17, 0xa, 0xa, 0xd, 0xa, 0x8, 0x11, 0xe, 0x11, 0x12, 0x17, 0x17, 0x16, 0x0, 0x0, 0x17, 0xe, 0x4, 0x7, 0x8c, 0x7c, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x18, 0x0, 0x0, 0xf, 0x3, 0x3, 0x8, 0xc, 0xf, 0xe, 0x7, 0xb, 0xf, 0x14, 0x15, 0xc, 0x5, 0x4, 0x5, 0x5, 0x4, 0x4, 0x3, 0x6, 0x12, 0x11, 0x7, 0x6, 0xc, 0xc, 0xb, 0x9, 0x8, 0xc, 0x12, 0xf, 0xe, 0x8, 0x3, 0x3, 0x5, 0x7, 0x6, 0x5, 0x4, 0x2, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x5, 0x6, 0x5, 0x3, 0x3, 0x7, 0xd, 0x8, 0x3, 0x4, 0x7, 0x7, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x7, 0x4, 0x2, 0x3, 0x3, 0x8, 0x7, 0x2, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x7, 0x4, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x5, 0x2, 0x2, 0x6, 0xa, 0x7, 0x4, 0x2, 0x5, 0xd, 0x10, 0xa, 0xc, 0xb, 0x9, 0x8, 0x9, 0xa, 0x8, 0x7, 0x6, 0x6, 0x5, 0x5, 0x7, 0xa, 0xa, 0x10, 0x11, 0x11, 0x10, 0xf, 0xf, 0xb, 0x7, 0x9, 0xc, 0x5, 0x11, 0x16, 0x12, 0xa, 0xb, 0xb, 0x4, 0x3, 0x4, 0x14, 0x15, 0x13, 0x15, 0x12, 0xb, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x5, 0x8, 0x4, 0x5, 0x7, 0x5, 0x5, 0x6, 0xa, 0x6, 0x4, 0x4, 0x4, 0x6, 0xf, 0xf, 0x5, 0x6, 0x7, 0xe, 0x12, 0x15, 0x18, 0x17, 0x10, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x8, 0x11, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0xe, 0x11, 0x10, 0x14, 0x10, 0xa, 0x9, 0x7, 0x9, 0xb, 0xf, 0x0, 0x14, 0x14, 0x17, 0x0, 0x0, 0x13, 0x11, 0xa, 0xf, 0x7, 0x3, 0x3, 0x4, 0x5, 0x3, 0x8, 0x8, 0x4, 0x3, 0x4, 0x8, 0x8, 0x9, 0x8, 0x11, 0x14, 0x8, 0x6, 0xa, 0x7, 0x3, 0x6, 0xd, 0xe, 0xd, 0x3, 0x5, 0x8, 0xa, 0x9, 0x4, 0x9, 0x16, 0xa, 0x2, 0x9, 0x9, 0x7, 0xf, 0xf, 0x15, 0x0, 0x17, 0x17, 0x17, 0x14, 0x0, 0x0, 0x18, 0x16, 0x18, 0x0, 0x18, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xa, 0x14, 0xd, 0xa, 0xd, 0x9, 0x7, 0x10, 0x15, 0x13, 0x0, 0x18, 0x12, 0xb, 0x8, 0x8, 0xf, 0x82, 0x7d, 0x6b, 0x6b, 0x5f, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x17, 0x8, 0x4, 0x7, 0x8, 0x6, 0x7, 0xf, 0x0, 0x15, 0xe, 0x8, 0x4, 0x5, 0x4, 0x4, 0x8, 0x6, 0x7, 0xd, 0x12, 0xd, 0x3, 0x7, 0x12, 0xe, 0x10, 0xb, 0x9, 0xc, 0x13, 0x16, 0xf, 0x5, 0x1, 0x2, 0x3, 0x5, 0x6, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x7, 0x9, 0x8, 0x3, 0x2, 0x5, 0x7, 0x5, 0x2, 0x4, 0x5, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x4, 0x5, 0x3, 0x2, 0x2, 0x3, 0x8, 0x3, 0x2, 0x3, 0x4, 0x7, 0x5, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x5, 0x8, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x5, 0x3, 0xa, 0x10, 0xa, 0x7, 0x5, 0x9, 0xa, 0xb, 0x8, 0x8, 0x7, 0x6, 0x7, 0x6, 0x5, 0x5, 0x6, 0xf, 0xd, 0xf, 0xf, 0x12, 0xd, 0x6, 0x7, 0xc, 0x3, 0xb, 0x0, 0x17, 0x11, 0x13, 0x18, 0x16, 0xb, 0x5, 0x5, 0x0, 0x10, 0xe, 0x11, 0x16, 0x11, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x4, 0x5, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0xa, 0xd, 0xb, 0xc, 0xe, 0x7, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0xd, 0x16, 0xb, 0x5, 0x5, 0x4, 0xc, 0xf, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x8, 0x6, 0x9, 0xc, 0x11, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0xe, 0x10, 0xd, 0xc, 0xc, 0xd, 0x11, 0x12, 0x10, 0x7, 0x7, 0x12, 0x0, 0x0, 0x16, 0x13, 0x18, 0x0, 0x14, 0xe, 0xe, 0x14, 0x0, 0xe, 0x4, 0x4, 0x4, 0x3, 0x4, 0x7, 0x5, 0x7, 0xa, 0x8, 0x9, 0x2, 0x4, 0xd, 0xf, 0xf, 0x9, 0xd, 0x12, 0x7, 0x6, 0xd, 0x16, 0xe, 0x8, 0x4, 0x4, 0xa, 0x10, 0x12, 0x5, 0xa, 0xc, 0x4, 0x4, 0x3, 0x3, 0x5, 0xd, 0x5, 0xd, 0x17, 0xd, 0x14, 0x0, 0x0, 0x0, 0x0, 0x11, 0x14, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x13, 0xb, 0x9, 0x8, 0x10, 0xf, 0x14, 0x0, 0x17, 0x14, 0x17, 0x18, 0x16, 0xc, 0x92, 0x79, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x0, 0x0, 0xb, 0x3, 0xa, 0x10, 0xb, 0xd, 0x18, 0x17, 0xe, 0x6, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x8, 0x13, 0x12, 0x8, 0x3, 0xa, 0x12, 0x15, 0x10, 0xf, 0xc, 0x11, 0x13, 0xe, 0xb, 0x3, 0x2, 0x3, 0x2, 0x2, 0x1, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x6, 0x8, 0x3, 0x6, 0x3, 0x3, 0x4, 0x4, 0x6, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x6, 0x6, 0x7, 0xc, 0xf, 0xb, 0x6, 0xb, 0xc, 0xa, 0xa, 0x9, 0x8, 0x8, 0x9, 0xa, 0xc, 0xf, 0xd, 0x8, 0xe, 0xb, 0x9, 0x9, 0x6, 0x6, 0x6, 0x6, 0x15, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0xa, 0x0, 0x14, 0x13, 0x11, 0x17, 0x13, 0x6, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x5, 0x4, 0x7, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x8, 0x9, 0x4, 0xb, 0xb, 0x4, 0x3, 0x6, 0x5, 0x5, 0x4, 0x4, 0x5, 0x10, 0x13, 0x9, 0x8, 0x3, 0x4, 0x9, 0x17, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0xd, 0xa, 0x8, 0x5, 0x5, 0x8, 0xf, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x7, 0x7, 0x6, 0x5, 0x6, 0x9, 0xb, 0x17, 0x15, 0xb, 0xb, 0x12, 0x0, 0x0, 0x18, 0x18, 0x11, 0x17, 0x11, 0xe, 0x10, 0xd, 0x16, 0x17, 0xe, 0xc, 0x8, 0x4, 0x4, 0x6, 0xa, 0x7, 0xd, 0xb, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x8, 0xb, 0xb, 0x7, 0xb, 0x11, 0x11, 0x5, 0x3, 0x5, 0x9, 0x7, 0x8, 0x9, 0x2, 0x5, 0x5, 0x4, 0x9, 0x9, 0x5, 0x6, 0xa, 0x8, 0x7, 0x12, 0x14, 0x0, 0x0, 0x0, 0x0, 0x16, 0x12, 0x12, 0x16, 0x11, 0x11, 0x11, 0x18, 0x18, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x14, 0x11, 0xb, 0x13, 0x15, 0x18, 0x18, 0x14, 0x14, 0x13, 0x11, 0xe, 0x4, 0x82, 0x63, 0x6b, 0x6b, 0x5f, 0x6b, 0x5f, 0x17, 0x14, 0xe, 0xa, 0x6, 0x5, 0xb, 0x14, 0xd, 0xe, 0x15, 0xb, 0x4, 0x3, 0x5, 0x4, 0x4, 0x3, 0x3, 0x9, 0x12, 0x11, 0x6, 0x4, 0xa, 0xe, 0xf, 0x13, 0xf, 0xc, 0x10, 0x13, 0x12, 0x6, 0x2, 0x2, 0x4, 0x7, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x1, 0x4, 0x4, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x6, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x2, 0x3, 0x2, 0x5, 0x6, 0x4, 0x7, 0x8, 0x4, 0x2, 0x6, 0x8, 0x5, 0x5, 0x3, 0x1, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x5, 0x4, 0x4, 0x3, 0x2, 0x1, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x6, 0x9, 0x6, 0x3, 0x2, 0x2, 0x4, 0x3, 0x6, 0x6, 0x5, 0x6, 0xb, 0x12, 0xa, 0x6, 0xa, 0xd, 0xb, 0xa, 0x9, 0x7, 0x6, 0x9, 0xc, 0x13, 0xb, 0xa, 0x17, 0x15, 0xa, 0x5, 0x5, 0x3, 0x8, 0x14, 0x0, 0x13, 0x12, 0x16, 0x13, 0x14, 0x15, 0x16, 0x12, 0x16, 0x0, 0x13, 0x14, 0x13, 0x14, 0x15, 0x10, 0x8, 0x2, 0x2, 0x3, 0x6, 0x4, 0x4, 0x4, 0x4, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x8, 0x6, 0x4, 0x5, 0x5, 0x5, 0x7, 0x4, 0x3, 0x3, 0x8, 0x11, 0x7, 0x7, 0x6, 0xc, 0xc, 0x12, 0x18, 0x15, 0x15, 0x0, 0x18, 0xd, 0xa, 0xa, 0x4, 0x4, 0x5, 0xa, 0xd, 0xd, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xe, 0xc, 0xf, 0x10, 0xd, 0xb, 0x12, 0x12, 0xd, 0x10, 0xe, 0x11, 0x0, 0x0, 0x0, 0x13, 0x16, 0x15, 0xe, 0x0, 0x15, 0x11, 0x13, 0x7, 0x12, 0x0, 0x13, 0xc, 0xa, 0x4, 0x4, 0x6, 0x3, 0x9, 0x12, 0x6, 0x3, 0x3, 0x5, 0x6, 0x5, 0x5, 0x2, 0x5, 0x6, 0x8, 0x8, 0xd, 0xe, 0x4, 0xa, 0xb, 0x8, 0x6, 0x4, 0x4, 0x3, 0x6, 0x4, 0x5, 0x7, 0xd, 0xd, 0x7, 0x4, 0xb, 0xc, 0xa, 0x17, 0x0, 0x0, 0x0, 0x13, 0x14, 0x10, 0xe, 0x12, 0x12, 0x8, 0x6, 0xa, 0xc, 0xa, 0x8, 0xc, 0x12, 0x16, 0x0, 0x18, 0x15, 0x18, 0x0, 0x0, 0x13, 0x11, 0x0, 0x0, 0x11, 0x7, 0x7, 0x5, 0x4, 0x5, 0x9, 0x87, 0x79, 0x63, 0x6e, 0x6e, 0x75, 0x6b, 0x18, 0x11, 0x7, 0x5, 0x5, 0xd, 0x14, 0x16, 0xf, 0xb, 0x8, 0x6, 0x4, 0x4, 0x3, 0x4, 0x4, 0x6, 0x11, 0x14, 0xa, 0x4, 0x9, 0xd, 0xb, 0xc, 0xe, 0xe, 0xd, 0xe, 0x10, 0xe, 0x6, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x4, 0x3, 0x2, 0x4, 0x5, 0x5, 0x8, 0x4, 0x3, 0x5, 0x5, 0x2, 0x5, 0x7, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x4, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x8, 0x7, 0x5, 0x3, 0x4, 0x8, 0x4, 0x4, 0x5, 0x7, 0xa, 0x5, 0x3, 0x3, 0x2, 0x2, 0x3, 0x5, 0x3, 0x5, 0x4, 0x3, 0x9, 0xa, 0x5, 0x5, 0x9, 0xc, 0xa, 0xa, 0x9, 0x8, 0x8, 0xb, 0xf, 0x7, 0x12, 0x0, 0x0, 0x0, 0x16, 0x10, 0xf, 0x16, 0x0, 0x0, 0xe, 0x15, 0x17, 0x11, 0xb, 0x9, 0x8, 0xc, 0x13, 0x0, 0x13, 0x12, 0x14, 0x15, 0x14, 0x15, 0xd, 0x3, 0x3, 0x3, 0x6, 0x6, 0x6, 0x4, 0x4, 0x4, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x8, 0x2, 0x5, 0x8, 0x6, 0x4, 0x3, 0x3, 0x6, 0x4, 0x3, 0x7, 0x14, 0x16, 0xf, 0xe, 0x16, 0x0, 0x0, 0x17, 0x8, 0xd, 0xa, 0x4, 0x7, 0xc, 0xf, 0xc, 0xa, 0xd, 0xf, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0xc, 0xa, 0xf, 0x15, 0x18, 0x13, 0xf, 0x11, 0xc, 0xa, 0x9, 0xd, 0x18, 0x0, 0x0, 0x18, 0x17, 0x17, 0x14, 0x11, 0x0, 0x17, 0x12, 0x14, 0x14, 0x11, 0x11, 0x14, 0x11, 0x9, 0x4, 0x3, 0x3, 0x3, 0x4, 0x9, 0x8, 0x6, 0x8, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0xb, 0xc, 0x10, 0x7, 0x2, 0xe, 0xe, 0x5, 0x3, 0x8, 0x11, 0xe, 0x12, 0x6, 0x7, 0xc, 0xf, 0xc, 0x4, 0x6, 0x9, 0x8, 0x7, 0x14, 0x0, 0x0, 0x0, 0x0, 0x10, 0xe, 0x8, 0xc, 0xe, 0x15, 0x12, 0xf, 0xe, 0x8, 0xa, 0x10, 0xa, 0xe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x15, 0x16, 0x13, 0xf, 0x11, 0x12, 0x13, 0x15, 0x6f, 0x71, 0x75, 0x71, 0x6b, 0x65, 0x6e, 0xe, 0x6, 0x8, 0x6, 0x7, 0xa, 0xb, 0xc, 0x7, 0x6, 0x5, 0x6, 0x3, 0x6, 0x5, 0x3, 0x4, 0x11, 0x17, 0xa, 0x4, 0xb, 0xb, 0xd, 0xa, 0xc, 0xb, 0xf, 0xd, 0x10, 0xb, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x1, 0x1, 0x2, 0x2, 0x4, 0x7, 0x7, 0x5, 0x3, 0x4, 0x6, 0x5, 0x7, 0x4, 0x2, 0x2, 0x2, 0x3, 0x6, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x6, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x7, 0x4, 0x5, 0x5, 0x6, 0x5, 0xb, 0xb, 0xa, 0xa, 0xa, 0xa, 0x7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x16, 0xe, 0x17, 0x0, 0x17, 0xb, 0x3, 0x3, 0x3, 0x7, 0x17, 0x11, 0xf, 0x13, 0x17, 0x15, 0x13, 0xf, 0x7, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x6, 0x3, 0x4, 0x3, 0x3, 0x5, 0x7, 0x4, 0x9, 0x6, 0x3, 0x3, 0x5, 0x5, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x6, 0x6, 0x4, 0x9, 0x15, 0x13, 0xf, 0x15, 0x16, 0x0, 0x0, 0x12, 0xd, 0xd, 0x4, 0x6, 0xb, 0x9, 0x6, 0x6, 0x6, 0x7, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xf, 0xb, 0xb, 0xb, 0x13, 0x12, 0x15, 0x15, 0xf, 0xa, 0xc, 0xa, 0xd, 0x12, 0x18, 0x18, 0x18, 0x16, 0x16, 0x17, 0x18, 0x13, 0x13, 0x0, 0x18, 0x17, 0x16, 0x14, 0x10, 0xf, 0xe, 0x17, 0x12, 0x6, 0x4, 0x5, 0x4, 0x3, 0x2, 0x8, 0x7, 0x9, 0xa, 0x4, 0x4, 0xb, 0xf, 0xb, 0x7, 0xd, 0xd, 0x7, 0x9, 0x8, 0xa, 0x5, 0x4, 0x8, 0xe, 0x15, 0x14, 0xd, 0x7, 0x10, 0xd, 0xc, 0x8, 0x3, 0x3, 0x3, 0x4, 0x3, 0x9, 0x14, 0x16, 0x11, 0x13, 0xd, 0xb, 0xf, 0x13, 0x17, 0x0, 0x0, 0x0, 0x14, 0xf, 0x16, 0x17, 0x13, 0x10, 0xe, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x18, 0xe, 0xd, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b, 0x6b, 0x65, 0x7d, 0x8c, 0x4, 0x3, 0x4, 0x5, 0x5, 0x4, 0x4, 0x9, 0x7, 0x5, 0x8, 0x5, 0x4, 0x7, 0x6, 0x5, 0xf, 0x11, 0x8, 0x7, 0xb, 0xc, 0xb, 0xa, 0xb, 0xd, 0xb, 0xd, 0xe, 0x9, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x4, 0x2, 0x3, 0x2, 0x3, 0x6, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x8, 0x7, 0x4, 0x4, 0x3, 0x2, 0x5, 0x6, 0x4, 0x3, 0x4, 0x3, 0x4, 0x4, 0x4, 0x7, 0xb, 0x8, 0x5, 0x6, 0x5, 0x7, 0x8, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x5, 0x3, 0x3, 0x5, 0x5, 0x4, 0x9, 0xa, 0xa, 0xa, 0xa, 0x9, 0x6, 0xa, 0xb, 0x8, 0xa, 0xc, 0x5, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x13, 0x12, 0x10, 0xe, 0xe, 0xe, 0xd, 0x8, 0x8, 0x7, 0x9, 0x16, 0xf, 0xd, 0x15, 0x16, 0x16, 0x16, 0xb, 0x7, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x3, 0x5, 0x5, 0x3, 0x3, 0x5, 0x6, 0x5, 0x5, 0x4, 0x6, 0xa, 0x6, 0xf, 0xa, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x9, 0x8, 0xb, 0x5, 0x4, 0xd, 0x16, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x11, 0x9, 0x6, 0x7, 0x8, 0x5, 0x4, 0x5, 0x6, 0x7, 0x7, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xa, 0x4, 0x8, 0xf, 0x12, 0x16, 0x11, 0x11, 0xf, 0xb, 0xc, 0x5, 0x8, 0x14, 0x0, 0x18, 0x17, 0x16, 0x17, 0x16, 0x0, 0x17, 0xf, 0x13, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x16, 0xd, 0x13, 0xf, 0x9, 0x9, 0x6, 0x5, 0x3, 0x2, 0x3, 0x3, 0x6, 0xa, 0x4, 0x6, 0xe, 0xc, 0x8, 0x8, 0xa, 0x5, 0x5, 0x12, 0xf, 0x7, 0x6, 0x5, 0xc, 0xd, 0xb, 0x11, 0x7, 0x8, 0x16, 0x9, 0x9, 0x6, 0x3, 0x4, 0x3, 0x2, 0x4, 0x5, 0xa, 0x5, 0x4, 0x9, 0xf, 0x13, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0x7, 0x7, 0x8, 0x8, 0x7, 0x7, 0xb, 0xc, 0xd, 0x11, 0x15, 0x17, 0x16, 0x8, 0x9, 0x10, 0x10, 0xf, 0xe, 0xf, 0x13, 0x18, 0x6b, 0x5f, 0x6b, 0x79, 0x92, 0x96, 0x92, 0x7, 0x8, 0x6, 0x7, 0x8, 0xa, 0xe, 0xa, 0x5, 0x6, 0x3, 0x2, 0x4, 0x5, 0x9, 0x10, 0xc, 0x4, 0x8, 0xa, 0xb, 0xe, 0xb, 0x9, 0xf, 0xd, 0xc, 0xd, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x4, 0x6, 0xb, 0xa, 0x3, 0x3, 0x4, 0x5, 0x7, 0x5, 0x7, 0x3, 0x6, 0x7, 0x3, 0x5, 0x4, 0x3, 0x5, 0x4, 0x5, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x5, 0x4, 0x2, 0x3, 0x2, 0x6, 0x9, 0x7, 0x6, 0xb, 0xa, 0xa, 0xb, 0xb, 0x9, 0x9, 0x9, 0x6, 0x4, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x10, 0x17, 0xf, 0x17, 0x17, 0x11, 0xa, 0xf, 0x7, 0x5, 0x5, 0x3, 0x16, 0x10, 0xd, 0x15, 0x15, 0x15, 0x14, 0x8, 0x6, 0x5, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x5, 0x8, 0x5, 0x4, 0x4, 0x5, 0x6, 0x4, 0x5, 0x9, 0x9, 0x7, 0x5, 0x3, 0x2, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x9, 0x5, 0x9, 0x7, 0xa, 0x14, 0x0, 0x12, 0x10, 0x17, 0x0, 0x0, 0x0, 0x0, 0xf, 0x5, 0xb, 0xc, 0x7, 0x6, 0x3, 0x6, 0x5, 0x6, 0x9, 0xb, 0xf, 0x16, 0x0, 0x0, 0x0, 0x17, 0x15, 0xd, 0xd, 0xb, 0xa, 0xe, 0x11, 0xd, 0xb, 0xe, 0xb, 0xa, 0x8, 0xa, 0x14, 0x0, 0x18, 0x15, 0x15, 0x13, 0x14, 0x13, 0x15, 0x15, 0x10, 0x14, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf, 0x18, 0x11, 0xa, 0xe, 0x4, 0x6, 0x3, 0x5, 0x4, 0x3, 0x2, 0x5, 0x8, 0x8, 0xa, 0x5, 0x6, 0x4, 0x9, 0x9, 0x3, 0x5, 0x6, 0xb, 0x7, 0xc, 0x8, 0x3, 0x8, 0xa, 0x5, 0xb, 0x5, 0x9, 0x10, 0x6, 0x9, 0x4, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x10, 0x18, 0x0, 0x0, 0x0, 0x14, 0xb, 0xc, 0x7, 0x7, 0xa, 0xd, 0xf, 0xe, 0xf, 0x13, 0x16, 0x18, 0x14, 0xe, 0xd, 0x13, 0x10, 0x9, 0xa, 0xb, 0x7, 0xb, 0xa, 0x5, 0x6, 0x9, 0x82, 0x7d, 0x87, 0x96, 0x8b, 0x87, 0x7c, 0x8, 0xc, 0xe, 0xc, 0xb, 0xb, 0xc, 0x8, 0x3, 0x3, 0x3, 0x3, 0x3, 0xe, 0x12, 0x9, 0x3, 0x6, 0x9, 0x9, 0xd, 0xd, 0xa, 0xc, 0xd, 0xc, 0xb, 0x4, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x7, 0x5, 0x5, 0x5, 0x3, 0x2, 0x3, 0x8, 0x7, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x5, 0x7, 0x5, 0x5, 0xa, 0x9, 0x9, 0x10, 0x15, 0xc, 0x7, 0xa, 0xd, 0x8, 0x10, 0x0, 0x18, 0x10, 0x15, 0x0, 0x17, 0x17, 0x18, 0x8, 0xc, 0x10, 0x14, 0x12, 0xe, 0x8, 0x4, 0x4, 0x3, 0xf, 0xc, 0xd, 0x13, 0x13, 0x14, 0xf, 0x5, 0x9, 0x6, 0xa, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x3, 0x3, 0xc, 0x13, 0x7, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x9, 0x9, 0x6, 0x4, 0xe, 0x0, 0x0, 0x18, 0x12, 0xd, 0xc, 0x14, 0x0, 0x0, 0x0, 0xd, 0x6, 0x9, 0xa, 0xb, 0xa, 0x6, 0x3, 0x3, 0x6, 0x4, 0x4, 0xe, 0x0, 0x16, 0x13, 0x14, 0x11, 0xf, 0xf, 0x14, 0xf, 0xe, 0xd, 0xf, 0xd, 0x9, 0x7, 0x7, 0x7, 0x8, 0x9, 0xa, 0xa, 0x8, 0x7, 0x7, 0x5, 0x6, 0x6, 0x9, 0x8, 0x13, 0x0, 0x0, 0x17, 0x11, 0x14, 0xe, 0x14, 0x17, 0x9, 0x9, 0x6, 0x3, 0x4, 0x9, 0x5, 0x3, 0x3, 0x5, 0x4, 0x4, 0x6, 0x4, 0xc, 0xc, 0x7, 0x4, 0x3, 0x4, 0x3, 0x5, 0x6, 0x7, 0xc, 0x9, 0x14, 0x16, 0xf, 0xa, 0x10, 0x11, 0xc, 0x6, 0x6, 0x6, 0x6, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x9, 0x12, 0x0, 0x0, 0x18, 0x11, 0x6, 0x6, 0xe, 0x14, 0x17, 0x15, 0x13, 0xd, 0xc, 0xe, 0xe, 0xf, 0xf, 0xe, 0xb, 0xf, 0xd, 0x10, 0xf, 0xf, 0xd, 0xe, 0xc, 0xa, 0xa, 0x6, 0x92, 0x8c, 0x8c, 0x8c, 0x92, 0x92, 0x92, 0x8, 0xb, 0xb, 0xa, 0xa, 0x6, 0x4, 0x6, 0x3, 0x5, 0x9, 0xe, 0xb, 0xf, 0x6, 0x3, 0x6, 0xa, 0x7, 0x9, 0xb, 0xb, 0xc, 0xa, 0xe, 0x7, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x3, 0x4, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x4, 0x4, 0x7, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x4, 0x2, 0x3, 0x2, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x6, 0x7, 0xa, 0x9, 0x4, 0x5, 0x7, 0x9, 0xa, 0x8, 0xa, 0x11, 0x11, 0x15, 0xe, 0x9, 0xa, 0x6, 0xb, 0x0, 0x0, 0x16, 0x18, 0x0, 0x15, 0x18, 0x0, 0x10, 0x4, 0x8, 0x10, 0xd, 0x8, 0x5, 0x3, 0x4, 0x5, 0xf, 0xd, 0xf, 0x17, 0x18, 0x14, 0x12, 0x5, 0x5, 0x5, 0x7, 0x4, 0x2, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0xb, 0x13, 0x6, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x3, 0x2, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x4, 0xa, 0x11, 0x18, 0x0, 0x0, 0x17, 0x9, 0x7, 0xf, 0x15, 0x15, 0x13, 0xb, 0x4, 0xa, 0xc, 0xe, 0x6, 0x3, 0x4, 0x6, 0x6, 0x5, 0xa, 0x13, 0x13, 0xe, 0xe, 0xd, 0xe, 0x10, 0x13, 0xc, 0xd, 0x12, 0x11, 0x7, 0x4, 0x7, 0xe, 0xd, 0xa, 0xb, 0xd, 0xd, 0xd, 0xc, 0xc, 0xc, 0xd, 0xd, 0xd, 0xb, 0x15, 0x0, 0x0, 0x13, 0xe, 0x9, 0xe, 0xf, 0x13, 0xb, 0xa, 0xa, 0x5, 0x4, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x13, 0xd, 0x2, 0x5, 0xd, 0xb, 0x7, 0x12, 0xb, 0x8, 0xa, 0x12, 0x17, 0x17, 0xb, 0xa, 0x15, 0x10, 0x5, 0x3, 0x7, 0xc, 0x5, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x5, 0xb, 0xb, 0x12, 0x13, 0x13, 0x12, 0x6, 0x4, 0x6, 0x8, 0x8, 0x7, 0x5, 0x2, 0x4, 0x4, 0x5, 0x4, 0x5, 0x4, 0x4, 0x5, 0x4, 0x6, 0x6, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x8b, 0x8b, 0x96, 0x8b, 0x96, 0x96, 0x96, 0x5, 0x5, 0x6, 0x6, 0x5, 0x6, 0x7, 0x5, 0x4, 0x5, 0xb, 0x13, 0xf, 0x5, 0x6, 0xb, 0xa, 0x9, 0x5, 0x9, 0xd, 0xb, 0xb, 0xc, 0xa, 0x2, 0x4, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x5, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x5, 0x4, 0x5, 0x6, 0x5, 0x5, 0x5, 0x6, 0x7, 0x8, 0x9, 0xb, 0xb, 0xb, 0xa, 0xd, 0x14, 0xe, 0x9, 0x4, 0x6, 0xa, 0x9, 0x9, 0x6, 0x8, 0xb, 0x9, 0x8, 0x9, 0xa, 0xa, 0x6, 0x9, 0x0, 0x18, 0x17, 0x18, 0x17, 0x10, 0x13, 0x17, 0x18, 0x11, 0x10, 0x15, 0xa, 0x3, 0x3, 0x6, 0x5, 0x4, 0x12, 0xf, 0x12, 0x18, 0x0, 0x0, 0x17, 0x7, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x5, 0x7, 0x6, 0xb, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x4, 0x4, 0x3, 0x6, 0xa, 0xb, 0x7, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x5, 0x12, 0x14, 0x18, 0x0, 0x0, 0x12, 0x6, 0x6, 0x8, 0x5, 0x5, 0x6, 0x8, 0xb, 0x8, 0xb, 0x8, 0xa, 0x8, 0x4, 0x6, 0x8, 0xc, 0xf, 0x10, 0xb, 0xb, 0xd, 0xa, 0x9, 0x8, 0x7, 0x12, 0x18, 0xc, 0x5, 0x6, 0xd, 0xf, 0x10, 0x11, 0xf, 0xf, 0xc, 0xc, 0xc, 0xa, 0xa, 0xa, 0xa, 0xb, 0xf, 0x18, 0x0, 0x17, 0x11, 0x14, 0x14, 0x13, 0xb, 0xf, 0x17, 0x17, 0x15, 0xb, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x7, 0x10, 0x7, 0x9, 0x5, 0x1, 0x6, 0x15, 0xf, 0x10, 0x17, 0xa, 0x3, 0x9, 0x15, 0x11, 0x13, 0x6, 0xe, 0x18, 0xc, 0x4, 0x4, 0xa, 0xb, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0xe, 0x18, 0x18, 0x17, 0x17, 0x0, 0x14, 0x5, 0x5, 0xa, 0x8, 0x7, 0x6, 0x7, 0x9, 0x8, 0x7, 0x8, 0x6, 0x7, 0x8, 0x5, 0x3, 0x3, 0x4, 0x9, 0x8, 0x7, 0x6, 0x6, 0x5, 0x7, 0x5, 0x96, 0x87, 0x82, 0x87, 0x82, 0x72, 0x82, 0x24, 0xb, 0xd, 0xe, 0x9, 0x9, 0xa, 0x7, 0x4, 0x5, 0xb, 0xa, 0x4, 0x7, 0xc, 0xd, 0x6, 0x6, 0x8, 0xe, 0x9, 0xa, 0xe, 0xf, 0x6, 0x3, 0x4, 0x4, 0x2, 0x2, 0x3, 0x2, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0x4, 0x4, 0x3, 0x4, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x1, 0x3, 0x8, 0x5, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x5, 0x6, 0x8, 0xc, 0xb, 0xb, 0xe, 0xf, 0xe, 0x10, 0x10, 0xd, 0xf, 0x11, 0x10, 0x10, 0x13, 0x13, 0x11, 0xe, 0x10, 0x10, 0xf, 0xd, 0xd, 0xd, 0xd, 0xc, 0xb, 0x6, 0xa, 0x7, 0x5, 0x6, 0x9, 0x8, 0x10, 0xb, 0x4, 0x6, 0x3, 0x3, 0x7, 0x5, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x9, 0x9, 0x18, 0x0, 0x0, 0x18, 0x11, 0x10, 0xf, 0xb, 0x12, 0x15, 0x12, 0xe, 0x7, 0x3, 0x3, 0x5, 0x5, 0x6, 0x14, 0x13, 0x13, 0x16, 0x17, 0x0, 0x18, 0xa, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x8, 0x4, 0x6, 0x4, 0x3, 0x9, 0x8, 0x5, 0x5, 0x3, 0x3, 0x3, 0x4, 0x8, 0x7, 0x4, 0x6, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x5, 0xe, 0x14, 0x16, 0x0, 0x0, 0x0, 0x10, 0x7, 0x5, 0x4, 0x6, 0x5, 0x5, 0x4, 0x9, 0xd, 0x7, 0x7, 0xd, 0xd, 0x9, 0x9, 0x7, 0x8, 0xa, 0xd, 0xe, 0x11, 0xe, 0xd, 0xd, 0xe, 0xf, 0xb, 0xa, 0x9, 0x8, 0x5, 0x4, 0x7, 0x6, 0x5, 0x4, 0x5, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x6, 0xa, 0x15, 0x0, 0x0, 0x13, 0x15, 0x0, 0x0, 0x14, 0xe, 0xe, 0x17, 0x0, 0x0, 0xf, 0x4, 0x3, 0xb, 0xc, 0x2, 0x3, 0x3, 0x6, 0xe, 0x6, 0x2, 0x3, 0x9, 0xa, 0x15, 0xe, 0xe, 0xc, 0x8, 0x6, 0xf, 0x16, 0x11, 0xd, 0x4, 0x10, 0x17, 0x9, 0x3, 0x3, 0x5, 0x5, 0x4, 0x8, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xa, 0xa, 0xe, 0x10, 0xd, 0x8, 0x8, 0xb, 0x9, 0x8, 0x9, 0x6, 0x9, 0xd, 0x6, 0x3, 0x4, 0x3, 0x7, 0x7, 0x7, 0x6, 0x7, 0x6, 0x6, 0x5a, 0x96, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x62, 0x5, 0x8, 0x8, 0xa, 0xd, 0x8, 0x8, 0x4, 0x3, 0x9, 0x9, 0x8, 0xd, 0x11, 0xc, 0x6, 0x9, 0xd, 0xb, 0x8, 0xb, 0xe, 0xb, 0x4, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x8, 0x5, 0x2, 0x3, 0x6, 0x5, 0x5, 0x5, 0x8, 0x4, 0x6, 0x4, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x4, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x5, 0x8, 0x7, 0xa, 0xe, 0xc, 0xc, 0xd, 0xe, 0x10, 0x10, 0x10, 0x11, 0x12, 0x12, 0x12, 0x11, 0x11, 0x10, 0x10, 0xe, 0xd, 0xe, 0xd, 0xc, 0xc, 0xd, 0xc, 0xa, 0xa, 0x9, 0x9, 0x7, 0x7, 0x5, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x5, 0x4, 0x9, 0x7, 0x7, 0x5, 0x4, 0x6, 0xc, 0xb, 0x5, 0x3, 0x4, 0x3, 0x9, 0x5, 0x5, 0x7, 0x5, 0x7, 0x8, 0x7, 0x6, 0x6, 0x16, 0x0, 0x0, 0x0, 0x17, 0x16, 0x17, 0x16, 0x11, 0xc, 0x7, 0x7, 0xf, 0x9, 0x4, 0x3, 0x7, 0x9, 0x11, 0x16, 0x14, 0x15, 0x16, 0x0, 0x0, 0xb, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x8, 0x5, 0x2, 0x2, 0x3, 0x11, 0x11, 0x4, 0x6, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x9, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x15, 0x7, 0x3, 0x4, 0x5, 0x6, 0x4, 0x6, 0x6, 0xa, 0xc, 0xa, 0x6, 0x8, 0xd, 0xa, 0x8, 0x5, 0xa, 0xf, 0x10, 0x11, 0xc, 0x12, 0x14, 0xf, 0xe, 0xd, 0xc, 0x9, 0x4, 0xa, 0xa, 0xa, 0x7, 0x6, 0x6, 0x4, 0x8, 0x8, 0x9, 0x9, 0x6, 0x8, 0xa, 0x14, 0x0, 0x0, 0x17, 0xf, 0x18, 0x18, 0x14, 0x18, 0x18, 0x18, 0x17, 0x15, 0x18, 0x13, 0x4, 0x2, 0x8, 0x9, 0x2, 0x4, 0x4, 0x3, 0x5, 0x3, 0x4, 0x5, 0x11, 0xf, 0x12, 0xb, 0x4, 0x6, 0xc, 0x9, 0x11, 0x14, 0xc, 0x4, 0xb, 0x15, 0xd, 0x4, 0x3, 0x4, 0x2, 0x2, 0x8, 0x10, 0x5, 0x5, 0x4, 0x4, 0x5, 0x5, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xb, 0x5, 0x4, 0x5, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x8, 0xa, 0x9, 0x9, 0xe, 0xf, 0xa, 0x7, 0x6c, 0x86, 0x81, 0x92, 0x86, 0x92, 0x81, 0x87, 0x81, 0x9, 0xe, 0x9, 0x13, 0x15, 0xa, 0x10, 0x9, 0x4, 0xb, 0xd, 0xf, 0x10, 0xd, 0xa, 0xd, 0xc, 0x9, 0x9, 0xb, 0xa, 0xd, 0xa, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0xa, 0x7, 0x2, 0x3, 0x3, 0x5, 0x5, 0x4, 0x4, 0x3, 0x6, 0x5, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x5, 0x7, 0x9, 0xb, 0xd, 0xc, 0xc, 0xc, 0x8, 0x6, 0x5, 0x7, 0xb, 0xd, 0xf, 0xe, 0xe, 0xf, 0x10, 0x11, 0x11, 0x11, 0x13, 0x13, 0x13, 0x12, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0xe, 0xc, 0xb, 0xb, 0xb, 0x9, 0x8, 0x9, 0x8, 0x7, 0x8, 0x7, 0x6, 0x6, 0x9, 0xa, 0x6, 0x7, 0xa, 0x8, 0xa, 0xc, 0xa, 0x9, 0x7, 0x4, 0x3, 0x5, 0x6, 0x5, 0x4, 0x5, 0x5, 0x8, 0x6, 0x8, 0xa, 0x7, 0x3, 0x5, 0x6, 0x6, 0x7, 0x8, 0x6, 0x4, 0x4, 0x6, 0x6, 0x4, 0x5, 0x5, 0x7, 0xa, 0x9, 0x8, 0xc, 0xc, 0xa, 0x6, 0x4, 0x12, 0x0, 0x0, 0x18, 0x16, 0x15, 0x0, 0x0, 0x17, 0x12, 0xb, 0x6, 0xc, 0x12, 0x10, 0x6, 0x4, 0x5, 0x9, 0x10, 0x17, 0x0, 0x0, 0x0, 0x0, 0xe, 0x3, 0x5, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x8, 0x6, 0x4, 0x5, 0x2, 0x3, 0xf, 0x13, 0x5, 0x5, 0x4, 0x4, 0x4, 0x6, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0xe, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0xd, 0x4, 0x4, 0x4, 0x8, 0x5, 0x5, 0x6, 0x4, 0x7, 0xe, 0xb, 0x7, 0x6, 0x7, 0xc, 0x8, 0x9, 0xa, 0xd, 0xc, 0x9, 0x9, 0xa, 0x7, 0x7, 0xe, 0xe, 0x5, 0x3, 0xd, 0xa, 0x6, 0x4, 0x6, 0x7, 0x4, 0x7, 0x8, 0xa, 0x9, 0x8, 0x9, 0x10, 0x17, 0x0, 0x0, 0x10, 0xe, 0x0, 0x18, 0x15, 0x13, 0x18, 0x18, 0x18, 0x13, 0x17, 0x12, 0x5, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x6, 0xc, 0x5, 0x7, 0x7, 0x9, 0xa, 0x8, 0xb, 0xe, 0xa, 0x11, 0xe, 0x6, 0x5, 0x12, 0x12, 0x4, 0x3, 0x8, 0x6, 0x2, 0x3, 0x8, 0xb, 0x4, 0x4, 0x4, 0x4, 0x4, 0xa, 0x16, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0xc, 0x7, 0x8, 0x6, 0x4, 0x6, 0x8, 0x7, 0x6, 0x7, 0xa, 0xb, 0xd, 0xd, 0xd, 0xd, 0xe, 0xe, 0xc, 0xb, 0xb, 0xc, 0x9, 0x6, 0x92, 0x8c, 0x8c, 0x8c, 0x86, 0x96, 0x96, 0x92, 0x92, 0x4d, 0xd, 0x7, 0xd, 0x14, 0x7, 0xb, 0x9, 0x3, 0xd, 0x13, 0x15, 0xe, 0xa, 0xe, 0xb, 0x8, 0x9, 0xb, 0xc, 0xb, 0xd, 0xa, 0x7, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x1, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x2, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x6, 0x9, 0x7, 0x9, 0xc, 0xe, 0x12, 0x13, 0x14, 0x16, 0x16, 0x16, 0x16, 0x17, 0x16, 0x14, 0xc, 0xd, 0x10, 0x10, 0xe, 0xd, 0xd, 0xc, 0xc, 0xd, 0xc, 0xc, 0xa, 0x9, 0x9, 0x9, 0x9, 0x8, 0x7, 0x6, 0x6, 0x6, 0x6, 0x4, 0x5, 0x5, 0x6, 0x6, 0x6, 0x5, 0x6, 0x7, 0x7, 0x9, 0xc, 0xa, 0xd, 0xc, 0xb, 0xc, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x6, 0x7, 0x6, 0x3, 0x4, 0x6, 0x4, 0x3, 0x4, 0x8, 0xc, 0x9, 0x8, 0x7, 0xa, 0x6, 0x4, 0x5, 0x8, 0x8, 0x7, 0x8, 0x6, 0x5, 0x4, 0x7, 0x9, 0x5, 0x5, 0x5, 0x6, 0x5, 0x6, 0x5, 0x5, 0x7, 0x9, 0x6, 0x6, 0x14, 0x0, 0x0, 0x0, 0x15, 0x12, 0x17, 0x0, 0x0, 0x10, 0x7, 0x5, 0xf, 0xf, 0xc, 0xc, 0xb, 0xd, 0x5, 0xb, 0x13, 0x16, 0x17, 0x0, 0x0, 0x14, 0x7, 0x4, 0x3, 0x4, 0x5, 0xc, 0x9, 0x3, 0x5, 0x7, 0x3, 0x4, 0x4, 0x2, 0x3, 0xa, 0xe, 0x5, 0x4, 0x3, 0x5, 0xf, 0xe, 0x5, 0x3, 0x4, 0x6, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x11, 0x16, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x11, 0x9, 0x5, 0x4, 0xa, 0xa, 0xa, 0xc, 0x4, 0x7, 0xc, 0xd, 0xc, 0x7, 0x8, 0x9, 0x6, 0x8, 0x7, 0xe, 0x10, 0xc, 0x6, 0xa, 0xc, 0xa, 0x8, 0x5, 0x5, 0x8, 0xa, 0x7, 0x7, 0x8, 0xa, 0xb, 0xb, 0xe, 0xb, 0x8, 0x9, 0x7, 0xc, 0x14, 0x17, 0x0, 0x0, 0xd, 0x14, 0x18, 0x18, 0x0, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x16, 0xa, 0x7, 0x5, 0x9, 0x4, 0x5, 0x4, 0x3, 0x3, 0x9, 0x9, 0x5, 0x6, 0x7, 0xe, 0xb, 0xc, 0xd, 0xa, 0x5, 0x5, 0x7, 0x7, 0xb, 0xf, 0xa, 0x2, 0x3, 0x7, 0x6, 0x3, 0x4, 0xb, 0x7, 0x4, 0x3, 0x5, 0x4, 0x4, 0xa, 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0xc, 0xe, 0xe, 0x9, 0x8, 0x8, 0x9, 0xc, 0xb, 0xa, 0xb, 0xc, 0xd, 0xe, 0xa, 0x7, 0x5, 0x4, 0x4, 0x2, 0x4, 0x5, 0x4, 0x5a, 0x8c, 0x8c, 0x8c, 0x92, 0x8b, 0x96, 0x96, 0x8b, 0x8b, 0x96, 0x8, 0x5, 0x5, 0xa, 0x4, 0x7, 0xa, 0x2, 0xa, 0x11, 0xd, 0x12, 0x10, 0xc, 0x9, 0xb, 0x11, 0xe, 0xc, 0xd, 0xa, 0xb, 0xb, 0x7, 0x3, 0x5, 0x7, 0x5, 0x4, 0x5, 0x5, 0x5, 0x7, 0x8, 0x9, 0x8, 0x8, 0xa, 0xd, 0x10, 0x12, 0x14, 0x11, 0xc, 0xf, 0x11, 0x11, 0x11, 0xe, 0xe, 0xe, 0xe, 0xd, 0xd, 0x9, 0xa, 0x9, 0x7, 0x7, 0x7, 0x6, 0x7, 0x4, 0x6, 0x6, 0x5, 0x4, 0x4, 0x8, 0xa, 0x6, 0x6, 0x7, 0x8, 0x5, 0x4, 0x6, 0x8, 0x8, 0xb, 0x9, 0x5, 0x5, 0x7, 0xa, 0x8, 0x9, 0x8, 0x7, 0x7, 0x6, 0x5, 0x7, 0x6, 0x7, 0x6, 0x5, 0x5, 0x7, 0x6, 0x5, 0x6, 0x6, 0x8, 0x7, 0x6, 0x5, 0x6, 0x6, 0xa, 0x9, 0x6, 0x8, 0xb, 0x4, 0x6, 0x5, 0x7, 0xa, 0x7, 0x6, 0x5, 0x7, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x7, 0x8, 0x7, 0x8, 0xb, 0xa, 0x8, 0x8, 0x6, 0x7, 0x9, 0x9, 0x9, 0x6, 0x15, 0x18, 0x14, 0x18, 0x17, 0xf, 0x11, 0x14, 0x12, 0x16, 0x10, 0x8, 0x9, 0x9, 0xa, 0xc, 0xe, 0x12, 0x3, 0x4, 0x9, 0x13, 0x18, 0x0, 0x13, 0x13, 0x8, 0x4, 0x4, 0x3, 0x4, 0xb, 0xc, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0xe, 0x8, 0x3, 0x4, 0x7, 0xa, 0x6, 0x4, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x7, 0x11, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x7, 0x3, 0x4, 0xa, 0xe, 0xb, 0x4, 0x9, 0xb, 0x7, 0xc, 0xd, 0xd, 0xb, 0x8, 0x3, 0x3, 0x6, 0x9, 0x8, 0xa, 0x7, 0x6, 0xa, 0x7, 0x4, 0x8, 0x9, 0x7, 0x6, 0x8, 0x8, 0x9, 0x9, 0x9, 0xb, 0x7, 0x6, 0x8, 0xc, 0x14, 0x14, 0x16, 0x15, 0x17, 0x11, 0x0, 0x17, 0x17, 0x0, 0x18, 0x11, 0x13, 0x0, 0x0, 0x0, 0x15, 0x6, 0x3, 0x5, 0xb, 0x6, 0x3, 0x3, 0x4, 0x6, 0x6, 0x2, 0x3, 0x5, 0x8, 0xf, 0xe, 0xa, 0x4, 0x4, 0x7, 0x9, 0xd, 0xe, 0xf, 0x9, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x8, 0xd, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0xf, 0x13, 0x16, 0x18, 0x0, 0x0, 0x0, 0x15, 0x9, 0x9, 0x10, 0xd, 0xa, 0xc, 0xe, 0xc, 0x10, 0x12, 0x11, 0x10, 0xe, 0xa, 0xa, 0x6, 0x3, 0x5, 0x7, 0x6, 0x6, 0xc, 0xc, 0x7, 0x62, 0x92, 0x96, 0x96, 0x86, 0x96, 0x96, 0x96, 0x8b, 0x9a, 0x92, 0x45, 0xa, 0x4, 0x4, 0x3, 0x9, 0x12, 0x6, 0x8, 0xc, 0x15, 0x15, 0xa, 0xa, 0x10, 0x10, 0xf, 0xd, 0xa, 0xa, 0xd, 0xe, 0xf, 0xd, 0xa, 0xb, 0x13, 0x13, 0x11, 0x11, 0x11, 0x12, 0x10, 0x11, 0x10, 0x10, 0xe, 0xf, 0x11, 0x10, 0xe, 0xc, 0xa, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x5, 0x6, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x4, 0x8, 0x6, 0x5, 0x7, 0x7, 0xc, 0xb, 0x7, 0x5, 0x7, 0x7, 0x9, 0x9, 0x9, 0x7, 0x4, 0x5, 0x6, 0x5, 0x4, 0x6, 0x7, 0x6, 0x5, 0x4, 0x4, 0x4, 0x6, 0x7, 0x6, 0x7, 0xa, 0xa, 0x7, 0x7, 0xd, 0xc, 0x9, 0x8, 0x7, 0x8, 0x8, 0x7, 0x8, 0x6, 0x6, 0x7, 0x8, 0x6, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x6, 0x6, 0x8, 0x6, 0x2, 0x3, 0x6, 0x6, 0x4, 0x4, 0x6, 0x8, 0x8, 0x9, 0xe, 0x13, 0x12, 0xe, 0xd, 0xc, 0xa, 0xa, 0xa, 0x9, 0x9, 0x8, 0x7, 0x9, 0x5, 0x14, 0x18, 0x14, 0x15, 0x0, 0x13, 0x7, 0xf, 0xb, 0xf, 0x12, 0xd, 0x9, 0x3, 0x4, 0x6, 0x6, 0x6, 0x4, 0x4, 0x5, 0x13, 0x0, 0x0, 0x0, 0x0, 0x17, 0x9, 0x3, 0x3, 0x3, 0x4, 0x7, 0x3, 0x4, 0x4, 0x3, 0x5, 0x4, 0x4, 0x3, 0x6, 0xc, 0x8, 0x4, 0x6, 0x7, 0x3, 0x4, 0x2, 0x3, 0x3, 0x4, 0x7, 0xa, 0xa, 0x7, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x4, 0x3, 0x3, 0x9, 0xb, 0x7, 0xa, 0x6, 0x7, 0x9, 0x9, 0xa, 0xb, 0xb, 0xb, 0x8, 0xb, 0xe, 0x9, 0x7, 0x8, 0x6, 0x5, 0x4, 0x7, 0x7, 0x6, 0x4, 0x9, 0xb, 0x8, 0x7, 0x8, 0x8, 0xa, 0x8, 0x3, 0x4, 0xa, 0x11, 0xf, 0x10, 0xf, 0x15, 0x11, 0xe, 0x8, 0x12, 0x0, 0x0, 0x17, 0x18, 0x0, 0x18, 0x12, 0xc, 0x8, 0x6, 0x5, 0x6, 0x5, 0x3, 0x2, 0x3, 0x9, 0x6, 0x3, 0x3, 0x5, 0xb, 0x13, 0xd, 0x5, 0x6, 0x8, 0xd, 0xe, 0xe, 0xd, 0x7, 0x4, 0x5, 0x3, 0x4, 0x6, 0x4, 0x5, 0xf, 0xa, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x11, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x16, 0xd, 0xe, 0x14, 0x13, 0x10, 0x11, 0xf, 0x9, 0xb, 0xd, 0xb, 0xc, 0xa, 0x7, 0x8, 0x9, 0xc, 0xf, 0xb, 0x6, 0x7, 0xc, 0xe, 0x9, 0x8b, 0x96, 0x96, 0x92, 0x8c, 0x82, 0x81, 0x96, 0x92, 0x96, 0x96, 0x74, 0xb, 0x6, 0x5, 0x2, 0x9, 0x11, 0x5, 0xb, 0x12, 0x13, 0xb, 0x8, 0xd, 0xf, 0xc, 0xf, 0xd, 0xc, 0xe, 0xa, 0xa, 0xc, 0xc, 0xa, 0xb, 0xd, 0xe, 0xd, 0x9, 0x8, 0x9, 0x8, 0xa, 0x8, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x6, 0x4, 0x4, 0x4, 0x5, 0x5, 0x7, 0xb, 0xd, 0xb, 0x5, 0x3, 0x4, 0x5, 0xa, 0xb, 0x6, 0x6, 0x8, 0xc, 0xd, 0x9, 0xa, 0x8, 0x8, 0x7, 0x7, 0x5, 0x6, 0x5, 0x5, 0x5, 0x8, 0x7, 0x5, 0x5, 0x6, 0x7, 0x5, 0x7, 0x7, 0x8, 0xc, 0x9, 0x9, 0xb, 0xc, 0xa, 0x5, 0x3, 0x4, 0x7, 0x6, 0x5, 0x5, 0x6, 0x4, 0x3, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x6, 0x5, 0x4, 0x4, 0x5, 0x9, 0xd, 0xd, 0xd, 0xf, 0x10, 0xc, 0x5, 0x6, 0xb, 0xa, 0x4, 0x5, 0x7, 0x9, 0x8, 0x6, 0xb, 0xf, 0xb, 0xc, 0xb, 0x9, 0x9, 0xa, 0x9, 0xa, 0x9, 0xa, 0xa, 0x7, 0x5, 0xe, 0x18, 0x0, 0x18, 0x0, 0xf, 0xe, 0x17, 0x11, 0xb, 0x5, 0x4, 0x6, 0x6, 0x5, 0xa, 0x11, 0xd, 0x4, 0x4, 0x3, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x7, 0x6, 0x9, 0x7, 0x3, 0x4, 0x6, 0x6, 0x4, 0x3, 0x4, 0x4, 0x4, 0x8, 0xb, 0x7, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x3, 0x5, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0xc, 0x4, 0x4, 0x4, 0x7, 0xb, 0x7, 0x8, 0x5, 0x6, 0x5, 0x7, 0x6, 0x3, 0x5, 0x11, 0x10, 0xb, 0x9, 0xa, 0x7, 0xb, 0x5, 0x8, 0xa, 0x6, 0x8, 0x9, 0x7, 0xe, 0xd, 0xc, 0xc, 0xc, 0xe, 0xd, 0x7, 0x4, 0x4, 0x7, 0x8, 0x8, 0x6, 0x10, 0x11, 0xb, 0xe, 0xa, 0xe, 0x15, 0x15, 0x0, 0x0, 0x0, 0x17, 0x12, 0x14, 0x17, 0x10, 0xb, 0x13, 0xf, 0x5, 0x9, 0xa, 0xc, 0x10, 0x6, 0x9, 0x7, 0x7, 0xf, 0x8, 0x8, 0xa, 0x7, 0x6, 0x5, 0xa, 0x5, 0x3, 0x5, 0x6, 0x3, 0x5, 0x5, 0x4, 0x5, 0xe, 0x5, 0x3, 0x4, 0x5, 0x4, 0x4, 0x6, 0x10, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x12, 0xc, 0x10, 0xe, 0x12, 0x10, 0xc, 0x9, 0xd, 0xe, 0xa, 0x7, 0xb, 0x13, 0x10, 0x13, 0x13, 0x13, 0xc, 0x8, 0x6, 0x5, 0x5, 0x8, 0x92, 0x9a, 0x8b, 0x96, 0x8c, 0x77, 0x92, 0x8c, 0x7c, 0x8c, 0x92, 0x92, 0x6, 0x9, 0x4, 0x3, 0x9, 0xe, 0x5, 0xc, 0xd, 0x9, 0xc, 0x9, 0xe, 0xf, 0x10, 0xd, 0xc, 0x10, 0xc, 0x8, 0x4, 0x7, 0x7, 0x4, 0x5, 0x9, 0xb, 0xa, 0x8, 0x7, 0x6, 0x6, 0x7, 0x9, 0x8, 0x6, 0x4, 0x3, 0x4, 0x4, 0x4, 0x7, 0x7, 0xa, 0x6, 0x5, 0x6, 0x7, 0x5, 0x6, 0x7, 0x6, 0x5, 0x4, 0x6, 0x5, 0x4, 0xa, 0xb, 0x7, 0x7, 0x6, 0x7, 0x6, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x7, 0x7, 0x8, 0x7, 0x6, 0x8, 0x7, 0x7, 0x7, 0x8, 0xa, 0x8, 0x7, 0x6, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x5, 0xa, 0x9, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0xc, 0x10, 0xe, 0xb, 0x9, 0xa, 0xb, 0xc, 0x8, 0x8, 0x8, 0x8, 0x8, 0x6, 0x6, 0xd, 0xc, 0x5, 0x5, 0x4, 0x7, 0x9, 0x6, 0xa, 0xd, 0x9, 0x7, 0x9, 0x7, 0x6, 0x5, 0x6, 0x6, 0x6, 0x5, 0x5, 0x4, 0x4, 0x7, 0x14, 0x14, 0xf, 0xf, 0x9, 0x8, 0xc, 0xb, 0x9, 0x4, 0x4, 0x4, 0x8, 0xc, 0x10, 0xf, 0xa, 0x4, 0x3, 0x3, 0x6, 0x11, 0x16, 0x0, 0x0, 0x0, 0x14, 0xc, 0x7, 0x3, 0x4, 0x4, 0x4, 0x4, 0x8, 0x8, 0x4, 0x4, 0x3, 0x5, 0x8, 0x8, 0x4, 0x7, 0x7, 0x4, 0x3, 0xd, 0x11, 0xf, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x7, 0x6, 0xa, 0x14, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0xf, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x3, 0x3, 0x4, 0x7, 0x5, 0x4, 0x3, 0x8, 0x7, 0x7, 0x6, 0x3, 0x6, 0xd, 0x5, 0x5, 0x8, 0x7, 0x5, 0x5, 0x2, 0x3, 0x5, 0x6, 0x5, 0x4, 0x5, 0x5, 0xa, 0x9, 0x7, 0xb, 0x6, 0x5, 0xa, 0x14, 0x10, 0x10, 0x11, 0x9, 0xd, 0xa, 0x8, 0x10, 0x11, 0x16, 0x14, 0x12, 0x16, 0x17, 0x14, 0x8, 0x11, 0x16, 0xa, 0x8, 0x14, 0xc, 0xf, 0x9, 0x10, 0x8, 0x4, 0x8, 0x4, 0x8, 0x8, 0x7, 0x7, 0xc, 0x13, 0x9, 0x5, 0x4, 0x8, 0xc, 0x4, 0x3, 0x4, 0x6, 0x8, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0xc, 0x0, 0x0, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf, 0xd, 0xb, 0xd, 0xa, 0x6, 0x5, 0x8, 0x8, 0x7, 0x5, 0x7, 0x7, 0x9, 0x5, 0x5, 0x5, 0x4, 0x6, 0x5, 0x4, 0x6, 0x9, 0x96, 0x8b, 0x96, 0x8b, 0x96, 0x9a, 0x96, 0x96, 0x96, 0x86, 0x86, 0x81, 0x47, 0x6, 0x5, 0x7, 0x8, 0xe, 0x4, 0x5, 0x7, 0xb, 0x8, 0xc, 0xd, 0x8, 0x7, 0x9, 0xb, 0x9, 0x7, 0x5, 0x3, 0x7, 0xc, 0xd, 0x8, 0x4, 0x8, 0xd, 0xc, 0xb, 0x8, 0x8, 0x7, 0x6, 0xd, 0xd, 0x7, 0x6, 0x7, 0x8, 0x7, 0x5, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x3, 0x7, 0xb, 0xa, 0xa, 0x9, 0xb, 0x9, 0x3, 0x1, 0x3, 0x6, 0x4, 0x4, 0x4, 0x3, 0x5, 0x8, 0x7, 0x7, 0x6, 0x6, 0x6, 0x7, 0x7, 0x6, 0x7, 0x8, 0x5, 0x5, 0x5, 0x5, 0x6, 0x7, 0x6, 0x4, 0x4, 0x6, 0x6, 0x5, 0x6, 0x6, 0x7, 0x7, 0x7, 0x7, 0x9, 0xd, 0xc, 0x9, 0x8, 0xa, 0x9, 0xa, 0x8, 0xa, 0xc, 0xa, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0xf, 0xe, 0xe, 0xd, 0x9, 0xa, 0x9, 0x9, 0x5, 0x4, 0x6, 0x6, 0x5, 0x4, 0x3, 0x5, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x7, 0x8, 0x8, 0x5, 0xc, 0x14, 0x11, 0xc, 0x12, 0xc, 0x4, 0x6, 0x9, 0xb, 0x6, 0x7, 0xb, 0xb, 0xa, 0x8, 0xe, 0xb, 0x4, 0x4, 0x4, 0x4, 0x9, 0x18, 0x0, 0x17, 0x0, 0x0, 0x17, 0x10, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x4, 0x3, 0x2, 0x8, 0x5, 0x3, 0x3, 0xa, 0x10, 0x11, 0x8, 0x5, 0x4, 0x5, 0x3, 0x4, 0x4, 0x3, 0x4, 0x7, 0x15, 0x0, 0x0, 0x18, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x9, 0x5, 0x3, 0x3, 0x4, 0x3, 0x8, 0x6, 0x3, 0x4, 0x5, 0x7, 0x7, 0x6, 0x6, 0x9, 0xa, 0x8, 0x5, 0x4, 0x4, 0xe, 0x8, 0xb, 0x11, 0x11, 0x8, 0x5, 0x5, 0x5, 0x8, 0x8, 0x8, 0x8, 0x7, 0x9, 0x6, 0x8, 0x8, 0x8, 0x6, 0x5, 0x5, 0x12, 0xf, 0x7, 0xa, 0xa, 0xe, 0x9, 0xa, 0x12, 0x9, 0xf, 0x10, 0xb, 0xd, 0x13, 0x16, 0xe, 0xf, 0x15, 0x10, 0x7, 0x10, 0xa, 0x10, 0xb, 0x10, 0xc, 0x5, 0x5, 0x9, 0x10, 0x12, 0xd, 0xc, 0x12, 0x12, 0xb, 0xa, 0x5, 0xd, 0x9, 0x3, 0x3, 0x7, 0xa, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0xc, 0x16, 0x16, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x10, 0xc, 0xa, 0x9, 0x9, 0x8, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x6, 0x4, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x9a, 0x91, 0x9a, 0x9a, 0x9a, 0x9a, 0x91, 0x8b, 0x96, 0x9a, 0x9a, 0x92, 0x31, 0x3, 0x4, 0x7, 0x9, 0xd, 0x4, 0x5, 0x8, 0x8, 0xa, 0x9, 0xa, 0xb, 0x6, 0x9, 0xa, 0x6, 0x4, 0x4, 0x2, 0x6, 0xa, 0xf, 0x7, 0x4, 0x8, 0xc, 0xb, 0xc, 0x8, 0x5, 0x4, 0x3, 0x9, 0x8, 0x6, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x5, 0x7, 0x6, 0x8, 0x9, 0x5, 0xa, 0xe, 0xc, 0xa, 0xb, 0xb, 0xa, 0x9, 0x8, 0x6, 0x8, 0x6, 0x3, 0x3, 0x3, 0x6, 0x9, 0x8, 0x6, 0x6, 0x5, 0x5, 0x6, 0x4, 0x5, 0x5, 0x6, 0x7, 0x8, 0xa, 0x9, 0xb, 0xb, 0xb, 0xa, 0x7, 0x8, 0x8, 0x5, 0xa, 0x7, 0xa, 0xb, 0x8, 0x8, 0x5, 0x9, 0xb, 0xa, 0xa, 0xd, 0xd, 0xc, 0xa, 0x9, 0x9, 0x9, 0x8, 0x9, 0xb, 0xb, 0x8, 0x7, 0x7, 0x6, 0x5, 0x4, 0x5, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x5, 0x5, 0x5, 0x5, 0x9, 0x9, 0x5, 0x7, 0x9, 0x8, 0x9, 0x7, 0x8, 0xc, 0xf, 0xe, 0xa, 0x4, 0xf, 0x0, 0x15, 0xf, 0x18, 0xc, 0x7, 0x8, 0x9, 0xc, 0x7, 0x7, 0xd, 0x10, 0xa, 0x4, 0x8, 0x5, 0x5, 0x4, 0x4, 0x4, 0x5, 0x12, 0x18, 0x16, 0x0, 0x0, 0x17, 0x14, 0x8, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x8, 0xb, 0x8, 0xc, 0xb, 0x7, 0x6, 0x6, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x11, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x11, 0x4, 0x4, 0x5, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x6, 0x5, 0x6, 0x7, 0x7, 0x6, 0x4, 0x5, 0x4, 0x4, 0x6, 0x6, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x3, 0x4, 0x4, 0x5, 0x7, 0x5, 0x4, 0x3, 0x4, 0x6, 0x4, 0x5, 0x5, 0x5, 0x15, 0x0, 0x17, 0x16, 0x0, 0x0, 0x18, 0x15, 0x12, 0xe, 0x18, 0x0, 0x13, 0x14, 0x0, 0x0, 0x16, 0x7, 0x6, 0xe, 0xb, 0x6, 0x7, 0x8, 0x9, 0x13, 0x10, 0x9, 0x7, 0xe, 0x10, 0xa, 0x9, 0xb, 0xf, 0xb, 0x6, 0x5, 0xc, 0xa, 0x5, 0x5, 0x4, 0xe, 0xb, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x7, 0x11, 0x10, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x9, 0x8, 0xb, 0x7, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x6, 0x5, 0x4, 0x7, 0x7, 0x9, 0x9, 0x9, 0x8, 0xa, 0xc, 0xa, 0x7, 0x8b, 0x96, 0x8b, 0x92, 0x96, 0x96, 0x96, 0x8c, 0x8c, 0x92, 0x92, 0x8b, 0x4, 0x4, 0x4, 0x6, 0xc, 0xb, 0x4, 0x8, 0x10, 0x8, 0xa, 0x9, 0x7, 0x6, 0x8, 0x6, 0x6, 0x7, 0x5, 0x7, 0x8, 0x5, 0x4, 0x9, 0x7, 0x6, 0xa, 0x8, 0x9, 0xe, 0x11, 0xe, 0x4, 0x4, 0xa, 0x6, 0x6, 0x3, 0x5, 0x5, 0x7, 0xb, 0xd, 0x8, 0x7, 0x7, 0x7, 0x7, 0x5, 0xc, 0xc, 0x8, 0x7, 0x7, 0x7, 0x5, 0x5, 0x6, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0x3, 0x5, 0x3, 0x3, 0x5, 0x6, 0x6, 0x8, 0x9, 0xa, 0xc, 0x8, 0x9, 0xa, 0xd, 0xc, 0xa, 0xc, 0xc, 0xc, 0xc, 0xd, 0xb, 0xa, 0xc, 0x9, 0x9, 0x8, 0x6, 0x8, 0x7, 0x8, 0xa, 0x9, 0x7, 0x6, 0x8, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x4, 0x4, 0x5, 0x5, 0x6, 0x5, 0x3, 0x3, 0x5, 0x6, 0x4, 0x3, 0x8, 0x8, 0x8, 0x8, 0xb, 0xe, 0x10, 0xd, 0xa, 0xe, 0x10, 0xf, 0x9, 0x9, 0xb, 0x9, 0xa, 0x8, 0x6, 0x9, 0x8, 0x8, 0x5, 0x3, 0x9, 0x12, 0x17, 0x12, 0x10, 0x8, 0x6, 0x9, 0xa, 0x6, 0x5, 0x4, 0x4, 0x7, 0x8, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x8, 0x15, 0x15, 0x0, 0x0, 0xf, 0xc, 0xd, 0x11, 0x9, 0x3, 0x4, 0x4, 0x5, 0x6, 0x5, 0x3, 0x4, 0x3, 0x3, 0x6, 0x9, 0xa, 0xb, 0x7, 0x7, 0x4, 0x2, 0x3, 0x4, 0x6, 0x4, 0x3, 0x3, 0x4, 0x4, 0x5, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x7, 0x4, 0x7, 0x5, 0x7, 0x6, 0x3, 0x4, 0x5, 0x6, 0x3, 0x7, 0xa, 0x6, 0x3, 0x5, 0x7, 0x6, 0x5, 0x5, 0x4, 0x4, 0x6, 0x4, 0x4, 0x5, 0x5, 0x6, 0x6, 0x6, 0x9, 0x8, 0x5, 0x5, 0x6, 0x8, 0x9, 0x4, 0x4, 0x3, 0x8, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x14, 0x0, 0x18, 0x14, 0x16, 0x0, 0x0, 0x0, 0x11, 0x8, 0x8, 0xb, 0x5, 0x3, 0x3, 0x5, 0x12, 0xf, 0x9, 0x7, 0xa, 0x6, 0x5, 0xc, 0xb, 0xe, 0x7, 0x3, 0xb, 0x14, 0x7, 0x7, 0x7, 0x8, 0x13, 0x6, 0x3, 0x4, 0x6, 0x5, 0x4, 0x4, 0xd, 0x15, 0x10, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0xa, 0xd, 0x11, 0xf, 0xc, 0x8, 0xa, 0x9, 0x9, 0xb, 0xb, 0x8, 0x7, 0x6, 0x8, 0x8, 0xb, 0xb, 0xa, 0x9, 0xd, 0xb, 0x9, 0x7, 0x69, 0x92, 0x86, 0x8c, 0x86, 0x96, 0x96, 0x81, 0x8c, 0x92, 0x81, 0x7f, 0x4, 0x3, 0x5, 0x6, 0xf, 0xc, 0x4, 0x7, 0x10, 0xb, 0x8, 0x9, 0x6, 0x5, 0xa, 0xa, 0x8, 0x9, 0x8, 0xa, 0x9, 0x7, 0x5, 0x9, 0xa, 0x6, 0x9, 0x7, 0x4, 0xa, 0x10, 0xc, 0x5, 0x6, 0xb, 0xb, 0xa, 0x5, 0x5, 0x8, 0x9, 0xd, 0x10, 0xe, 0x7, 0x6, 0x8, 0x6, 0x6, 0x9, 0x9, 0x6, 0x6, 0x4, 0x4, 0x4, 0x3, 0x4, 0x8, 0x9, 0x9, 0x7, 0xc, 0x7, 0x6, 0xa, 0x7, 0x8, 0xb, 0xa, 0xa, 0xe, 0xc, 0xe, 0x10, 0xd, 0xc, 0xb, 0xb, 0xa, 0x8, 0x7, 0x7, 0x5, 0x4, 0x3, 0x6, 0x5, 0x7, 0x7, 0x7, 0x5, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x3, 0x6, 0x8, 0x8, 0x7, 0x7, 0x9, 0x9, 0xa, 0xc, 0x9, 0xd, 0xd, 0xd, 0x8, 0xb, 0x10, 0x10, 0xf, 0xf, 0xd, 0xc, 0xd, 0xb, 0x8, 0x8, 0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x4, 0x6, 0x6, 0x4, 0x4, 0xb, 0xa, 0x4, 0xb, 0xd, 0xc, 0x6, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x2, 0x4, 0x3, 0x4, 0x4, 0x4, 0x8, 0x8, 0x3, 0x3, 0x5, 0xb, 0x10, 0x16, 0x0, 0x12, 0xc, 0xc, 0x11, 0x11, 0x5, 0x4, 0x5, 0xb, 0x5, 0x3, 0x3, 0x3, 0x3, 0x6, 0x6, 0x6, 0x4, 0x8, 0x7, 0x5, 0x3, 0x3, 0x3, 0x4, 0x6, 0x5, 0x4, 0x4, 0x6, 0xb, 0x13, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x18, 0x0, 0x0, 0x0, 0x17, 0xa, 0x5, 0x6, 0x7, 0xd, 0xa, 0x8, 0x9, 0x7, 0x4, 0x3, 0x7, 0x8, 0x7, 0xb, 0x9, 0x9, 0x7, 0x6, 0x9, 0x9, 0x9, 0xe, 0x9, 0x9, 0x6, 0xb, 0xf, 0xc, 0xd, 0x11, 0x8, 0x9, 0x10, 0xf, 0xa, 0x4, 0x4, 0x4, 0x6, 0x8, 0xb, 0x10, 0x0, 0x15, 0x10, 0x18, 0x0, 0x0, 0x0, 0x11, 0x15, 0x0, 0x0, 0x0, 0x15, 0x15, 0x18, 0x0, 0x18, 0x16, 0xd, 0x3, 0x5, 0xd, 0xf, 0x11, 0x7, 0x5, 0x4, 0x4, 0x6, 0xa, 0x7, 0x8, 0x7, 0xb, 0x6, 0x12, 0x18, 0xb, 0x3, 0x5, 0x10, 0xc, 0x4, 0x4, 0x4, 0x7, 0x6, 0x3, 0x9, 0x16, 0x15, 0x16, 0x13, 0x18, 0x0, 0x0, 0x0, 0x0, 0x11, 0x5, 0x8, 0xa, 0x6, 0x6, 0x8, 0xa, 0x7, 0x9, 0xa, 0x8, 0x5, 0x5, 0x6, 0x7, 0x6, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4c, 0x8b, 0x9a, 0x96, 0x9a, 0x9a, 0x8b, 0x96, 0x9a, 0x8b, 0x96, 0x3e, 0x4, 0x6, 0x4, 0x3, 0x11, 0xd, 0x3, 0xa, 0x12, 0xb, 0xa, 0xe, 0xa, 0x6, 0x7, 0x8, 0x7, 0x7, 0x8, 0x7, 0x4, 0x5, 0x7, 0x8, 0x8, 0x7, 0x7, 0x6, 0x5, 0x7, 0x8, 0x9, 0x9, 0x8, 0x5, 0x7, 0x7, 0x5, 0x5, 0x6, 0x5, 0x6, 0x8, 0x7, 0x7, 0x6, 0x7, 0x9, 0x7, 0x4, 0xc, 0xd, 0xe, 0xd, 0xe, 0xe, 0xa, 0xe, 0x12, 0x13, 0x11, 0xb, 0xb, 0xa, 0x9, 0xa, 0x8, 0x9, 0x9, 0x7, 0x8, 0x8, 0x7, 0x6, 0x4, 0x5, 0x5, 0x6, 0x9, 0x8, 0x6, 0x5, 0x7, 0x9, 0x6, 0x5, 0x6, 0x7, 0x5, 0x3, 0x4, 0x3, 0x4, 0x5, 0x5, 0x6, 0x6, 0xb, 0xa, 0x9, 0xa, 0x7, 0x8, 0xa, 0xa, 0x8, 0x7, 0x8, 0xc, 0xc, 0xb, 0x8, 0xa, 0xa, 0x9, 0x9, 0x8, 0xa, 0xa, 0xa, 0x8, 0x7, 0x7, 0x5, 0x6, 0x5, 0x5, 0x7, 0x8, 0x8, 0x7, 0xe, 0xc, 0x8, 0x8, 0x6, 0x7, 0x9, 0x7, 0x7, 0xb, 0xb, 0x9, 0xa, 0x11, 0xd, 0x5, 0xe, 0x6, 0x2, 0x4, 0x6, 0x7, 0xa, 0x8, 0x5, 0x6, 0x8, 0xc, 0xd, 0xe, 0x10, 0x12, 0x13, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x6, 0x6, 0xb, 0x18, 0x17, 0x16, 0x15, 0x11, 0x14, 0xb, 0x3, 0x6, 0x10, 0x8, 0x2, 0x3, 0x4, 0x4, 0x5, 0x6, 0x5, 0x4, 0x7, 0xc, 0x7, 0x3, 0x4, 0x2, 0x4, 0x4, 0x5, 0x8, 0x11, 0x12, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x16, 0xa, 0x4, 0x4, 0x7, 0xd, 0xd, 0xc, 0xd, 0x11, 0x10, 0xc, 0x4, 0x4, 0xc, 0xd, 0x6, 0x3, 0x8, 0xd, 0xb, 0x8, 0x9, 0xc, 0xa, 0x9, 0xb, 0xf, 0xd, 0xa, 0xa, 0x6, 0x6, 0x9, 0xc, 0xa, 0x9, 0x9, 0xb, 0xe, 0x10, 0xa, 0x2, 0x4, 0xe, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x17, 0x0, 0x10, 0x8, 0x5, 0x7, 0x9, 0x11, 0xc, 0x8, 0xb, 0x8, 0x7, 0xb, 0xc, 0xe, 0xe, 0x14, 0x6, 0x10, 0x11, 0x6, 0x3, 0xc, 0x12, 0x5, 0x4, 0x6, 0x4, 0x4, 0x3, 0x3, 0xc, 0x18, 0x17, 0x18, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x80, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x96, 0x9a, 0x9a, 0x62, 0xb, 0x8, 0x5, 0x3, 0x4, 0xf, 0xd, 0x3, 0x7, 0xb, 0x8, 0x7, 0x6, 0x7, 0x8, 0x8, 0xb, 0x8, 0x8, 0xa, 0xc, 0x8, 0x8, 0xf, 0xd, 0xd, 0x9, 0x8, 0xb, 0x8, 0x6, 0x8, 0x9, 0x9, 0x6, 0x7, 0x9, 0x5, 0x7, 0x8, 0xa, 0x9, 0xe, 0xe, 0xd, 0xe, 0x10, 0xf, 0x11, 0xa, 0x4, 0xb, 0x11, 0xf, 0xb, 0x9, 0x7, 0x5, 0x6, 0x5, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x5, 0x7, 0x7, 0x6, 0x7, 0x8, 0x6, 0x6, 0x7, 0x7, 0x8, 0x8, 0xa, 0xd, 0xd, 0xa, 0x8, 0x8, 0xa, 0xa, 0x9, 0xa, 0xc, 0x9, 0xa, 0xb, 0x9, 0xb, 0xb, 0xd, 0xd, 0x9, 0xa, 0x9, 0x9, 0xa, 0x7, 0x6, 0x8, 0xa, 0x9, 0x7, 0x6, 0x7, 0x6, 0x6, 0x4, 0x5, 0x6, 0x5, 0x4, 0x6, 0x6, 0x5, 0x7, 0x8, 0x8, 0x7, 0x5, 0xc, 0xb, 0x9, 0xe, 0xc, 0xe, 0xd, 0x10, 0xe, 0xb, 0x9, 0x8, 0x5, 0x6, 0x5, 0x5, 0x5, 0x5, 0x6, 0x5, 0x6, 0x4, 0x5, 0x8, 0xb, 0xe, 0x13, 0x15, 0x14, 0x17, 0x17, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0x7, 0x4, 0x6, 0x13, 0x0, 0x0, 0x17, 0x13, 0x11, 0xf, 0x6, 0x3, 0x6, 0x7, 0x8, 0x4, 0x8, 0xa, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x6, 0xa, 0xc, 0xa, 0x9, 0xd, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x6, 0x5, 0x4, 0x7, 0xa, 0x8, 0x9, 0xe, 0xd, 0x8, 0x8, 0xb, 0xc, 0x8, 0x4, 0x9, 0xd, 0x10, 0x11, 0xb, 0x4, 0x7, 0xd, 0xc, 0xd, 0x12, 0xd, 0x7, 0x5, 0x5, 0xb, 0xa, 0x6, 0x5, 0x9, 0x8, 0x9, 0xa, 0xc, 0x8, 0x3, 0x8, 0x7, 0xb, 0xe, 0x10, 0x13, 0x17, 0x18, 0x17, 0x16, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x16, 0x11, 0x0, 0x0, 0x12, 0xa, 0x5, 0x4, 0x7, 0x8, 0x8, 0x12, 0xb, 0xc, 0xc, 0xb, 0xc, 0xa, 0x12, 0x9, 0xa, 0xc, 0xc, 0xc, 0x14, 0xb, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x10, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x6, 0x4, 0x3, 0x3, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x7, 0x8, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x39, 0x76, 0x9a, 0x8b, 0x9a, 0x8b, 0x9a, 0x96, 0x66, 0x6, 0xe, 0xd, 0x5, 0x2, 0x2, 0x9, 0xd, 0x4, 0x5, 0xc, 0x7, 0x8, 0xb, 0x9, 0x7, 0x7, 0xa, 0x9, 0x7, 0xa, 0xd, 0xa, 0x8, 0xe, 0xc, 0xa, 0x9, 0xa, 0xc, 0x8, 0x7, 0x7, 0x9, 0x6, 0x3, 0x9, 0xc, 0x9, 0xb, 0xb, 0xb, 0xc, 0xf, 0xd, 0xe, 0xd, 0xc, 0xc, 0xa, 0x5, 0x3, 0x6, 0x6, 0x7, 0x5, 0x5, 0x5, 0x7, 0x6, 0x4, 0x5, 0x6, 0x6, 0x7, 0x8, 0xb, 0xd, 0xd, 0xb, 0x7, 0x8, 0x9, 0x7, 0x7, 0x8, 0x8, 0x9, 0x6, 0x6, 0x9, 0xa, 0xb, 0xa, 0xa, 0xb, 0xb, 0xb, 0x9, 0xa, 0x9, 0x9, 0xb, 0xb, 0xe, 0xe, 0xd, 0xd, 0xb, 0x9, 0x9, 0xb, 0xb, 0xa, 0x9, 0xa, 0xb, 0xa, 0x8, 0x7, 0x6, 0x7, 0x9, 0x8, 0x8, 0x7, 0x9, 0x8, 0xa, 0xa, 0x9, 0xb, 0xb, 0xb, 0xa, 0xa, 0x9, 0x8, 0x6, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x7, 0x7, 0x7, 0x6, 0x8, 0xb, 0xd, 0xd, 0xe, 0x10, 0x12, 0x13, 0x12, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x17, 0x17, 0x16, 0x14, 0x15, 0x6, 0x3, 0x3, 0x4, 0x5, 0x8, 0x9, 0x3, 0x3, 0xb, 0x16, 0x13, 0x9, 0x11, 0x11, 0x12, 0x9, 0x5, 0x3, 0xe, 0x13, 0xe, 0x13, 0xe, 0x8, 0xc, 0xf, 0x12, 0xe, 0x6, 0x5, 0x5, 0x8, 0x11, 0x16, 0x18, 0x0, 0x15, 0x15, 0x13, 0x12, 0x15, 0x16, 0x18, 0x0, 0x15, 0x16, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xa, 0x12, 0xd, 0x9, 0xb, 0x7, 0x8, 0x9, 0x4, 0x5, 0xa, 0xa, 0x9, 0x8, 0xc, 0xe, 0xf, 0xe, 0x9, 0x5, 0x8, 0xa, 0x9, 0x8, 0x9, 0xf, 0x9, 0xa, 0xb, 0xa, 0xe, 0x8, 0x3, 0x8, 0x9, 0x8, 0x6, 0x8, 0x9, 0x5, 0x6, 0x14, 0xe, 0x3, 0x2, 0x5, 0xc, 0x13, 0x18, 0x0, 0x13, 0x10, 0x0, 0x0, 0x11, 0x11, 0x18, 0x16, 0x14, 0x0, 0x0, 0x18, 0x16, 0x12, 0x14, 0x7, 0x3, 0x3, 0x7, 0x10, 0x8, 0xe, 0x12, 0xd, 0x9, 0x12, 0x8, 0x8, 0x15, 0x15, 0x13, 0xd, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x6, 0x15, 0x11, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x4, 0x5, 0x4, 0x9, 0xf, 0x5, 0x2, 0x3, 0x4, 0x9, 0x8, 0x3, 0x3, 0x6, 0x5, 0x2, 0x2, 0x3, 0x2, 0x2, 0x2, 0x3, 0x5, 0x4, 0x2, 0x3, 0x4, 0x47, 0x80, 0x8e, 0x8e, 0x6d, 0x33, 0x3, 0x4, 0x9, 0xd, 0xa, 0x4, 0x3, 0x6, 0xa, 0x5, 0x7, 0xe, 0x9, 0xa, 0xd, 0x7, 0x5, 0x6, 0x5, 0x7, 0x6, 0x6, 0x7, 0x6, 0x7, 0x6, 0x8, 0x8, 0x7, 0x8, 0x7, 0x6, 0x7, 0xa, 0xc, 0x5, 0x3, 0x5, 0x6, 0x4, 0x5, 0x7, 0x7, 0x5, 0x8, 0x9, 0x7, 0x8, 0x7, 0x9, 0x6, 0x4, 0x6, 0x7, 0x6, 0x9, 0x8, 0x8, 0x8, 0x6, 0x7, 0x6, 0x8, 0xa, 0x6, 0x5, 0x6, 0x6, 0x7, 0x5, 0x5, 0x6, 0x8, 0xa, 0x9, 0x5, 0x3, 0x8, 0xc, 0xb, 0xe, 0x14, 0x15, 0x14, 0x12, 0x10, 0xf, 0x10, 0xe, 0xc, 0xf, 0x8, 0x9, 0xd, 0xa, 0xf, 0xf, 0xa, 0xd, 0xf, 0xb, 0xc, 0x10, 0xb, 0x8, 0x8, 0x8, 0x8, 0xb, 0xa, 0xb, 0xc, 0xb, 0xb, 0xa, 0x9, 0x6, 0x9, 0x7, 0x7, 0x8, 0x7, 0x8, 0xb, 0x9, 0x8, 0x9, 0x8, 0x9, 0x9, 0xc, 0xc, 0x11, 0x11, 0x10, 0x12, 0x14, 0x17, 0x16, 0x15, 0x15, 0x15, 0x15, 0x17, 0x16, 0x17, 0x17, 0x16, 0x15, 0x15, 0x14, 0x13, 0x10, 0x11, 0x15, 0xf, 0xe, 0xe, 0xb, 0xc, 0x12, 0x16, 0x15, 0x11, 0x13, 0x12, 0x13, 0xc, 0x3, 0x4, 0x5, 0x4, 0x7, 0x6, 0x5, 0x7, 0x6, 0x11, 0x15, 0xb, 0x10, 0x13, 0x12, 0xe, 0x7, 0x6, 0xd, 0xd, 0x6, 0xd, 0xd, 0x13, 0x17, 0x0, 0x0, 0x0, 0x15, 0x11, 0x6, 0x4, 0x8, 0x11, 0x17, 0x0, 0x17, 0x16, 0x13, 0x13, 0x15, 0x15, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xb, 0xa, 0x10, 0xa, 0x9, 0xd, 0xc, 0xb, 0x4, 0x4, 0x7, 0x9, 0x6, 0x5, 0x9, 0xf, 0x12, 0xd, 0xb, 0xa, 0xa, 0xe, 0x14, 0xf, 0xe, 0xd, 0x15, 0x16, 0x13, 0x12, 0xe, 0xa, 0x6, 0x4, 0x6, 0x8, 0x9, 0x7, 0x7, 0xa, 0x7, 0x9, 0x12, 0x11, 0xc, 0xc, 0x9, 0x6, 0x8, 0xc, 0xd, 0xe, 0xa, 0xc, 0xd, 0x11, 0xf, 0x9, 0x7, 0xf, 0x0, 0x0, 0x0, 0x15, 0x13, 0x0, 0xc, 0x3, 0x3, 0x5, 0xf, 0xc, 0x9, 0xa, 0xb, 0x8, 0x12, 0xa, 0xa, 0x11, 0xb, 0x7, 0x5, 0x4, 0x3, 0x6, 0x5, 0x5, 0x4, 0x7, 0xf, 0x14, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xd, 0x6, 0x4, 0x5, 0x4, 0x6, 0x7, 0x3, 0x3, 0x3, 0x4, 0x7, 0x7, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x4, 0x4, 0x3, 0x3, 0x33, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x9, 0xa, 0xa, 0x4, 0x2, 0x5, 0xa, 0x4, 0x5, 0xd, 0x9, 0x8, 0x5, 0x3, 0x6, 0x6, 0x6, 0x9, 0xc, 0x8, 0x6, 0x5, 0x9, 0xa, 0xd, 0x10, 0xd, 0x8, 0xc, 0xd, 0xb, 0xb, 0xb, 0x8, 0x5, 0x8, 0x6, 0x6, 0x7, 0xa, 0xb, 0xa, 0xc, 0xc, 0xa, 0xa, 0x9, 0x8, 0x7, 0x7, 0x8, 0xa, 0x9, 0x8, 0x5, 0x6, 0x5, 0x4, 0x6, 0x6, 0x8, 0x6, 0x4, 0x3, 0x4, 0x5, 0x8, 0x8, 0x7, 0x9, 0xc, 0xe, 0xd, 0x9, 0x9, 0xd, 0x10, 0x10, 0xe, 0xc, 0xd, 0xe, 0xe, 0x9, 0x8, 0x8, 0x8, 0x7, 0xa, 0x8, 0x9, 0xa, 0x7, 0x9, 0xa, 0x6, 0x8, 0x7, 0x7, 0xa, 0x9, 0x8, 0x7, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x9, 0x9, 0x8, 0x7, 0x7, 0x6, 0x9, 0xa, 0xa, 0xe, 0xd, 0x11, 0x14, 0xf, 0x10, 0x15, 0x12, 0x16, 0x14, 0x16, 0x13, 0x13, 0x12, 0x12, 0x18, 0x18, 0x15, 0x15, 0x18, 0x16, 0x12, 0x11, 0x12, 0x10, 0xf, 0xf, 0xd, 0xc, 0xb, 0xb, 0xa, 0x8, 0x7, 0x9, 0x6, 0x5, 0x5, 0x6, 0x7, 0x8, 0xb, 0x10, 0x10, 0x10, 0x10, 0x10, 0xa, 0x9, 0x8, 0x5, 0x4, 0x7, 0x6, 0x7, 0x7, 0x4, 0xf, 0x18, 0x11, 0x11, 0x12, 0x11, 0x10, 0x9, 0x10, 0x8, 0x6, 0x4, 0x4, 0x6, 0x9, 0xd, 0x16, 0x16, 0x0, 0x0, 0x0, 0xf, 0x9, 0xe, 0x13, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x10, 0x6, 0x2, 0x8, 0x8, 0x9, 0x8, 0x6, 0x3, 0x5, 0x7, 0x7, 0x9, 0x8, 0x9, 0x8, 0x6, 0x6, 0x8, 0x7, 0xb, 0xd, 0x8, 0x8, 0x8, 0xa, 0xa, 0x9, 0x9, 0x7, 0x7, 0x9, 0x6, 0x7, 0x8, 0xa, 0xd, 0xa, 0x8, 0x6, 0x5, 0xb, 0xa, 0x9, 0xc, 0xd, 0x9, 0x6, 0x5, 0x7, 0x9, 0x7, 0x5, 0x6, 0x7, 0x6, 0x5, 0x5, 0xc, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x13, 0x8, 0x3, 0xb, 0x12, 0x15, 0x10, 0xb, 0xc, 0x7, 0x15, 0x14, 0xc, 0x8, 0x4, 0x8, 0x8, 0x6, 0x6, 0x9, 0x6, 0x4, 0xf, 0x17, 0x0, 0x10, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x7, 0x5, 0x7, 0x8, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x7, 0x6, 0xa, 0x6, 0x8, 0x5, 0x5, 0x5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x6, 0x7, 0x5, 0x4, 0x3, 0x7, 0x9, 0x4, 0x3, 0x9, 0x6, 0x7, 0x5, 0x4, 0x6, 0x9, 0xa, 0xb, 0xb, 0x7, 0x4, 0x4, 0x5, 0x7, 0x9, 0xc, 0x8, 0x9, 0x7, 0x6, 0x5, 0x4, 0x5, 0x4, 0x7, 0x8, 0x5, 0x6, 0x5, 0x5, 0x5, 0x6, 0x6, 0x4, 0x5, 0x5, 0x7, 0x9, 0xa, 0xc, 0xf, 0xf, 0x9, 0x7, 0x5, 0x6, 0xa, 0x6, 0x6, 0x9, 0xc, 0xb, 0x8, 0xb, 0x9, 0x8, 0xa, 0x9, 0x6, 0x6, 0x6, 0x7, 0x9, 0x8, 0x7, 0x6, 0x8, 0x8, 0x6, 0x8, 0x9, 0xc, 0xc, 0x7, 0x7, 0x5, 0x5, 0x6, 0x5, 0x6, 0x6, 0x5, 0x5, 0x7, 0x8, 0x8, 0xb, 0xc, 0xc, 0xd, 0xc, 0xd, 0xc, 0xd, 0x10, 0xd, 0x11, 0x12, 0x10, 0xe, 0xe, 0xd, 0x9, 0xc, 0xf, 0x14, 0x13, 0x12, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x10, 0xd, 0xe, 0x10, 0x12, 0x13, 0x12, 0x11, 0x11, 0x12, 0x12, 0x11, 0xf, 0x11, 0xf, 0xe, 0x9, 0xa, 0xa, 0x5, 0x5, 0x5, 0x5, 0x8, 0x9, 0xc, 0xc, 0xc, 0x9, 0x7, 0x9, 0xb, 0xb, 0xb, 0xf, 0x15, 0xb, 0xa, 0xa, 0x9, 0x7, 0x6, 0xd, 0xf, 0xb, 0x5, 0xc, 0x11, 0x11, 0x10, 0x10, 0xe, 0x9, 0x9, 0x10, 0x5, 0x3, 0x5, 0x3, 0x3, 0x3, 0x5, 0x8, 0xa, 0x14, 0x14, 0x18, 0x0, 0x17, 0x0, 0x0, 0x18, 0x16, 0x15, 0x16, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0x9, 0x4, 0x4, 0x4, 0x5, 0x8, 0x7, 0x9, 0xd, 0x9, 0x5, 0x5, 0x6, 0x5, 0x3, 0x4, 0x4, 0xc, 0xd, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x5, 0x5, 0x3, 0x2, 0x3, 0x3, 0x4, 0x6, 0x4, 0x4, 0x4, 0x5, 0x5, 0x3, 0x4, 0x6, 0x8, 0x6, 0x5, 0x5, 0x8, 0x9, 0x6, 0xa, 0x11, 0xb, 0xb, 0xf, 0xd, 0xa, 0x16, 0x0, 0x0, 0x16, 0x17, 0x16, 0x10, 0xd, 0x8, 0xa, 0x7, 0xa, 0xe, 0xc, 0x14, 0xd, 0xf, 0x14, 0x6, 0x5, 0x7, 0xc, 0x7, 0x6, 0x7, 0x4, 0x5, 0xd, 0x0, 0x0, 0x18, 0x10, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x12, 0x8, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x2, 0x2, 0x4, 0x4, 0x5, 0x4, 0x4, 0x3, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x5, 0x6, 0x2, 0x4, 0x5, 0x8, 0x6, 0x4, 0x5, 0x7, 0x5, 0x7, 0x6, 0x4, 0x3, 0x4, 0x5, 0x4, 0x2, 0x2, 0x5, 0x8, 0x7, 0x8, 0xc, 0x11, 0x9, 0x5, 0x7, 0x6, 0x7, 0x6, 0x7, 0x7, 0x8, 0xb, 0xc, 0x9, 0xc, 0x10, 0xe, 0xb, 0xe, 0x10, 0x10, 0x10, 0x12, 0x12, 0x12, 0x12, 0x11, 0x11, 0x9, 0x9, 0x9, 0x8, 0x7, 0x6, 0x6, 0x6, 0x8, 0x7, 0x7, 0x9, 0x5, 0x2, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x7, 0x6, 0x6, 0x3, 0x3, 0x3, 0x5, 0x6, 0x4, 0xa, 0xc, 0xf, 0xf, 0xc, 0xe, 0x10, 0x10, 0x12, 0x12, 0x11, 0x13, 0x14, 0x16, 0x11, 0x14, 0x14, 0x12, 0x13, 0x12, 0x12, 0x12, 0x15, 0x17, 0x16, 0x17, 0x15, 0x16, 0x17, 0x0, 0x18, 0x15, 0x12, 0x17, 0x0, 0x14, 0x12, 0x14, 0x15, 0x13, 0x13, 0x13, 0x12, 0xf, 0xc, 0xb, 0xb, 0xb, 0xa, 0x9, 0x8, 0xb, 0x9, 0x9, 0x8, 0x7, 0xb, 0x11, 0x14, 0x14, 0x15, 0x15, 0x13, 0x14, 0xc, 0xb, 0xd, 0xe, 0xf, 0x10, 0x12, 0x11, 0xd, 0xf, 0xf, 0xf, 0x10, 0x11, 0x13, 0x16, 0x16, 0x0, 0x0, 0x0, 0xb, 0x8, 0x9, 0xa, 0x7, 0x4, 0x6, 0x7, 0x5, 0xd, 0x13, 0x13, 0x15, 0x13, 0x14, 0x12, 0xe, 0x7, 0x7, 0x5, 0xc, 0x8, 0x5, 0xa, 0x6, 0xa, 0x5, 0x5, 0x8, 0x6, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x18, 0x18, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x5, 0x3, 0x4, 0x6, 0x6, 0x3, 0x3, 0x7, 0x9, 0x6, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x8, 0x7, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x6, 0x6, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x5, 0xb, 0x8, 0x3, 0x8, 0x9, 0x7, 0x8, 0xa, 0x8, 0x7, 0x8, 0x2, 0x5, 0xa, 0x5, 0x4, 0x7, 0x6, 0x9, 0x12, 0x18, 0x0, 0x16, 0x17, 0x17, 0x10, 0x11, 0xb, 0x3, 0x3, 0x4, 0x7, 0x8, 0xa, 0xc, 0x8, 0x7, 0x5, 0x5, 0x6, 0x5, 0x3, 0x4, 0xa, 0xf, 0x14, 0x0, 0x0, 0x0, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xb, 0x7, 0x6, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x5, 0x9, 0x9, 0x8, 0x4, 0x3, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x5, 0x7, 0x3, 0x6, 0xa, 0x11, 0x7, 0x3, 0x6, 0x7, 0x5, 0x6, 0x4, 0x3, 0x4, 0x7, 0x8, 0x9, 0xc, 0xb, 0x8, 0x6, 0x6, 0x5, 0x6, 0x8, 0x7, 0xa, 0xd, 0xb, 0xc, 0xa, 0xc, 0xb, 0x8, 0x9, 0xd, 0xb, 0xf, 0x11, 0xe, 0xc, 0xd, 0xd, 0xc, 0x9, 0x7, 0x6, 0x5, 0x4, 0x4, 0x4, 0x4, 0x7, 0x7, 0x6, 0x5, 0x4, 0x6, 0x8, 0x7, 0x7, 0x8, 0x8, 0xa, 0xb, 0xd, 0x10, 0x14, 0x14, 0xf, 0xf, 0x12, 0x11, 0x13, 0x11, 0x11, 0x12, 0x14, 0x15, 0x13, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x17, 0x17, 0x16, 0x17, 0x14, 0x14, 0x14, 0x10, 0x10, 0x10, 0xf, 0x10, 0x10, 0x13, 0x17, 0x14, 0x14, 0x14, 0x14, 0x12, 0x13, 0x16, 0x16, 0x15, 0x11, 0xd, 0xc, 0xb, 0xa, 0xa, 0x9, 0xa, 0x8, 0x8, 0xb, 0xc, 0x7, 0x7, 0x7, 0x8, 0xa, 0x9, 0xa, 0x8, 0xd, 0xd, 0x9, 0x7, 0x8, 0xc, 0x10, 0x10, 0x11, 0x14, 0x13, 0x10, 0xe, 0xf, 0x10, 0x11, 0x14, 0x16, 0x13, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x16, 0x14, 0x16, 0x16, 0x14, 0x14, 0x13, 0xe, 0x11, 0x11, 0xa, 0x6, 0x5, 0x6, 0x5, 0x5, 0xd, 0xf, 0xf, 0x10, 0x10, 0x10, 0xd, 0x10, 0x6, 0x4, 0xe, 0x14, 0x9, 0x4, 0x7, 0x5, 0x9, 0x5, 0x3, 0x4, 0x4, 0x6, 0xd, 0x11, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x11, 0x7, 0x5, 0x6, 0x4, 0x5, 0x5, 0x5, 0x6, 0x5, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x6, 0x5, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x6, 0x5, 0x4, 0x6, 0x5, 0x3, 0x5, 0x5, 0x3, 0x4, 0x6, 0x5, 0x3, 0x3, 0x6, 0x6, 0x5, 0x6, 0x5, 0x4, 0x4, 0xd, 0x18, 0x0, 0x0, 0x18, 0x14, 0x15, 0x13, 0x14, 0x13, 0x7, 0x5, 0x3, 0x3, 0x4, 0x4, 0x5, 0x4, 0x3, 0x5, 0x4, 0x5, 0x5, 0x4, 0xe, 0x18, 0x0, 0x16, 0x17, 0x14, 0x18, 0x12, 0x14, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x10, 0xe, 0xf, 0xc, 0x9, 0x6, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x7, 0x7, 0x6, 0x6, 0x4, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x2, 0x8, 0xc, 0x5, 0x7, 0x8, 0xc, 0x7, 0x3, 0x4, 0xa, 0xa, 0x8, 0x7, 0x7, 0x7, 0xc, 0xb, 0xd, 0x12, 0x11, 0xa, 0x5, 0x5, 0x6, 0x5, 0x7, 0x7, 0x8, 0x7, 0x4, 0x6, 0x5, 0x6, 0x7, 0x5, 0x6, 0x5, 0x3, 0x4, 0x4, 0x4, 0x5, 0x4, 0x7, 0x7, 0x4, 0x4, 0x5, 0x7, 0x8, 0x9, 0xc, 0xe, 0x11, 0x10, 0xd, 0xf, 0xf, 0x11, 0x15, 0x11, 0x11, 0x13, 0x14, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x16, 0x14, 0x16, 0x14, 0x12, 0x11, 0x13, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x17, 0x13, 0x12, 0x13, 0x11, 0x11, 0x13, 0x10, 0x10, 0x11, 0x10, 0x11, 0x12, 0x14, 0x14, 0x16, 0x18, 0x17, 0x17, 0x16, 0x15, 0x13, 0x17, 0x12, 0x11, 0x11, 0x10, 0xd, 0xc, 0xb, 0xb, 0xa, 0x8, 0x8, 0x8, 0x9, 0xa, 0xa, 0x9, 0x9, 0x9, 0x8, 0x8, 0xb, 0xb, 0xb, 0x8, 0xb, 0x9, 0x6, 0x8, 0x7, 0x9, 0xe, 0x11, 0x10, 0x11, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x13, 0x13, 0x12, 0x12, 0x10, 0x10, 0xe, 0x10, 0xf, 0xc, 0xb, 0xa, 0x9, 0x8, 0x7, 0x5, 0x12, 0x12, 0xc, 0x4, 0x4, 0x7, 0xa, 0x8, 0x9, 0x14, 0x16, 0x16, 0x15, 0x14, 0x13, 0xf, 0x11, 0xc, 0x7, 0xa, 0x9, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0xc, 0xc, 0x4, 0x6, 0x12, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x8, 0x4, 0x4, 0x5, 0x6, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x2, 0x9, 0xc, 0x6, 0x4, 0x9, 0x9, 0x9, 0x6, 0x6, 0xa, 0x8, 0x16, 0x0, 0x0, 0x0, 0x15, 0x15, 0x17, 0x16, 0x14, 0x18, 0x14, 0xa, 0x9, 0x8, 0x9, 0x7, 0x3, 0x4, 0x4, 0x4, 0x4, 0x6, 0x9, 0xc, 0x16, 0x0, 0x14, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12, 0x15, 0x13, 0x0, 0x0, 0x0, 0x15, 0x8, 0xf, 0xd, 0x10, 0xc, 0x5, 0x6, 0x9, 0x7, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0xa, 0x6, 0xa, 0x6, 0x9, 0x7, 0x9, 0x10, 0x14, 0xe, 0x9, 0xa, 0xc, 0x7, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x8, 0x7, 0x5, 0x3, 0x3, 0x6, 0x6, 0x8, 0x8, 0xa, 0xe, 0x11, 0x10, 0x11, 0xf, 0xe, 0xf, 0xf, 0xf, 0x11, 0x12, 0x15, 0x10, 0x11, 0x13, 0x15, 0x15, 0x17, 0x15, 0x13, 0x15, 0x12, 0x13, 0x14, 0x14, 0x13, 0x12, 0x10, 0x10, 0x11, 0x11, 0x13, 0x12, 0x14, 0xc, 0xa, 0xc, 0x9, 0x9, 0x6, 0x5, 0x9, 0x7, 0xc, 0xe, 0x11, 0x18, 0x16, 0x16, 0x15, 0x12, 0x12, 0x11, 0xf, 0x12, 0x14, 0x14, 0x12, 0x11, 0x10, 0x12, 0x11, 0x11, 0x14, 0x17, 0x18, 0x16, 0x15, 0x16, 0x14, 0x13, 0x12, 0x10, 0x10, 0xe, 0xc, 0xc, 0xb, 0xb, 0xa, 0x9, 0x7, 0x8, 0x7, 0x6, 0x5, 0x6, 0xe, 0xe, 0xd, 0xc, 0xd, 0xd, 0xe, 0xb, 0xc, 0xa, 0x8, 0x9, 0x8, 0x8, 0x8, 0xc, 0xe, 0x11, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x10, 0x10, 0xd, 0xa, 0x5, 0x4, 0x4, 0x3, 0x4, 0x9, 0x9, 0x7, 0xa, 0xd, 0xe, 0x8, 0x7, 0xa, 0xb, 0xe, 0x14, 0x14, 0x11, 0x11, 0x10, 0xf, 0xf, 0xf, 0xd, 0x11, 0x16, 0x15, 0x13, 0xf, 0xc, 0x11, 0x0, 0x15, 0x8, 0x4, 0xa, 0x8, 0x9, 0x5, 0x6, 0xf, 0x9, 0x3, 0xb, 0x7, 0x8, 0xe, 0x9, 0x8, 0xa, 0x13, 0x18, 0x0, 0x13, 0x13, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xe, 0x9, 0x7, 0x5, 0x6, 0x4, 0x4, 0x5, 0x7, 0x4, 0x5, 0xa, 0x8, 0x5, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x6, 0x5, 0x4, 0x4, 0x4, 0x4, 0x9, 0xa, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x6, 0x6, 0x6, 0x6, 0x4, 0x8, 0x9, 0x7, 0x4, 0x5, 0x5, 0x7, 0x4, 0x4, 0x8, 0x5, 0x12, 0x0, 0x0, 0x0, 0x14, 0x14, 0x16, 0x13, 0x14, 0x15, 0x18, 0x14, 0x16, 0x11, 0x13, 0x16, 0x12, 0x11, 0x11, 0x11, 0xf, 0xb, 0xf, 0x10, 0x18, 0x18, 0x14, 0x15, 0xe, 0x16, 0xe, 0x14, 0x11, 0x16, 0x11, 0x0, 0x17, 0x17, 0x14, 0xf, 0x15, 0xe, 0xc, 0xe, 0x11, 0x15, 0x18, 0xf, 0x4, 0x3, 0x5, 0x7, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x5, 0xe, 0xc, 0xe, 0x9, 0xa, 0xf, 0xb, 0x6, 0x4, 0x4, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0xb, 0x13, 0xf, 0xf, 0xc, 0xb, 0xf, 0xe, 0x10, 0x10, 0x10, 0x13, 0x17, 0x17, 0x16, 0x14, 0x13, 0x12, 0x12, 0x15, 0x0, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x13, 0x15, 0x12, 0x12, 0x16, 0x15, 0x14, 0x14, 0x11, 0x12, 0x12, 0xf, 0x7, 0x5, 0xa, 0xb, 0x9, 0x7, 0x6, 0x4, 0x4, 0x3, 0x5, 0x4, 0x7, 0x13, 0x16, 0x18, 0x14, 0x12, 0xf, 0xe, 0xd, 0xe, 0x10, 0x11, 0x10, 0x10, 0xf, 0xe, 0xe, 0xe, 0xe, 0xd, 0xd, 0xe, 0xc, 0xc, 0xd, 0xf, 0xe, 0xe, 0xd, 0xd, 0xf, 0xf, 0x11, 0x13, 0x13, 0x14, 0x13, 0x12, 0x10, 0x12, 0x13, 0x13, 0x14, 0x12, 0x16, 0x15, 0x10, 0xf, 0xd, 0xd, 0xe, 0xf, 0x11, 0x11, 0x11, 0x12, 0x13, 0x16, 0x17, 0x16, 0x15, 0x14, 0x15, 0x14, 0x13, 0x11, 0x13, 0x12, 0x11, 0xe, 0xf, 0x15, 0x11, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x4, 0x7, 0x7, 0x5, 0x5, 0x7, 0x7, 0xf, 0xe, 0xe, 0xe, 0x11, 0x12, 0x11, 0x11, 0xf, 0x10, 0x13, 0x12, 0x12, 0xf, 0x11, 0x10, 0xf, 0xb, 0x6, 0xb, 0x10, 0xb, 0xb, 0x8, 0x5, 0xd, 0x9, 0x5, 0xc, 0x7, 0x4, 0x5, 0x8, 0xd, 0x6, 0x5, 0xa, 0x11, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x11, 0x6, 0x4, 0x4, 0x4, 0x5, 0x6, 0x5, 0x4, 0x7, 0x7, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x6, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x2, 0x4, 0x4, 0x5, 0x6, 0x5, 0x6, 0x6, 0x6, 0x6, 0xc, 0x11, 0x7, 0x11, 0x0, 0x0, 0x0, 0x16, 0x10, 0x13, 0x13, 0x12, 0x11, 0x12, 0x12, 0x11, 0x11, 0xc, 0x17, 0x0, 0x18, 0x11, 0x18, 0x16, 0x11, 0x11, 0x14, 0x17, 0x13, 0x13, 0x10, 0x12, 0x13, 0x13, 0x12, 0x14, 0x15, 0xe, 0x12, 0xc, 0x12, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x8, 0x6, 0x5, 0x7, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x6, 0x6, 0x4, 0x6, 0x6, 0x5, 0x7, 0x7, 0x3, 0x5, 0x9, 0xb, 0x12, 0x12, 0x12, 0x12, 0x11, 0xf, 0xa, 0xa, 0x11, 0x11, 0x13, 0x18, 0x17, 0x14, 0x16, 0x18, 0x17, 0x16, 0x14, 0x15, 0x15, 0x16, 0x14, 0x16, 0x15, 0x15, 0x0, 0x0, 0x18, 0x17, 0x16, 0x17, 0x17, 0x14, 0x12, 0x12, 0x10, 0xf, 0x12, 0x11, 0xe, 0x10, 0xf, 0xd, 0xd, 0xa, 0x8, 0x7, 0x5, 0x5, 0x5, 0xa, 0xc, 0xe, 0xc, 0x6, 0x4, 0x5, 0x5, 0x8, 0x7, 0x7, 0x11, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0x10, 0x11, 0x10, 0xf, 0xd, 0xe, 0xf, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x17, 0x12, 0x10, 0x12, 0x12, 0x12, 0x14, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x15, 0x13, 0x16, 0x14, 0x13, 0x14, 0x14, 0x13, 0x15, 0x18, 0x0, 0x15, 0x14, 0x15, 0x18, 0x0, 0x16, 0x15, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 0x17, 0x17, 0x18, 0x18, 0x0, 0xe, 0x4, 0x5, 0x3, 0x3, 0x4, 0x5, 0x4, 0x2, 0x2, 0x1, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x16, 0x17, 0x16, 0x16, 0x16, 0x16, 0x14, 0x13, 0x15, 0xd, 0x6, 0x5, 0xb, 0x14, 0xf, 0x9, 0x4, 0x5, 0x4, 0x4, 0x4, 0x6, 0x6, 0x4, 0x4, 0x5, 0x4, 0x6, 0x4, 0x3, 0x3, 0xa, 0xd, 0x12, 0x14, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x5, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x5, 0x4, 0x4, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x5, 0x5, 0x3, 0x3, 0x5, 0xb, 0xf, 0xd, 0x9, 0x5, 0x7, 0x6, 0xb, 0x11, 0x11, 0xb, 0x14, 0x0, 0x0, 0x0, 0x17, 0x12, 0x12, 0x11, 0xe, 0x10, 0x15, 0x13, 0xb, 0xb, 0x7, 0xe, 0x10, 0x10, 0x11, 0x13, 0x0, 0x13, 0x11, 0x15, 0x15, 0x11, 0x17, 0x11, 0x15, 0x13, 0x16, 0x15, 0xf, 0xf, 0x12, 0xf, 0xe, 0x0, 0x12, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x10, 0x6, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0x6, 0x4, 0x8, 0x8, 0xa, 0xf, 0x13, 0x15, 0x16, 0x13, 0x15, 0x17, 0x16, 0x13, 0xf, 0xe, 0x14, 0x16, 0x18, 0x0, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x15, 0x13, 0x13, 0x13, 0x11, 0x11, 0x14, 0x11, 0xd, 0xc, 0xc, 0xd, 0x10, 0xc, 0xb, 0xb, 0xa, 0xb, 0xb, 0xa, 0x8, 0x8, 0x8, 0x9, 0x8, 0x5, 0x8, 0xb, 0x9, 0x8, 0x8, 0x5, 0x5, 0x6, 0x7, 0x8, 0x9, 0xc, 0xd, 0xe, 0xd, 0x8, 0xb, 0x11, 0x11, 0x13, 0x17, 0x18, 0x16, 0x15, 0x13, 0x11, 0x14, 0x16, 0x12, 0xf, 0x11, 0x14, 0x16, 0x14, 0x13, 0x14, 0x15, 0x17, 0x15, 0x10, 0x10, 0x14, 0x15, 0x16, 0x16, 0x10, 0xb, 0xe, 0xe, 0xe, 0x13, 0x12, 0x11, 0x10, 0xe, 0xf, 0xd, 0xe, 0xe, 0xe, 0x13, 0x16, 0x17, 0x18, 0x18, 0x16, 0x15, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0x4, 0x7, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x5, 0x4, 0x2, 0x3, 0x3, 0x14, 0x10, 0xf, 0xf, 0xe, 0xd, 0xd, 0xe, 0xe, 0xd, 0xd, 0xe, 0xb, 0xd, 0x7, 0xb, 0xb, 0xd, 0xd, 0x11, 0x7, 0x7, 0x6, 0x6, 0x6, 0x3, 0x2, 0xd, 0xf, 0x4, 0x7, 0x9, 0x4, 0x5, 0x7, 0x9, 0x9, 0x5, 0x8, 0xd, 0xf, 0x15, 0x17, 0x10, 0x16, 0x14, 0x14, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xc, 0x6, 0x5, 0x5, 0x4, 0x4, 0x4, 0x3, 0x4, 0x5, 0x5, 0x4, 0x3, 0x3, 0x6, 0x9, 0x6, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x4, 0x6, 0xa, 0x9, 0x5, 0x3, 0x6, 0x8, 0x6, 0x5, 0x4, 0x4, 0x5, 0x8, 0x6, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x6, 0x8, 0x9, 0x15, 0x0, 0x0, 0x0, 0x17, 0x14, 0x13, 0x11, 0x13, 0x13, 0x12, 0x8, 0x4, 0x4, 0x8, 0x10, 0xb, 0xd, 0x13, 0x10, 0x16, 0x12, 0x15, 0x13, 0x11, 0x18, 0x0, 0x13, 0x13, 0x12, 0x13, 0x14, 0x10, 0x14, 0x16, 0x15, 0x0, 0x0, 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xc, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x5, 0x7, 0x8, 0x5, 0x7, 0xe, 0x12, 0x12, 0x12, 0xf, 0xf, 0x12, 0x11, 0x11, 0x12, 0x10, 0x12, 0xf, 0x10, 0x12, 0x11, 0xf, 0x12, 0x11, 0x11, 0x13, 0x14, 0x17, 0x17, 0xe, 0xe, 0xf, 0xf, 0x12, 0x12, 0x12, 0x11, 0x10, 0xf, 0x12, 0x10, 0x8, 0xc, 0x17, 0x14, 0xe, 0x14, 0x17, 0x16, 0x14, 0x14, 0x13, 0x11, 0x11, 0xe, 0xc, 0xd, 0xd, 0xd, 0xf, 0x12, 0x12, 0x11, 0x13, 0x15, 0x16, 0x15, 0x13, 0xe, 0xa, 0xe, 0xe, 0xf, 0x12, 0x11, 0x11, 0x11, 0x11, 0x13, 0x14, 0x18, 0x11, 0xd, 0x11, 0x12, 0x10, 0xd, 0xa, 0x8, 0xc, 0xd, 0xb, 0x9, 0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x6, 0x8, 0x7, 0x7, 0x8, 0xc, 0xf, 0x11, 0xe, 0xb, 0xb, 0xd, 0x10, 0x12, 0x15, 0x15, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x15, 0x11, 0x11, 0x14, 0x18, 0x0, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xb, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x2, 0x3, 0x2, 0x2, 0x3, 0x3, 0x14, 0x11, 0x11, 0x12, 0x12, 0x12, 0x11, 0x13, 0x15, 0x14, 0x16, 0x14, 0x10, 0xe, 0x9, 0xb, 0xa, 0xa, 0x8, 0x8, 0x5, 0x8, 0x8, 0x9, 0x6, 0x3, 0x5, 0x8, 0xd, 0x4, 0x4, 0x7, 0x6, 0xa, 0x8, 0xa, 0xc, 0x5, 0xe, 0xc, 0x8, 0x11, 0x16, 0x18, 0x18, 0x14, 0x10, 0x15, 0x0, 0x0, 0x0, 0x17, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x9, 0x6, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x5, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x6, 0x7, 0x7, 0x6, 0x9, 0xb, 0xb, 0x17, 0x0, 0x0, 0x0, 0x16, 0x18, 0x15, 0x11, 0x16, 0x18, 0x12, 0x5, 0x5, 0x4, 0x6, 0xe, 0xe, 0x12, 0x11, 0x14, 0xe, 0x13, 0x11, 0x16, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x13, 0xd, 0xc, 0x16, 0x17, 0x12, 0x16, 0x18, 0x0, 0x17, 0x15, 0x17, 0x0, 0x16, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0xe, 0x6, 0x6, 0x5, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x6, 0x9, 0xd, 0xb, 0x9, 0xc, 0xe, 0xe, 0xd, 0xe, 0x10, 0x16, 0x14, 0x13, 0x13, 0x12, 0x12, 0x10, 0xe, 0xd, 0xf, 0xe, 0x10, 0xf, 0xf, 0x16, 0x17, 0x17, 0x17, 0x13, 0x12, 0x10, 0x13, 0x16, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x17, 0x15, 0x11, 0x12, 0x15, 0x14, 0x11, 0x12, 0x13, 0x13, 0x12, 0xd, 0xf, 0x10, 0x12, 0xf, 0x13, 0x15, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x11, 0x15, 0x15, 0x15, 0x17, 0x17, 0x15, 0x13, 0x12, 0x10, 0xc, 0xa, 0xa, 0x8, 0x8, 0x8, 0x7, 0x6, 0x6, 0x5, 0x5, 0x6, 0x7, 0x7, 0x7, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x7, 0x5, 0x3, 0x4, 0x6, 0x6, 0x6, 0xa, 0xd, 0x10, 0x13, 0xe, 0xd, 0xd, 0xf, 0x10, 0x11, 0x12, 0x15, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0xb, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x16, 0x10, 0xe, 0x10, 0x10, 0x10, 0x11, 0x12, 0x11, 0x11, 0xf, 0x12, 0xe, 0x7, 0xc, 0x6, 0x6, 0x5, 0x8, 0x8, 0xc, 0xd, 0x5, 0x7, 0x3, 0x4, 0x5, 0x4, 0x7, 0x9, 0x4, 0x5, 0x4, 0x8, 0x5, 0x6, 0x8, 0x3, 0x9, 0xa, 0x7, 0xa, 0x8, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0x5, 0x6, 0x6, 0x7, 0x5, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x4, 0x4, 0x4, 0x5, 0x5, 0x3, 0x3, 0x3, 0x6, 0x7, 0x6, 0x6, 0x5, 0x7, 0x8, 0x9, 0x9, 0xa, 0xa, 0x5, 0x3, 0x5, 0x6, 0x5, 0x5, 0x6, 0x6, 0x6, 0x5, 0x5, 0x7, 0x8, 0x16, 0x0, 0x0, 0x17, 0xf, 0x16, 0x17, 0x14, 0x18, 0x14, 0xf, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0xe, 0xf, 0x14, 0x9, 0x12, 0xd, 0x12, 0x14, 0x15, 0x18, 0x0, 0x18, 0x12, 0x12, 0x14, 0x10, 0xd, 0x17, 0x17, 0xf, 0x16, 0x0, 0x0, 0x16, 0x13, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0xf, 0x7, 0x5, 0x6, 0x9, 0x9, 0x5, 0x4, 0x4, 0x6, 0x8, 0xc, 0x9, 0x8, 0x9, 0xb, 0xd, 0xf, 0x13, 0x12, 0xf, 0xd, 0xd, 0xe, 0xf, 0xf, 0xf, 0x11, 0x13, 0xf, 0x12, 0xf, 0xf, 0x10, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x0, 0x0, 0x17, 0x14, 0x14, 0x12, 0x11, 0x12, 0x12, 0x14, 0x14, 0x14, 0x14, 0x15, 0x13, 0x16, 0x15, 0x15, 0x14, 0x13, 0x14, 0x14, 0x16, 0x16, 0x15, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x18, 0x16, 0x17, 0x14, 0x15, 0x13, 0x10, 0xf, 0x12, 0xc, 0x9, 0xa, 0xd, 0xa, 0x8, 0x7, 0x9, 0x7, 0x5, 0x4, 0x5, 0x7, 0x7, 0x7, 0x8, 0x8, 0x7, 0x9, 0x8, 0x6, 0x6, 0x7, 0x8, 0x6, 0x7, 0x8, 0x7, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, 0x6, 0x4, 0x3, 0x4, 0x3, 0x4, 0x5, 0x6, 0x6, 0x6, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x7, 0x8, 0x9, 0xb, 0xc, 0xd, 0xc, 0xd, 0xf, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xa, 0x9, 0x6, 0x4, 0x4, 0x5, 0x5, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x17, 0x14, 0x13, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x14, 0xe, 0xf, 0x9, 0x5, 0xf, 0x7, 0x5, 0x7, 0xc, 0xc, 0xf, 0x9, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0xa, 0x11, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x5, 0x7, 0x4, 0x8, 0x14, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x6, 0x6, 0xa, 0xa, 0x8, 0x6, 0x7, 0x6, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x6, 0x9, 0xc, 0x7, 0x6, 0x5, 0x4, 0x4, 0x8, 0x8, 0x7, 0x8, 0xc, 0xb, 0xc, 0xd, 0xd, 0xb, 0x4, 0x3, 0x8, 0x11, 0xa, 0x3, 0x3, 0x5, 0x6, 0x5, 0x5, 0x5, 0x9, 0x17, 0x0, 0x0, 0x17, 0x10, 0x16, 0x18, 0x16, 0x10, 0x7, 0x9, 0x7, 0x8, 0xf, 0x12, 0x7, 0x7, 0x8, 0x11, 0x12, 0xd, 0xf, 0x13, 0x10, 0xf, 0x11, 0x12, 0x12, 0xe, 0x9, 0x10, 0x15, 0x12, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x17, 0x16, 0x18, 0x18, 0x16, 0x18, 0x18, 0xd, 0xa, 0xe, 0xe, 0xf, 0xa, 0x7, 0x9, 0xd, 0xe, 0x12, 0xe, 0xf, 0x11, 0x13, 0x14, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x0, 0x17, 0x12, 0xf, 0x12, 0xf, 0x10, 0x15, 0x13, 0x12, 0x14, 0x15, 0x16, 0x15, 0x15, 0x14, 0x13, 0x13, 0x12, 0x10, 0x10, 0x15, 0x12, 0xf, 0x11, 0x14, 0x13, 0x13, 0x15, 0x16, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x14, 0x12, 0x12, 0x14, 0x14, 0x11, 0xb, 0x11, 0xf, 0xf, 0xd, 0xb, 0x8, 0x7, 0x7, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x8, 0xa, 0xb, 0xb, 0xb, 0xa, 0x8, 0x9, 0xa, 0x9, 0x9, 0x5, 0x6, 0x6, 0x8, 0x6, 0x5, 0x7, 0x6, 0x3, 0x3, 0x6, 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x6, 0x3, 0x3, 0x3, 0x2, 0x5, 0x4, 0x3, 0x4, 0x5, 0x5, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x6, 0x7, 0x7, 0x6, 0x7, 0x9, 0xa, 0xc, 0xc, 0xd, 0xf, 0xe, 0x10, 0x13, 0x15, 0x14, 0x16, 0x13, 0x11, 0x10, 0x12, 0x12, 0xf, 0xf, 0xc, 0xa, 0x9, 0x7, 0x6, 0x5, 0x5, 0xf, 0xe, 0xf, 0xe, 0xe, 0xf, 0x10, 0xe, 0xf, 0x11, 0xc, 0xb, 0x7, 0x6, 0xf, 0xb, 0x8, 0x8, 0x5, 0x4, 0x7, 0x6, 0x7, 0x5, 0x7, 0x6, 0x5, 0x3, 0x6, 0xe, 0x8, 0xb, 0xa, 0x3, 0x3, 0x4, 0xa, 0xa, 0x6, 0x8, 0x5, 0x3, 0x4, 0x4, 0x5, 0x11, 0x0, 0x0, 0x0, 0x17, 0xc, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x9, 0x8, 0x8, 0x8, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x5, 0x4, 0x5, 0x5, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x5, 0x7, 0x5, 0x4, 0x6, 0xa, 0x9, 0x6, 0x8, 0x9, 0x6, 0x15, 0x0, 0x18, 0x18, 0x13, 0x16, 0x17, 0xa, 0x4, 0x3, 0x5, 0x8, 0xe, 0xb, 0x11, 0xf, 0x9, 0xd, 0x14, 0x0, 0x18, 0x18, 0x18, 0x12, 0xf, 0xe, 0xa, 0xe, 0xf, 0x13, 0x17, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x11, 0x16, 0x12, 0x16, 0x18, 0x18, 0x15, 0x0, 0x0, 0x0, 0x12, 0xa, 0xf, 0x13, 0x13, 0x12, 0x16, 0x15, 0x12, 0x13, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x15, 0x14, 0x12, 0x12, 0x12, 0x14, 0x14, 0x11, 0xf, 0xf, 0x12, 0xf, 0xe, 0x10, 0x10, 0x12, 0x17, 0x16, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x11, 0xd, 0xf, 0x10, 0x10, 0xd, 0xb, 0xb, 0xa, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x5, 0x7, 0x6, 0x5, 0x7, 0x8, 0xb, 0xb, 0xb, 0x9, 0x9, 0x7, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x7, 0x7, 0x9, 0x8, 0x4, 0x4, 0x6, 0x4, 0x3, 0x5, 0x3, 0x4, 0x6, 0x3, 0x4, 0x5, 0x6, 0x3, 0x2, 0x3, 0x3, 0x5, 0x5, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x5, 0x6, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x7, 0x5, 0x7, 0x8, 0x8, 0xb, 0xc, 0xc, 0xf, 0xe, 0x10, 0x10, 0x11, 0x13, 0x12, 0x12, 0x13, 0x16, 0x13, 0x15, 0x14, 0x14, 0x15, 0x16, 0x16, 0x14, 0x14, 0xf, 0xa, 0xa, 0xc, 0x11, 0x9, 0x7, 0x5, 0x3, 0x3, 0x9, 0xc, 0x9, 0x4, 0x6, 0x5, 0x4, 0x2, 0x3, 0xc, 0x9, 0x9, 0xb, 0x5, 0x5, 0x8, 0xd, 0xb, 0x6, 0xb, 0x9, 0x7, 0x8, 0x4, 0x5, 0x7, 0x15, 0x0, 0x0, 0x0, 0x13, 0x12, 0x0, 0x0, 0x0, 0x18, 0x0, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x7, 0xa, 0xd, 0x8, 0x3, 0x4, 0x5, 0x6, 0x8, 0x8, 0x5, 0x5, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x5, 0x4, 0xa, 0xb, 0x4, 0x3, 0x5, 0x6, 0x6, 0x5, 0x5, 0x5, 0x4, 0x6, 0x6, 0x5, 0x14, 0x0, 0x0, 0x0, 0x16, 0x16, 0x12, 0x4, 0x4, 0x5, 0xc, 0xa, 0x7, 0x9, 0xf, 0xd, 0x9, 0x7, 0xb, 0x17, 0x10, 0x15, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x14, 0x16, 0x12, 0x16, 0x0, 0x18, 0x0, 0x0, 0x14, 0x12, 0x0, 0x0, 0x0, 0x0, 0x17, 0x10, 0x12, 0x17, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x16, 0x16, 0x16, 0x18, 0x14, 0x14, 0x13, 0x13, 0x11, 0x11, 0x13, 0x16, 0x16, 0x16, 0x15, 0x14, 0x14, 0x17, 0x0, 0x16, 0x12, 0x13, 0x13, 0x17, 0x16, 0x16, 0x0, 0x0, 0x17, 0x0, 0x17, 0x15, 0x14, 0x14, 0x13, 0x12, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x15, 0x14, 0x13, 0xf, 0xc, 0xd, 0xb, 0x9, 0x9, 0xa, 0xb, 0x9, 0x8, 0x7, 0x9, 0x9, 0x8, 0x8, 0xa, 0xa, 0x9, 0x9, 0x7, 0x7, 0x6, 0xa, 0x7, 0x7, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x6, 0x6, 0x5, 0x6, 0x5, 0x5, 0x6, 0x6, 0x5, 0x5, 0x5, 0x7, 0x8, 0x7, 0x8, 0x6, 0x5, 0x4, 0x5, 0x7, 0x3, 0x3, 0x5, 0x5, 0x6, 0x8, 0x5, 0x4, 0x3, 0x4, 0x4, 0x5, 0x6, 0x3, 0x2, 0x5, 0x5, 0x7, 0x6, 0x5, 0x5, 0x5, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x7, 0x7, 0x5, 0x5, 0x3, 0x3, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x5, 0x2, 0x2, 0x4, 0x5, 0x3, 0x5, 0x6, 0x6, 0x4, 0x6, 0x9, 0x8, 0x9, 0xe, 0x12, 0xe, 0xe, 0xf, 0xf, 0xe, 0x10, 0xf, 0xf, 0xe, 0xc, 0x8, 0x9, 0x10, 0x14, 0x8, 0x4, 0x8, 0xb, 0xd, 0x10, 0x11, 0x5, 0x7, 0x7, 0x6, 0x5, 0x3, 0x4, 0x6, 0x5, 0x6, 0xc, 0x6, 0x7, 0x9, 0x8, 0xb, 0x7, 0x9, 0x9, 0x7, 0xa, 0x8, 0xb, 0x5, 0xc, 0x0, 0x0, 0x0, 0x0, 0x15, 0x15, 0x0, 0x0, 0x13, 0x15, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x9, 0x9, 0xa, 0x7, 0x6, 0x4, 0x4, 0x5, 0xb, 0xd, 0xb, 0xa, 0x6, 0x4, 0x8, 0xb, 0xa, 0x9, 0x4, 0x3, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x5, 0x7, 0x6, 0x9, 0x9, 0x7, 0x4, 0x8, 0xb, 0x6, 0x3, 0x6, 0x8, 0x5, 0x8, 0x7, 0x5, 0x13, 0x0, 0x0, 0x0, 0x18, 0x0, 0x10, 0x4, 0x3, 0x9, 0xe, 0xc, 0x11, 0xe, 0x8, 0xa, 0x7, 0x7, 0x8, 0x10, 0xc, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x18, 0x0, 0x16, 0x15, 0x0, 0x18, 0x14, 0x17, 0x18, 0x16, 0x16, 0x15, 0x15, 0x13, 0x13, 0x13, 0x17, 0x0, 0x0, 0x14, 0x12, 0x11, 0x11, 0x12, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x0, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x15, 0x17, 0x0, 0x0, 0x15, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x16, 0x15, 0x16, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x14, 0x11, 0xf, 0xe, 0xd, 0xb, 0x9, 0x9, 0xc, 0xa, 0xa, 0xa, 0x7, 0x7, 0x9, 0xa, 0xa, 0x9, 0x8, 0xa, 0xb, 0xc, 0xd, 0xe, 0xb, 0x7, 0x6, 0x6, 0x7, 0x7, 0x6, 0x6, 0x4, 0x3, 0x7, 0x4, 0x2, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x6, 0xb, 0x9, 0x7, 0x9, 0x9, 0x8, 0x9, 0xb, 0xc, 0xf, 0x14, 0x15, 0x13, 0x11, 0x11, 0x13, 0xf, 0x9, 0x8, 0x9, 0x8, 0x7, 0x8, 0x8, 0x5, 0x5, 0x7, 0x6, 0x6, 0x7, 0x8, 0x7, 0x5, 0x7, 0x6, 0x7, 0x5, 0x7, 0x8, 0x5, 0x7, 0x9, 0x8, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x6, 0x7, 0x6, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x17, 0x14, 0x14, 0x16, 0x16, 0x16, 0x16, 0x16, 0x15, 0x15, 0x13, 0xd, 0x9, 0x9, 0x14, 0xc, 0xa, 0xf, 0x12, 0x13, 0xf, 0xd, 0x7, 0x8, 0x6, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x6, 0x8, 0x6, 0xa, 0xc, 0x7, 0x9, 0x8, 0xe, 0xa, 0x9, 0xb, 0x8, 0x15, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xa, 0xa, 0x9, 0xb, 0x7, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x2, 0x3, 0x4, 0x4, 0x6, 0x8, 0x5, 0x3, 0x7, 0x9, 0x6, 0x6, 0xc, 0x9, 0x12, 0x0, 0x13, 0x15, 0x17, 0x10, 0x5, 0x4, 0x5, 0x6, 0x6, 0xa, 0x12, 0xd, 0x9, 0xe, 0x9, 0x7, 0x8, 0xc, 0xb, 0x10, 0x14, 0x12, 0x16, 0x15, 0x14, 0x14, 0x10, 0x11, 0x13, 0x0, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x14, 0x13, 0x11, 0xe, 0xd, 0xe, 0xe, 0xe, 0xf, 0xf, 0x10, 0x11, 0x14, 0x13, 0x14, 0x15, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x13, 0xe, 0xa, 0x9, 0x9, 0xc, 0xd, 0xa, 0x6, 0x5, 0x6, 0x8, 0x7, 0x7, 0xa, 0xf, 0xf, 0xf, 0xb, 0x9, 0xa, 0x8, 0x8, 0x9, 0x8, 0x6, 0x7, 0x6, 0x4, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x6, 0x8, 0xb, 0x9, 0xc, 0xd, 0x9, 0xf, 0x11, 0x14, 0x14, 0x12, 0x12, 0x12, 0x10, 0xe, 0x9, 0x8, 0x7, 0x5, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x5, 0x4, 0x6, 0x5, 0x3, 0x4, 0x6, 0x5, 0x8, 0x9, 0xb, 0xd, 0xb, 0xc, 0xb, 0xd, 0x12, 0xb, 0xd, 0x12, 0x12, 0x13, 0x11, 0x10, 0x11, 0x11, 0x12, 0xe, 0xb, 0xc, 0x10, 0x11, 0x10, 0x10, 0xe, 0xe, 0xb, 0xa, 0x8, 0x4, 0x4, 0x5, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x6, 0x11, 0xc, 0xc, 0xd, 0xf, 0xd, 0xe, 0xe, 0xf, 0xe, 0xf, 0xb, 0x9, 0x8, 0x12, 0xe, 0xd, 0x9, 0xd, 0xd, 0xa, 0xa, 0x6, 0x3, 0x3, 0x6, 0x8, 0x6, 0x9, 0xa, 0x9, 0x4, 0x4, 0x9, 0x6, 0x3, 0x3, 0x5, 0x6, 0x9, 0xd, 0x7, 0xe, 0xa, 0x7, 0xf, 0xa, 0xf, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0xc, 0x8, 0x6, 0x7, 0x7, 0x6, 0x7, 0x7, 0x7, 0xe, 0x10, 0xa, 0x5, 0x5, 0x8, 0x9, 0x5, 0x3, 0x5, 0x8, 0x5, 0x5, 0x7, 0x7, 0x5, 0x5, 0x8, 0x5, 0x4, 0x4, 0x4, 0x5, 0xb, 0xe, 0x6, 0x3, 0x6, 0xa, 0x8, 0x7, 0xb, 0xa, 0x15, 0x0, 0x17, 0x0, 0x0, 0xc, 0x3, 0x8, 0xb, 0xb, 0xb, 0x7, 0x11, 0x11, 0x12, 0x14, 0x8, 0xc, 0xf, 0x14, 0xe, 0x12, 0x15, 0x13, 0x17, 0x17, 0x16, 0x16, 0x13, 0x14, 0x12, 0x13, 0x14, 0x12, 0x11, 0x12, 0x10, 0x10, 0x11, 0x10, 0x12, 0x10, 0x11, 0x12, 0x12, 0x14, 0x14, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x17, 0x13, 0x13, 0x13, 0x15, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x15, 0x16, 0x16, 0x15, 0x13, 0x13, 0x15, 0x14, 0x15, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x10, 0x9, 0x5, 0x4, 0x5, 0x5, 0xa, 0x8, 0x6, 0x4, 0x6, 0x8, 0xa, 0xc, 0x9, 0xa, 0xe, 0xc, 0xb, 0xc, 0xe, 0xb, 0x8, 0x7, 0x7, 0x6, 0x5, 0x3, 0x4, 0x4, 0x5, 0x4, 0x3, 0x7, 0x6, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x6, 0x9, 0x7, 0x9, 0xb, 0xb, 0x8, 0x9, 0xc, 0xc, 0xd, 0xd, 0xc, 0xe, 0xe, 0xa, 0x9, 0x7, 0x6, 0x5, 0x4, 0x6, 0x6, 0x5, 0x6, 0x6, 0x8, 0xc, 0xf, 0xd, 0xa, 0xd, 0xf, 0xf, 0xd, 0xc, 0xc, 0xd, 0xd, 0xc, 0xb, 0xd, 0xe, 0xf, 0x10, 0xf, 0xf, 0xf, 0x12, 0x10, 0x11, 0x13, 0x14, 0x14, 0x12, 0x10, 0x11, 0x14, 0x17, 0x14, 0x13, 0x14, 0x18, 0x17, 0x15, 0x14, 0x11, 0xf, 0xc, 0x9, 0x9, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x4, 0x3, 0x4, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x13, 0x10, 0xb, 0x10, 0xd, 0x9, 0x5, 0x6, 0x8, 0x8, 0x9, 0x4, 0x4, 0x4, 0x4, 0xb, 0x8, 0x9, 0xa, 0xa, 0x7, 0x3, 0x9, 0x7, 0x6, 0x8, 0x5, 0x4, 0x9, 0xa, 0x4, 0x9, 0xe, 0xf, 0x15, 0xe, 0x7, 0x11, 0x16, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x5, 0xb, 0x10, 0xf, 0xd, 0xe, 0xe, 0x6, 0x7, 0x6, 0x5, 0x4, 0x5, 0x6, 0x6, 0x5, 0x8, 0x7, 0x7, 0x3, 0x6, 0x8, 0x6, 0x3, 0x3, 0x6, 0x7, 0x8, 0x8, 0x6, 0x6, 0x5, 0x6, 0x4, 0x7, 0xd, 0x10, 0xf, 0xe, 0x6, 0x9, 0x0, 0x0, 0x17, 0x0, 0x18, 0xb, 0x5, 0xe, 0xb, 0x11, 0x18, 0x13, 0x17, 0x15, 0x11, 0x18, 0x13, 0x18, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0x13, 0x11, 0xe, 0xd, 0xd, 0xc, 0xb, 0xc, 0x10, 0x10, 0x11, 0x12, 0x13, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x17, 0x17, 0x16, 0x14, 0x18, 0x15, 0x11, 0xf, 0x10, 0xf, 0x11, 0x13, 0x15, 0x15, 0x15, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x8, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x5, 0x7, 0x8, 0x9, 0xd, 0xc, 0xa, 0xd, 0xf, 0xd, 0xc, 0xc, 0xf, 0xb, 0xa, 0x8, 0x5, 0x7, 0x8, 0x4, 0x3, 0x5, 0xc, 0xf, 0xd, 0xe, 0x10, 0x14, 0x16, 0x18, 0x17, 0x17, 0x12, 0xd, 0xc, 0x10, 0xe, 0xf, 0xe, 0xd, 0x10, 0xd, 0x4, 0x4, 0x8, 0xd, 0xe, 0xe, 0x13, 0x12, 0x10, 0xf, 0xc, 0xf, 0x14, 0x14, 0x11, 0xc, 0xc, 0xd, 0xf, 0xd, 0xe, 0x11, 0x12, 0x10, 0x10, 0x11, 0x12, 0x11, 0x10, 0xf, 0xd, 0xc, 0xc, 0xf, 0xe, 0x10, 0x12, 0x15, 0x17, 0x17, 0x18, 0x17, 0x16, 0x15, 0x13, 0x10, 0xb, 0x8, 0x7, 0x6, 0x6, 0x4, 0x4, 0x3, 0x6, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x14, 0x15, 0x10, 0x10, 0x11, 0x10, 0x11, 0x15, 0x11, 0xf, 0xf, 0xc, 0xc, 0xa, 0xc, 0x12, 0x8, 0x6, 0x5, 0x7, 0xf, 0xe, 0xa, 0x7, 0x7, 0x6, 0x6, 0x4, 0x7, 0xb, 0xa, 0xa, 0x5, 0x6, 0xa, 0xa, 0xa, 0xa, 0x6, 0xa, 0xe, 0x4, 0x5, 0xa, 0xb, 0x8, 0x6, 0xc, 0x12, 0x18, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x0, 0x0, 0x17, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xb, 0xb, 0x13, 0x12, 0xd, 0xb, 0x8, 0x5, 0x5, 0xa, 0xd, 0x7, 0x7, 0x6, 0x4, 0x4, 0xa, 0x9, 0x5, 0x4, 0x5, 0x4, 0x5, 0xb, 0xd, 0xa, 0x7, 0x8, 0x7, 0x5, 0x4, 0x4, 0x5, 0x5, 0x7, 0x8, 0xa, 0xa, 0xb, 0xe, 0x12, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x17, 0x17, 0x17, 0x18, 0x17, 0x16, 0x16, 0x14, 0x13, 0x14, 0x11, 0x10, 0x10, 0x11, 0xf, 0xf, 0xe, 0x10, 0xf, 0xf, 0x12, 0x11, 0x10, 0xe, 0xf, 0x11, 0x10, 0x10, 0x11, 0x12, 0x13, 0x15, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x18, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x16, 0x15, 0x15, 0x14, 0x18, 0x18, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x14, 0x13, 0x13, 0x13, 0x15, 0x17, 0x17, 0x9, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x4, 0x5, 0x5, 0x7, 0x8, 0x9, 0xb, 0xb, 0xc, 0xf, 0xd, 0x11, 0xf, 0xc, 0xc, 0x10, 0x16, 0x18, 0x0, 0x16, 0x14, 0x16, 0x18, 0x0, 0x0, 0x17, 0xe, 0xc, 0xe, 0x14, 0x18, 0x17, 0x18, 0x15, 0x17, 0x18, 0x14, 0x16, 0x18, 0x18, 0x0, 0x15, 0x10, 0xf, 0xd, 0xc, 0xa, 0xb, 0xc, 0xc, 0xd, 0xf, 0xf, 0xf, 0x13, 0x17, 0x18, 0x15, 0x14, 0x13, 0x12, 0x13, 0x13, 0x12, 0x13, 0x13, 0x15, 0x15, 0x17, 0x18, 0x18, 0x18, 0x18, 0x16, 0x13, 0x11, 0x10, 0xc, 0x8, 0x6, 0x5, 0x3, 0x3, 0x4, 0x3, 0x3, 0x5, 0x5, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x4, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x4, 0x4, 0x4, 0x4, 0x18, 0x17, 0x15, 0x15, 0x16, 0x17, 0x17, 0x17, 0x16, 0x16, 0x15, 0x15, 0x13, 0x11, 0xe, 0x10, 0xb, 0xc, 0xc, 0xb, 0xf, 0x8, 0x8, 0x6, 0x6, 0xa, 0x8, 0x5, 0x6, 0x7, 0x8, 0x8, 0x7, 0x4, 0x5, 0x8, 0x8, 0xa, 0x9, 0x7, 0xb, 0x9, 0xa, 0x6, 0x2, 0x7, 0x13, 0x0, 0x15, 0x12, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0xa, 0xa, 0xc, 0xc, 0x9, 0x4, 0x6, 0x6, 0xd, 0xd, 0x8, 0x7, 0x6, 0x8, 0x9, 0xd, 0xe, 0xc, 0xd, 0xe, 0xe, 0x10, 0x15, 0xf, 0x8, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0x5, 0x7, 0x4, 0xb, 0x0, 0x0, 0x0, 0x17, 0x14, 0x14, 0x14, 0x12, 0x12, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x13, 0x12, 0x13, 0x15, 0x13, 0x12, 0x12, 0x13, 0xf, 0x12, 0x12, 0x11, 0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x16, 0x17, 0x17, 0x0, 0x17, 0x14, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x12, 0x10, 0x13, 0x18, 0x12, 0x15, 0x17, 0x16, 0x15, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x14, 0x17, 0x15, 0x11, 0x11, 0x12, 0x16, 0x16, 0x15, 0x15, 0x15, 0x16, 0x17, 0x18, 0x0, 0x17, 0x9, 0x3, 0x4, 0x3, 0x4, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x7, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x5, 0x8, 0x6, 0x4, 0x4, 0x5, 0x6, 0x6, 0x8, 0xa, 0xb, 0xb, 0xc, 0xe, 0x10, 0x13, 0x16, 0x14, 0x10, 0x11, 0x14, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x13, 0x13, 0x12, 0x13, 0x17, 0x18, 0x15, 0x14, 0x15, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x15, 0x14, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0xf, 0xc, 0xa, 0x7, 0x6, 0x5, 0x3, 0x3, 0x2, 0x3, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x8, 0x5, 0xc, 0xa, 0xa, 0xb, 0xc, 0xc, 0xc, 0xd, 0xc, 0xd, 0xe, 0xe, 0xc, 0x8, 0x6, 0x9, 0x9, 0xe, 0xb, 0xc, 0x9, 0xb, 0x5, 0x3, 0x4, 0x6, 0x8, 0x5, 0xc, 0xa, 0x4, 0x5, 0x5, 0x5, 0x6, 0x9, 0x5, 0x9, 0xb, 0x4, 0x5, 0xa, 0xf, 0xb, 0xc, 0x12, 0x13, 0x11, 0x16, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0x12, 0x12, 0x15, 0xf, 0xe, 0xa, 0x7, 0x6, 0x7, 0xb, 0x12, 0x15, 0xe, 0xa, 0x9, 0xa, 0xc, 0xc, 0xe, 0x12, 0x13, 0xf, 0xe, 0x11, 0xf, 0xe, 0x8, 0x8, 0xa, 0x9, 0xa, 0x13, 0x13, 0x12, 0xc, 0xb, 0x11, 0x10, 0x16, 0x16, 0x10, 0x10, 0x13, 0x13, 0x14, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x17, 0x17, 0x15, 0x13, 0x15, 0x16, 0x15, 0x16, 0x18, 0x18, 0x17, 0x17, 0x0, 0x17, 0x18, 0x0, 0x18, 0x16, 0x18, 0x18, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x17, 0x12, 0x15, 0x16, 0x18, 0x16, 0x12, 0x14, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x17, 0x15, 0x18, 0x17, 0x14, 0x13, 0x13, 0x13, 0x14, 0x16, 0x15, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x9, 0x3, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x7, 0x7, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x5, 0x5, 0x6, 0x5, 0x3, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x3, 0x4, 0x4, 0x5, 0x7, 0x7, 0x9, 0xb, 0xb, 0xc, 0xd, 0xd, 0x12, 0x16, 0x16, 0x16, 0x15, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x12, 0x11, 0xf, 0xd, 0xb, 0x8, 0x6, 0x5, 0x4, 0x4, 0x4, 0x2, 0x3, 0x5, 0x5, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x4, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x4, 0x17, 0x16, 0x15, 0x16, 0x16, 0x16, 0x16, 0x15, 0x14, 0x14, 0x16, 0x17, 0x16, 0x13, 0xb, 0x6, 0x7, 0xc, 0xc, 0x9, 0xa, 0xd, 0x6, 0x9, 0x10, 0xf, 0x5, 0x4, 0xc, 0xd, 0x4, 0x4, 0x7, 0xa, 0x6, 0x6, 0x6, 0xc, 0xf, 0x7, 0x5, 0x7, 0xa, 0xc, 0xc, 0xa, 0x8, 0xa, 0x11, 0x13, 0x17, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xb, 0xb, 0x15, 0x16, 0x13, 0xa, 0x7, 0x7, 0xc, 0x14, 0x0, 0x17, 0x12, 0x8, 0xa, 0x9, 0xa, 0x8, 0x8, 0x10, 0x14, 0x15, 0x17, 0x14, 0x10, 0x11, 0x15, 0x11, 0x10, 0x13, 0x17, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x15, 0x16, 0x13, 0x12, 0x13, 0x15, 0x16, 0x0, 0x17, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0xa, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x5, 0x8, 0x7, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x7, 0xa, 0x7, 0x5, 0x9, 0x7, 0x4, 0x7, 0x7, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x5, 0xd, 0xd, 0x8, 0xa, 0xb, 0xc, 0x9, 0x7, 0x6, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x7, 0x7, 0x7, 0xa, 0xb, 0xa, 0xc, 0xd, 0xf, 0x13, 0x13, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x14, 0x10, 0xc, 0xa, 0x7, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x6, 0x3, 0x2, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x8, 0x9, 0x4, 0x3, 0x3, 0x5, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x2, 0x1, 0x2, 0x3, 0x3, 0x5, 0x9, 0xb, 0xe, 0xe, 0x9, 0x8, 0x4, 0x3, 0x17, 0x11, 0x10, 0x10, 0x10, 0xf, 0xe, 0xf, 0xf, 0xf, 0xe, 0xe, 0xe, 0x10, 0xe, 0x7, 0x5, 0xb, 0xb, 0x6, 0x11, 0x11, 0x12, 0x13, 0xf, 0x9, 0x5, 0x6, 0x7, 0xe, 0xd, 0xe, 0x13, 0x14, 0xb, 0xa, 0x10, 0x15, 0x17, 0xd, 0x5, 0x9, 0xc, 0xd, 0x7, 0x5, 0x5, 0x5, 0x6, 0x6, 0xd, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xa, 0x10, 0x11, 0xf, 0xb, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0xd, 0x9, 0x9, 0x9, 0xc, 0xa, 0x9, 0xc, 0xe, 0xe, 0xe, 0xe, 0xf, 0x13, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x17, 0x15, 0x15, 0x14, 0x14, 0x12, 0x11, 0x12, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x16, 0x15, 0x14, 0x13, 0x12, 0x13, 0x13, 0x13, 0x16, 0x16, 0x15, 0x17, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x4, 0x5, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x4, 0x7, 0x6, 0x5, 0x8, 0x7, 0x7, 0x8, 0x9, 0xc, 0x9, 0x4, 0x6, 0x6, 0x6, 0x7, 0x5, 0x6, 0x9, 0xb, 0xc, 0xa, 0xb, 0xc, 0xd, 0xc, 0xd, 0xd, 0xd, 0xb, 0xa, 0x8, 0x9, 0x6, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x9, 0xd, 0xb, 0xa, 0xc, 0xe, 0xe, 0x10, 0xc, 0xa, 0x9, 0x5, 0x4, 0x4, 0x3, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x6, 0x8, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x3, 0x6, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x4, 0x7, 0x9, 0xa, 0xb, 0xb, 0xc, 0x10, 0x11, 0xe, 0xc, 0xa, 0xc, 0xb, 0xc, 0x18, 0x16, 0x16, 0x16, 0x16, 0x14, 0x14, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x15, 0x13, 0x9, 0x7, 0x7, 0xc, 0x13, 0x13, 0x11, 0x11, 0x8, 0x3, 0x5, 0x7, 0x8, 0xb, 0xb, 0x9, 0xa, 0xa, 0xa, 0xb, 0xf, 0xe, 0xd, 0x15, 0x15, 0x14, 0x13, 0x11, 0x8, 0x6, 0x4, 0x4, 0x5, 0x4, 0x9, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x12, 0xc, 0xa, 0xa, 0xa, 0xb, 0xb, 0xe, 0x11, 0x12, 0x15, 0x15, 0x15, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x17, 0x17, 0x15, 0x14, 0x11, 0xe, 0xf, 0xd, 0xc, 0xd, 0xe, 0xe, 0x11, 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x17, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x14, 0x13, 0x11, 0x11, 0x15, 0x18, 0x16, 0x18, 0x17, 0x11, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x14, 0x15, 0x11, 0xf, 0xb, 0xc, 0xc, 0xa, 0x6, 0x4, 0x4, 0x6, 0x4, 0x4, 0x6, 0x6, 0x7, 0xa, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x4, 0x6, 0x4, 0x5, 0x6, 0x3, 0x3, 0x4, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x6, 0x6, 0x6, 0x8, 0x9, 0xd, 0xe, 0x7, 0x7, 0x6, 0x5, 0x3, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x1, 0x2, 0x2, 0x2, 0x4, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x4, 0x4, 0x5, 0x4, 0x4, 0x5, 0x6, 0x7, 0x9, 0xd, 0xd, 0xb, 0xb, 0xe, 0x6, 0xe, 0x11, 0x17, 0xf, 0xb, 0xf, 0x17, 0x0, 0x0, 0x13, 0x11, 0x12, 0x13, 0x12, 0x11, 0xf, 0x10, 0x10, 0x10, 0xe, 0xe, 0xe, 0xd, 0xd, 0xd, 0x9, 0x6, 0xc, 0x14, 0x10, 0x11, 0x12, 0x18, 0x16, 0x12, 0xe, 0x6, 0xc, 0xe, 0xc, 0xb, 0xe, 0xd, 0xe, 0xd, 0x12, 0x12, 0xd, 0x10, 0x16, 0x17, 0x12, 0xe, 0xe, 0x10, 0xd, 0x6, 0x3, 0x3, 0xc, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x17, 0x16, 0x15, 0x15, 0x16, 0x14, 0x16, 0x18, 0x15, 0xf, 0xf, 0x13, 0x12, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0xf, 0xf, 0xe, 0xf, 0xe, 0xe, 0xe, 0xe, 0xf, 0x11, 0x12, 0x13, 0x15, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x18, 0x18, 0x16, 0x16, 0x14, 0x12, 0x10, 0xf, 0xc, 0xb, 0xa, 0x9, 0x9, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xf, 0x10, 0x11, 0x13, 0x13, 0x14, 0x14, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x16, 0x0, 0x18, 0x12, 0x13, 0x17, 0x0, 0x14, 0xf, 0xd, 0xe, 0x11, 0x13, 0x13, 0x16, 0x18, 0x16, 0x16, 0x16, 0x16, 0x17, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x17, 0x18, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x13, 0xf, 0xd, 0xa, 0x9, 0x7, 0x8, 0x8, 0x7, 0x6, 0x7, 0x3, 0x3, 0x5, 0x6, 0x6, 0x4, 0x3, 0x2, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x7, 0x6, 0x5, 0x7, 0x7, 0x8, 0x6, 0x3, 0x6, 0x5, 0x5, 0x6, 0x4, 0x8, 0xa, 0xa, 0x9, 0x9, 0xf, 0xf, 0xf, 0xf, 0x9, 0x9, 0x8, 0x8, 0x9, 0x7, 0x6, 0x4, 0x5, 0x5, 0x2, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x5, 0x5, 0x6, 0x9, 0xf, 0xd, 0xa, 0x8, 0xb, 0xc, 0x6, 0x9, 0xf, 0x10, 0x15, 0x15, 0x0, 0x18, 0x18, 0x18, 0x0, 0x18, 0x11, 0x14, 0x13, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x15, 0x14, 0x12, 0xb, 0x8, 0x9, 0xd, 0x13, 0x14, 0x11, 0x10, 0xe, 0xb, 0x11, 0x11, 0xf, 0xf, 0x10, 0xe, 0x10, 0x12, 0x15, 0x17, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x12, 0x10, 0x10, 0x14, 0x12, 0x12, 0x12, 0x15, 0x15, 0x11, 0x12, 0x14, 0x13, 0x12, 0x12, 0x15, 0x16, 0x15, 0x16, 0x18, 0x17, 0x15, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x13, 0x12, 0x11, 0x11, 0x10, 0xf, 0xf, 0xf, 0x10, 0x11, 0x11, 0x11, 0x13, 0x14, 0x14, 0x15, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x15, 0x13, 0x11, 0xe, 0xe, 0xc, 0xb, 0x9, 0x8, 0x6, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x7, 0x7, 0x8, 0x7, 0x7, 0x8, 0x8, 0x8, 0xa, 0xb, 0xa, 0xb, 0xd, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x17, 0x17, 0x18, 0x0, 0x16, 0x13, 0x16, 0x0, 0x18, 0x16, 0x17, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x14, 0x11, 0x13, 0x13, 0x10, 0xf, 0xf, 0x11, 0x12, 0x12, 0x13, 0x16, 0x18, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x13, 0x12, 0x12, 0x10, 0xd, 0x9, 0x7, 0x7, 0x7, 0x6, 0x4, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x5, 0x7, 0x7, 0x6, 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x5, 0x6, 0x7, 0x6, 0x9, 0xb, 0xa, 0xb, 0xb, 0xc, 0xc, 0xc, 0xe, 0xe, 0xe, 0xa, 0xa, 0x4, 0x2, 0x3, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x5, 0x5, 0x6, 0x6, 0x6, 0x9, 0x9, 0x8, 0x6, 0x5, 0x7, 0xb, 0xf, 0x11, 0x11, 0x14, 0x16, 0x13, 0x10, 0xf, 0xc, 0xb, 0xd, 0xe, 0xe, 0x14, 0x15, 0x13, 0x12, 0x10, 0xf, 0xe, 0xc, 0xc, 0xa, 0x6, 0x0, 0x18, 0x17, 0x17, 0x16, 0x14, 0x13, 0x13, 0x12, 0x12, 0x10, 0x11, 0x12, 0x11, 0xf, 0xd, 0xe, 0x10, 0xe, 0xc, 0xf, 0x11, 0x14, 0x16, 0x10, 0x10, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x16, 0x14, 0x14, 0x11, 0x12, 0x11, 0x11, 0x14, 0x14, 0x11, 0x13, 0x0, 0x14, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x15, 0x15, 0x14, 0x13, 0x12, 0x10, 0x10, 0xe, 0xc, 0xd, 0xc, 0xd, 0x11, 0x11, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x16, 0x14, 0x12, 0xf, 0xd, 0xb, 0x9, 0x7, 0x6, 0x3, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x5, 0x6, 0x9, 0xc, 0x9, 0x5, 0x4, 0x4, 0x3, 0x4, 0x5, 0x5, 0x6, 0x4, 0x5, 0x6, 0x6, 0x6, 0xb, 0xb, 0x7, 0x8, 0xa, 0xb, 0xd, 0x10, 0x12, 0x13, 0x15, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xf, 0xe, 0xe, 0xd, 0xe, 0xf, 0x13, 0x15, 0x17, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x18, 0x0, 0x17, 0x0, 0x17, 0xf, 0x14, 0x16, 0x14, 0x10, 0xf, 0xc, 0x9, 0x6, 0x5, 0x5, 0x6, 0x5, 0x5, 0x4, 0x4, 0x4, 0x6, 0x6, 0x5, 0x7, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x7, 0x9, 0x9, 0x8, 0xc, 0x6, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x6, 0x9, 0x7, 0x5, 0x6, 0x6, 0x8, 0x7, 0x8, 0xb, 0xb, 0xd, 0xb, 0xd, 0x11, 0x15, 0x0, 0x18, 0x16, 0x15, 0x13, 0x12, 0xe, 0xa, 0x7, 0x4, 0x4, 0x5, 0x4, 0x8, 0x5, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x16, 0x11, 0x10, 0x11, 0x10, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x17, 0x17, 0x17, 0x17, 0x15, 0x16, 0x16, 0x17, 0x0, 0x0, 0x13, 0xf, 0xe, 0x14, 0x15, 0x10, 0x16, 0x17, 0x13, 0x11, 0x11, 0x10, 0x12, 0x13, 0x13, 0x10, 0x10, 0xf, 0x14, 0x0, 0x17, 0x18, 0x18, 0x18, 0x17, 0x16, 0x15, 0x14, 0x15, 0x15, 0x17, 0x14, 0x12, 0x12, 0x13, 0xf, 0xe, 0x10, 0x13, 0x12, 0x13, 0x13, 0x14, 0x14, 0x12, 0x11, 0x11, 0x13, 0x14, 0x15, 0x15, 0x16, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x15, 0x14, 0x14, 0x12, 0x12, 0x11, 0xf, 0xc, 0xb, 0x9, 0x7, 0x6, 0x5, 0x5, 0x5, 0x6, 0x5, 0x5, 0x7, 0x8, 0x9, 0xa, 0xa, 0x8, 0xd, 0xf, 0xf, 0x11, 0xf, 0xe, 0xa, 0x6, 0x7, 0x9, 0xa, 0xa, 0xc, 0x9, 0x7, 0x8, 0xa, 0xb, 0xb, 0x9, 0x6, 0x5, 0x5, 0x5, 0x5, 0x6, 0x7, 0x5, 0x5, 0x7, 0x8, 0x8, 0x8, 0x9, 0x8, 0x7, 0x6, 0x5, 0x5, 0x4, 0x4, 0x6, 0x7, 0x6, 0x7, 0x6, 0x5, 0x8, 0xa, 0x9, 0x7, 0x9, 0xd, 0xc, 0x8, 0x7, 0x9, 0x9, 0x9, 0x9, 0x9, 0xb, 0xb, 0x10, 0x11, 0x13, 0x14, 0x15, 0x14, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x13, 0x13, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x17, 0x18, 0x15, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x17, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x12, 0x10, 0xf, 0xe, 0xc, 0xc, 0xa, 0x8, 0x7, 0x5, 0x4, 0x4, 0x3, 0x5, 0x3, 0x5, 0x4, 0x3, 0x4, 0x4, 0x6, 0x5, 0x4, 0x5, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x2, 0x8, 0xa, 0x6, 0x6, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x6, 0x5, 0x5, 0x8, 0xc, 0x10, 0x13, 0xe, 0xd, 0x10, 0x11, 0xf, 0xf, 0xf, 0xf, 0xd, 0xd, 0xe, 0x10, 0xe, 0xd, 0xc, 0x9, 0x7, 0x6, 0x5, 0x5, 0x3, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x4, 0x6, 0x3, 0x6, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x15, 0x15, 0x10, 0xe, 0xd, 0xc, 0xd, 0xc, 0xa, 0xc, 0xc, 0xf, 0x18, 0x0, 0x15, 0x13, 0x14, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x15, 0x15, 0x14, 0x15, 0x16, 0x15, 0x14, 0x13, 0x15, 0x15, 0x11, 0xf, 0xe, 0xf, 0x11, 0xf, 0x10, 0x11, 0x14, 0x17, 0x16, 0x14, 0x14, 0x16, 0x15, 0x16, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x15, 0x14, 0x13, 0x11, 0x11, 0x12, 0xf, 0xd, 0xb, 0xc, 0xe, 0xd, 0xc, 0xb, 0x9, 0x8, 0x6, 0x7, 0x4, 0x4, 0x4, 0x4, 0x9, 0xa, 0xe, 0x16, 0x15, 0x14, 0x17, 0x16, 0x15, 0x14, 0x12, 0x11, 0x15, 0x16, 0x12, 0x16, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0xe, 0xc, 0xe, 0xd, 0x9, 0x9, 0xa, 0xc, 0xc, 0x9, 0x6, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x8, 0xb, 0xd, 0xd, 0x10, 0x12, 0x12, 0x11, 0xc, 0xa, 0x9, 0x7, 0x5, 0x7, 0x7, 0x5, 0x5, 0x5, 0x6, 0x6, 0x5, 0x3, 0x4, 0x5, 0x6, 0x5, 0x7, 0x7, 0x7, 0x6, 0x7, 0x6, 0x4, 0x3, 0x3, 0x4, 0x5, 0x6, 0x6, 0x7, 0x6, 0x8, 0xb, 0xd, 0xc, 0xd, 0x10, 0x12, 0x14, 0x15, 0x17, 0x17, 0x0, 0x0, 0x17, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x14, 0x12, 0xe, 0xc, 0xb, 0x9, 0x7, 0x6, 0x6, 0x5, 0x5, 0x4, 0x4, 0x6, 0x7, 0x7, 0x7, 0x5, 0x5, 0x7, 0x6, 0x7, 0x5, 0x5, 0x7, 0x8, 0x5, 0x2, 0x3, 0x6, 0x4, 0x4, 0x5, 0x6, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x4, 0x8, 0x8, 0x7, 0x9, 0xc, 0xf, 0x11, 0x11, 0x15, 0x17, 0x17, 0x15, 0x13, 0x13, 0x12, 0xe, 0xe, 0xe, 0xb, 0x8, 0x5, 0x5, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3, 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x6, 0x6, 0x7, 0x5, 0x7, 0x7, 0x9, 0x6, 0x4, 0x6, 0x7, 0x5, 0x5, 0x4, 0x16, 0x13, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x17, 0x18, 0x17, 0x18, 0x18, 0x18, 0x17, 0x18, 0x17, 0x17, 0x16, 0x14, 0x14, 0x14, 0x13, 0x11, 0x10, 0x10, 0x10, 0x10, 0xf, 0xf, 0x10, 0x10, 0xf, 0x10, 0x10, 0x10, 0x13, 0x15, 0x13, 0x14, 0x15, 0x17, 0x18, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x11, 0xf, 0xd, 0xd, 0xa, 0x6, 0x7, 0x8, 0x9, 0xb, 0xc, 0x10, 0x10, 0xd, 0xd, 0xa, 0xa, 0x8, 0x7, 0x7, 0x4, 0x5, 0x5, 0x8, 0x7, 0x8, 0xb, 0x10, 0x16, 0x17, 0x17, 0x15, 0xf, 0xd, 0xb, 0xa, 0xb, 0xc, 0xd, 0xe, 0xe, 0xe, 0xc, 0xc, 0xb, 0x9, 0x9, 0xa, 0xb, 0xc, 0x8, 0x9, 0xb, 0xd, 0xd, 0x10, 0x12, 0x17, 0x15, 0xc, 0x8, 0x7, 0x5, 0x4, 0x5, 0x7, 0x7, 0x5, 0x5, 0x5, 0x6, 0x8, 0x6, 0x5, 0x6, 0x7, 0xa, 0xb, 0xf, 0x10, 0xf, 0xe, 0x10, 0x12, 0xa, 0x6, 0x4, 0x3, 0x3, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x9, 0x6, 0x5, 0x5, 0x9, 0xa, 0x6, 0x5, 0x3, 0x5, 0x6, 0x7, 0x8, 0x9, 0x6, 0x6, 0x5, 0x4, 0x7, 0x8, 0xa, 0xb, 0xe, 0xe, 0x10, 0x12, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x18, 0x18, 0x18, 0x18, 0x14, 0x14, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x18, 0x16, 0x16, 0x15, 0x12, 0x11, 0x10, 0xd, 0xc, 0xa, 0x7, 0x6, 0x6, 0x5, 0x7, 0x4, 0x5, 0x8, 0xa, 0x3, 0x1, 0x4, 0x6, 0x3, 0x5, 0x7, 0x9, 0xb, 0xa, 0x7, 0x4, 0x6, 0x6, 0x6, 0x7, 0x5, 0x6, 0x6, 0x8, 0xc, 0xb, 0xb, 0x10, 0x14, 0x14, 0x13, 0x11, 0xe, 0xf, 0xd, 0xd, 0xb, 0x7, 0x5, 0x4, 0x3, 0x4, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x6, 0x6, 0x6, 0x5, 0x7, 0x6, 0x5, 0x5, 0x4, 0x5, 0x4, 0x5, 0x6, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x16, 0x15, 0x15, 0x14, 0x13, 0x11, 0x11, 0x11, 0x11, 0xf, 0xf, 0xe, 0xd, 0xd, 0xe, 0xe, 0xe, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x15, 0x13, 0xf, 0xe, 0xc, 0x8, 0x6, 0x6, 0x5, 0x4, 0x3, 0x4, 0x5, 0x7, 0x6, 0x4, 0x6, 0x5, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x6, 0x7, 0x6, 0x6, 0x8, 0xc, 0xc, 0xd, 0x10, 0x11, 0x12, 0x12, 0xe, 0x9, 0x7, 0x9, 0xa, 0xf, 0xf, 0xa, 0x8, 0x6, 0x6, 0x6, 0xa, 0x12, 0xd, 0xe, 0x11, 0x14, 0x12, 0x14, 0x15, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x11, 0xf, 0x11, 0x12, 0x10, 0x9, 0xa, 0xb, 0xb, 0xd, 0xb, 0x7, 0x8, 0xb, 0x8, 0x9, 0xc, 0xd, 0xe, 0xf, 0x10, 0xe, 0xc, 0xc, 0x8, 0x6, 0x7, 0x8, 0xb, 0xb, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x8, 0xa, 0x8, 0x7, 0x5, 0x6, 0x7, 0x7, 0xb, 0xc, 0x8, 0x6, 0x6, 0x9, 0xe, 0xc, 0x7, 0x7, 0x7, 0x7, 0x9, 0xa, 0x9, 0x6, 0xe, 0x14, 0x10, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x17, 0x16, 0x16, 0x14, 0x16, 0x17, 0x14, 0x12, 0x12, 0xf, 0xe, 0xc, 0xd, 0x10, 0xf, 0x11, 0x12, 0x15, 0x17, 0x17, 0x18, 0x15, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x11, 0x11, 0x15, 0x12, 0x11, 0xe, 0xa, 0x8, 0x6, 0x4, 0x4, 0x4, 0x3, 0x4, 0x8, 0xb, 0xc, 0xd, 0xe, 0xe, 0xe, 0xf, 0xf, 0xe, 0xf, 0xd, 0xd, 0xc, 0xc, 0xf, 0xc, 0xb, 0xc, 0xa, 0x8, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x6, 0x6, 0x7, 0x9, 0x7, 0x8, 0x8, 0x6, 0x8, 0x5, 0x5, 0x5, 0x6, 0x4, 0x5, 0x4, 0x5, 0x5, 0x7, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x18, 0x11, 0x10, 0xf, 0xd, 0xf, 0xd, 0xb, 0xd, 0xf, 0xd, 0xd, 0xe, 0xf, 0x10, 0xf, 0x11, 0x11, 0x12, 0x13, 0x15, 0x15, 0x16, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x12, 0x11, 0xe, 0xa, 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x8, 0x7, 0x7, 0x8, 0xa, 0xd, 0xc, 0x7, 0x6, 0x4, 0x3, 0x5, 0x6, 0x8, 0xb, 0xa, 0xb, 0xb, 0x7, 0x8, 0x8, 0xb, 0xb, 0xa, 0xa, 0xa, 0xc, 0xd, 0xf, 0xf, 0xe, 0x10, 0x12, 0x15, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x13, 0x11, 0x11, 0x14, 0x16, 0xd, 0xb, 0xa, 0x9, 0x7, 0x9, 0xa, 0x8, 0x7, 0x9, 0xa, 0x9, 0x9, 0xb, 0xc, 0xb, 0xc, 0xd, 0xe, 0x10, 0x13, 0xe, 0x9, 0x9, 0x8, 0x6, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x5, 0x8, 0x8, 0x8, 0x9, 0xb, 0xd, 0xe, 0xd, 0x11, 0x15, 0x14, 0x12, 0x10, 0xd, 0xc, 0xb, 0xa, 0x8, 0x7, 0x6, 0xd, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x14, 0x14, 0x0, 0x0, 0x18, 0x15, 0x14, 0x15, 0x14, 0x12, 0x13, 0x14, 0x14, 0x15, 0x14, 0x16, 0x16, 0x15, 0x15, 0x16, 0x16, 0x17, 0x17, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x12, 0x14, 0x15, 0x13, 0x15, 0x17, 0x17, 0x17, 0x16, 0x16, 0x17, 0x11, 0xe, 0xe, 0x14, 0x15, 0x14, 0x14, 0x13, 0x14, 0x16, 0x17, 0x17, 0x15, 0x11, 0x10, 0xd, 0xf, 0x12, 0x11, 0x11, 0xb, 0x7, 0x6, 0x5, 0x4, 0x5, 0x5, 0x4, 0x5, 0x4, 0x5, 0x7, 0x5, 0x4, 0x5, 0x9, 0x7, 0x7, 0x6, 0x9, 0x9, 0x7, 0x7, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x4, 0x4, 0x6, 0x5, 0x5, 0x5, 0x5, 0x6, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x18, 0x10, 0x11, 0x11, 0x13, 0x15, 0x15, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x13, 0x11, 0x11, 0x10, 0x10, 0x12, 0x12, 0x13, 0x11, 0x17, 0x18, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x7, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x5, 0x6, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x7, 0x8, 0xd, 0xd, 0xb, 0xa, 0xc, 0xd, 0xf, 0xe, 0xd, 0xc, 0xc, 0x9, 0xa, 0xa, 0x7, 0x4, 0x4, 0x7, 0x7, 0xb, 0xd, 0xc, 0xf, 0x12, 0xd, 0xe, 0x11, 0x13, 0x13, 0x13, 0x15, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x17, 0x17, 0x17, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x16, 0x16, 0x13, 0x10, 0xf, 0xe, 0x14, 0x14, 0xc, 0xa, 0x8, 0x7, 0x9, 0x6, 0x7, 0x8, 0x9, 0xc, 0xe, 0xe, 0xc, 0xf, 0xd, 0xd, 0xb, 0x9, 0xf, 0xf, 0xc, 0xf, 0x14, 0x14, 0x13, 0x13, 0x13, 0x11, 0xf, 0xd, 0xc, 0x9, 0x7, 0x5, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x8, 0xe, 0xe, 0x18, 0x13, 0x13, 0x11, 0x14, 0x16, 0x15, 0x17, 0x17, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x11, 0x12, 0x12, 0x13, 0x14, 0x15, 0x17, 0x0, 0x18, 0x18, 0x17, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x11, 0x10, 0x12, 0x11, 0xd, 0xc, 0xf, 0xf, 0xe, 0xe, 0xd, 0xa, 0x7, 0x8, 0x6, 0x5, 0x5, 0x7, 0x7, 0x7, 0x6, 0x5, 0x6, 0x4, 0x4, 0x6, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x4, 0x5, 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x1, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x17, 0x17, 0x18, 0x17, 0x0, 0x0, 0x16, 0x11, 0x13, 0x17, 0x18, 0x15, 0x14, 0x12, 0x11, 0x11, 0x12, 0x10, 0x11, 0x12, 0x13, 0x13, 0x16, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x8, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x7, 0x6, 0x5, 0x5, 0x4, 0x3, 0x4, 0x6, 0xa, 0xc, 0xc, 0xc, 0xa, 0xd, 0xf, 0xf, 0xd, 0xb, 0xa, 0x9, 0x9, 0x9, 0x9, 0xd, 0x10, 0x11, 0x11, 0x11, 0x13, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x16, 0x14, 0x14, 0x17, 0x18, 0x14, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x16, 0x15, 0x14, 0x15, 0x11, 0x11, 0xe, 0xc, 0xc, 0xf, 0x11, 0x10, 0x15, 0x15, 0x13, 0x13, 0xf, 0xf, 0xe, 0xb, 0x9, 0x8, 0x7, 0x5, 0x5, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x6, 0x6, 0x4, 0x4, 0x4, 0x5, 0x4, 0x6, 0x5, 0x7, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x0, 0x0, 0x17, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x14, 0x13, 0x12, 0x11, 0xd, 0xc, 0xa, 0xb, 0xa, 0x9, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0x8, 0x6, 0x8, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x6, 0x7, 0x5, 0x5, 0x6, 0x7, 0x6, 0x6, 0x6, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x5, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x4, 0x3, 0x4, 0x6, 0x3, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x17, 0x16, 0x17, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x11, 0x10, 0x17, 0x0, 0x17, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x5, 0x4, 0x5, 0x5, 0x4, 0x3, 0x3, 0x6, 0x5, 0x7, 0xa, 0xb, 0x8, 0x6, 0x9, 0xe, 0x13, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x15, 0x12, 0xf, 0xc, 0x8, 0x7, 0x6, 0x4, 0x5, 0x3, 0x2, 0x2, 0x3, 0x2, 0x2, 0x3, 0x4, 0x3, 0x2, 0x3, 0x2, 0x3, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x5, 0x4, 0x6, 0xc, 0x18, 0x15, 0x11, 0x11, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x13, 0x11, 0x12, 0x12, 0x13, 0x17, 0x0, 0x15, 0x16, 0x17, 0x17, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x16, 0x14, 0x11, 0x10, 0xd, 0xb, 0x9, 0x8, 0x8, 0x7, 0x7, 0x9, 0xb, 0xa, 0xa, 0x9, 0xa, 0xa, 0x8, 0x7, 0x6, 0x6, 0x6, 0x6, 0x5, 0x5, 0x4, 0x4, 0x5, 0x6, 0x7, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, 0x3, 0x3, 0x3, 0x4, 0x3, 0x1, 0x2, 0x2, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x4, 0x6, 0x7, 0xb, 0xb, 0xa, 0x0, 0x0, 0x18, 0x17, 0x0, 0x18, 0x17, 0x18, 0x0, 0x0, 0x0, 0x17, 0x18, 0x15, 0x18, 0x18, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x14, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x13, 0x13, 0x12, 0x14, 0x18, 0x0, 0x0, 0x16, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x7, 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x7, 0x7, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x4, 0x6, 0x9, 0xc, 0xd, 0x10, 0x12, 0x14, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x11, 0x14, 0x15, 0x0, 0x0, 0x18, 0x17, 0x0, 0x18, 0x16, 0x14, 0x17, 0x0, 0x15, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x15, 0x13, 0x12, 0x11, 0xf, 0xc, 0xa, 0x8, 0x6, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x7, 0x3, 0x3, 0x3, 0x5, 0x6, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x4, 0x4, 0x3, 0x5, 0x6, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x13, 0x16, 0x11, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x11, 0x13, 0x12, 0x16, 0x18, 0x0, 0x16, 0x16, 0x15, 0x16, 0x18, 0x16, 0x16, 0x14, 0x14, 0x14, 0x15, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x16, 0x16, 0x14, 0x12, 0x10, 0xf, 0xd, 0xb, 0xa, 0xa, 0xa, 0x9, 0xb, 0xb, 0xb, 0xa, 0x9, 0x9, 0x9, 0xa, 0x9, 0x8, 0x8, 0x8, 0x8, 0x7, 0x6, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x4, 0x2, 0x3, 0x4, 0x3, 0x6, 0x5, 0x4, 0x5, 0xa, 0xc, 0x9, 0x6, 0x6, 0x8, 0x9, 0x9, 0x7, 0x6, 0x8, 0x9, 0xc, 0xa, 0xa, 0xa, 0x9, 0x0, 0x0, 0x17, 0x17, 0x0, 0x13, 0xe, 0x13, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x16, 0x16, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x9, 0x4, 0x5, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x7, 0xa, 0xc, 0xf, 0x10, 0x13, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x13, 0xf, 0xd, 0xb, 0x9, 0x8, 0x7, 0x5, 0x3, 0x4, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x7, 0xa, 0xa, 0x6, 0x4, 0x3, 0x3, 0x3, 0x5, 0x6, 0x5, 0x5, 0x5, 0x3, 0x3, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x3, 0x12, 0x15, 0xf, 0x0, 0x18, 0x18, 0x17, 0x16, 0x16, 0x16, 0x18, 0x13, 0x13, 0x14, 0x14, 0x11, 0x18, 0x15, 0x15, 0x18, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x17, 0x17, 0x17, 0x12, 0x16, 0x18, 0x15, 0xd, 0xc, 0xf, 0xf, 0xd, 0xb, 0x9, 0xa, 0xa, 0xa, 0x9, 0xa, 0xb, 0xa, 0xa, 0xc, 0xc, 0xc, 0x9, 0x9, 0x8, 0x8, 0x8, 0x8, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x5, 0x6, 0x5, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x5, 0x4, 0x4, 0x3, 0x3, 0x2, 0x3, 0x3, 0x5, 0x5, 0x4, 0x6, 0x5, 0x5, 0x5, 0x5, 0x7, 0xa, 0xd, 0xd, 0x12, 0x10, 0xb, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x8, 0x9, 0x8, 0xa, 0x6, 0x5, 0x5, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x18, 0x16, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0xe, 0xb, 0x9, 0x8, 0x7, 0x6, 0x6, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x6, 0x9, 0x7, 0x6, 0x8, 0xa, 0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0xb, 0xc, 0xe, 0xf, 0x12, 0x13, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x14, 0x12, 0x10, 0xd, 0xb, 0x9, 0x8, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x7, 0xc, 0x8, 0xc, 0x10, 0x9, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x5, 0x4, 0x11, 0x17, 0xd, 0x11, 0x11, 0x12, 0x12, 0x12, 0x13, 0x16, 0x0, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x15, 0x14, 0x13, 0x12, 0x12, 0x11, 0x10, 0xf, 0xf, 0x10, 0xd, 0xc, 0xd, 0xd, 0xe, 0xa, 0xc, 0xd, 0xf, 0xe, 0xc, 0xe, 0x12, 0xf, 0xf, 0xf, 0x10, 0x12, 0x12, 0x12, 0x11, 0x11, 0xf, 0xd, 0xd, 0xb, 0xa, 0x9, 0x8, 0x8, 0x6, 0x7, 0x6, 0x5, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x6, 0x5, 0x2, 0x3, 0x4, 0x6, 0x7, 0x6, 0x6, 0x5, 0x7, 0x7, 0x7, 0x4, 0x6, 0x7, 0x8, 0x9, 0x9, 0xa, 0x9, 0xd, 0xc, 0x8, 0x8, 0x9, 0x8, 0x7, 0x6, 0x4, 0x6, 0x6, 0x5, 0x4, 0x5, 0x6, 0x4, 0x3, 0x2, 0x4, 0x6, 0x5, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x12, 0x11, 0xf, 0xe, 0x10, 0x15, 0x0, 0x16, 0x17, 0x18, 0x17, 0x16, 0x14, 0x13, 0x14, 0x16, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xa, 0x8, 0x7, 0x8, 0x9, 0x9, 0xa, 0x7, 0x5, 0x6, 0x6, 0x6, 0x4, 0x5, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x3, 0x4, 0x4, 0x5, 0x8, 0x9, 0x8, 0xa, 0xc, 0xd, 0xd, 0xd, 0x14, 0x0, 0x0, 0x0, 0x18, 0x15, 0x14, 0x12, 0xd, 0xa, 0x8, 0x6, 0x6, 0x7, 0x8, 0xb, 0x12, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x14, 0x10, 0xd, 0xa, 0x8, 0x7, 0x6, 0x5, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x5, 0x5, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x3, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x5, 0xd, 0xd, 0x2, 0x2, 0x9, 0xa, 0x3, 0x4, 0x4, 0x3, 0x4, 0x5, 0x3, 0x3, 0x4, 0x3, 0x5, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x5, 0x6, 0xa, 0x14, 0x18, 0xe, 0xf, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x16, 0x17, 0x15, 0x14, 0x13, 0x13, 0x10, 0xe, 0xd, 0xc, 0xb, 0xb, 0xc, 0xd, 0xe, 0xe, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x10, 0xe, 0xf, 0x11, 0x13, 0x14, 0x15, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x15, 0x14, 0x12, 0x10, 0xe, 0xc, 0xb, 0x9, 0x7, 0x6, 0x6, 0x7, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x6, 0x5, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x7, 0x8, 0xa, 0x9, 0xf, 0x13, 0xe, 0x9, 0x7, 0x8, 0xa, 0xa, 0x7, 0x7, 0x9, 0x8, 0xb, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, 0x4, 0x5, 0x5, 0x5, 0x5, 0x6, 0x5, 0x8, 0x8, 0x9, 0x9, 0x8, 0x7, 0x6, 0x5, 0x7, 0x7, 0x7, 0x6, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x17, 0x17, 0x0, 0x17, 0x14, 0x14, 0x16, 0x17, 0x14, 0x14, 0x13, 0x13, 0x12, 0x12, 0x16, 0x16, 0x15, 0x15, 0x12, 0x11, 0x18, 0x15, 0x14, 0x15, 0x15, 0x12, 0x13, 0x13, 0x14, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0xf, 0xc, 0xb, 0x8, 0x6, 0x5, 0x5, 0x5, 0x8, 0x8, 0x7, 0x9, 0xa, 0x8, 0x8, 0x7, 0x6, 0x6, 0x4, 0x4, 0x5, 0x4, 0x4, 0x5, 0x6, 0x6, 0x5, 0x5, 0x6, 0x8, 0xa, 0xe, 0x12, 0x13, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x13, 0x10, 0xe, 0xd, 0xc, 0xc, 0xd, 0xf, 0x11, 0x13, 0x15, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x16, 0x15, 0x14, 0x12, 0xf, 0xd, 0xd, 0xb, 0x9, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x6, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x9, 0xc, 0x7, 0x7, 0xb, 0x9, 0x4, 0x4, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7, 0x6, 0x6, 0x6, 0x7, 0x7, 0x7, 0x9, 0x9, 0x9, 0x12, 0x0, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x14, 0x13, 0x15, 0x13, 0x13, 0x12, 0x13, 0x13, 0x14, 0x14, 0x14, 0x15, 0x14, 0x15, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x16, 0x16, 0x16, 0x17, 0x16, 0x15, 0x15, 0x14, 0x13, 0x13, 0x12, 0x11, 0x11, 0xf, 0xf, 0xd, 0xc, 0xc, 0xb, 0xa, 0x8, 0x6, 0x5, 0x5, 0x6, 0x5, 0x5, 0x5, 0x5, 0x6, 0x7, 0x5, 0x6, 0x7, 0x6, 0x7, 0x7, 0x7, 0x8, 0x9, 0xa, 0xa, 0xc, 0xb, 0xe, 0xc, 0x9, 0x7, 0x6, 0x7, 0x5, 0x4, 0x6, 0x6, 0x7, 0x5, 0x6, 0x5, 0x6, 0x5, 0x5, 0x2, 0x4, 0x7, 0x6, 0x8, 0xa, 0x9, 0xb, 0xa, 0x8, 0x8, 0x8, 0x9, 0xa, 0x8, 0x6, 0x6, 0x6, 0x5, 0x6, 0x6, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x15, 0x13, 0x12, 0x12, 0x10, 0x11, 0xd, 0x11, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13, 0x16, 0x0, 0x10, 0x10, 0x13, 0x15, 0x16, 0x15, 0x16, 0x15, 0x16, 0x17, 0x17, 0x18, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x15, 0x12, 0xe, 0xe, 0xa, 0x7, 0x6, 0x5, 0x5, 0x4, 0x6, 0x7, 0x9, 0xa, 0x7, 0x6, 0x7, 0x5, 0x4, 0x5, 0x5, 0x6, 0x4, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x7, 0x9, 0xb, 0xd, 0x11, 0x15, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x6, 0x3, 0x4, 0x5, 0x6, 0x7, 0xa, 0xa, 0xd, 0x10, 0x15, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0xf, 0xe, 0xc, 0x9, 0x8, 0x6, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x7, 0x5, 0x4, 0x5, 0x5, 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x8, 0x10, 0xf, 0xa, 0x7, 0x7, 0x8, 0xa, 0xa, 0xb, 0xb, 0x9, 0xa, 0xe, 0x13, 0x16, 0x18, 0x13, 0xd, 0xf, 0x12, 0x11, 0x10, 0x12, 0x15, 0x16, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x18, 0x17, 0x15, 0x15, 0x14, 0x13, 0x12, 0x10, 0x12, 0x13, 0x11, 0x10, 0xf, 0xf, 0x10, 0xd, 0x11, 0x13, 0xf, 0xf, 0xd, 0xd, 0x11, 0x13, 0x13, 0x10, 0x10, 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x12, 0x12, 0x11, 0x10, 0x10, 0xe, 0xe, 0xd, 0x9, 0x7, 0x9, 0xc, 0xb, 0x8, 0x6, 0x7, 0x9, 0xa, 0x9, 0x7, 0x8, 0x9, 0xb, 0xa, 0x8, 0xa, 0x8, 0xc, 0xc, 0x7, 0x6, 0x7, 0x6, 0x6, 0x5, 0x4, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x5, 0x5, 0x5, 0x8, 0x8, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0xa, 0xc, 0xb, 0xa, 0x9, 0x6, 0x7, 0x7, 0x8, 0x8, 0x5, 0x4, 0x3, 0x4, 0x4, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x17, 0x14, 0x11, 0x10, 0x11, 0xf, 0xf, 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x14, 0x12, 0xf, 0xd, 0xd, 0xb, 0xa, 0x9, 0x7, 0x7, 0x7, 0x6, 0x6, 0x7, 0x6, 0x6, 0x4, 0x5, 0x4, 0x5, 0x5, 0x5, 0x4, 0x3, 0x4, 0x5, 0x4, 0x3, 0x5, 0x7, 0x8, 0xa, 0xd, 0xf, 0x11, 0x14, 0x10, 0xa, 0x6, 0x5, 0x6, 0x5, 0x5, 0x6, 0x6, 0x6, 0x5, 0x6, 0x7, 0x9, 0xb, 0xe, 0x10, 0xc, 0xa, 0x7, 0x7, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x6, 0x6, 0x6, 0x5, 0x5, 0x6, 0x6, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x6, 0x6, 0x5, 0x6, 0x7, 0x6, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x6, 0x7, 0x9, 0xc, 0xd, 0x10, 0x13, 0x12, 0xd, 0x10, 0xe, 0xe, 0x13, 0x10, 0x10, 0xf, 0xf, 0x10, 0x12, 0x14, 0x14, 0x14, 0x16, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x18, 0x17, 0x16, 0x15, 0x14, 0x17, 0x0, 0x0, 0x16, 0x13, 0x13, 0x12, 0x11, 0x10, 0x10, 0x11, 0x13, 0x11, 0x12, 0x12, 0x15, 0x13, 0x12, 0x14, 0x17, 0x15, 0x15, 0x11, 0x12, 0x11, 0xf, 0x10, 0x12, 0x11, 0x10, 0x12, 0x12, 0x13, 0x11, 0x11, 0x11, 0x12, 0x11, 0x15, 0x16, 0x15, 0x14, 0x16, 0x16, 0x16, 0x16, 0x18, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x13, 0x12, 0x10, 0xf, 0xe, 0xf, 0xd, 0x10, 0x12, 0xe, 0x9, 0x6, 0x8, 0x8, 0x9, 0x8, 0x8, 0xa, 0x8, 0xa, 0x7, 0x5, 0x6, 0x5, 0x4, 0x3, 0x5, 0x6, 0x6, 0x7, 0x6, 0x8, 0x7, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x6, 0x6, 0x7, 0x9, 0x8, 0x7, 0x6, 0x5, 0x5, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4, 0x4, 0x3, 0x3, 0x3, 0x4, 0x2, 0x3, 0x8, 0xe, 0xb, 0xc, 0x7, 0xa, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x16, 0x15, 0x14, 0x14, 0x13, 0x12, 0x11, 0xe, 0xd, 0xb, 0xa, 0xa, 0xa, 0x5, 0x7, 0x7, 0x7, 0x6, 0x5, 0x6, 0x5, 0x6, 0x4, 0x5, 0x8, 0x8, 0x6, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x7, 0x7, 0x9, 0xb, 0xc, 0x9, 0x7, 0x6, 0x5, 0x5, 0x6, 0x3, 0x5, 0x7, 0x7, 0x5, 0x5, 0x6, 0x9, 0x9, 0x9, 0x9, 0xb, 0xd, 0xe, 0xc, 0x7, 0xc, 0xc, 0xc, 0xc, 0xb, 0xc, 0xc, 0xf, 0x10, 0xf, 0x10, 0x10, 0x11, 0x12, 0x12, 0x13, 0x16, 0x16, 0x15, 0x16, 0x16, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x17, 0x17, 0x17, 0x16, 0x16, 0x15, 0x15, 0x15, 0x13, 0x13, 0x15, 0x15, 0x13, 0x12, 0x12, 0x18, 0x0, 0x18, 0x16, 0xf, 0xf, 0x11, 0x13, 0x12, 0x10, 0x13, 0x13, 0x10, 0x10, 0x11, 0x15, 0x0, 0x0, 0x15, 0x11, 0x14, 0x15, 0x13, 0x13, 0x15, 0x15, 0x17, 0x16, 0x17, 0x18, 0x18, 0x17, 0x18, 0x18, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x17, 0x17, 0x16, 0x15, 0x15, 0x13, 0x13, 0x12, 0xf, 0xd, 0xb, 0xb, 0x9, 0x7, 0x5, 0x6, 0x7, 0x6, 0x5, 0x6, 0x7, 0x6, 0x5, 0x5, 0x5, 0x6, 0x6, 0x6, 0x5, 0x6, 0x7, 0x6, 0x8, 0xd, 0xb, 0xb, 0xa, 0x7, 0x6, 0x8, 0x9, 0xb, 0x7, 0x6, 0x5, 0x5, 0x6, 0x5, 0x4, 0x4, 0x5, 0x7, 0x6, 0x5, 0x4, 0x5, 0x4, 0x3, 0x3, 0x4, 0x3, 0x3, 0x9, 0x10, 0x7, 0xa, 0x11, 0x11, 0x11, 0x11, 0xc, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0x11, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x11, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x11, 0x0, 0xa0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x11, 0x11, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x11, 0x11, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0xa0, 0xa0, 0x11, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0x0, 0x11, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xa0, 0xa0, 0xa0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; static GClut splashimage0_clut = { 161, 1, -1, 0xffffff, 0x393939, 0x424242, 0x4a4a4a, 0x525252, 0x5a5a5a, 0x636363, 0x6b6b6b, 0x737373, 0x7b7b7b, 0x848484, 0x8c8c8c, 0x949494, 0x9c9c9c, 0xa5a5a5, 0xadadad, 0xb5b5b5, 0xbdbdbd, 0xc6c6c6, 0xcecece, 0xd6d6d6, 0xdedede, 0xe7e7e7, 0xefefef, 0xf7f7f7, 0xe7e7ef, 0xefeff7, 0xf7f7ff, 0xc6c6ce, 0xd6d6de, 0xb5b5bd, 0xa5a5ad, 0xadadb5, 0xbdbdc6, 0x8c8c94, 0x94949c, 0x9c9ca5, 0x84848c, 0x73737b, 0xe7e7f7, 0xefefff, 0x7b7b84, 0xcecede, 0xd6d6e7, 0xdedeef, 0xc6c6d6, 0xadadbd, 0xb5b5c6, 0xbdbdce, 0x52525a, 0xa5a5b5, 0x4a4a52, 0xe7e7ff, 0x9c9cad, 0xdedef7, 0x9494a5, 0xd6d6ef, 0x42424a, 0xc6c6de, 0xcecee7, 0xbdbdd6, 0xb5b5ce, 0x737384, 0xadadc6, 0xdedeff, 0xd6d6f7, 0xceceef, 0xc6c6e7, 0xbdbdde, 0x84849c, 0xb5b5d6, 0x5a5a6b, 0xadadce, 0xd6d6ff, 0xa5a5c6, 0xcecef7, 0x525263, 0x7b7b94, 0xc6c6ef, 0x9c9cbd, 0x9494b5, 0xbdbde7, 0xb5b5de, 0x8c8cad, 0xadadd6, 0xceceff, 0xa5a5ce, 0xc6c6f7, 0xbdbdef, 0x9c9cc6, 0x5a5a73, 0x9494bd, 0xb5b5e7, 0xadadde, 0x8c8cb5, 0xc6c6ff, 0xa5a5d6, 0x52526b, 0x6b6b8c, 0xbdbdf7, 0x9c9cce, 0xb5b5ef, 0x636384, 0x9494c6, 0xadade7, 0x7b7ba5, 0xa5a5de, 0xbdbdff, 0x73739c, 0x5a5a7b, 0xb5b5f7, 0x9c9cd6, 0x6b6b94, 0xadadef, 0x9494ce, 0x525273, 0x7b7bad, 0xa5a5e7, 0x63638c, 0x8c8cc6, 0xb5b5ff, 0x9c9cde, 0xadadf7, 0x7373a5, 0x8484bd, 0x9494d6, 0xa5a5ef, 0x6b6b9c, 0x5a5a84, 0x7b7bb5, 0x8c8cce, 0xadadff, 0x9c9ce7, 0xa5a5f7, 0x7373ad, 0x8484c6, 0x9494de, 0x8c8cd6, 0x9c9cef, 0x6b6ba5, 0x7b7bbd, 0xa5a5ff, 0x5a5a8c, 0x8484ce, 0x9494e7, 0x63639c, 0x7373b5, 0x8c8cde, 0x9c9cf7, 0x7b7bc6, 0x6b6bad, 0x8484d6, 0x9c9cff, 0x7373bd, 0x6363a5, 0x9494f7, 0x7b7bce, 0x6b6bb5, 0x7373c6, 0x6b6bbd, 0x0 }; static struct _GImage splashimage0_base = { it_index, 15420,360,330,360, (uint8 *) splashimage0_data, &splashimage0_clut, 0xffffffff }; GImage splashimage = { 0, &splashimage0_base }; mensis-080507/stamp.c0100664000076500007650000000023511010406101012574 0ustar gwwgww#include const time_t source_modtime = 1210190835; const char *source_modtime_str = "13:07 7-May-2008"; const char *source_version_str = "080507"; mensis-080507/stamper.c0100664000076500007650000000120707742401532013147 0ustar gwwgww#include #include static const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL }; int main() { time_t now; struct tm *tm; time(&now); tm = localtime(&now); printf( "#include \n\n" ); printf( "const time_t source_modtime = %ld;\n", now); printf( "const char *source_modtime_str = \"%02d:%02d %d-%s-%d\";\n", tm->tm_hour, tm->tm_min, tm->tm_mday, months[tm->tm_mon], tm->tm_year+1900 ); printf( "const char *source_version_str = \"%02d%02d%02d\";\n", tm->tm_year-100, tm->tm_mon+1, tm->tm_mday ); return( 0 ); } mensis-080507/start.c0100664000076500007650000002041511010404440012613 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #include struct lconv localeinfo; char *coord_sep = ","; /* Not part of locale data */ void doversion(void) { extern const char *source_version_str; printf( "mensis %s\n", source_version_str ); exit(0); } static void _dousage(void) { fprintf( stderr, "mensis [options] [fontfiles]\n" ); fprintf( stderr, "\t-nosplash\t\t (no splash screen)\n" ); fprintf( stderr, "\t-display display-name\t (sets the X display)\n" ); fprintf( stderr, "\t-depth val\t\t (sets the display depth if possible)\n" ); fprintf( stderr, "\t-vc val\t\t\t (sets the visual class if possible)\n" ); fprintf( stderr, "\t-sync\t\t\t (syncs the display, debugging)\n" ); #if MyMemory fprintf( stderr, "\t-memory\t\t\t (turns on memory checks, debugging)\n" ); #endif fprintf( stderr, "\t-usage\t\t\t (displays this message, and exits)\n" ); fprintf( stderr, "\t-help\t\t\t (displays this message, invokes netscape)\n" ); fprintf( stderr, "\t-version\t\t\t (displays the version and exits)\n" ); fprintf( stderr, "\n" ); fprintf( stderr, "mensis will read truetype, opentype and truetype collection files\n" ); fprintf( stderr, "\tand allow you to modify some of the tables in those font.\n" ); fprintf( stderr, "For more information see:\n\thttp://mensis.sourceforge.net/\n" ); } static void dousage(void) { _dousage(); exit(0); } static void dohelp(void) { _dousage(); help("index.html"); exit(0); } static void initrand(void) { struct timeval tv; gettimeofday(&tv,NULL); srand(tv.tv_usec); } static void BuildCharHook(GDisplay *gd) { GWidgetCreateInsChar(); } extern GImage splashimage; static GWindow splashw; static GTimer *splasht; struct delayed_event { void *data; void (*func)(void *); }; void DelayEvent(void (*func)(void *), void *data) { struct delayed_event *info = gcalloc(1,sizeof(struct delayed_event)); info->data = data; info->func = func; GDrawRequestTimer(splashw,100,0,info); } static void DoDelayedEvents(GEvent *event) { GTimer *t = event->u.timer.timer; struct delayed_event *info = (struct delayed_event *) (event->u.timer.userdata); (info->func)(info->data); GDrawCancelTimer(t); } static int splash_e_h(GWindow gw, GEvent *event) { static int splash_cnt; GRect old; if ( event->type == et_expose ) { GDrawPushClip(gw,&event->u.expose.rect,&old); GDrawDrawImage(gw,&splashimage,NULL,0,0); GDrawPopClip(gw,&old); } else if ( event->type == et_map ) { splash_cnt = 0; } else if ( event->type == et_timer && event->u.timer.timer==splasht ) { if ( ++splash_cnt==1 ) GDrawResize(gw,splashimage.u.image->width,splashimage.u.image->height-15); else if ( splash_cnt==2 ) GDrawResize(gw,splashimage.u.image->width,splashimage.u.image->height); else if ( splash_cnt>=7 ) { GDrawSetVisible(gw,false); GDrawCancelTimer(splasht); } } else if ( event->type == et_timer ) { DoDelayedEvents(event); } else if ( event->type==et_char || event->type==et_mousedown || event->type==et_close ) GDrawSetVisible(gw,false); return( true ); } static void AddR(char *prog, char *name, char *val ) { char *full = galloc(strlen(name)+strlen(val)+4); strcpy(full,name); strcat(full,": "); strcat(full,val); GResourceAddResourceString(full,prog); } int main( int argc, char **argv ) { int i; GRect pos; GWindowAttrs wattrs; extern const char *source_modtime_str; int splash = 1; int any; char *display = NULL; fprintf( stderr, "Copyright (c) 2001-2003 by George Williams.\n Executable based on sources from %s.\n", source_modtime_str ); setlocale(LC_ALL,""); localeinfo = *localeconv(); coord_sep = ","; if ( *localeinfo.decimal_point=='.' ) coord_sep=","; else if ( *localeinfo.decimal_point!='.' ) coord_sep=" "; GResourceAddResourceString(NULL,argv[0]); LoadPrefs(); CheckIsScript(argc,argv); /* Will run the script and exit if it is a script */ for ( i=1; iwidth; pos.height = splashimage.u.image->height-30; splashw = GDrawCreateTopWindow(NULL,&pos,splash_e_h,NULL,&wattrs); if ( splash ) { GDrawSetVisible(splashw,true); GDrawSync(NULL); GDrawProcessPendingEvents(NULL); InitCursors(); GDrawProcessPendingEvents(NULL); splasht = GDrawRequestTimer(splashw,1000,1000,NULL); } else InitCursors(); GDrawProcessPendingEvents(NULL); GDrawSetBuildCharHooks(BuildCharHook,NULL); any = 0; for ( i=1; i #include #include #include #include #include int getushort(FILE *ttf) { int ch1 = getc(ttf); int ch2 = getc(ttf); if ( ch2==EOF ) return( EOF ); return( (ch1<<8)|ch2 ); } int32 getlong(FILE *ttf) { int ch1 = getc(ttf); int ch2 = getc(ttf); int ch3 = getc(ttf); int ch4 = getc(ttf); if ( ch4==EOF ) return( EOF ); return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 ); } real getfixed(FILE *ttf) { int32 val = getlong(ttf); int mant = val&0xffff; /* This oddity may be needed to deal with the first 16 bits being signed */ /* and the low-order bits unsigned */ return( (real) (val>>16) + (mant/65536.0) ); } /* In table version numbers, the high order nibble of mantissa is in bcd, not hex */ /* I've no idea whether the lower order nibbles should be bcd or hex */ /* But let's assume some consistancy... */ real getvfixed(FILE *ttf) { int32 val = getlong(ttf); int mant = val&0xffff; mant = ((mant&0xf000)>>12)*1000 + ((mant&0xf00)>>8)*100 + ((mant&0xf0)>>4)*10 + (mant&0xf); return( (real) (val>>16) + (mant/10000.0) ); } real get2dot14(FILE *ttf) { int32 val = getushort(ttf); int mant = val&0x3fff; /* This oddity may be needed to deal with the first 2 bits being signed */ /* and the low-order bits unsigned */ return( (real) ((val<<16)>>(16+14)) + (mant/16384.0) ); } Table *TableFind(TtfFont *tfont, int name) { int i; for ( i=0; itbl_cnt; ++i ) { if ( tfont->tbls[i]->name==name) return( tfont->tbls[i] ); } return( NULL ); } void TableFillup(Table *tbl) { int i; if ( tbl==NULL ) return; if ( tbl->data!=NULL ) return; tbl->data = galloc( ((tbl->len+3)/4)*4 ); fseek(tbl->container->file,tbl->start,SEEK_SET); fread(tbl->data,1,tbl->len,tbl->container->file); for ( i=tbl->len; i<((tbl->len+3)/4)*4; ++i ) tbl->data[i] = 0; } int tgetushort(Table *tab,int pos) { int ch1 = tab->data[pos]; int ch2 = tab->data[pos+1]; if ( pos+1>=tab->newlen ) return( EOF ); return( (ch1<<8)|ch2 ); } int32 tgetlong(Table *tab,int pos) { int ch1 = tab->data[pos]; int ch2 = tab->data[pos+1]; int ch3 = tab->data[pos+2]; int ch4 = tab->data[pos+3]; if ( pos+3>=tab->newlen ) return( EOF ); return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 ); } real tgetfixed(Table *tab,int pos) { int32 val = tgetlong(tab,pos); int mant = val&0xffff; /* This oddity may be needed to deal with the first 16 bits being signed */ /* and the low-order bits unsigned */ return( (real) (val>>16) + (mant/65536.0) ); } /* In table version numbers, the high order nibble of mantissa is in bcd, not hex */ /* I've no idea whether the lower order nibbles should be bcd or hex */ /* But let's assume some consistancy... */ real tgetvfixed(Table *tab,int pos) { int32 val = tgetlong(tab,pos); int mant = val&0xffff; mant = ((mant&0xf000)>>12)*1000 + ((mant&0xf00)>>8)*100 + ((mant&0xf0)>>4)*10 + (mant&0xf); return( (real) (val>>16) + (mant/10000.0) ); } real tget2dot14(Table *tab,int pos) { int32 val = tgetushort(tab,pos); int mant = val&0x3fff; /* This oddity may be needed to deal with the first 2 bits being signed */ /* and the low-order bits unsigned */ return( (real) ((val<<16)>>(16+14)) + (mant/16384.0) ); } int ptgetushort(uint8 *data) { int ch1 = data[0]; int ch2 = data[1]; return( (ch1<<8)|ch2 ); } int32 ptgetlong(uint8 *data) { int ch1 = data[0]; int ch2 = data[1]; int ch3 = data[2]; int ch4 = data[3]; return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 ); } real ptgetfixed(uint8 *data) { int32 val = ptgetlong(data); int mant = val&0xffff; /* This oddity may be needed to deal with the first 16 bits being signed */ /* and the low-order bits unsigned */ return( (real) (val>>16) + (mant/65536.0) ); } real ptgetvfixed(uint8 *data) { int32 val = ptgetlong(data); int mant = val&0xffff; mant = ((mant&0xf000)>>12)*1000 + ((mant&0xf00)>>8)*100 + ((mant&0xf0)>>4)*10 + (mant&0xf); return( (real) (val>>16) + (mant/10000.0) ); } void putushort(FILE *file,uint16 val) { putc((val>>8),file); putc((val&0xff),file); } void putshort(FILE *file,uint16 val) { putc((val>>8),file); putc((val&0xff),file); } void putlong(FILE *file,uint32 val) { putc((val>>24)&0xff,file); putc((val>>16)&0xff,file); putc((val>>8)&0xff,file); putc((val&0xff),file); } void put2d14(FILE *file,real dval) { int val; int mant; val = floor(dval); mant = floor(16384.*(dval-val)); val = (val<<14) | mant; putshort(file,val); } void ptputushort(uint8 *data, uint16 val) { data[0] = (val>>8); data[1] = val&0xff; } void ptputlong(uint8 *data, uint32 val) { data[0] = (val>>24); data[1] = (val>>16)&0xff; data[2] = (val>>8)&0xff; data[3] = val&0xff; } void ptputfixed(uint8 *data,real val) { int ints = floor(val); int mant = (val-ints)*65536; int ival = (ints<<16) | mant; ptputlong(data,ival); } void ptputvfixed(uint8 *data,real val) { int ints = floor(val); int mant = (val-ints)*10000; int ival = ints<<16; ival |= (mant/1000)<<12; ival |= (mant/100%10)<<8; ival |= (mant/10%10)<<4; ival |= (mant%10); ptputlong(data,ival); } static unichar_t *_readustring(FILE *ttf,int offset,int len) { long pos = ftell(ttf); unichar_t *str, *pt; int i, ch; fseek(ttf,offset,SEEK_SET); str = pt = galloc((sizeof(unichar_t)/2)*len+sizeof(unichar_t)); for ( i=0; itbl_cnt; ++i ) if ( tf->tbls[i]->name == CHR('m','a','x','p')) break; if ( i==tf->tbl_cnt ) return( 0 ); fseek(ttf,tf->tbls[i]->start+4,SEEK_SET); val = getushort(ttf); fseek(ttf,pos,SEEK_SET); return(val); } static int checkfstype(FILE *ttf,TtfFont *tf) { long pos = ftell(ttf); int i, val; for ( i=0; itbl_cnt; ++i ) if ( tf->tbls[i]->name == CHR('O','S','/','2')) break; if ( i==tf->tbl_cnt ) return( true ); fseek(ttf,tf->tbls[i]->start+8,SEEK_SET); val = getushort(ttf); fseek(ttf,pos,SEEK_SET); if ( (val&0xff)==0x0002 ) { static int buts[] = { _STR_Yes, _STR_No, 0 }; if ( GWidgetAskR(_STR_RestrictedFont,buts,1,1,_STR_RestrictedRightsFont)==1 ) { return( false ); } } return(true); } Table *TTFFindTable(TtfFont *tf, uint32 name) { int i; for ( i=0; itbl_cnt; ++i ) if ( tf->tbls[i]->name == name ) break; if ( i==tf->tbl_cnt ) return( NULL ); return( tf->tbls[i] ); } static unichar_t *TTFGetFontName(FILE *ttf,TtfFont *tf) { int i,num; int32 nameoffset, stringoffset; int plat, spec, lang, name, len, off, val; int fullval, fullstr, fulllen, famval, famstr, famlen; for ( i=0; itbl_cnt; ++i ) if ( tf->tbls[i]->name == CHR('n','a','m','e')) break; if ( i==tf->tbl_cnt ) return( uc_copy("")); nameoffset = tf->tbls[i]->start; fseek(ttf,nameoffset,SEEK_SET); /* format = */ getushort(ttf); num = getushort(ttf); stringoffset = nameoffset+getushort(ttf); fullval = famval = 0; for ( i=0; ifullval ) { fullval = val; fullstr = off; fulllen = len; if ( val==2 ) break; } else if ( name==1 && val>famval ) { famval = val; famstr = off; famlen = len; } } if ( fullval==0 ) { if ( famval==0 ) return( uc_copy("") ); fullstr = famstr; fulllen = famlen; } return( _readustring(ttf,stringoffset+fullstr,fulllen)); } static void free_enctabledata(void *_data) { struct enctab *enc, *next; for ( enc=_data; enc!=NULL; enc = next ) { next = enc->next; free(enc->enc); if ( enc->uenc!=enc->enc ) /* Unicode fonts can share enc and uenc */ free(enc->uenc); free(enc); } } struct subhead { uint16 first, cnt, delta, rangeoff; }; /* a sub header in 8/16 cmap table */ static void write_enctabledata(FILE *tottf,Table *cmap) { /* !!!! */ } void readttfencodings(struct ttffont *font) { int i,j; int nencs, version; int len; uint16 table[256]; int segCount; uint16 *endchars, *startchars, *delta, *rangeOffset, *glyphs; int index; Table *tab; const unichar_t *trans=NULL; struct enctab *enc, *last=NULL, *best=NULL; int bestval=0; int fpos; /* find the cmap (encoding) table */ for ( i=0; itbl_cnt; ++i ) if ( font->tbls[i]->name == CHR('c','m','a','p')) break; if ( i==font->tbl_cnt ) return; tab = font->tbls[i]; TableFillup(tab); version = tgetushort(tab,0); nencs = tgetushort(tab,2); fpos = 4; for ( i=0; iplatform = tgetushort(tab,fpos); fpos += 2; enc->specific = tgetushort(tab,fpos); fpos += 2; enc->offset = tgetlong(tab,fpos); fpos += 4; if ( last==NULL ) tab->table_data = enc; else last->next = enc; last = enc; } tab->free_tabledata = free_enctabledata; tab->write_tabledata = write_enctabledata; /* read in each encoding table (presuming we understand it) */ for ( enc = tab->table_data; enc!=NULL; enc=enc->next ) { enc->cnt = font->glyph_cnt; enc->enc = galloc(enc->cnt*sizeof(unichar_t)); memset(enc->enc,'\377',enc->cnt*sizeof(unichar_t)); fpos = enc->offset; enc->format = tgetushort(tab,fpos); fpos += 2; enc->len = tgetushort(tab,fpos); fpos += 2; enc->language = tgetushort(tab,fpos); fpos += 2; /* or version for ms */ if ( enc->format==0 ) { for ( i=0; ilen-6; ++i ) table[i] = tab->data[fpos++]; for ( i=0; i<256 && table[i]cnt && ilen-6; ++i ) enc->enc[table[i]] = i; } else if ( enc->format==4 ) { segCount = tgetushort(tab,fpos)/2; fpos+=2; /* searchRange = */ tgetushort(tab,fpos); fpos+=2; /* entrySelector = */ tgetushort(tab,fpos); fpos+=2; /* rangeShift = */ tgetushort(tab,fpos); fpos+=2; endchars = galloc(segCount*sizeof(uint16)); for ( i=0; ilen- 8*sizeof(uint16) - 4*segCount*sizeof(uint16); /* that's the amount of space left in the subtable and it must */ /* be filled with glyphIDs */ glyphs = galloc(len); for ( i=0; ienc[(uint16) (j+delta[i])]==0xffffffff ) enc->enc[(uint16) (j+delta[i])] = j; /* Only use first enc, may be several */ } } else if ( rangeOffset[i]!=0xffff ) { /* It isn't explicitly mentioned by a rangeOffset of 0xffff*/ /* means no glyph */ for ( j=startchars[i]; j<=endchars[i]; ++j ) { index = glyphs[ (i-segCount+rangeOffset[i]/2) + j-startchars[i] ]; if ( index!=0 ) { index = (unsigned short) (index+delta[i]); if ( index>=enc->cnt ) /*GDrawIError( "Bad index" );*/ /* Actually MS uses this in kaiu.ttf to mean */ /* notdef */; else if ( enc->enc[index]==0xffffffff ) enc->enc[index] = j; } } } } free(glyphs); free(rangeOffset); free(delta); free(startchars); free(endchars); } else if ( enc->format==6 ) { /* Apple's unicode format */ int first, count; first = tgetushort(tab,fpos); fpos+=2; count = tgetushort(tab,fpos); fpos+=2; for ( i=0; ienc[j] = first+i; } } else if ( enc->format==2 ) { int max_sub_head_key = 0, cnt, last; struct subhead *subheads; for ( i=0; i<256; ++i ) { table[i] = tgetushort(tab,fpos)/8; fpos+=2; /* Sub-header keys */ if ( table[i]>max_sub_head_key ) max_sub_head_key = table[i]; /* The entry is a byte pointer, I want a pointer in units of struct subheader */ } subheads = galloc((max_sub_head_key+1)*sizeof(struct subhead)); for ( i=0; i<=max_sub_head_key; ++i ) { subheads[i].first = tgetushort(tab,fpos); fpos+=2; subheads[i].cnt = tgetushort(tab,fpos); fpos+=2; subheads[i].delta = tgetushort(tab,fpos); fpos+=2; subheads[i].rangeoff = (tgetushort(tab,fpos)- (max_sub_head_key-i)*sizeof(struct subhead)- sizeof(short))/sizeof(short); fpos += 2; } cnt = (enc->len-(fpos-enc->offset))/sizeof(short); /* The count is the number of glyph indexes to read. it is the */ /* length of the entire subtable minus that bit we've read so far */ glyphs = galloc(cnt*sizeof(short)); for ( i=0; i=subheads[0].first+subheads[0].cnt || subheads[0].rangeoff+(i-subheads[0].first)>=cnt ) index = 0; else if ( (index = glyphs[subheads[0].rangeoff+(i-subheads[0].first)])!= 0 ) index = (uint32) (index+subheads[0].delta); /* I assume the single byte codes are just ascii or latin1*/ if ( index!=0 && indexcnt ) enc->enc[index] = i; } else { int k = table[i]; for ( j=0; j=cnt ) index = 0; else if ( (index = glyphs[subheads[k].rangeoff+j])!= 0 ) index = (uint16) (index+subheads[k].delta); if ( index!=0 && indexcnt ) enc->enc[index] = (i<<8)|(j+subheads[k].first); } if ( last==-1 ) last = i; } } free(subheads); free(glyphs); } else { free(enc->enc); enc->enc=NULL; if ( enc->format==8 ) { fprintf(stderr,"I don't support mixed 16/32 bit characters (no unicode surogates)"); } else if ( enc->format==10 || enc->format==12 ) { fprintf(stderr,"I don't support 32 bit characters"); } else { fprintf(stderr,"I don't understand this format type at all in a cmap table %d\n", enc->format ); } } } /* Convert each table to unicode (if we can) */ for ( enc = tab->table_data; enc!=NULL; enc=enc->next ) if ( enc->enc!=NULL ) { enum charset type = em_none; switch ( enc->platform ) { case 0: /* Unicode */ case 2: /* Obsolete ISO 10646 */ type = em_unicode; /* the various specific values say what version of unicode. I'm not */ /* keeping track of that (no mapping table of unicode1->3) */ /* except for CJK it's mostly just extensions */ break; case 1: switch ( enc->specific ) { case 0: type = em_mac; break; /* Mac Roman */ /* 1, Japanese */ /* 2, Trad Chinese */ /* 3, Korean */ /* 4, Arabic */ /* 5, Hebrew */ /* 6, Greek */ /* 7, Russian */ /* 8, RSymbol */ /* 9, Devanagari */ /* 10, Gurmukhi */ /* 11, Gujarati */ /* 12, Oriya */ /* 13, Bengali */ /* 14, Tamil */ /* 15, Telugu */ /* 16, Kannada */ /* 17, Malayalam */ /* 18, Sinhalese */ /* 19, Burmese */ /* 20, Khmer */ /* 21, Thai */ /* 22, Laotian */ /* 23, Georgian */ /* 24, Armenian */ /* 25, Simplified Chinese */ /* 26, Tibetan */ /* 27, Mongolian */ /* 28, Geez */ /* 29, Slavic */ /* 30, Vietnamese */ /* 31, Sindhi */ } break; case 3: /* MS */ switch ( enc->specific ) { case 0: type = em_symbol; break; case 1: type = em_unicode; break; case 2: type = em_jis208; break; /* 3, PRC */ case 4: type = em_big5; break; case 5: type = em_ksc5601; break; case 6: type = em_johab; break; case 10: type = em_unicode; break; /* 4byte iso10646 */ } break; } if ( type==em_unicode ) enc->uenc = enc->enc; else if ( type==em_symbol ) /* not really symbol */ enc->uenc = enc->enc; else if ( type!=em_none ) { enc->uenc = galloc(enc->cnt*sizeof(unichar_t)); memset(enc->uenc,'\377',enc->cnt*sizeof(unichar_t)); trans = NULL; if ( type==em_mac ) trans = unicode_from_mac; for ( i=0; icnt; ++i ) if ( enc->enc[i]!=0xffffffff ) { if ( trans!=NULL ) enc->uenc[i] = trans[enc->enc[i]]; else if ( type==em_big5 ) { if ( enc->enc[i]>0xa100 ) enc->uenc[i] = unicode_from_big5[enc->enc[i]-0xa100]; else if ( enc->enc[i]>0x100 ) enc->uenc[i] = 0xffff; else enc->uenc[i] = enc->enc[i]; } else if ( type==em_johab ) { if ( enc->enc[i]>0x8400 ) enc->uenc[i] = unicode_from_johab[enc->enc[i]-0x8400]; else if ( enc->enc[i]>0x100 ) enc->uenc[i] = 0xffff; else enc->uenc[i] = enc->enc[i]; } else if ( type == em_ksc5601 ) { int val = enc->enc[i]; if ( val>0xa1a1 ) { val -= 0xa1a1; val = (val>>8)*94 + (val&0xff); val = unicode_from_ksc5601[val]; if ( val==0 ) val = -1; } else if ( val>0x100 ) val = -1; enc->uenc[i] = val; } else if ( type==em_jis208 ) { int val = enc->enc[i]; if ( val<=127 ) { /* Latin */ if ( val=='\\' ) val = 0xa5; /* Yen */ } else if ( val>=161 && val<=223 ) { /* Katakana */ val = unicode_from_jis201[val]; } else { int ch1 = val>>8, ch2 = val&0xff; if ( ch1 >= 129 && ch1<= 159 ) ch1 -= 112; else ch1 -= 176; ch1 <<= 1; if ( ch2>=159 ) ch2-= 126; else if ( ch2>127 ) { --ch1; ch2 -= 32; } else { --ch1; ch2 -= 31; } val = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]; } enc->uenc[i] = val; } else { GDrawIError("Eh? Unsupported encoding %d", type ); } } } } /* Find the best table we can */ for ( enc = tab->table_data; enc!=NULL; enc=enc->next ) { if ( enc->uenc==NULL ) /* Unparseable, unuseable */; else if (( enc->platform==3 && enc->specific==1 ) || /* MS Unicode */ (enc->platform==0 && (enc->specific==0 || enc->specific==3))) { /* Apple unicode */ bestval = 3; best = enc; } else if ( enc->platform==3 && bestval!=3 ) { /* second best is symbol/cjk */ best = enc; bestval = 2; } else if ( (enc->platform==1 && enc->specific==0 ) && bestval<2 ) { /* Mac 8bit if no unicode */ best = enc; bestval = 1; } } font->enc = best; } static Table *readtablehead(FILE *ttf,TtfFile *f) { int32 name = getlong(ttf); int32 checksum = getlong(ttf); int32 offset = getlong(ttf); int32 length = getlong(ttf); Table *table; int i,j; /* In a TTC file some tables may be shared, check through previous fonts */ /* in the file to see if we've got this already */ for ( i=0; ifont_cnt && f->fonts[i]!=NULL; ++i ) { for ( j=0; jfonts[i]->tbl_cnt; ++j ) { table = f->fonts[i]->tbls[j]; if ( table->start==offset && table->len==length ) { if ( table->name==name ) return( table ); /* EBDT/bdat, EBLC/bloc use the same structure and could share tables */ for ( i=0; iothernames)/sizeof(table->othernames[0]); ++i ) { if ( table->othernames[i]==name || table->othernames[i]==0 ) { table->othernames[i] = name; return( table ); } } } } } table = gcalloc(1,sizeof(Table)); table->name = name; if ( name==CHR('g','l','y','f') || name==CHR('l','o','c','a') ) table->special = true; table->oldchecksum = checksum; table->start = offset; table->len = table->newlen = length; table->container = f; return( table ); } static TtfFont *_readttfheader(FILE *ttf,TtfFile *f) { TtfFont *tf = gcalloc(1,sizeof(TtfFont)); int i; tf->version = getlong(ttf); tf->tbl_cnt = tf->tbl_max = getushort(ttf); tf->container = f; /* searchRange = */ getushort(ttf); /* entrySelector = */ getushort(ttf); /* rangeshift = */ getushort(ttf); tf->tbls = galloc(tf->tbl_cnt*sizeof(Table *)); for ( i=0; itbl_cnt; ++i ) tf->tbls[i] = readtablehead(ttf,f); tf->fontname = TTFGetFontName(ttf,tf); if ( tf->fontname==NULL ) fprintf(stderr, "This font has no name. That will cause problems\n" ); tf->glyph_cnt = TTFGetGlyphCnt(ttf,tf); readttfencodings(tf); return( tf ); } static TtfFile *readttfheader(FILE *ttf,char *filename) { TtfFile *f = gcalloc(1,sizeof(TtfFile)); f->filename = copy(filename); f->file = ttf; f->font_cnt = 1; f->fonts = gcalloc(1,sizeof(TtfFont *)); f->fonts[0] = _readttfheader(ttf,f); if ( !checkfstype(ttf,f->fonts[0])) return( NULL ); return( f ); } static TtfFile *readttcfheader(FILE *ttf,char *filename) { TtfFile *f = gcalloc(1,sizeof(TtfFile)); int i; int32 *offsets; /* TTCF version = */ getlong(ttf); f->filename = copy(filename); f->file = ttf; f->is_ttc = true; f->font_cnt = getlong(ttf); f->fonts = gcalloc(f->font_cnt,sizeof(TtfFont *)); offsets = galloc(f->font_cnt*sizeof(int32)); for ( i=0; ifont_cnt; ++i ) offsets[i] = getlong(ttf); for ( i = 0; ifont_cnt; ++i ) { fseek(ttf,offsets[i],SEEK_SET); f->fonts[i] = _readttfheader(ttf,f); } free(offsets); if ( !checkfstype(ttf,f->fonts[0])) return( NULL ); return( f ); } TtfFile *ReadTtfFont(char *filename) { FILE *ttf = fopen(filename,"rb"); int32 version; char absolute[1025]; if ( ttf==NULL ) return( NULL ); if ( *filename!='/' ) filename = GFileGetAbsoluteName(filename,absolute,sizeof(absolute)); version=getlong(ttf); if ( version==CHR('t','t','c','f')) return( readttcfheader(ttf,filename)); if ( version==0x00010000 || version == CHR('O','T','T','O') || version == CHR('t','r','u','e')) { fseek(ttf,0,SEEK_SET); return( readttfheader(ttf,filename)); } /* We leave the file open for further reads, unless it's not a ttf file */ fclose(ttf); return( NULL ); } void TTFFileFreeData(TtfFile *ttf) { int i,j; TtfFont *font; Table *tab; for ( i=0; ifont_cnt; ++i ) { font = ttf->fonts[i]; for ( j=0; jtbl_cnt; ++j ) { tab = font->tbls[j]; if ( tab->table_data ) { (tab->free_tabledata)( tab->table_data ); tab->table_data = NULL; } if ( tab->data ) { free( tab->data ); tab->data = NULL; } tab->changed = tab->td_changed = false; } } ttf->changed = ttf->gcchanged = false; } void TTFFileFree(TtfFile *ttf) { int i,j,cnt; Table **tabs; TtfFont *font; TTFFileFreeData(ttf); for ( i=cnt=0; ifont_cnt; ++i ) cnt += ttf->fonts[i]->tbl_cnt; tabs = galloc((cnt+1)*sizeof(Table *)); for ( i=cnt=0; ifont_cnt; ++i ) { font = ttf->fonts[i]; for ( j=0; jtbl_cnt; ++j ) { if ( !font->tbls[j]->freeing ) { font->tbls[j]->freeing = true; tabs[cnt++] = font->tbls[j]; } } free(font->tbls); free(font); } for ( i=0; ifonts); free(ttf); } mensis-080507/ttffont.h0100664000076500007650000001362011010404052013146 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _TTFFONT_H #define _TTFFONT_H #include /* For GDrawIError */ #include #ifdef USE_DOUBLE # define real double #else # define real float #endif typedef struct val { enum val_type { v_int, v_str, v_unicode, v_lval, v_arr, v_arrfree, v_ttf32pt, v_ttf16pt, v_ttf8pt, v_tag, v_void } type; union { int32 ival; char *sval; struct val *lval; struct array *aval; uint8 *ttfptval; /* These point into ttf tables */ /* They may be 1,2,4 bytes long. They may be misaligned */ /* They will always be big-endian */ } u; } Val; /* Used by scripting */ #define CHAR_UNDEF 0xffffffff struct enctab { int platform, specific, offset; int format, len, language; /* MS says this is a version, apple/adobe says a language. */ /* MBZ for ms platform, apple,adobe says 0 is "language independant" */ int cnt; unichar_t *uenc; /* map from glyph num => unicode */ unichar_t *enc; /* map from glyph num => char sequence */ struct enctab *next; }; /* The EBDT and bdat tags could reasonable point to the same table */ /* as could EBLC and bloc. Why haven't Apple and MS used the same tag? */ /* they use the same formats... */ /* The same table may be used by several fonts */ typedef struct table { int32 name; int32 start; int32 len; int32 newlen; /* actual length, but data will be */ uint8 *data; /* padded out to 32bit boundary with 0*/ int32 oldchecksum; int32 newstart; /* used during saving */ int32 newchecksum; /* used during saving */ int32 othernames[4]; /* for bdat/EBDT etc. */ unsigned int changed: 1; /* someone has changed either data or table_data */ unsigned int td_changed: 1; /* it's table_data that has changed */ unsigned int special: 1; /* loca, hmtx, glyph all are bound together */ unsigned int new: 1; /* table is new, nothing to revert to */ unsigned int freeing: 1; /* table has been put on list of tables to be freed */ unsigned int inserted: 1; /* table has been inserted into ordered table list (for save) */ unsigned int processed: 1; int orderingval; struct ttffile *container; /* No pointer to the font, because a given table may be part of several */ /* different fonts in a ttc */ struct tableview *tv; void *table_data; void (*free_tabledata)(void *); void (*write_tabledata)(FILE *ttf,struct table *tab); } Table; typedef struct ttffont { unichar_t *fontname; int32 version; int tbl_cnt, tbl_max; Table **tbls; int32 glyph_cnt; struct enctab *enc; struct ttffile *container; unsigned int expanded: 1; /* should be in TtfView */ int32 version_pos; } TtfFont; typedef struct ttffile { char *filename; FILE *file; int font_cnt; TtfFont **fonts; int is_ttc: 1; int changed: 1; unsigned int gcchanged: 1; /* If the glyph count in any font changes then set this... */ unsigned int backedup: 1; /* a backup file has been created */ struct ttfview *tfv; } TtfFile; extern int getushort(FILE *ttf); extern int32 getlong(FILE *ttf); extern real getfixed(FILE *ttf); extern real getvfixed(FILE *ttf); /* Reads table version numbers which are some weird (undocumented) bcd format */ extern real get2dot14(FILE *ttf); Table *TableFind(TtfFont *tfont, int name); void TableFillup(Table *tbl); int tgetushort(Table *tab,int pos); int32 tgetlong(Table *tab,int pos); real tgetfixed(Table *tab,int pos); real tgetvfixed(Table *tab,int pos); real tget2dot14(Table *tab,int pos); int ptgetushort(uint8 *data); int32 ptgetlong(uint8 *data); real ptgetfixed(uint8 *data); real ptgetvfixed(uint8 *data); void putushort(FILE *file,uint16 val); void putshort(FILE *file,uint16 val); void putlong(FILE *file,uint32 val); void put2d14(FILE *file,real dval); void ptputushort(uint8 *data, uint16 val); void ptputlong(uint8 *data, uint32 val); void ptputfixed(uint8 *data,real val); void ptputvfixed(uint8 *data,real val); void readttfencodings(struct ttffont *font); void TTFFileFreeData(TtfFile *ttf); void TTFFileFree(TtfFile *ttf); extern TtfFile *ReadTtfFont(char *filename); extern TtfFile *LoadTtfFont(char *filename); extern int TtfSave(TtfFile *ttf,char *newpath); Table *TTFFindTable(TtfFont *tf, uint32 name); uint8 *copyregion(FILE *to, FILE *from, int32 start, int32 len,uint8 *buf); int32 filecheck(FILE *file); int32 figurecheck(FILE *file,int32 start, int32 lcnt); struct conicchar; FILE *Ttf_MakeTinyFont(struct conicchar *cc); #endif extern void CheckIsScript(int argc, char *argv[]); mensis-080507/ttfinstrs.h0100664000076500007650000001500707742401532013544 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _TTFINSTRS_H #define _TTFINSTRS_H enum ttf_instructions { ttf_npushb=0x40, ttf_npushw=0x41, ttf_pushb=0xb0, ttf_pushw=0xb8, ttf_aa=0x7f, ttf_abs=0x64, ttf_add=0x60, ttf_alignpts=0x27, ttf_alignrp=0x3c, ttf_and=0x5a, ttf_call=0x2b, ttf_ceiling=0x67, ttf_cindex=0x25, ttf_clear=0x22, ttf_debug=0x4f, ttf_deltac1=0x73, ttf_deltac2=0x74, ttf_deltac3=0x75, ttf_deltap1=0x5d, ttf_deltap2=0x71, ttf_deltap3=0x72, ttf_depth=0x24, ttf_div=0x62, ttf_dup=0x20, ttf_eif=0x59, ttf_else=0x1b, ttf_endf=0x2d, ttf_eq=0x54, ttf_even=0x57, ttf_fdef=0x2c, ttf_flipoff=0x4e, ttf_flipon=0x4d, ttf_flippt=0x80, ttf_fliprgoff=0x82, ttf_fliprgon=0x81, ttf_floor=0x66, ttf_gc=0x46, ttf_getinfo=0x88, ttf_gfv=0x0d, ttf_gpv=0x0c, ttf_gt=0x52, ttf_gteq=0x53, ttf_idef=0x89, ttf_if=0x58, ttf_instctrl=0x8e, ttf_ip=0x39, ttf_isect=0x0f, ttf_iup=0x30, ttf_jmpr=0x1c, ttf_jrof=0x79, ttf_jrot=0x78, ttf_loopcall=0x2a, ttf_lt=0x50, ttf_lteq=0x51, ttf_max=0x8b, ttf_md=0x49, ttf_mdap=0x2e, ttf_mdrp=0xc0, ttf_miap=0x3e, ttf_min=0x8c, ttf_mindex=0x26, ttf_mirp=0xe0, ttf_mppem=0x4b, ttf_mps=0x4c, ttf_msirp=0x3a, ttf_mul=0x63, ttf_neg=0x65, ttf_neq=0x55, ttf_not=0x5c, ttf_nround=0x6c, ttf_odd=0x56, ttf_or=0x5b, ttf_pop=0x21, ttf_rcvt=0x45, ttf_rdtg=0x7d, ttf_roff=0x7a, ttf_roll=0x8a, ttf_round=0x68, ttf_rs=0x43, ttf_rtdg=0x3d, ttf_rtg=0x18, ttf_rthg=0x19, ttf_rutg=0x7c, ttf_s45round=0x77, ttf_sangw=0x7e, ttf_scanctrl=0x85, ttf_scantype=0x8d, ttf_scfs=0x48, ttf_scvtci=0x1d, ttf_sdb=0x5e, ttf_sdpvtl=0x86, ttf_sds=0x5f, ttf_sfvfs=0x0b, ttf_sfvtca=0x04, ttf_sfvtl=0x08, ttf_sfvtpv=0x0e, ttf_shc=0x34, ttf_shp=0x32, ttf_shpix=0x38, ttf_shz=0x36, ttf_sloop=0x17, ttf_smd=0x1a, ttf_spvfs=0x0a, ttf_spvtca=0x02, ttf_spvtl=0x06, ttf_sround=0x76, ttf_srp0=0x10, ttf_srp1=0x11, ttf_srp2=0x12, ttf_ssw=0x1f, ttf_sswci=0x1e, ttf_sub=0x61, ttf_svtca=0x00, ttf_swap=0x23, ttf_szp0=0x13, ttf_szp1=0x14, ttf_szp2=0x15, ttf_szps=0x16, ttf_utp=0x29, ttf_wcvtf=0x70, ttf_wcvtp=0x44, ttf_ws=0x42 }; #define SUB_MAX 30 enum ttf_ptflags { pt_oncurve=1, pt_xtouched=2, pt_ytouched=4, pt_endcontour=8 }; struct ttfstate { int idefcnt, fdefcnt, stack_max; struct ifdef { uint8 *data; int len; } *idefs, *fdefs; int32 *stack; int sp; int32 *storage; int32 store_max; int32 rp0, rp1, rp2; /* sometimes zp* is called gep* */ int32 zp0, zp1, zp2; /* only 0/1 values allowed */ int32 loop; /* default 1 */ enum rounding { rnd_half=0, /* rnd(z-.5)+.5 */ rnd_grid=1, /* rnd(z) */ rnd_dbl=2, /* rnd(2*z)/2 */ rnd_down=3, /* floor(z) */ rnd_up=4, /* ceil(z) */ rnd_off=5, /* z (no rounding) */ rnd_sround=6, rnd_sround45 } rounding; int sround_value; int32 min_distance; int32 instruction_control; /* Hunh? */ int scancontrol; int scantype; int32 control_value_cutin; int32 single_width_cutin; int32 single_width; int auto_flip; /* ignore sign of cvt */ /* int angle_weight;*/ /* obsolete */ int32 delta_base,delta_shift; real scale; /* number by which to multiply an fword to get a 26.6 */ BasePoint projection;/* Projection vector */ BasePoint freedom; /* Freedom vector */ BasePoint dual; /* Dual projection vector */ uint8 *pc, *end_pc, *startcall; int callcnt; uint8 *returns[SUB_MAX]; uint8 *ends[SUB_MAX]; uint8 *starts[SUB_MAX]; int cnts[SUB_MAX]; int retsp; struct { int point_cnt; IPoint *points; IPoint *moved; uint8 *flags; } zones[2]; int16 *cvtvals; /* Need a copy because instructions can change */ /* values, but not the originals in table */ Table *cvt, *maxp; TtfFont *tfont; ConicChar *cc; CharView *cv; /* This is the order tables get run in (I think) */ unsigned int in_fpgm: 1; /* some instructions are only legal in fpgm/prep */ unsigned int in_prep: 1; /* some instructions only legal in cvt program (prep) */ unsigned int in_glyf: 1; /* otherwise */ unsigned int in_instr: 1; /* no instruction redefinition inside an instr redef */ struct ttfargs *args; struct ttfactions *acts; }; struct ttfargs { enum ttf_set { ttf_inloop = 0x1, ttf_rp0=0x2, ttf_rp1=0x4, ttf_rp2=0x8, ttf_sp0=0x100, ttf_sp1=0x200, ttf_sp2=0x400, ttf_sp3=0x800, ttf_pushed=0x1000, ttf_pushedmore=0x2000 } used; /* Things this instruction uses */ int loopcnt; int spvals[4]; int rp0val, rp1val, rp2val; int zs; int pushed; }; struct ttfactions { int16 pnum; /* This is the point that got acted upon */ int16 basedon; /* This is the reference point (-1 if absolute) */ /* Set to pnum if a shift from where it was */ int16 interp; /* If this isn't -1 then it and basedon define*/ /* a region between which pnum is interpolated*/ int16 cvt_entry; /* Did it come from the cvt table? */ int32 distance; /* 26.6 fixed */ unsigned int rounded:2; unsigned int min: 1; unsigned int newcontour: 1; int16 infunc; /* Function number in which instr is found */ uint8 *instr; BasePoint freedom; struct ttfactions *acts; IPoint was, is; /* before and after point locations */ }; extern const char *instrs[]; #endif mensis-080507/ttfmaketiny.c0100664000076500007650000003734207742401532014044 0ustar gwwgww/* Copyright (C) 2002-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensis.h" #include #include /* This file is designed to make a tiny ttf file containing just one character*/ /* (well, and any others that it depends on) and only those tables needed to */ /* make a real font. Also need: head, hhea, hmtx, maxp, prep, fpgm, loca, */ /* OS/2, post. Some of these are just direct copies, others (hmtx) are shrunk*/ /* Freetype may require cmap,name too. post can be tiny */ struct tinytable { uint32 name; uint32 offset; uint32 checksum; FILE *source; uint32 len; }; /* This lists the tables in the order they should appear in the font */ enum ttabs { tt_head, tt_hhea, tt_maxp, tt_OS2, tt_name, tt_cmap, tt_loca, tt_prep, tt_fpgm, tt_cvt, tt_hmtx, tt_glyf, tt_post, tt_max}; /* This lists the order of the pointers in the font header */ static enum ttabs alphabetic[] = { tt_OS2, tt_cmap, tt_cvt, tt_fpgm, tt_glyf, tt_head, tt_hhea, tt_hmtx, tt_loca, tt_maxp, tt_name, tt_prep, tt_post}; static uint32 tabnames[] = { CHR('h','e','a','d'), CHR('h','h','e','a'), CHR('m','a','x','p'), CHR('O','S','/','2'), CHR('n','a','m','e'), CHR('c','m','a','p'), CHR('l','o','c','a'), CHR('p','r','e','p'), CHR('f','p','g','m'), CHR('c','v','t',' '), CHR('h','m','t','x'), CHR('g','l','y','f'), CHR('p','o','s','t')}; typedef struct tinytables { ConicChar *cc; ConicFont *cf; TtfFont *tfont; TtfFile *tfile; FILE *newf; uint8 *buf; FILE *glyf; int glyf_len; FILE *loca; int loca_len; FILE *hmtx; int hmtx_len; struct tinytable tabs[tt_max]; int glyph_cnt; } TT; static void tiny_dumpinstrs(TT *tiny, ConicChar *cc) { int i; putshort(tiny->glyf,cc->instrdata.instr_cnt); for ( i=0; iinstrdata.instr_cnt; ++i ) putc(cc->instrdata.instrs[i],tiny->glyf); } #define _On_Curve 1 #define _X_Short 2 #define _Y_Short 4 #define _Repeat 8 #define _X_Same 0x10 #define _Y_Same 0x20 static void tiny_addpt(BasePoint *here,uint8 *flag,IPoint *pt,IPoint *last) { pt->x = rint(here->x)-last->x; pt->y = rint(here->y)-last->y; last->x = rint(here->x); last->y = rint(here->y); if ( pt->x==0 ) *flag |= _X_Same; else if ( pt->x>=256 || pt->x<=-256 ) /* 0 flag => signed 16 bit */; else if ( pt->x>0 ) *flag |= _X_Short|_X_Same; else *flag |= _X_Short; if ( pt->y==0 ) *flag |= _Y_Same; else if ( pt->y>=256 || pt->y<=-256 ) /* 0 flag => signed 16 bit */; else if ( pt->y>0 ) *flag |= _Y_Short|_Y_Same; else *flag |= _Y_Short; } static void tiny_dumpsimpleglyph(TT *tiny, ConicChar *cc) { ConicSet *cs; ConicPoint *cp; int pt; uint8 *flags; IPoint *pts, last; int i; /* number all our points */ for ( cs = cc->conics, pt=0; cs!=NULL; cs=cs->next ) { for ( cp=cs->first; cp!=NULL; ) { #if 0 if ( cp!=cs->first && cp->prevcp!=NULL && cp->nextcp!=NULL && cp->next!=NULL && (cp->me.x == (cp->prevcp->x+cp->nextcp->x)/2) && (cp->me.y == (cp->prevcp->y+cp->nextcp->y)/2)) cp->me.pnum = -1; else cp->me.pnum = pt++; if ( cp->nextcp!=NULL ) cp->nextcp->pnum = pt++; #else if ( cp->me.pnum!=-1 ) ++pt; if ( cp->nextcp!=NULL ) ++pt; #endif if ( cp->next==NULL ) break; cp = cp->next->to; if ( cp==cs->first ) break; } } /* Array of contour end points */ for ( cs = cc->conics; cs!=NULL; cs=cs->next ) { if ( cs->last!=cs->first ) /* Can't happen in a ttf file, but someone might have mucked with it... */ putshort(tiny->glyf,cs->last->me.pnum); else if ( cs->last->prevcp!=NULL ) putshort(tiny->glyf,cs->last->prevcp->pnum); else putshort(tiny->glyf,cs->last->prev->from->me.pnum); } tiny_dumpinstrs(tiny,cc); flags = gcalloc(pt,sizeof(uint8)); pts = gcalloc(pt,sizeof(IPoint)); last.x = last.y = 0; for ( cs = cc->conics, pt=0; cs!=NULL; cs=cs->next ) { for ( cp=cs->first; cp!=NULL; ) { if ( cp->me.pnum!=-1 ) { flags[pt] |= _On_Curve; tiny_addpt(&cp->me,&flags[pt],&pts[pt],&last); ++pt; } if ( cp->nextcp!=NULL ) { tiny_addpt(cp->nextcp,&flags[pt],&pts[pt],&last); ++pt; } if ( cp->next==NULL ) break; cp = cp->next->to; if ( cp==cs->first ) break; } } fwrite(flags,1,pt,tiny->glyf); for ( i=0; iglyf); else if ( (flags[i]&_X_Short) ) putc(-pts[i].x,tiny->glyf); else if ( !(flags[i]&_X_Same) ) putshort(tiny->glyf,pts[i].x); } for ( i=0; iglyf); else if ( (flags[i]&_Y_Short) ) putc(-pts[i].y,tiny->glyf); else if ( !(flags[i]&_Y_Same) ) putshort(tiny->glyf,pts[i].y); } free(flags); free(pts); } static void tiny_dumpglyph(TT *tiny,ConicChar *cc); static void tiny_dumpcompositeglyph(TT *tiny, ConicChar *cc) { RefChar *ref; int flags; for ( ref=cc->refs; ref!=NULL; ref=ref->next ) { if ( ref->cc->tiny_glyph == -1 ) { ref->cc->tiny_glyph = tiny->glyph_cnt++; ref->tiny_output = false; } else ref->tiny_output = true; } for ( ref=cc->refs; ref!=NULL; ref=ref->next ) { flags = (1<<1)|(1<<2)|(1<<12); if ( ref->next!=NULL ) flags |= (1<<5); /* More components */ else if ( ref->next==NULL && cc->instrdata.instr_cnt!=0 ) flags |= (1<<8); /* Instructions appear after last ref */ if ( ref->transform[1]!=0 || ref->transform[2]!=0 ) flags |= (1<<7); /* Need a full matrix */ else if ( ref->transform[0]!=ref->transform[3] ) flags |= (1<<6); /* different xy scales */ else if ( ref->transform[0]!=1. ) flags |= (1<<3); /* xy scale is same */ if ( ref->transform[4]<-128 || ref->transform[4]>127 || ref->transform[5]<-128 || ref->transform[5]>127 ) flags |= (1<<0); putshort(tiny->glyf,flags); putshort(tiny->glyf,ref->cc->tiny_glyph); if ( flags&(1<<0) ) { putshort(tiny->glyf,(short)ref->transform[4]); putshort(tiny->glyf,(short)ref->transform[5]); } else { putc((char) (ref->transform[4]),tiny->glyf); putc((char) (ref->transform[5]),tiny->glyf); } if ( flags&(1<<7) ) { put2d14(tiny->glyf,ref->transform[0]); put2d14(tiny->glyf,ref->transform[1]); put2d14(tiny->glyf,ref->transform[2]); put2d14(tiny->glyf,ref->transform[3]); } else if ( flags&(1<<6) ) { put2d14(tiny->glyf,ref->transform[0]); put2d14(tiny->glyf,ref->transform[3]); } else if ( flags&(1<<3) ) { put2d14(tiny->glyf,ref->transform[0]); } } if ( cc->instrdata.instr_cnt!=0 ) tiny_dumpinstrs(tiny,cc); if ( ftell(tiny->glyf)&1 ) /* Pad the file so that the next glyph */ putc('\0',tiny->glyf); /* on a word boundary, can only happen if odd number of instrs */ for ( ref=cc->refs; ref!=NULL; ref=ref->next ) if ( !ref->tiny_output ) tiny_dumpglyph(tiny,ref->cc); } static void tiny_dumpglyph(TT *tiny,ConicChar *cc) { DBounds bb; ConicSet *cs; int cnt; ConicCharFindBounds(cc,&bb); putshort(tiny->loca,ftell(tiny->glyf)/2); putshort(tiny->hmtx,cc->width); putshort(tiny->hmtx,bb.minx); if ( !cc->changed && cc->conics!=NULL ) { tiny->buf = copyregion(tiny->glyf,tiny->tfile->file, cc->parent->glyphs->start+cc->glyph_offset,cc->glyph_len, tiny->buf); return; } if ( cc->conics!=NULL || cc->refs!=NULL ) { if ( cc->conics==NULL ) putshort(tiny->glyf,-1); else { for ( cs=cc->conics,cnt=0; cs!=NULL; cs = cs->next, ++cnt ); putshort(tiny->glyf,cnt); } putshort(tiny->glyf,bb.minx); putshort(tiny->glyf,bb.miny); putshort(tiny->glyf,bb.maxx); putshort(tiny->glyf,bb.maxy); } if ( cc->conics!=NULL ) tiny_dumpsimpleglyph(tiny,cc); else if ( cc->refs!=NULL ) tiny_dumpcompositeglyph(tiny,cc); else /* Nothing more needs to be done for space characters */; } static void tiny_dumpglyphs(TT *tiny) { ConicFont *cf = tiny->cf; int i; for ( i=0; iglyph_cnt; ++i ) cf->chars[i]->tiny_glyph = -1; tiny->cc->tiny_glyph = 4; tiny->glyf = tmpfile(); tiny->loca = tmpfile(); tiny->hmtx = tmpfile(); /* I'm just going to make the first four glyphs be spaces, even glyph 0 */ putshort(tiny->loca,0); /* Pointer to notdef */ putshort(tiny->loca,0); /* Pointer to .null */ putshort(tiny->loca,0); /* Pointer to cr */ putshort(tiny->loca,0); /* Pointer to space */ putshort(tiny->hmtx,cf->chars[0]->width); putshort(tiny->hmtx,0); putshort(tiny->hmtx,cf->chars[1]->width); putshort(tiny->hmtx,0); putshort(tiny->hmtx,cf->chars[2]->width); putshort(tiny->hmtx,0); putshort(tiny->hmtx,cf->chars[3]->width); putshort(tiny->hmtx,0); tiny->glyph_cnt = 5; tiny_dumpglyph(tiny,tiny->cc); tiny->glyf_len = ftell(tiny->glyf); putshort(tiny->loca,tiny->glyf_len/2); /* Pointer to end of glyphs */ if ( tiny->glyf_len&2 ) putshort(tiny->glyf,0); tiny->loca_len = ftell(tiny->loca); if ( tiny->loca_len&1 ) putshort(tiny->loca,0); tiny->hmtx_len = ftell(tiny->hmtx); /* Always aligned */ } static int32 tiny_cmap(FILE *cmap) { uint8 map[256]; putshort(cmap,0); /* version */ putshort(cmap,1); /* num tables */ putshort(cmap,1); /* mac platform */ putshort(cmap,0); /* plat specific enc, script=roman */ putlong(cmap,12); /* offset from tab start to sub tab start */ /* Subtable */ putshort(cmap,0); /* format */ putshort(cmap,262); /* length = 256bytes + 6 header bytes */ putshort(cmap,0); /* language = english */ memset(map,0,256); map[0] = 1; map[13] = 2; map[32] = 3; map[33] = 4; /* The one character we care about */ fwrite(map,1,256,cmap); putshort(cmap,0); /* padding */ return( 12+6+256 ); } static int32 tiny_post(TT *tiny, FILE *post) { Table *tab=TTFFindTable(tiny->tfont,tabnames[tt_post]); char buffer[16]; putlong(post,0x00030000); /* short table */ if ( tab==NULL ) { putlong(post,0); putshort(post,-200); putshort(post,50); putlong(post,0); } else if ( tab->data!=NULL ) { fwrite(tab->data+4,1,12,post); } else { fseek(tiny->tfile->file,tab->start+4,SEEK_SET); fread(buffer,1,12,tiny->tfile->file); fwrite(buffer,1,12,post); } memset(buffer,0,16); fwrite(buffer,1,16,post); /* always aligned */ return( 32 ); } static void tiny_dumpfontheader(FILE *newf, TT *tiny) { int bit, i, cnt; struct tinytable *tab; rewind(newf); for ( i=tt_head, cnt=0; itabs[i].name!=0 ) ++cnt; putlong(newf,tiny->tfont->version); putshort(newf,cnt); for ( i= -1, bit = 1; bit>=1; putshort(newf,bit*16); putshort(newf,i); putshort(newf,(cnt-bit)*16); /* Dump out in alphabetic order... */ for ( i=tt_head, cnt=0; itabs[alphabetic[i]].name!=0 ) { tab = &tiny->tabs[alphabetic[i]]; putlong(newf,tab->name); putlong(newf,tab->checksum); putlong(newf,tab->offset); putlong(newf,tab->len); } } static void tiny_preparetables(TT *tiny) { static int sametables[] = { tt_head, tt_maxp, tt_hhea, tt_OS2, tt_name, tt_prep, tt_fpgm, tt_cvt, -1 }; /* head, hhea and maxp all need a fix */ int i, cnt; uint32 checksum; Table *tab; struct tinytable *ttab; FILE *newf; tiny->tabs[tt_glyf].name = CHR('g','l','y','f'); tiny->tabs[tt_glyf].source = tiny->glyf; tiny->tabs[tt_glyf].len = tiny->glyf_len; tiny->tabs[tt_glyf].checksum = filecheck(tiny->glyf); tiny->tabs[tt_loca].name = CHR('l','o','c','a'); tiny->tabs[tt_loca].source = tiny->loca; tiny->tabs[tt_loca].len = tiny->loca_len; tiny->tabs[tt_loca].checksum = filecheck(tiny->loca); tiny->tabs[tt_hmtx].name = CHR('h','m','t','x'); tiny->tabs[tt_hmtx].source = tiny->hmtx; tiny->tabs[tt_hmtx].len = tiny->hmtx_len; tiny->tabs[tt_hmtx].checksum = filecheck(tiny->hmtx); tiny->tabs[tt_cmap].name = tabnames[tt_cmap]; tiny->tabs[tt_cmap].source = tmpfile();; tiny->tabs[tt_cmap].len = tiny_cmap(tiny->tabs[tt_cmap].source); tiny->tabs[tt_cmap].checksum = filecheck(tiny->tabs[tt_cmap].source); tiny->tabs[tt_post].name = tabnames[tt_post]; tiny->tabs[tt_post].source = tmpfile();; tiny->tabs[tt_post].len = tiny_post(tiny,tiny->tabs[tt_post].source); tiny->tabs[tt_post].checksum = filecheck(tiny->tabs[tt_post].source); for ( i=0; sametables[i]!=-1; ++i ) { if ( (tab=TTFFindTable(tiny->tfont,tabnames[sametables[i]]))!=NULL ) tiny->tabs[sametables[i]].name = tabnames[sametables[i]]; } newf = tiny->newf; tiny_dumpfontheader(newf, tiny); /* Create a placeholder */ for ( i=tt_head, cnt=0; itabs[i].name!=0 ) { ttab = &tiny->tabs[i]; ttab->offset = ftell(newf); if ( ttab->source==NULL ) tab = TTFFindTable(tiny->tfont,tabnames[i]); if ( ttab->source!=NULL ) { tiny->buf = copyregion(newf,ttab->source,0,ttab->len,tiny->buf); fclose(ttab->source); } else if ( tab->td_changed ) { (tab->write_tabledata)(newf,tab); } else if ( tab->data ) fwrite(tab->data,1,tab->newlen,newf); else { tiny->buf = copyregion(newf,tiny->tfile->file,tab->start,tab->len,tiny->buf); ttab->checksum = tab->oldchecksum; } ttab->len = ftell(newf)-ttab->offset; if ( ttab->len&1 ) putc('\0',newf); if ( (ttab->len+1)&2 ) putshort(newf,0); } fseek(newf,tiny->tabs[tt_head].offset+8,SEEK_SET); putlong(newf,0); fseek(newf,tiny->tabs[tt_maxp].offset+4,SEEK_SET); putshort(newf,tiny->glyph_cnt); fseek(newf,tiny->tabs[tt_hhea].offset+34,SEEK_SET); putshort(newf,tiny->glyph_cnt); tiny->tabs[tt_head].checksum = tiny->tabs[tt_maxp].checksum = tiny->tabs[tt_hhea].checksum = 0; for ( i=tt_head, cnt=0; itabs[i].name!=0 && tiny->tabs[i].checksum==0 ) tiny->tabs[i].checksum = figurecheck(newf,tiny->tabs[i].offset,(tiny->tabs[i].len+3)>>2); tiny_dumpfontheader(newf, tiny); /* now store real data */ checksum = 0xb1b0afba - filecheck(newf); fseek(newf,tiny->tabs[tt_head].offset+8,SEEK_SET); putlong(newf,checksum); free(tiny->buf); } FILE *Ttf_MakeTinyFont(ConicChar *cc) { TT tiny; memset(&tiny,0,sizeof(tiny)); tiny.cc = cc; tiny.cf = cc->parent; tiny.tfont = tiny.cf->tfont; tiny.tfile = tiny.cf->tfile; tiny_dumpglyphs(&tiny); tiny.newf = tmpfile(); tiny_preparetables(&tiny); if ( !ferror(tiny.newf)) return( tiny.newf ); fclose(tiny.newf); return( NULL ); } mensis-080507/ttfsave.c0100664000076500007650000003041011010404770013134 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #include #include #include #include #include static FILE *makebackup(TtfFile *ttf, int linkcnt) { /* Traditionally we only make a backup on the first save. But due to my */ /* data structures I need to make a backup before each save */ /* (while I'm saving the current file I still need some place where I can */ /* look up the data which are referenced by pointers into that file. */ /* If we return successfully then ttf->file points to the backup file */ /* (which has all the right offsets), and returns a FILE pointing to */ /* the file to be saved */ struct stat info; char *backupname; int len; FILE *backup, *temp; char *buffer; backupname = galloc((len = strlen(ttf->filename))+2); strcpy(backupname,ttf->filename); backupname[len] = ttf->backedup?'+':'~'; backupname[len+1]= '\0'; if ( linkcnt==-1 ) { fstat(fileno(ttf->file),&info); linkcnt = info.st_nlink; } if ( linkcnt==1 ) { int ret = rename(ttf->filename,backupname); free(backupname); if ( ret==-1 ) { GWidgetErrorR(_STR_NoBackup,_STR_NoBackup); return( NULL ); } temp = fopen(ttf->filename,"wb+"); if ( temp==NULL ) { GWidgetErrorR(_STR_CouldntReopenFile,_STR_CouldntReopenFile); exit( 1 ); } return( temp ); } backup = fopen(backupname,"wb+"); free(backupname); if ( backup==NULL ) { GWidgetErrorR(_STR_NoBackup,_STR_NoBackup); return( NULL ); } buffer = galloc(8192); rewind(ttf->file); while ( (len=read(fileno(ttf->file),buffer,8192))>0 ) { if ( write(fileno(backup),buffer,len)!=len ) { len = -1; break; } } free(buffer); if ( len<0 ) { GWidgetErrorR(_STR_CouldntWriteBackup,_STR_CouldntWriteBackup); return( NULL ); } temp = ttf->file; ttf->file = backup; lseek(fileno(temp),0,SEEK_SET); ftruncate(fileno(temp),0); return( temp ); } static void RestoreFromBackup(TtfFile *ttf,int linkcnt) { FILE *orig; char *backupname; struct stat info; int len; char *buffer; backupname = galloc((len = strlen(ttf->filename))+2); strcpy(backupname,ttf->filename); backupname[len] = ttf->backedup?'+':'~'; backupname[len+1]= '\0'; if ( linkcnt==-1 ) { stat(ttf->filename,&info); linkcnt = info.st_nlink; } if ( linkcnt==1 ) { if ( rename(backupname,ttf->filename)==-1 ) { GWidgetErrorR(_STR_SaveFailed,_STR_CantRecoverFromSave,GFileNameTail(backupname)); exit(1); } free(backupname); } else { orig = fopen(ttf->filename,"wb+"); if ( orig==NULL ) { GWidgetErrorR(_STR_SaveFailed,_STR_CantRecoverFromSave,GFileNameTail(backupname)); exit(1); } buffer = galloc(8192); rewind(ttf->file); while ( (len=read(fileno(ttf->file),buffer,8192))>0 ) { if ( write(fileno(orig),buffer,len)!=len ) { len = -1; break; } } free(buffer); if ( len<0 ) { GWidgetErrorR(_STR_SaveFailed,_STR_CantRecoverFromSave,GFileNameTail(backupname)); exit(1); } fclose( ttf->file ); ttf->file = orig; lseek(fileno(orig),0,SEEK_SET); } } uint8 *copyregion(FILE *to, FILE *from, int32 start, int32 tot, uint8 *buf) { int bsize, len; /* I wonder... Are modern buses limited to transfers of 32768 the */ /* way the dear old unibus was? I'm probably way out of date here*/ bsize = tot<=32768? tot : 32768; if ( buf==NULL ) buf = galloc(32768); fseek(from,start,SEEK_SET); while ( (len = fread(buf,1,bsize,from))>0 ) { fwrite(buf,1,len,to); tot -= len; if ( tot==0 ) break; if ( bsize>tot ) bsize = tot; } return( buf ); } int32 filecheck(FILE *file) { uint32 sum = 0, chunk; rewind(file); while ( 1 ) { chunk = getlong(file); if ( feof(file)) break; sum += chunk; } return( sum ); } int32 figurecheck(FILE *file,int32 start, int32 lcnt) { uint32 sum = 0, chunk; fseek(file,start,SEEK_SET); while ( --lcnt>=0 ) { chunk = getlong(file); if ( feof(file)) break; sum += chunk; } return( sum ); } static void ttfdumpfontheader(FILE *newf, TtfFont *font) { int bit, i; Table *tab; font->version_pos = ftell(newf); putlong(newf,font->version); putshort(newf,font->tbl_cnt); for ( i= -1, bit = 1; bittbl_cnt; bit<<=1, ++i ); bit>>=1; putshort(newf,bit*16); putshort(newf,i); putshort(newf,(font->tbl_cnt-bit)*16); for ( i=0; itbl_cnt; ++i ) { tab = font->tbls[i]; putlong(newf,tab->name); putlong(newf,tab->newchecksum); putlong(newf,tab->newstart); putlong(newf,tab->newlen); } } static int tcomp(const void *_t1, const void *_t2) { Table *t1 = *((Table **) _t1), *t2 = *((Table **) _t2); return( t1->orderingval - t2->orderingval ); } static void ttfdumpfonttables(FILE *newf,TtfFile *ttf) { int i, j, cnt; uint8 *buf=NULL; FILE *old = ttf->file; Table *tab, **ordered; for ( i=cnt=0; ifont_cnt; ++i ) cnt += ttf->fonts[i]->tbl_cnt; ordered = galloc(cnt*sizeof(Table *)); for ( i=cnt=0; ifont_cnt; ++i ) { for ( j=0; jfonts[i]->tbl_cnt; ++j ) { tab = ttf->fonts[i]->tbls[j]; if ( !tab->inserted ) { ordered[cnt++] = tab; tab->inserted = true; } } } qsort(ordered,cnt,sizeof(Table *),tcomp); for ( i=0; inewstart!=0 ) /* Save by some earlier font in a ttc */ continue; /* Don't save again */ tab->newstart = ftell(newf); tab->newchecksum = 0; if ( tab->td_changed && tab->write_tabledata!=NULL ) (tab->write_tabledata)(newf,tab); else if ( tab->data ) fwrite(tab->data,1,tab->newlen,newf); else { buf = copyregion(newf,old,tab->start,tab->len,buf); tab->newchecksum = tab->oldchecksum; } tab->newlen = ftell(newf)-tab->newstart; if ( tab->newlen&1 ) putc('\0',newf); if ( (tab->newlen+1)&2 ) putshort(newf,0); } free(buf); for ( i=0; inewchecksum!=0 ) continue; tab->newchecksum = figurecheck(newf,tab->newstart,(tab->newlen+3)>>2); } free(ordered); } static void ttfwrite(FILE *newf, TtfFile *ttf, TtfFont *font) { ttfdumpfontheader(newf,font); /* Placeholder */ ttfdumpfonttables(newf,ttf); fseek(newf,0,SEEK_SET); ttfdumpfontheader(newf,font); /* Fillin with correct values now we know them */ } static void ttcwrite(FILE *newf, TtfFile *ttf) { int32 pos; int i; putlong(newf,CHR('t','t','c','f')); putlong(newf,ttf->font_cnt); for ( i=0; ifont_cnt; ++i ) putlong(newf,0); /* Placeholder */ for ( i=0; ifont_cnt; ++i ) ttfdumpfontheader(newf,ttf->fonts[i]); /* Also Placeholders */ pos = ftell(newf); fseek(newf,2*sizeof(int32),SEEK_SET); for ( i=0; ifont_cnt; ++i ) putlong(newf,ttf->fonts[i]->version_pos); /* Fill in first set of placeholders */ fseek(newf,pos,SEEK_SET); ttfdumpfonttables(newf,ttf); fseek(newf,ttf->fonts[0]->version_pos,SEEK_SET); for ( i=0; ifont_cnt; ++i ) ttfdumpfontheader(newf,ttf->fonts[i]); /* Fill in final set */ } int TtfSave(TtfFile *ttf,char *newpath) { int same = false; struct stat old, new; FILE *newf; int linkcnt = -1; uint32 date[2]; time_t now; Table *tab, *a_head=NULL; int i,j; int32 checksum; if ( strcmp(ttf->filename,newpath)==0 ) same = true; else { /* things will get really screwed up if I save onto another link to myself */ fstat(fileno(ttf->file),&old); stat(newpath,&new); if ( new.st_dev==old.st_dev && new.st_ino==old.st_ino ) same = true; linkcnt = old.st_nlink; } if ( same ) { newf = makebackup(ttf,linkcnt); if ( newf==NULL ) return( false ); } else { newf = fopen(newpath, "wb+"); if ( newf==NULL ) { GWidgetErrorR(_STR_CantCreate,_STR_CantCreateFile, GFileNameTail(newpath)); return( false ); } } /* Mark all tables as unsaved */ for ( i=0; ifont_cnt; ++i ) for ( j=0; jfonts[i]->tbl_cnt; ++j ) { Table *tab = ttf->fonts[i]->tbls[j]; tab->newstart = 0; tab->inserted = 0; /* This is the ordering of tables in ARIAL. I've no idea why it makes a */ /* difference to order them, time to do a seek seems likely to be small, but */ /* other people make a big thing about ordering them so I'll do it. */ /* I got bored after glyph. Interestingly enough, Adobe follows the same */ /* scheme for their otf fonts */ tab->orderingval = tab->name==CHR('h','e','a','d')? 1 : tab->name==CHR('h','h','e','a')? 2 : tab->name==CHR('m','a','x','p')? 3 : tab->name==CHR('O','S','/','2')? 4 : tab->name==CHR('g','a','s','p')? 5 : tab->name==CHR('n','a','m','e')? 6 : tab->name==CHR('c','m','a','p')? 7 : tab->name==CHR('l','o','c','a')? 8 : tab->name==CHR('C','F','F',' ')? 8 : tab->name==CHR('L','T','S','H')? 9 : tab->name==CHR('V','D','M','X')? 10 : tab->name==CHR('p','r','e','p')? 11 : tab->name==CHR('f','p','g','m')? 12 : tab->name==CHR('c','v','t',' ')? 13 : tab->name==CHR('h','m','t','x')? 14 : tab->name==CHR('h','m','d','x')? 15 : tab->name==CHR('g','l','y','f')? 16 : 17; } /* Zero out the checksumadjust field of all headers, and set the modification time to now */ time(&now); TimeTToQuad(now,date); for ( i=0; ifont_cnt; ++i ) { for ( j=0; jfonts[i]->tbl_cnt; ++j ) { tab = ttf->fonts[i]->tbls[j]; if ( tab->name==CHR('h','e','a','d')) { TableFillup(tab); ptputlong(tab->data+8,0); ptputlong(tab->data+28,date[0]); ptputlong(tab->data+32,date[1]); if ( a_head==NULL ) a_head = tab; } } } if ( ttf->is_ttc ) ttcwrite(newf,ttf); else ttfwrite(newf,ttf,ttf->fonts[0]); if ( a_head!=NULL ) { checksum = filecheck(newf); if ( ttf->is_ttc ) checksum = 0xdcd07d3e - checksum; else checksum = 0xb1b0afba - checksum; fseek(newf,a_head->newstart+2*sizeof(int32),SEEK_SET); putlong(newf,checksum); ptputlong(a_head->data+2*sizeof(int32),checksum); } fflush(newf); if ( ferror(newf)) { fclose(newf); GWidgetErrorR(_STR_SaveFailed,_STR_SaveFailedOn,GFileNameTail(newpath)); RestoreFromBackup(ttf,linkcnt); return( false ); } fclose(ttf->file); ttf->file = newf; for ( i=0; ifont_cnt; ++i ) { for ( j=0; jfonts[i]->tbl_cnt; ++j ) { tab = ttf->fonts[i]->tbls[j]; tab->start = tab->newstart; tab->len = tab->newlen; tab->oldchecksum = tab->newchecksum; if ( tab->name==CHR('h','e','a','d')) headViewUpdateModifiedCheck(tab); /* Redisplay modified, checksumadjust fields */ if ( tab->td_changed ) { free(tab->data); tab->data=NULL; /* it will be wrong */ tab->td_changed = false; } tab->changed = false; } } ttf->changed = false; ttf->backedup = false; return(true); } mensis-080507/ttfview.c0100664000076500007650000011540611010404770013161 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include #include #include #include extern int _GScrollBar_Width; #define ttf_width 16 #define ttf_height 16 static unsigned char ttf_bits[] = { 0xff, 0x07, 0x21, 0x04, 0x20, 0x00, 0xfc, 0x7f, 0x24, 0x40, 0xf4, 0x5e, 0xbc, 0x72, 0xa0, 0x02, 0xa0, 0x02, 0xa0, 0x02, 0xf0, 0x02, 0x80, 0x02, 0xc0, 0x06, 0x40, 0x04, 0xc0, 0x07, 0x00, 0x00}; GWindow ttf_icon = NULL; TtfView *tfv_list=NULL; static int _TFVMenuClose(TtfView *tfv); void FontNew(void) {} /* The code which calls this (in the open dlg) will never be reached, but the linker doesn't know that. */ /* NEVERCALL specified */ #define MID_RevertTable 2701 #define MID_Revert 2702 #define MID_Recent 2703 #define MID_Cut 2101 #define MID_Copy 2102 #define MID_Paste 2103 #define MID_SelAll 2106 static struct tableinfo { int32 name; int description; void (*createviewer)(Table *,TtfView *); char *helppage; } tableinfo[] = { /* "Required" TrueType tables (except sometimes (ie. OpenType, bitmap only, etc.)) */ { CHR('c','m','a','p'), _STR_Tbl_cmap, NULL, "http://partners.adobe.com/asn/developer/opentype/cmap.html" }, { CHR('g','l','y','f'), _STR_Tbl_glyf, fontCreateEditor, "http://partners.adobe.com/asn/developer/opentype/glyf.html" }, { CHR('h','e','a','d'), _STR_Tbl_head, headCreateEditor, "http://partners.adobe.com/asn/developer/opentype/head.html" }, { CHR('h','h','e','a'), _STR_Tbl_hhea, _heaCreateEditor, "http://partners.adobe.com/asn/developer/opentype/hhea.html" }, { CHR('h','m','t','x'), _STR_Tbl_hmtx, metricsCreateEditor, "http://partners.adobe.com/asn/developer/opentype/hmtx.html" }, { CHR('l','o','c','a'), _STR_Tbl_loca, fontCreateEditor, "http://partners.adobe.com/asn/developer/opentype/loca.html" }, { CHR('m','a','x','p'), _STR_Tbl_maxp, maxpCreateEditor, "http://partners.adobe.com/asn/developer/opentype/maxp.html" }, { CHR('n','a','m','e'), _STR_Tbl_name, NULL, "http://partners.adobe.com/asn/developer/opentype/name.html" }, { CHR('O','S','/','2'), _STR_Tbl_OS2 , OS2CreateEditor, "http://partners.adobe.com/asn/developer/opentype/os2.html" }, { CHR('p','o','s','t'), _STR_Tbl_post, postCreateEditor, "http://partners.adobe.com/asn/developer/opentype/post.html" }, /* Other MS/Adobe/Apple tables */ { CHR('c','v','t',' '), _STR_Tbl_cvt , shortCreateEditor, "http://partners.adobe.com/asn/developer/opentype/cvt.html" }, { CHR('E','B','D','T'), _STR_Tbl_EBDT, NULL, "http://partners.adobe.com/asn/developer/opentype/ebdt.html" }, { CHR('E','B','L','C'), _STR_Tbl_EBLC, NULL, "http://partners.adobe.com/asn/developer/opentype/eblc.html" }, { CHR('E','B','S','C'), _STR_Tbl_EBSC, NULL, "http://partners.adobe.com/asn/developer/opentype/ebsc.html" }, { CHR('f','p','g','m'), _STR_Tbl_fpgm, instrCreateEditor, "http://partners.adobe.com/asn/developer/opentype/fpgm.html" }, { CHR('g','a','s','p'), _STR_Tbl_gasp, gaspCreateEditor, "http://partners.adobe.com/asn/developer/opentype/gasp.html" }, { CHR('h','d','m','x'), _STR_Tbl_hdmx, NULL, "http://partners.adobe.com/asn/developer/opentype/hdmx.html" }, { CHR('k','e','r','n'), _STR_Tbl_kern, NULL, "http://partners.adobe.com/asn/developer/opentype/kern.html" }, { CHR('L','T','S','H'), _STR_Tbl_LTSH, NULL, "http://partners.adobe.com/asn/developer/opentype/ltsh.html" }, { CHR('p','r','e','p'), _STR_Tbl_prep, instrCreateEditor, "http://partners.adobe.com/asn/developer/opentype/prep.html" }, { CHR('P','C','L','T'), _STR_Tbl_PCLT, NULL, "http://partners.adobe.com/asn/developer/opentype/pclt.html" }, { CHR('V','D','M','X'), _STR_Tbl_VDMX, NULL, "http://partners.adobe.com/asn/developer/opentype/vdmx.html" }, { CHR('v','h','e','a'), _STR_Tbl_vhea, _heaCreateEditor, "http://partners.adobe.com/asn/developer/opentype/vhea.html" }, { CHR('v','m','t','x'), _STR_Tbl_vmtx, metricsCreateEditor, "http://partners.adobe.com/asn/developer/opentype/vmtx.html" }, { CHR('C','F','F',' '), _STR_Tbl_CFF , NULL, "http://partners.adobe.com/asn/developer/opentype/cff.html" }, /* { CHR('f','v','a','r'), _STR_Tbl_fvar, NULL, "http://partners.adobe.com/asn/developer/opentype/tablist.html" }, */ { CHR('M','M','S','D'), _STR_Tbl_MMSD, NULL, "http://partners.adobe.com/asn/developer/opentype/tablist.html" }, { CHR('M','M','F','X'), _STR_Tbl_MMFX, NULL, "http://partners.adobe.com/asn/developer/opentype/tablist.html" }, { CHR('B','A','S','E'), _STR_Tbl_BASE, NULL, "http://partners.adobe.com/asn/developer/opentype/base.html" }, { CHR('G','D','E','F'), _STR_Tbl_GDEF, NULL, "http://partners.adobe.com/asn/developer/opentype/gdef.html" }, { CHR('G','P','O','S'), _STR_Tbl_GPOS, NULL, "http://partners.adobe.com/asn/developer/opentype/gpos.html" }, { CHR('G','S','U','B'), _STR_Tbl_GSUB, NULL, "http://partners.adobe.com/asn/developer/opentype/gsub.html" }, { CHR('J','S','T','F'), _STR_Tbl_JSTF, NULL, "http://partners.adobe.com/asn/developer/opentype/jstf.html" }, { CHR('D','S','I','G'), _STR_Tbl_DSIG, NULL, "http://partners.adobe.com/asn/developer/opentype/dsig.html" }, { CHR('V','O','R','G'), _STR_Tbl_VORG, VORGCreateEditor, "http://partners.adobe.com/asn/developer/opentype/vorg.html" }, /* Apple only (GX?) tables */ { CHR('a','c','n','t'), _STR_Tbl_acnt, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6acnt.html" }, { CHR('a','v','a','r'), _STR_Tbl_avar, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6avar.html" }, { CHR('b','d','a','t'), _STR_Tbl_bdat, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6bdat.html" }, { CHR('b','h','e','d'), _STR_Tbl_bhed, headCreateEditor, "http://fonts.apple.com/TTRefMan/RM06/Chap6bhed.html" }, { CHR('b','l','o','c'), _STR_Tbl_bloc, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6bloc.html" }, { CHR('b','s','l','n'), _STR_Tbl_bsln, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6bsln.html" }, { CHR('c','v','a','r'), _STR_Tbl_cvar, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6cvar.html" }, { CHR('f','d','s','c'), _STR_Tbl_fdsc, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6fdsc.html" }, { CHR('f','e','a','t'), _STR_Tbl_feat, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6feat.html" }, { CHR('f','m','t','x'), _STR_Tbl_fmtx, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6fmtx.html" }, { CHR('f','v','a','r'), _STR_Tbl_fvar, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6fvar.html" }, { CHR('g','v','a','r'), _STR_Tbl_gvar, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6gvar.html" }, { CHR('h','s','t','y'), _STR_Tbl_hsty, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6hsty.html" }, { CHR('j','u','s','t'), _STR_Tbl_just, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6just.html" }, { CHR('l','c','a','r'), _STR_Tbl_lcar, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6lcar.html" }, { CHR('m','o','r','t'), _STR_Tbl_mort, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6mort.html" }, { CHR('m','o','r','x'), _STR_Tbl_morx, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6morx.html" }, { CHR('o','p','b','d'), _STR_Tbl_opbd, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6opbd.html" }, { CHR('p','r','o','p'), _STR_Tbl_prop, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6prop.html" }, { CHR('t','r','a','k'), _STR_Tbl_trak, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6trak.html" }, { CHR('Z','a','p','f'), _STR_Tbl_Zapf, NULL, "http://fonts.apple.com/TTRefMan/RM06/Chap6Zapf.html" }, { 0 } }; TtfFile *LoadTtfFont(char *filename) { TtfView *tfv; TtfFile *ttf; char *pt, *ept; static char *extens[] = { ".ttf", ".otf", ".ttc", ".TTF", ".OTF", ".TTC", NULL }; int i; if ( filename==NULL ) return( NULL ); if (( pt = strrchr(filename,'/'))==NULL ) pt = filename; if ( strchr(pt,'.')==NULL ) { /* They didn't give an extension. If there's a file with no extension */ /* see if it's a valid ttf file (and if so use the extensionless */ /* filename), otherwise guess at an extension */ int ok = false; FILE *test = fopen(filename,"rb"); if ( test!=NULL ) { int magic = getlong(test); if ( magic==0x00010000 || magic == CHR('O','T','T','O') || magic == CHR('t','r','u','e') || magic == CHR('t','t','c','f')) ok = true; fclose(test); } if ( !ok ) { pt = galloc(strlen(filename)+8); strcpy(pt,filename); ept = pt+strlen(pt); for ( i=0; extens[i]!=NULL; ++i ) { strcpy(ept,extens[i]); if ( GFileExists(pt)) break; } if ( extens[i]!=NULL ) filename = pt; else { free(pt); pt = NULL; } } } else pt = NULL; ttf = NULL; /* Only one view per font */ for ( tfv=tfv_list; tfv!=NULL && ttf==NULL; tfv=tfv->next ) { if ( tfv->ttf->filename!=NULL && strcmp(tfv->ttf->filename,filename)==0 ) ttf = tfv->ttf; } if ( ttf==NULL ) ttf = ReadTtfFont(filename); if ( pt==filename ) free(filename); return( ttf ); } TtfView *ViewTtfFont(char *filename) { TtfFile *ttf = LoadTtfFont(filename); if ( ttf==NULL ) return( NULL ); if ( ttf->tfv!=NULL && ttf->tfv->gw!=NULL ) { GDrawSetVisible(ttf->tfv->gw,true); GDrawRaise(ttf->tfv->gw); return( ttf->tfv ); } return( TtfViewCreate(ttf)); } static char *GetTtfFontName(int mult) { static unichar_t wild[] = { '*', '.', '{', 't','t','f',',', 'o','t','f',',', 't','t','c','}', '{','.','g','z',',','.','Z',',','.','b','z','2',',','}', '\0' }; unichar_t *ret = FVOpenFont(GStringGetResource(_STR_OpenTtf,NULL), NULL,wild,NULL,mult,false); char *temp = cu_copy(ret); free(ret); return( temp ); } void MenuOpen(GWindow base,struct gmenuitem *mi,GEvent *e) { char *temp = GetTtfFontName(true); char *eod, *fpt, *file, *full; if ( temp==NULL ) return; eod = strrchr(temp,'/'); *eod = '\0'; file = eod+1; do { fpt = strstr(file,"; "); if ( fpt!=NULL ) *fpt = '\0'; full = galloc(strlen(temp)+1+strlen(file)+1); strcpy(full,temp); strcat(full,"/"); strcat(full,file); ViewTtfFont(full); file = fpt+2; } while ( fpt!=NULL ); free(temp); } static int CheckTableViews(TtfView *tfv) { int i,j, any=false, ync; Table *tab; static int yesnocancel[] = { _STR_Yes, _STR_No, _STR_Cancel, 0 }; for ( i=0; ittf->font_cnt ; ++i ) { for ( j=0; jttf->fonts[i]->tbl_cnt ; ++j ) { tab = tfv->ttf->fonts[i]->tbls[j]; if ( tab->tv && !tab->tv->destroyed && !tab->special ) any = true; tab->processed = false; } } if ( any ) { /* This question should not be asked twice on close because it will */ /* close any open table views before calling us, so we won't see them*/ ync = GWidgetAskR(_STR_TablesOpen,yesnocancel,0,2,_STR_TablesOpenProcess); if ( ync==2 ) return( 0 ); /* Cancel */ else if ( ync==1 ) return( 1 ); /* Don't process */ for ( i=0; ittf->font_cnt ; ++i ) { for ( j=0; jttf->fonts[i]->tbl_cnt ; ++j ) { tab = tfv->ttf->fonts[i]->tbls[j]; if ( tab->tv && !tab->tv->destroyed && !tab->processed ) { tab->processed = true; if ( !(tab->tv->virtuals->processdata)(tab->tv)) return( 0 ); } } } } return( true ); } int _TFVMenuSaveAs(TtfView *tfv) { static unichar_t filter[] = { '*','.','{','t','t','f',',','o','t','f',',','t','t','c','}', '\0' }; unichar_t *ret, *temp = uc_copy(GFileNameTail(tfv->ttf->filename)); char *name; if ( !CheckTableViews(tfv)) return( false ); ret = GWidgetSaveAsFile(GStringGetResource(_STR_SaveAs,NULL),temp,filter,NULL,NULL); free(temp); if ( ret==NULL ) return( false ); name = u2def_copy(ret); if ( TtfSave(tfv->ttf,name) ) { free(tfv->ttf->filename); tfv->ttf->filename = name; GDrawRequestExpose(tfv->v,NULL,false); return( true ); } else { free(name); return( false ); } } int _TFVMenuSave(TtfView *tfv) { if ( !CheckTableViews(tfv)) return( false ); if ( TtfSave(tfv->ttf,tfv->ttf->filename) ) { GDrawRequestExpose(tfv->v,NULL,false); return( true ); } else return( false ); } static void TFVScrollBarSetBounds(TtfView *tfv) { int i, lh; for ( i=0, lh=0; ittf->font_cnt; ++i ) lh += 1 + tfv->ttf->fonts[i]->tbl_cnt; tfv->lheight = lh; GScrollBarSetBounds(tfv->vsb,0,lh,tfv->vheight/tfv->fh); if ( tfv->lpos + tfv->vheight/tfv->fh > lh ) tfv->lpos = lh-tfv->vheight/tfv->fh; GScrollBarSetPos(tfv->vsb,tfv->lpos); } int _TFVMenuRevert(TtfView *tfv) { static int buts[] = { _STR_Yes, _STR_Cancel, 0 }; int i,j,k,any; TtfFont *font; TtfFile *oldfont; if ( GWidgetAskR(_STR_ReallyRevert,buts,0,1,_STR_ReallyRevert)==1 ) return( 0 ); for ( i=0; ittf->font_cnt; ++i ) { font = tfv->ttf->fonts[i]; for ( j=0; jtbl_cnt; ++j ) { if ( font->tbls[j]->tv!=NULL && !font->tbls[j]->tv->destroyed ) { font->tbls[j]->tv->destroyed = true; GDrawDestroyWindow(font->tbls[j]->tv->gw); } } GDrawSync(NULL); GDrawProcessPendingEvents(NULL); } for ( k=0; k<10; ++k ) { any = false; for ( i=0; ittf->font_cnt; ++i ) { font = tfv->ttf->fonts[i]; for ( j=0; jtbl_cnt; ++j ) { if ( font->tbls[j]->tv!=NULL ) { any = true; break; } } if ( any ) break; } if ( !any ) break; sleep(1); GDrawSync(NULL); GDrawProcessPendingEvents(NULL); } if ( any ) { GDrawIError("Can't kill table window. Can't revert table."); return( 0 ); } TTFFileFreeData(tfv->ttf); oldfont = tfv->ttf; tfv->ttf = ReadTtfFont(oldfont->filename); if ( tfv->ttf==NULL ) { tfv->ttf = oldfont; GWidgetErrorR( _STR_RevertFailed, _STR_RevertFailed ); _TFVMenuClose(tfv); return( 0 ); } TTFFileFree(oldfont); TFVScrollBarSetBounds(tfv); return( true ); } static void TFVMenuSaveAs(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); _TFVMenuSaveAs(tfv); } static void TFVMenuSave(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); _TFVMenuSave(tfv); } static void TFVMenuRevert(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); _TFVMenuRevert(tfv); } static void TFVMenuRevertTable(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); int i; Table *tab = tfv->sel_tab; if ( tab==NULL || tfv->ttf->gcchanged || tab->special || tab->new ) return; if ( tab->tv!=NULL ) { if ( !tab->tv->destroyed ) { tab->tv->destroyed = true; GDrawDestroyWindow(tab->tv->gw); } GDrawSync(NULL); GDrawProcessPendingEvents(NULL); for ( i=0; i<10 && tab->tv!=NULL; ++i ) { sleep(1); GDrawSync(NULL); GDrawProcessPendingEvents(NULL); } if ( tab->tv!=NULL ) { GDrawIError("Can't kill table window. Can't revert table."); return; } } if ( tab->table_data ) { (tab->free_tabledata)(tab->table_data); tab->table_data = NULL; } if ( tab->data ) { free(tab->data); tab->data = NULL; } tab->newlen = tab->len; tab->changed = tab->td_changed = false; if ( tab->name==CHR('c','m','a','p') ) { struct enctab *oldenc = tfv->ttf->fonts[tfv->selectedfont]->enc; int i; for ( i=0; ittf->font_cnt; ++i ) if ( tfv->ttf->fonts[i]->enc==oldenc ) { tfv->ttf->fonts[i]->enc = NULL; /* Part of the table data which got freed */ readttfencodings(tfv->ttf->fonts[i]); } } GDrawRequestExpose(tfv->v,NULL,false); } void MenuHelp(GWindow base,struct gmenuitem *mi,GEvent *e) { help("overview.html"); } void TableHelp(int table_name) { int k; for ( k=0; tableinfo[k].name!=0; ++k ) if ( tableinfo[k].name == table_name ) break; if ( tableinfo[k].name==0 ) MenuHelp(NULL,NULL,NULL); else { help(tableinfo[k].helppage); } } static int _TFVMenuClose(TtfView *tfv) { int i,j,mighthavechanged, process_and_save=false, ync; Table *tab; static int yesnocancel[] = { _STR_Yes, _STR_No, _STR_Cancel, 0 }; mighthavechanged = tfv->ttf->changed; for ( i=0; ittf->font_cnt && !mighthavechanged; ++i ) { for ( j=0; jttf->fonts[i]->tbl_cnt && !mighthavechanged; ++j ) if ( !tfv->ttf->fonts[i]->tbls[j]->special && tfv->ttf->fonts[i]->tbls[j]->tv!=NULL ) mighthavechanged = true; } if ( tfv->ttf->changed ) { ync = GWidgetAskR(_STR_FontChanged,yesnocancel,0,2, tfv->ttf->font_cnt>1?_STR_FontChangedSavem:_STR_FontChangedSave, tfv->ttf->fonts[0]->fontname); if ( ync==2 ) return( 0 ); process_and_save = ync==0; } else if ( mighthavechanged ) { ync = GWidgetAskR(_STR_TablesOpen,yesnocancel,0,2, tfv->ttf->font_cnt>1?_STR_TablesOpenSavem:_STR_TablesOpenSave, tfv->ttf->fonts[0]->fontname); if ( ync==2 ) return( 0 ); process_and_save = ync==0; } for ( i=0; ittf->font_cnt; ++i ) { for ( j=0; jttf->fonts[i]->tbl_cnt; ++j ) { tab = tfv->ttf->fonts[i]->tbls[j]; if ( tab->tv!=NULL && !tab->tv->destroyed ) { /* same table may be referenced by several fonts */ /* or in the case of EBDT, and bdat (maybe) by the same font */ /* so we may have sent them a close request without getting */ /* the destroy event. That's what destroyed is for */ if ( process_and_save ) { if ( !(tab->tv->virtuals->closeme)(tab->tv)) return( 0 ); } else { /* Just close without processing */ tab->tv->destroyed = true; GDrawDestroyWindow(tab->tv->gw); } } } GDrawSync(NULL); GDrawProcessPendingEvents(NULL); } if ( process_and_save && tfv->ttf->changed ) { if ( !_TFVMenuSave(tfv) ) return( 0 ); } RecentFilesRemember(tfv->ttf->filename); GDrawDestroyWindow(tfv->gw); return( 1 ); } static void TFVMenuClose(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); DelayEvent((void (*)(void *)) _TFVMenuClose, tfv); } void MenuPrefs(GWindow base,struct gmenuitem *mi,GEvent *e) { DoPrefs(); } static void _MenuExit(void *junk) { TtfView *tfv, *next; for ( tfv = tfv_list; tfv!=NULL; tfv = next ) { next = tfv->next; if ( !_TFVMenuClose(tfv)) return; } exit(0); } void MenuExit(GWindow base,struct gmenuitem *mi,GEvent *e) { DelayEvent((void (*)(void *)) _MenuExit, NULL); } static void fllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Recent: mi->ti.disabled = !RecentFilesAny(); break; case MID_Revert: mi->ti.disabled = !tfv->ttf->changed; break; case MID_RevertTable: /* If they've changed the glyph count then reverting tables is */ /* just too hard to figure out, we could easily be left in an */ /* inconsistant state */ mi->ti.disabled = tfv->sel_tab==NULL || !tfv->sel_tab->changed || tfv->sel_tab->new || tfv->sel_tab->special || tfv->ttf->gcchanged; break; } } } static Table *pastetab; static void TFVMenuCopy(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); if ( tfv->sel_tab==NULL || (tfv->sel_tab->changed && tfv->sel_tab->table_data!=NULL )) return; if ( pastetab==NULL ) pastetab = gcalloc(1,sizeof(Table)); free(pastetab->data); pastetab->name = tfv->sel_tab->name; TableFillup(tfv->sel_tab); pastetab->newlen = tfv->sel_tab->newlen==0? tfv->sel_tab->len : tfv->sel_tab->newlen; pastetab->data = galloc((pastetab->newlen+3)&~3); memcpy(pastetab->data,tfv->sel_tab->data,(pastetab->newlen+3)&~3); } static void TFVMenuCut(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); int i,j,k, cnt, anyothers; Table *tab; TtfFont *font; if ( tfv->sel_tab==NULL || (tfv->sel_tab->changed && tfv->sel_tab->table_data!=NULL )) return; TFVMenuCopy(gw,mi,e); cnt = 0; for ( k=0; kttf->font_cnt; ++k ) { ++cnt; /* for the font line itself (not a table) */ if ( cnt+tfv->ttf->fonts[k]->tbl_cnt > tfv->sel_line ) break; cnt += tfv->ttf->fonts[k]->tbl_cnt; } font = tfv->ttf->fonts[k]; anyothers = false; for ( i=0; ittf->font_cnt && !anyothers; ++i ) if ( i!=k ) { for ( j=0; jttf->fonts[i]->tbl_cnt; ++j ) { if ( tfv->ttf->fonts[i]->tbls[j]->name==tfv->sel_tab->name ) { anyothers = true; break; } } } i = tfv->sel_line-cnt; --font->tbl_cnt; memcpy(font->tbls+i,font->tbls+i+1,(font->tbl_cnt-i)*sizeof(Table *)); tfv->sel_line = -1; if ( !anyothers ) { if ( tfv->sel_tab->tv!=NULL ) (tfv->sel_tab->tv->virtuals->closeme)(tab->tv); free(tfv->sel_tab->data); if ( tfv->sel_tab->table_data ) (tfv->sel_tab->free_tabledata)(tfv->sel_tab->table_data); free(tfv->sel_tab); } tfv->sel_tab = NULL; tfv->ttf->changed = true; TFVScrollBarSetBounds(tfv); GDrawRequestExpose(tfv->v,NULL,false); } static void TFVMenuPaste(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); Table *tab = NULL; TtfFont *font=NULL; int i,j,k,cnt; static int yescancel[] = { _STR_Yes, _STR_Cancel, 0 }; if ( pastetab==NULL ) return; if ( tfv->sel_tab!=NULL ) { if ( tfv->sel_tab->name!=pastetab->name ) if ( GWidgetAskR(_STR_TableNameMismatch,yescancel,0,1, _STR_TableMismatch )==1 ) return; tab = tfv->sel_tab; cnt = 0; for ( k=0; kttf->font_cnt; ++k ) { if ( cnt+tfv->ttf->fonts[k]->tbl_cnt > tfv->sel_line ) { font = tfv->ttf->fonts[k]; break; } cnt += tfv->ttf->fonts[k]->tbl_cnt; } } else { for ( i=0; ittf->font_cnt && tab==NULL; ++i ) { font = tfv->ttf->fonts[i]; for ( j=0; jtbl_cnt; ++j ) { if ( font->tbls[j]->name==pastetab->name ) { tab = font->tbls[j]; break; } } } } if ( tab==NULL ) { tab = gcalloc(1,sizeof(Table)); tab->name = pastetab->name; font = tfv->ttf->fonts[0]; if ( font->tbl_cnt>=font->tbl_max ) { font->tbl_max += 10; font->tbls = grealloc(font->tbls,font->tbl_max*sizeof(Table *)); } for ( i=font->tbl_cnt; i>0 ; --i ) { font->tbls[i] = font->tbls[i-1]; if ( tab->name>font->tbls[i-1]->name ) break; } font->tbls[i] = tab; ++font->tbl_cnt; } else { if ( tab->tv!=NULL ) (tab->tv->virtuals->closeme)(tab->tv); free(tab->data); tab->data = NULL; if ( tab->table_data ) { (tab->free_tabledata)(tab->table_data); tab->table_data = NULL; tab->free_tabledata = NULL; tab->write_tabledata = NULL; } } tab->start = -1; tab->newlen = pastetab->newlen; tab->data = galloc(pastetab->newlen+3); tab->container = tfv->ttf; memcpy(tab->data,pastetab->data,(tab->newlen+3)&~3); tab->changed = true; tfv->ttf->changed = true; if ( tab->name==CHR('c','m','a','p') ) readttfencodings(font); TFVScrollBarSetBounds(tfv); GDrawRequestExpose(tfv->v,NULL,false); } static void edlistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_Copy: case MID_Cut: mi->ti.disabled = tfv->sel_tab==NULL || (tfv->sel_tab->changed && tfv->sel_tab->table_data!=NULL); break; case MID_Paste: mi->ti.disabled = pastetab==NULL; break; } } } static GMenuItem dummyitem[] = { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'N' }, NULL }; static GMenuItem fllist[] = { { { (unichar_t *) _STR_Open, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'O' }, 'O', ksm_control, NULL, NULL, MenuOpen }, { { (unichar_t *) _STR_Recent, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, '\0', ksm_control, dummyitem, MenuRecentBuild, NULL, MID_Recent }, { { (unichar_t *) _STR_Close, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'Q', ksm_control|ksm_shift, NULL, NULL, TFVMenuClose }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Save, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'S' }, 'S', ksm_control, NULL, NULL, TFVMenuSave }, { { (unichar_t *) _STR_SaveAs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'a' }, 'S', ksm_control|ksm_shift, NULL, NULL, TFVMenuSaveAs }, { { (unichar_t *) _STR_Revertfile, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'R', ksm_control|ksm_shift, NULL, NULL, TFVMenuRevert, MID_Revert }, { { (unichar_t *) _STR_RevertTable, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'T' }, '\0', ksm_control|ksm_shift, NULL, NULL, TFVMenuRevertTable, MID_RevertTable }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, /* { { (unichar_t *) _STR_Prefs, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'e' }, '\0', ksm_control, NULL, NULL, MenuPrefs }, */ /* { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, */ { { (unichar_t *) _STR_Quit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'Q' }, 'Q', ksm_control, NULL, NULL, MenuExit }, { NULL } }; static GMenuItem edlist[] = { { { (unichar_t *) _STR_Undo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'U' }, 'Z', ksm_control, NULL, NULL }, { { (unichar_t *) _STR_Redo, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'R' }, 'Y', ksm_control, NULL, NULL }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_Cut, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 't' }, 'X', ksm_control, NULL, NULL, TFVMenuCut, MID_Cut }, { { (unichar_t *) _STR_Copy, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'C' }, 'C', ksm_control, NULL, NULL, TFVMenuCopy, MID_Copy }, { { (unichar_t *) _STR_Paste, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'P' }, 'V', ksm_control, NULL, NULL, TFVMenuPaste, MID_Paste }, { { NULL, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 1, 0, 0, }}, { { (unichar_t *) _STR_SelectAll, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 1, 0, 'A' }, 'A', ksm_control, NULL, NULL, NULL }, { NULL } }; GMenuItem helplist[] = { { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, GK_F1, 0, NULL, NULL, MenuHelp }, { NULL } }; static GMenuItem mblist[] = { { { (unichar_t *) _STR_File, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'F' }, 0, 0, fllist, fllistcheck }, { { (unichar_t *) _STR_Edit, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'E' }, 0, 0, edlist, edlistcheck }, { { (unichar_t *) _STR_Window, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'W' }, 0, 0, NULL, WindowMenuBuild, NULL }, { { (unichar_t *) _STR_Help, NULL, COLOR_DEFAULT, COLOR_DEFAULT, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 'H' }, 0, 0, helplist, NULL }, { NULL } }; static void TFVChar(TtfView *tfv,GEvent *e) { if ( e->u.chr.keysym==GK_Escape ) { tfv->sel_tab = NULL; #if MyMemory } else if ( e->u.chr.keysym==GK_F2 ) { printf( "Memory Check On\n" ); __malloc_debug(5); } else if ( e->u.chr.keysym==GK_F3 ) { __malloc_debug(0); printf( "Memory Check Off\n" ); #endif } } static void TFVMouse(TtfView *tfv,GEvent *e) { TtfFile *ttf = tfv->ttf; TtfFont *font; int seek = (e->u.mouse.y-2) / tfv->fh + tfv->lpos; int i,j, l, k, needsexpose; Table *tab; GGadgetEndPopup(); j = -2; for ( i=l=0; i< ttf->font_cnt; ++i ) { j = -1; if ( l==seek ) break; font = ttf->fonts[i]; ++l; for ( j=0; jtbl_cnt; ++j, ++l ) { if ( l==seek ) break; } if ( j==font->tbl_cnt ) j= -2; if ( l==seek ) break; } if ( j==-2 ) { /* Beyond end of file */ if ( tfv->sel_line!=-1 && e->type==et_mousedown ) { tfv->sel_line = -1; tfv->sel_tab = NULL; GDrawRequestExpose(tfv->v,NULL,false); } return; } tab = NULL; k = -1; if ( j!=-1 ) { tab = font->tbls[j]; for ( k=0; tableinfo[k].name!=0; ++k ) if ( tableinfo[k].name == tab->name ) break; if ( tableinfo[k].name==0 ) k = -1; } if ( e->type == et_mousedown ) { tfv->pressed = true; needsexpose = false; if ( tab==NULL ) seek = -1; if ( tfv->sel_line!=seek ) { tfv->sel_line = seek; tfv->sel_tab = tab; needsexpose = true; } if ( i!=tfv->selectedfont ) { tfv->selectedfont = i; needsexpose = true; } if ( needsexpose ) GDrawRequestExpose(tfv->v,NULL,false); if ( tab!=NULL && e->u.mouse.clicks==2 ) { if ( tab->tv!=NULL ) { GDrawSetVisible(tab->tv->gw,true); GDrawRaise(tab->tv->gw); } else if ( tableinfo[k].createviewer==NULL || (e->u.mouse.state&(ksm_control|ksm_meta)) ) { if ( tab->td_changed ) { static int buts[] = { _STR_Yes, _STR_Cancel, 0 }; if ( GWidgetAskR(_STR_TabMod,buts,0,1,_STR_TabModNotBinary)==1 ) return; if ( !_TFVMenuSave(tfv)) return; } binaryCreateEditor(tab,tfv); } else if(k==-1) binaryCreateEditor(tab,tfv); else (tableinfo[k].createviewer)(tab,tfv); } } else if ( e->type == et_mouseup ) { tfv->pressed = false; } else if ( e->type == et_mousemove && !tfv->pressed ) { if ( k!=-1 ) GGadgetPreparePopup(tfv->gw, GStringGetResource(tableinfo[k].description,NULL)); } } static void TFVExpose(TtfView *tfv,GWindow pixmap,GRect *rect) { int low, high; int i,j, l; TtfFile *ttf = tfv->ttf; TtfFont *font; unichar_t buffer[60]; static unichar_t spec[] = { ' ', '%', '8', 'd', ' ', '%', '8', 'd', '\0' }; static unichar_t spec_tch[] = { ' ', '%', '8', 'd', ' ', '?', '?', '?', '\0' }; GRect sel; static unichar_t unk[] = { '?','?','?', '\0' }; low = rect->y/tfv->fh + tfv->lpos; high = (rect->y+rect->height+tfv->fh-1)/tfv->fh + tfv->lpos; for ( i=l=0; i< ttf->font_cnt; ++i ) { if ( l>high ) break; font = ttf->fonts[i]; if ( l>=low ) { GDrawDrawLine(pixmap,0,(l-tfv->lpos)*tfv->fh,tfv->vwidth,(l-tfv->lpos)*tfv->fh, i==tfv->selectedfont || i==tfv->selectedfont+1 ? 0 : 0x808080 ); GDrawSetFont(pixmap,tfv->bold); GDrawDrawText(pixmap,10,(l-tfv->lpos)*tfv->fh+tfv->as+2, font->fontname?font->fontname:unk,-1,NULL,0); } ++l; for ( j=0; jtbl_cnt; ++j, ++l ) { if ( l>high ) break; if ( l>=low ) { if ( l==tfv->sel_line ) { sel.x = 0; sel.width = tfv->vwidth; sel.y = (l-tfv->lpos)*tfv->fh + 3; sel.height = tfv->fh-1; GDrawFillRect(pixmap,&sel,COLOR_CREATE(0xff,0xff,0x00)); } buffer[0] = (font->tbls[j]->name>>24)&0xff; buffer[1] = (font->tbls[j]->name>>16)&0xff; buffer[2] = (font->tbls[j]->name>>8)&0xff; buffer[3] = (font->tbls[j]->name )&0xff; u_sprintf(buffer+4, font->tbls[j]->td_changed? spec_tch : spec, font->tbls[j]->start, font->tbls[j]->changed ? font->tbls[j]->newlen: font->tbls[j]->len); GDrawSetFont(pixmap, font->tbls[j]->changed ? tfv->bold : tfv->font); GDrawDrawText(pixmap,3,(l-tfv->lpos)*tfv->fh+tfv->as+2,buffer,-1,NULL,0); } } } } static void TFVScroll(TtfView *tfv,struct sbevent *sb) { int newpos = tfv->lpos; switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= tfv->vheight/tfv->fh; break; case et_sb_up: --newpos; break; case et_sb_down: ++newpos; break; case et_sb_downpage: newpos += tfv->vheight/tfv->fh; break; case et_sb_bottom: newpos = tfv->lheight-tfv->vheight/tfv->fh; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos>tfv->lheight-tfv->vheight/tfv->fh ) newpos = tfv->lheight-tfv->vheight/tfv->fh; if ( newpos<0 ) newpos =0; if ( newpos!=tfv->lpos ) { int diff = newpos-tfv->lpos; tfv->lpos = newpos; GScrollBarSetPos(tfv->vsb,tfv->lpos); GDrawScroll(tfv->v,NULL,0,diff*tfv->fh); } } static void TFVResize(TtfView *tfv,GEvent *event) { GRect pos; int lh, i; /* Multiple of the number of lines we've got */ if ( (event->u.resize.size.height-tfv->mbh-4)%tfv->fh!=0 ) { int lc = (event->u.resize.size.height-tfv->mbh-4+tfv->fh/2)/tfv->fh; if ( lc<=0 ) lc = 1; GDrawResize(tfv->gw, event->u.resize.size.width,lc*tfv->fh+tfv->mbh+4); return; } pos.width = GDrawPointsToPixels(tfv->gw,_GScrollBar_Width); pos.height = event->u.resize.size.height-tfv->mbh; pos.x = event->u.resize.size.width-pos.width; pos.y = tfv->mbh; GGadgetResize(tfv->vsb,pos.width,pos.height); GGadgetMove(tfv->vsb,pos.x,pos.y); pos.width = pos.x; pos.x = 0; GDrawResize(tfv->v,pos.width,pos.height); tfv->vheight = pos.height; tfv->vwidth = pos.width; for ( i=0, lh=0; ittf->font_cnt; ++i ) lh += 1 + tfv->ttf->fonts[i]->tbl_cnt; tfv->lheight = lh; GScrollBarSetBounds(tfv->vsb,0,lh,tfv->vheight/tfv->fh); if ( tfv->lpos + tfv->vheight/tfv->fh > lh ) tfv->lpos = lh-tfv->vheight/tfv->fh; GScrollBarSetPos(tfv->vsb,tfv->lpos); } void TtfViewFree(TtfView *tfv) { DictionaryFree(tfv->fontvars); free(tfv); } static int v_e_h(GWindow gw, GEvent *event) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: TFVExpose(tfv,gw,&event->u.expose.rect); break; case et_char: TFVChar(tfv,event); break; case et_mousemove: case et_mousedown: case et_mouseup: TFVMouse(tfv,event); break; case et_timer: break; case et_focus: break; } return( true ); } static int tfv_e_h(GWindow gw, GEvent *event) { TtfView *tfv = (TtfView *) GDrawGetUserData(gw); switch ( event->type ) { case et_expose: break; case et_resize: TFVResize(tfv,event); break; case et_char: TFVChar(tfv,event); break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: TFVScroll(tfv,&event->u.control.u.sb); break; } break; case et_close: TFVMenuClose(gw,NULL,NULL); break; case et_create: tfv->next = tfv_list; tfv_list = tfv; break; case et_destroy: if ( tfv_list==tfv ) tfv_list = tfv->next; else { TtfView *n; for ( n=tfv_list; n->next!=tfv; n=n->next ); n->next = tfv->next; } TtfViewFree(tfv); break; } return( true ); } TtfView *_TtfViewCreate(TtfFile *tf) { TtfView *tfv = gcalloc(1,sizeof(TtfView)); tf->tfv = tfv; tfv->ttf = tf; tfv->sel_line = -1; return( tfv ); } TtfView *TtfViewCreate(TtfFile *tf) { GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetData gd; GGadget *sb; GRect gsize; TtfView *tfv = _TtfViewCreate(tf); FontRequest rq; static unichar_t monospace[] = { 'c','o','u','r','i','e','r',',','m', 'o', 'n', 'o', 's', 'p', 'a', 'c', 'e',',','c','a','s','l','o','n',',','u','n','i','f','o','n','t', '\0' }; int as,ds,ld, i,lh; unichar_t *title; if ( ttf_icon==NULL ) ttf_icon = GDrawCreateBitmap(NULL,ttf_width,ttf_height,ttf_bits); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<is_ttc || tf->fonts[0]->fontname==NULL ) title = uc_copy(GFileNameTail(tf->filename)); else { title = galloc((u_strlen(tf->fonts[0]->fontname)+4+strlen(GFileNameTail(tf->filename))+1)*sizeof(unichar_t) ); u_strcpy(title,tf->fonts[0]->fontname); uc_strcat(title," in "); uc_strcat(title,GFileNameTail(tf->filename)); } wattrs.window_title = title; wattrs.icon = ttf_icon; pos.x = pos.y = 0; pos.width = 180; pos.height = 100; tfv->gw = gw = GDrawCreateTopWindow(NULL,&pos,tfv_e_h,tfv,&wattrs); free(title); memset(&gd,0,sizeof(gd)); gd.flags = gg_visible | gg_enabled; gd.u.menu = mblist; tfv->mb = GMenuBarCreate( gw, &gd, NULL); GGadgetGetSize(tfv->mb,&gsize); tfv->mbh = gsize.height; gd.pos.y = tfv->mbh; gd.pos.height = pos.height-tfv->mbh; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; tfv->vsb = sb = GScrollBarCreate(gw,&gd,tfv); wattrs.mask = wam_events|wam_cursor; pos.x = 0; pos.y = tfv->mbh; pos.width = gd.pos.x; pos.height -= tfv->mbh; tfv->v = GWidgetCreateSubWindow(gw,&pos,v_e_h,tfv,&wattrs); GDrawSetVisible(tfv->v,true); memset(&rq,0,sizeof(rq)); rq.family_name = monospace; rq.point_size = -12; rq.weight = 700; tfv->bold = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); rq.weight = 400; tfv->font = GDrawInstanciateFont(GDrawGetDisplayOfWindow(gw),&rq); GDrawSetFont(tfv->v,tfv->font); GDrawFontMetrics(tfv->font,&as,&ds,&ld); tfv->as = as+1; tfv->fh = tfv->as+ds; for ( i=0, lh=0; ittf->font_cnt; ++i ) lh += 1 + tfv->ttf->fonts[i]->tbl_cnt; if ( lh>40 ) lh = 40; if ( lh<4 ) lh = 4; GDrawResize(tfv->gw,pos.width+gd.pos.width,tfv->mbh+lh*tfv->fh); GDrawSetVisible(gw,true); #if 0 /* Open up the glyph table if it's there */ for ( i=0; ifonts[0]->tbl_cnt; ++i ) if ( tf->fonts[0]->tbls[i]->name==CHR('g','l','y','f')) break; if ( tf->font_cnt==1 && ifonts[0]->tbl_cnt ) fontCreateEditor(tf->fonts[0]->tbls[i],tfv); #endif return( tfv ); } mensis-080507/ttfview.h0100664000076500007650000002076411010403077013167 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _TTFVIEW_H #define _TTFVIEW_H #include "ttffont.h" #include "conicfont.h" #include #include struct ttfargs; struct ttfactions; struct tableviewfuncs { int (*closeme)(struct tableview *); /* 1 return => closed, 0 => cancelled */ int (*processdata) (struct tableview *); /* bring table->data up to date */ }; /* Superclass for all tables */ typedef struct tableview { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ } TableView; typedef struct ttfview { TtfFile *ttf; GWindow gw, v; GGadget *vsb, *mb; int16 mbh; /* Menu bar height */ int vheight, vwidth;/* of v */ int lheight, lpos; /* logical height */ GFont *font, *bold; int16 as, fh; int16 selectedfont; int16 sel_line; Table *sel_tab; struct ttfview *next; unsigned int pressed: 1; struct dictionary *fontvars; /* Scripting */ int active_font; /* Scripting */ } TtfView; struct freetype_raster { int16 rows, cols; int16 as, lb; int16 bytes_per_row; int16 num_greys; uint8 *bitmap; }; typedef struct fontview /* : tableview */ { Table *table; /* Glyph table */ GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* fontview specials */ GGadget *mb, *vsb; int lpos, rows, cols, boxh; int16 as, fh, ifh, ias; int16 vheight, vwidth; int16 mbh, sbw; GFont *gfont, *ifont; struct conicfont *cf; int info_glyph; #if TT_RASTERIZE_FONTVIEW struct freetype_raster **rasters; void *freetype_face; #endif } FontView; struct charshows { unsigned int instrpane: 1; /* Show the character's instructions */ unsigned int glosspane: 1; /* Show our gloss on instructions */ unsigned int addr: 1; /* Show addresses in the instructions */ unsigned int fore: 1; /* Show the character's splines */ unsigned int grid: 1; /* Show grid lines */ #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER unsigned int gridspline: 1; /* Show gridfit splines */ unsigned int raster: 1; /* Show a bitmap for this grid */ # if TT_CONFIG_OPTION_BYTECODE_DEBUG unsigned int twilight: 1; /* Show the twilight points we generated */ # endif #endif uint16 ppem; /* for the grid/gridfitting */ }; enum byte_types { bt_instr, bt_cnt, bt_byte, bt_wordhi, bt_wordlo }; struct instrinfo { GWindow v; GGadget *vsb; int16 sbw; int16 vheight, vwidth; int16 lheight,lpos; int16 as, fh; struct instrdata *instrdata; GFont *gfont; #if TT_CONFIG_OPTION_BYTECODE_DEBUG struct ttfargs *args; struct ttfactions *acts; int act_cnt; int gsel_pos; #endif int isel_pos; unsigned int changed: 1; unsigned int showaddr: 1; unsigned int showhex: 1; unsigned int mousedown: 1; void (*selection_callback)(struct instrinfo *); }; typedef struct charview { ConicChar *cc; GWindow gw, v, glossv; struct charview *next; GGadget *mb, *gvsb, *vsb, *hsb; int xoff, yoff, gvpos; int16 as, fh, sas, sfh, numlen, infoh; int16 vheight, vwidth, gvwidth, gvheight, iwidth; int16 mbh, sbw; GFont *gfont, *sfont; real scale; GPoint mouse; /* Current mouse point */ BasePoint info; /* Expressed in char coordinate system */ unsigned int destroyed: 1; /* window has been destroyed */ unsigned int pressed:1; signed int in_gloss_bar:4; signed int in_instr_bar:4; unsigned int bar_cursor; struct charshows show; struct instrinfo instrinfo; #if TT_CONFIG_OPTION_BYTECODE_INTERPRETER ConicPointList *gridfit; struct freetype_raster *raster; real gridwidth; # if TT_CONFIG_OPTION_BYTECODE_DEBUG int twilight_cnt; BasePoint *twilight; # endif #endif #if TT_CONFIG_OPTION_BYTECODE_DEBUG int16 *cvtvals; #endif Table *cvt; } CharView; typedef struct drect { real x, y; real width, height; } DRect; extern void TtfViewFree(TtfView *tfv); extern void DelayEvent(void (*func)(void *), void *data); extern TtfView *ViewTtfFont(char *filename); extern TtfView *_TtfViewCreate(TtfFile *tf); extern TtfView *TtfViewCreate(TtfFile *tf); extern void FontNew(void); extern void MenuOpen(GWindow base,struct gmenuitem *mi,GEvent *e); extern void TableHelp(int table_name); extern void MenuHelp(GWindow base,struct gmenuitem *mi,GEvent *e); extern void MenuPrefs(GWindow base,struct gmenuitem *mi,GEvent *e); extern void MenuExit(GWindow base,struct gmenuitem *mi,GEvent *e); int _TFVMenuSaveAs(TtfView *tfv); int _TFVMenuSave(TtfView *tfv); int _TFVMenuRevert(TtfView *tfv); extern void MensisSetFallback(void); extern void LoadPrefs(void); extern void SavePrefs(void); extern void DoPrefs(void); extern void RecentFilesRemember(char *filename); extern unichar_t *FVOpenFont(const unichar_t *title, const unichar_t *defaultfile, const unichar_t *initial_filter, unichar_t **mimetypes,int mult,int newok); void WindowMenuBuild(GWindow base,struct gmenuitem *mi,GEvent *e); int RecentFilesAny(void); void MenuRecentBuild(GWindow base,struct gmenuitem *mi,GEvent *e); void _heaChangeLongMetrics(Table *_hea,int newlongcnt); void headViewUpdateModifiedCheck(Table *tab); void MaxPSetStack(Table *maxp,int newval); void MaxPSetStorage(Table *maxp,int newval); void MaxPSetFDef(Table *maxp,int newval); void headCreateEditor(Table *tab,TtfView *tfv); void maxpCreateEditor(Table *tab,TtfView *tfv); void postCreateEditor(Table *tab,TtfView *tfv); void OS2CreateEditor(Table *tab,TtfView *tfv); void _heaCreateEditor(Table *tab,TtfView *tfv); void instrCreateEditor(Table *tab,TtfView *tfv); void binaryCreateEditor(Table *tab,TtfView *tfv); void shortCreateEditor(Table *tab,TtfView *tfv); void metricsCreateEditor(Table *tab,TtfView *tfv); void gaspCreateEditor(Table *tab,TtfView *tfv); void fontCreateEditor(Table *tab,TtfView *tfv); /* glyph, loca */ void VORGCreateEditor(Table *tab,TtfView *tfv); void InstrModCreate(struct instrinfo *ii); int CVClose(CharView *cv); void charCreateEditor(ConicFont *cf,int glyph); void instr_scroll(struct instrinfo *ii,struct sbevent *sb); void instr_mousedown(struct instrinfo *ii,int pos); void instr_mousemove(struct instrinfo *ii,int pos); void instr_expose(struct instrinfo *ii,GWindow pixmap,GRect *rect); int IIChar(struct instrinfo *ii,GEvent *ch); void instr_typify(struct instrinfo *instrinfo); void instrhelpsetup(void); #if TT_RASTERIZE_FONTVIEW || TT_CONFIG_OPTION_BYTECODE_INTERPRETER /* Interface routines to FreeType */ struct freetype_raster *FreeType_GetRaster(FontView *fv,int index); void FreeType_ShowRaster(GWindow pixmap,int x,int y, struct freetype_raster *raster); void FreeType_GridFitChar(CharView *cv); #endif void FreeType_FreeRaster(struct freetype_raster *); #if TT_CONFIG_OPTION_BYTECODE_DEBUG void CVGenerateGloss(CharView *cv); #endif void TtfActionsFree(struct ttfactions *acts); extern void doversion(void); extern void DictionaryFree(struct dictionary *dica); #endif mensis-080507/uiutil.c0100664000076500007650000003213611010404770013002 0ustar gwwgww/* Copyright (C) 2001-2002 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include #include extern char *helpdir; void ProtestR(int labelr) { unichar_t ubuf[80]; u_strcpy(ubuf,GStringGetResource(_STR_Badnumberin,NULL)); u_strcat(ubuf,GStringGetResource(labelr,NULL)); if ( ubuf[u_strlen(ubuf)-1]==' ' ) ubuf[u_strlen(ubuf)-1]='\0'; if ( ubuf[u_strlen(ubuf)-1]==':' ) ubuf[u_strlen(ubuf)-1]='\0'; GWidgetPostNotice(ubuf,ubuf); } real GetRealR(GWindow gw,int cid,int namer,int *err) { const unichar_t *txt; unichar_t *end; real val; txt = _GGadgetGetTitle(GWidgetGetControl(gw,cid)); val = u_strtod(txt,&end); if ( *end!='\0' ) { ProtestR(namer); *err = true; } return( val ); } int GetIntR(GWindow gw,int cid,int namer,int *err) { const unichar_t *txt; unichar_t *end; int val; txt = _GGadgetGetTitle(GWidgetGetControl(gw,cid)); val = u_strtol(txt,&end,10); if ( *end!='\0' ) { ProtestR(namer); *err = true; } return( val ); } int GetHexR(GWindow gw,int cid,int namer,int *err) { const unichar_t *txt; unichar_t *end; int val; txt = _GGadgetGetTitle(GWidgetGetControl(gw,cid)); if ( *txt=='U' && txt[1]=='+' ) txt += 2; val = u_strtoul(txt,&end,16); if ( *end!='\0' ) { ProtestR(namer); *err = true; } return( val ); } int GetListR(GWindow gw,int cid,int namer,int *err) { int val; GTextInfo *ti; ti = GGadgetGetListItemSelected(GWidgetGetControl(gw,cid)); val = (int) (ti->userdata); return( val ); } void GetDateR(GWindow gw,int cid,int namer,uint32 date[2],int *err) { const unichar_t *txt; unichar_t *end; struct tm tm, *test; time_t t; txt = _GGadgetGetTitle(GWidgetGetControl(gw,cid)); while ( *txt==' ' ) ++txt; if ( uc_strmatch(txt,"now")==0 ) { time(&t); } else { memset(&tm,'\0',sizeof(tm)); tm.tm_year = u_strtol(txt,&end,10)-1900; if ( *end=='-' ) ++end; tm.tm_mon = u_strtol(end,&end,10)-1; if ( *end=='-' ) ++end; tm.tm_mday = u_strtol(end,&end,10); while ( *end==' ' ) ++end; tm.tm_hour = u_strtol(end,&end,10); if ( *end==':' ) ++end; tm.tm_min = u_strtol(end,&end,10); if ( *end==':' ) ++end; tm.tm_sec = u_strtol(end,&end,10); t = mktime(&tm); /* mktime is not document to deal with dst correctly */ test = localtime(&t); if ( test->tm_isdst ) t -= 60*60; } TimeTToQuad(t,date); } void TimeTToQuad(time_t t, uint32 date[2]) { uint32 date1904[4]; uint32 year[2]; int i; if ( sizeof(time_t)>32 ) { /* as unixes switch over to 64 bit times, this will be the better */ /* solution */ t += ((time_t) 60)*60*24*365*(70-4); t += 60*60*24*(70-4)/4; /* leap years */ date[0] = ((t>>16)>>16); date[1] = t&0xffffffff; } else { date1904[0] = date1904[1] = date1904[2] = date1904[3] = 0; year[0] = 60*60*24*365; year[1] = year[0]>>16; year[0] &= 0xffff; for ( i=4; i<70; ++i ) { date1904[3] += year[0]; date1904[2] += year[1]; if ( (i&3)==0 ) date1904[3] += 60*60*24; date1904[2] += date1904[3]>>16; date1904[3] &= 0xffff; date1904[1] += date1904[2]>>16; date1904[2] &= 0xffff; } date1904[3] += t&0xffff; date1904[2] += t>>16; date1904[2] += date1904[3]>>16; date1904[3] &= 0xffff; date1904[1] += date1904[2]>>16; date1904[2] &= 0xffff; date[0] = (date1904[0]<<16) | date1904[1]; date[1] = (date1904[2]<<16) | date1904[3]; } } #if __CygWin /* Try to find the default browser by looking it up in the windows registry */ /* The registry is organized as a tree. We are interested in the subtree */ /* starting at HKEY_CLASSES_ROOT. This contains two different kinds of things*/ /* Extensions and Programs. First we look up the extension and it refers us */ /* to a program. So we look up the program, and look up shell->open->command */ /* in it. The value of command is a path followed by potential arguments */ /* viz: c:\program files\foobar "%1" */ /* Extensions seem to contain the ".", so ".html" not "html" */ #include #include #include static char *win_program_from_extension(char *exten) { DWORD type, dlen, err; char programindicator[1000]; char programpath[1000]; HKEY hkey_prog, hkey_shell, hkey_open, hkey_exten, hkey_command; char *pt; if ( RegOpenKeyEx(HKEY_CLASSES_ROOT,exten,0,KEY_READ,&hkey_exten)!=ERROR_SUCCESS ) { /*fprintf( stderr, "Failed to find extension \"%s\", did it have a period?\n", exten );*/ return( NULL ); } dlen = sizeof(programindicator); if ( (err=RegQueryValueEx(hkey_exten,"",NULL,&type,(uint8 *)programindicator,&dlen))!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to default value of exten \"%s\".\n Error=%ld", exten, err ); RegCloseKey(hkey_exten); return( NULL ); } RegCloseKey(hkey_exten); if ( RegOpenKeyEx(HKEY_CLASSES_ROOT,programindicator,0,KEY_READ,&hkey_prog)!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to find program \"%s\"\n", programindicator ); return( NULL ); } if ( RegOpenKeyEx(hkey_prog,"shell",0,KEY_READ,&hkey_shell)!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to find \"%s->shell\"\n", programindicator ); RegCloseKey(hkey_prog); return( NULL ); } if ( RegOpenKeyEx(hkey_shell,"open",0,KEY_READ,&hkey_open)!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to find \"%s->shell->open\"\n", programindicator ); RegCloseKey(hkey_prog); RegCloseKey(hkey_shell); return( NULL ); } if ( RegOpenKeyEx(hkey_open,"command",0,KEY_READ,&hkey_command)!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to find \"%s->shell->open\"\n", programindicator ); RegCloseKey(hkey_prog); RegCloseKey(hkey_shell); RegCloseKey(hkey_command); return( NULL ); } dlen = sizeof(programpath); if ( RegQueryValueEx(hkey_command,"",NULL,&type,(uint8 *)programpath,&dlen)!=ERROR_SUCCESS ) { fprintf( stderr, "Failed to find default for \"%s->shell->open->command\"\n", programindicator ); RegCloseKey(hkey_prog); RegCloseKey(hkey_shell); RegCloseKey(hkey_open); RegCloseKey(hkey_command); return( NULL ); } RegCloseKey(hkey_prog); RegCloseKey(hkey_shell); RegCloseKey(hkey_open); RegCloseKey(hkey_command); pt = strstr(programpath,"%1"); if ( pt!=NULL ) pt[1] = 's'; return( copy(programpath)); } static void do_windows_browser(char *fullspec) { char *format, *start, *pt, ch, *temp, *cmd; format = win_program_from_extension(".html"); if ( format==NULL ) format = win_program_from_extension(".htm"); if ( format==NULL ) { GDrawError("Could not find a browser. Set the BROWSER environment variable to point to one" ); return; } if ( format[0]=='"' || format[0]=='\'' ) { start = format+1; pt = strchr(start,format[0]); } else { start = format; pt = strchr(start,' '); } if ( pt==NULL ) pt = start+strlen(start); ch = *pt; *pt='\0'; temp = galloc(strlen(start)+300+ (ch==0?0:strlen(pt+1))); cygwin_conv_to_full_posix_path(start,temp+1); temp[0]='"'; strcat(temp,"\" "); if ( ch!='\0' ) strcat(temp,pt+1); cmd = galloc(strlen(temp)+strlen(fullspec)+8); sprintf( cmd, temp, fullspec ); strcat(cmd," &" ); system(cmd); free( cmd ); free( temp ); free( format ); } #endif static char browser[1025]; static void findbrowser(void) { #if __CygWin static char *stdbrowsers[] = { "netscape.exe", "opera.exe", "galeon.exe", "kfmclient.exe", "mozilla.exe", "mosaic.exe", /*"grail",*/ "iexplore.exe", /*"lynx.exe",*/ #else static char *stdbrowsers[] = { "mozilla", "opera", "galeon", "kfmclient", "netscape", "mosaic", /*"grail",*/ "lynx", #endif NULL }; int i; char *path; if ( getenv("BROWSER")!=NULL ) { strcpy(browser,getenv("BROWSER")); #if __CygWin /* Get rid of any dos style names */ if ( isalpha(browser[0]) && browser[1]==':' && browser[2]=='\\' ) cygwin_conv_to_full_posix_path(getenv("BROWSER"),browser); else if ( strchr(browser,'/')==NULL ) { if ( strstrmatch(browser,".exe")==NULL ) strcat(browser,".exe"); if ( (path=_GFile_find_program_dir(browser))!=NULL ) { snprintf(browser,sizeof(browser),"%s/%s", path, getenv("BROWSER")); free(path); } } #endif if ( strcmp(browser,"kde")==0 || strcmp(browser,"kfm")==0 || strcmp(browser,"konqueror")==0 || strcmp(browser,"kfmclient")==0 ) strcpy(browser,"kfmclient openURL"); return; } for ( i=0; stdbrowsers[i]!=NULL; ++i ) { if ( (path=_GFile_find_program_dir(stdbrowsers[i]))!=NULL ) { if ( strcmp(stdbrowsers[i],"kfmclient")==0 ) strcpy(browser,"kfmclient openURL"); else #if __CygWin snprintf(browser,sizeof(browser),"%s/%s", path, stdbrowsers[i]); #else strcpy(browser,stdbrowsers[i]); #endif free(path); return; } } #if __Mac strcpy(browser,"open"); /* thanks to riggle */ #endif } void help(char *file) { char fullspec[1024], *temp, *pt; if ( browser[0]=='\0' ) findbrowser(); #ifndef __CygWin if ( browser[0]=='\0' ) { GDrawError("Could not find a browser. Set the BROWSER environment variable to point to one" ); return; } #endif if ( strstr(file,"http://")==NULL ) { fullspec[0] = 0; if ( *file!='/' ) { if ( helpdir==NULL || *helpdir=='\0' ) { #ifdef DOCDIR strcpy(fullspec,DOCDIR "/"); #elif defined(SHAREDIR) strcpy(fullspec,SHAREDIR "/../doc/mensis/"); #else strcpy(fullspec,"/usr/local/share/doc/mensis/"); #endif } else strcpy(fullspec,helpdir); } strcat(fullspec,file); if (( pt = strrchr(fullspec,'#') )!=NULL ) *pt ='\0'; if ( !GFileReadable( fullspec )) { if ( *file!='/' ) { strcpy(fullspec,"/usr/share/doc/mensis/"); strcat(fullspec,file); if (( pt = strrchr(fullspec,'#') )!=NULL ) *pt ='\0'; } } if ( !GFileReadable( fullspec )) { strcpy(fullspec,"http://mensis.sf.net/"); strcat(fullspec,file); } else if ( pt!=NULL ) *pt = '#'; } else strcpy(fullspec,file); #if __CygWin if ( (strstrmatch(browser,"/cygdrive")!=NULL || browser[0]=='\0') && strstr(fullspec,":/")==NULL ) { /* It looks as though the browser is a windows application, so we */ /* should give it a windows file name */ char *pt, *tpt; temp = galloc(1024); cygwin_conv_to_full_win32_path(fullspec,temp); for ( pt = fullspec, tpt = temp; *tpt && pt #include #include #define CID_Version 1000 #define CID_MinorVersion 1001 #define CID_DefYOrig 1002 #define CID_AddOrig 1003 typedef struct vorgview /* : tableview */ { Table *table; GWindow gw, v; struct tableviewfuncs *virtuals; TtfFont *font; /* for the encoding currently used */ struct ttfview *owner; unsigned int destroyed: 1; /* window has been destroyed */ /* vorg specials */ } VORGView; static int vorg_processdata(TableView *tv) { int err = false; int version, minor, defyorig, addorig; version = GetIntR(tv->gw,CID_Version,_STR_Version,&err); minor = GetIntR(tv->gw,CID_MinorVersion,_STR_Minor,&err); defyorig = GetIntR(tv->gw,CID_DefYOrig,_STR_DefYOrig,&err); addorig = GetIntR(tv->gw,CID_AddOrig,_STR_AddOrig,&err); if ( err ) return( false ); ptputushort(tv->table->data,version); ptputushort(tv->table->data+2,minor); ptputushort(tv->table->data+4,defyorig); ptputushort(tv->table->data+6,addorig); /* there are also addorig entries of but I'm not showing those yet */ if ( !tv->table->changed ) { tv->table->changed = true; tv->table->container->changed = true; GDrawRequestExpose(tv->owner->v,NULL,false); } return( true ); } static int vorg_close(TableView *tv) { if ( vorg_processdata(tv)) { tv->destroyed = true; GDrawDestroyWindow(tv->gw); return( true ); } return( false ); } static struct tableviewfuncs vorgfuncs = { vorg_close, vorg_processdata }; static int VORG_Cancel(GGadget *g, GEvent *e) { GWindow gw; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); ((TableView *) GDrawGetUserData(gw))->destroyed = true; GDrawDestroyWindow(gw); } return( true ); } static int VORG_OK(GGadget *g, GEvent *e) { GWindow gw; VORGView *vv; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); vv = GDrawGetUserData(gw); vorg_close((TableView *) vv); } return( true ); } static int vorg_e_h(GWindow gw, GEvent *event) { VORGView *vv = GDrawGetUserData(gw); if ( event->type==et_close ) { vv->destroyed = true; GDrawDestroyWindow(vv->gw); } else if ( event->type == et_destroy ) { vv->table->tv = NULL; free(vv); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_Help || event->u.chr.keysym == GK_F1 ) { TableHelp(vv->table->name); system("netscape http://partners.adobe.com/asn/developer/opentype/vorg.html &"); return( true ); } else if (( event->u.chr.state&ksm_control ) && (event->u.chr.keysym=='q' || event->u.chr.keysym=='Q')) { MenuExit(NULL,NULL,NULL); } return( false ); } return( true ); } void VORGCreateEditor(Table *tab,TtfView *tfv) { VORGView *vv = gcalloc(1,sizeof(VORGView)); GRect pos; GWindow gw; GWindowAttrs wattrs; GGadgetCreateData gcd[34]; GTextInfo label[34]; int i; unichar_t title[60]; char version[20], minor[20], defyorig[20], nummetrics[20]; vv->table = tab; vv->virtuals = &vorgfuncs; vv->owner = tfv; vv->font = tfv->ttf->fonts[tfv->selectedfont]; tab->tv = (TableView *) vv; TableFillup(tab); title[0] = (tab->name>>24)&0xff; title[1] = (tab->name>>16)&0xff; title[2] = (tab->name>>8 )&0xff; title[3] = (tab->name )&0xff; title[4] = ' '; u_strncpy(title+5, vv->font->fontname, sizeof(title)/sizeof(title[0])-6); title[sizeof(title)/sizeof(title[0])-1] = '\0'; memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_wtitle|wam_icon; wattrs.event_masks = ~(1<gw = gw = GDrawCreateTopWindow(NULL,&pos,vorg_e_h,vv,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _STR_Version; label[0].text_in_resource = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 5; gcd[0].gd.pos.y = 7+6; gcd[0].gd.flags = gg_enabled|gg_visible; gcd[0].creator = GLabelCreate; sprintf( version, "%d", tgetushort(tab,0) ); label[1].text = (unichar_t *) version; label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 50; gcd[1].gd.pos.y = gcd[0].gd.pos.y-6; gcd[1].gd.pos.width = 50; gcd[1].gd.flags = gg_enabled|gg_visible; gcd[1].gd.cid = CID_Version; gcd[1].creator = GTextFieldCreate; label[2].text = (unichar_t *) _STR_Minor; label[2].text_in_resource = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 5+gcd[1].gd.pos.x+gcd[1].gd.pos.width; gcd[2].gd.pos.y = gcd[0].gd.pos.y; gcd[2].gd.flags = gg_enabled|gg_visible; gcd[2].creator = GLabelCreate; sprintf( minor, "%d", tgetushort(tab,2) ); label[3].text = (unichar_t *) minor; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = gcd[2].gd.pos.x+50; gcd[3].gd.pos.y = gcd[2].gd.pos.y-6; gcd[3].gd.pos.width = 50; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_MinorVersion; gcd[3].creator = GTextFieldCreate; label[4].text = (unichar_t *) _STR_DefYOrig; label[4].text_in_resource = true; gcd[4].gd.label = &label[4]; gcd[4].gd.pos.x = 5; gcd[4].gd.pos.y = gcd[3].gd.pos.y+24+6; gcd[4].gd.flags = gg_enabled|gg_visible; gcd[4].creator = GLabelCreate; sprintf( defyorig, "%d", tgetushort(tab,4) ); label[5].text = (unichar_t *) defyorig; label[5].text_is_1byte = true; gcd[5].gd.label = &label[5]; gcd[5].gd.pos.x = gcd[1].gd.pos.x+50; gcd[5].gd.pos.y = gcd[4].gd.pos.y-6; gcd[5].gd.pos.width = 50; gcd[5].gd.flags = gg_enabled|gg_visible; gcd[5].gd.cid = CID_DefYOrig; gcd[5].creator = GTextFieldCreate; label[6].text = (unichar_t *) _STR_AddOrig; label[6].text_in_resource = true; gcd[6].gd.label = &label[6]; gcd[6].gd.pos.x = 5; gcd[6].gd.pos.y = gcd[4].gd.pos.y+24; gcd[6].gd.flags = gg_enabled|gg_visible; gcd[6].creator = GLabelCreate; sprintf( nummetrics, "%d", tgetushort(tab,6) ); label[7].text = (unichar_t *) nummetrics; label[7].text_is_1byte = true; gcd[7].gd.label = &label[7]; gcd[7].gd.pos.x = gcd[5].gd.pos.x; gcd[7].gd.pos.y = gcd[6].gd.pos.y-6; gcd[7].gd.pos.width = 50; gcd[7].gd.flags = gg_enabled|gg_visible; gcd[7].gd.cid = CID_AddOrig; gcd[7].creator = GTextFieldCreate; /* there are also addorig entries of but I'm not showing those yet */ i = 8; gcd[i].gd.pos.x = 20-3; gcd[i].gd.pos.y = gcd[7].gd.pos.y+35-3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_default; label[i].text = (unichar_t *) _STR_OK; label[i].text_in_resource = true; gcd[i].gd.mnemonic = 'O'; gcd[i].gd.label = &label[i]; gcd[i].gd.handle_controlevent = VORG_OK; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 215-GIntGetResource(_NUM_Buttonsize)-20; gcd[i].gd.pos.y = gcd[i-1].gd.pos.y+3; gcd[i].gd.pos.width = -1; gcd[i].gd.pos.height = 0; gcd[i].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[i].text = (unichar_t *) _STR_Cancel; label[i].text_in_resource = true; gcd[i].gd.label = &label[i]; gcd[i].gd.mnemonic = 'C'; gcd[i].gd.handle_controlevent = VORG_Cancel; gcd[i++].creator = GButtonCreate; gcd[i].gd.pos.x = 2; gcd[i].gd.pos.y = 2; gcd[i].gd.pos.width = pos.width-4; gcd[i].gd.pos.height = pos.height-4; gcd[i].gd.flags = gg_enabled | gg_visible | gg_pos_in_pixels; gcd[i].creator = GGroupCreate; GGadgetsCreate(gw,gcd); GDrawSetVisible(gw,true); } mensis-080507/windowmenu.c0100664000076500007650000001037011010404770013657 0ustar gwwgww/* Copyright (C) 2001-2003 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "mensisui.h" #include #include static void WindowSelect(GWindow base,struct gmenuitem *mi,GEvent *e) { GDrawRaise(mi->ti.userdata); } static void AddMI(GMenuItem *mi,GWindow gw,int changed, int top) { mi->ti.userdata = gw; mi->ti.bg = changed?0xffffff:GDrawGetDefaultBackground(GDrawGetDisplayOfWindow(gw)); if ( top ) mi->ti.fg = 0x008000; mi->invoke = WindowSelect; mi->ti.text = GDrawGetWindowTitle(gw); if ( u_strlen( mi->ti.text ) > 20 ) mi->ti.text[20] = '\0'; } /* Builds up a menu containing the titles of all the major windows */ void WindowMenuBuild(GWindow base,struct gmenuitem *mi,GEvent *e) { int cnt; TtfView *tfv; GMenuItem *sub; extern void GMenuItemArrayFree(GMenuItem *mi); if ( mi->sub!=NULL ) { GMenuItemArrayFree(mi->sub); mi->sub = NULL; } cnt = 0; for ( tfv = tfv_list; tfv!=NULL; tfv = tfv->next ) { ++cnt; /* for the font */ } if ( cnt==0 ) { /* This can't happen */ return; } sub = gcalloc(cnt+1,sizeof(GMenuItem)); cnt = 0; for ( tfv = tfv_list; tfv!=NULL; tfv = tfv->next ) { AddMI(&sub[cnt++],tfv->gw,tfv->ttf->changed,true); } mi->sub = sub; } static void RecentSelect(GWindow base,struct gmenuitem *mi,GEvent *e) { ViewTtfFont((char *) (mi->ti.userdata)); } /* Builds up a menu containing the titles of all the unused recent files */ void MenuRecentBuild(GWindow base,struct gmenuitem *mi,GEvent *e) { int i, cnt, cnt1; TtfView *tfv; extern void GMenuItemArrayFree(struct gmenuitem *mi); GMenuItem *sub; if ( mi->sub!=NULL ) { GMenuItemArrayFree(mi->sub); mi->sub = NULL; } cnt = 0; for ( i=0; inext ) if ( tfv->ttf->filename!=NULL && strcmp(tfv->ttf->filename,RecentFiles[i])==0 ) break; if ( tfv==NULL ) ++cnt; } if ( cnt==0 ) { /* This can't happen */ return; } sub = gcalloc(cnt+1,sizeof(GMenuItem)); cnt1 = 0; for ( i=0; inext ) if ( tfv->ttf->filename!=NULL && strcmp(tfv->ttf->filename,RecentFiles[i])==0 ) break; if ( tfv==NULL ) { GMenuItem *mi = &sub[cnt1++]; mi->ti.userdata = RecentFiles[i]; mi->ti.bg = mi->ti.fg = COLOR_DEFAULT; mi->invoke = RecentSelect; mi->ti.text = uc_copy(GFileNameTail(RecentFiles[i])); } } if ( cnt!=cnt1 ) GDrawIError( "Bad counts in MenuRecentBuild"); mi->sub = sub; } int RecentFilesAny(void) { int i; TtfView *tfv; for ( i=0; inext ) if ( tfv->ttf->filename!=NULL && strcmp(tfv->ttf->filename,RecentFiles[i])==0 ) break; if ( tfv==NULL ) return( true ); } return( false ); }